/ark-work-tracking/src/main/java/au/org/theark/worktracking/web/component/researcher/form/DetailForm.java

https://gitlab.com/gecgooden/ark · Java · 488 lines · 340 code · 88 blank · 60 comment · 22 complexity · 1b9a66140fa441f1fdce8588a7701957 MD5 · raw file

  1. package au.org.theark.worktracking.web.component.researcher.form;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import org.apache.shiro.SecurityUtils;
  5. import org.apache.wicket.ajax.AjaxRequestTarget;
  6. import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
  7. import org.apache.wicket.datetime.markup.html.basic.DateLabel;
  8. import org.apache.wicket.markup.html.form.ChoiceRenderer;
  9. import org.apache.wicket.markup.html.form.DropDownChoice;
  10. import org.apache.wicket.markup.html.form.Form;
  11. import org.apache.wicket.markup.html.form.TextArea;
  12. import org.apache.wicket.markup.html.form.TextField;
  13. import org.apache.wicket.markup.html.panel.FeedbackPanel;
  14. import org.apache.wicket.model.Model;
  15. import org.apache.wicket.model.StringResourceModel;
  16. import org.apache.wicket.spring.injection.annot.SpringBean;
  17. import org.apache.wicket.validation.IValidatable;
  18. import org.apache.wicket.validation.validator.EmailAddressValidator;
  19. import org.apache.wicket.validation.validator.PatternValidator;
  20. import org.apache.wicket.validation.validator.StringValidator;
  21. import au.org.theark.core.model.study.entity.TitleType;
  22. import au.org.theark.core.model.worktracking.entity.BillingType;
  23. import au.org.theark.core.model.worktracking.entity.Researcher;
  24. import au.org.theark.core.model.worktracking.entity.ResearcherRole;
  25. import au.org.theark.core.model.worktracking.entity.ResearcherStatus;
  26. import au.org.theark.core.service.IArkCommonService;
  27. import au.org.theark.core.vo.ArkCrudContainerVO;
  28. import au.org.theark.core.web.form.AbstractDetailForm;
  29. import au.org.theark.worktracking.model.vo.ResearcherVo;
  30. import au.org.theark.worktracking.service.IWorkTrackingService;
  31. import au.org.theark.worktracking.util.Constants;
  32. import au.org.theark.worktracking.util.NumberValidatable;
  33. import au.org.theark.worktracking.util.ValidatableItemType;
  34. public class DetailForm extends AbstractDetailForm<ResearcherVo> {
  35. public static final long serialVersionUID = -8267651986631341353L;
  36. @SpringBean(name = Constants.WORK_TRACKING_SERVICE)
  37. private IWorkTrackingService iWorkTrackingService;
  38. @SpringBean(name = au.org.theark.core.Constants.ARK_COMMON_SERVICE)
  39. private IArkCommonService iArkCommonService;
  40. private TextField<String> resercherIdTxtFld;
  41. private TextField<String> resercherOrganizationTxtFld;
  42. private TextField<String> resercherFirstNameTxtFld;
  43. private TextField<String> resercherLastNameTxtFld;
  44. private TextField<String> resercherOfficePhoneTxtFld;
  45. private TextField<String> resercherMobileTxtFld;
  46. private TextField<String> resercherEmailTxtFld;
  47. private TextField<String> resercherFaxTxtFld;
  48. private TextField<String> resercherAccountNumberTxtFld;
  49. private TextField<String> resercherBankTxtFld;
  50. private TextField<String> resercherBSBTxtFld;
  51. private TextField<String> resercherAccountNameTxtFld;
  52. private TextArea<String> resercherAddressTxtArea;
  53. private TextArea<String> resercherCommentTxtArea;
  54. private DateLabel createdDateLabel;
  55. private DropDownChoice<ResearcherStatus> researcherStatuses;
  56. private DropDownChoice<ResearcherRole> researcherRoles;
  57. private DropDownChoice<BillingType> billingTypes;
  58. private DropDownChoice<TitleType> titleTypes;
  59. private List<ResearcherStatus> researcherStatusList;
  60. private List<ResearcherRole> researcherRoleList;
  61. private List<BillingType> billingTypeList;
  62. private FeedbackPanel feedBackPanel;
  63. /**
  64. *
  65. * @param id
  66. * @param feedBackPanel
  67. * @param arkCrudContainerVO
  68. * @param containerForm
  69. */
  70. public DetailForm(String id, FeedbackPanel feedBackPanel, ArkCrudContainerVO arkCrudContainerVO, ContainerForm containerForm) {
  71. super(id, feedBackPanel, containerForm, arkCrudContainerVO);
  72. this.feedBackPanel = feedBackPanel;
  73. }
  74. public void onBeforeRender() {
  75. super.onBeforeRender();
  76. }
  77. public void initialiseDetailForm() {
  78. resercherIdTxtFld = new TextField<String>(Constants.RESEARCHER_ID);
  79. resercherIdTxtFld.setEnabled(false);
  80. resercherFirstNameTxtFld=new TextField<String>(Constants.RESEARCHER_FIRST_NAME);
  81. resercherLastNameTxtFld=new TextField<String>(Constants.RESEARCHER_LAST_NAME);
  82. resercherOrganizationTxtFld=new TextField<String>(Constants.RESEARCHER_ORGANIZATION);
  83. resercherOfficePhoneTxtFld = new TextField<String>(Constants.RESEARCHER_OFFICE_PHONE);
  84. resercherMobileTxtFld = new TextField<String>(Constants.RESEARCHER_MOBILE);
  85. resercherEmailTxtFld = new TextField<String>(Constants.RESEARCHER_EMAIL);
  86. resercherFaxTxtFld = new TextField<String>(Constants.RESEARCHER_FAX);
  87. resercherAccountNumberTxtFld= new TextField<String>(Constants.RESEARCHER_ACCOUNT_NUMBER);
  88. resercherBankTxtFld= new TextField<String>(Constants.RESEARCHER_BANK);
  89. resercherBSBTxtFld= new TextField<String>(Constants.RESEARCHER_BSB);
  90. resercherAccountNameTxtFld= new TextField<String>(Constants.RESEARCHER_ACCOUNT_NAME);
  91. resercherAddressTxtArea = new TextArea<String>(Constants.RESEARCHER_ADDRESS);
  92. resercherCommentTxtArea = new TextArea<String>(Constants.RESEARCHER_COMMENT);
  93. createdDateLabel = DateLabel.forDatePattern(Constants.RESEARCHER_CREATED_DATE, au.org.theark.core.Constants.DD_MM_YYYY);
  94. this.initResearcherStatusDropDown();
  95. this.initResearcherRoleDropDown();
  96. this.initBillingTypeDropDown();
  97. this.initTitleTypeDropDown();
  98. this.setEnableBankFields(false);
  99. addDetailFormComponents();
  100. attachValidators();
  101. }
  102. private void initTitleTypeDropDown() {
  103. Collection<TitleType> titleTypeList = iArkCommonService.getTitleType();
  104. ChoiceRenderer defaultChoiceRenderer = new ChoiceRenderer(Constants.NAME, Constants.ID);
  105. this.titleTypes = new DropDownChoice(Constants.RESEARCHER_TITLE, (List)titleTypeList, defaultChoiceRenderer);
  106. }
  107. private void initResearcherStatusDropDown() {
  108. this.researcherStatusList=this.iWorkTrackingService.getResearcherStatuses();
  109. ChoiceRenderer defaultChoiceRenderer = new ChoiceRenderer(Constants.NAME, Constants.ID);
  110. this.researcherStatuses = new DropDownChoice(Constants.RESEARCHER_STATUS, this.researcherStatusList, defaultChoiceRenderer);
  111. }
  112. private void initResearcherRoleDropDown() {
  113. this.researcherRoleList=this.iWorkTrackingService.getResearcherRoles();
  114. ChoiceRenderer defaultChoiceRenderer = new ChoiceRenderer(Constants.NAME, Constants.ID);
  115. this.researcherRoles = new DropDownChoice(Constants.RESEARCHER_ROLE, this.researcherRoleList, defaultChoiceRenderer);
  116. }
  117. private void initBillingTypeDropDown() {
  118. this.billingTypeList=this.iWorkTrackingService.getResearcherBillingTypes();
  119. ChoiceRenderer defaultChoiceRenderer = new ChoiceRenderer(Constants.NAME, Constants.ID);
  120. this.billingTypes=new DropDownChoice(Constants.RESEARCHER_BILLING_TYPE, this.billingTypeList, defaultChoiceRenderer);
  121. this.billingTypes.add(new AjaxFormComponentUpdatingBehavior("onChange") {
  122. private static final long serialVersionUID = 1L;
  123. @Override
  124. protected void onUpdate(AjaxRequestTarget target) {
  125. Researcher researcher=getFormModel().getResearcher();
  126. if(researcher.getBillingType() == null
  127. ||
  128. !"EFT".equalsIgnoreCase(researcher.getBillingType().getName())){
  129. researcher.setAccountName(null);
  130. researcher.setAccountNumber(null);
  131. researcher.setBank(null);
  132. researcher.setBsb(null);
  133. setEnableBankFields(false,target);
  134. }
  135. else{
  136. setEnableBankFields(true,target);
  137. }
  138. }
  139. @Override
  140. protected void onError(AjaxRequestTarget target, RuntimeException e) {
  141. // TODO Auto-generated method stub
  142. setEnableBankFields(true,target);
  143. }
  144. });
  145. }
  146. public void addDetailFormComponents() {
  147. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherIdTxtFld);
  148. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherOrganizationTxtFld);
  149. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherFirstNameTxtFld);
  150. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherLastNameTxtFld);
  151. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherOfficePhoneTxtFld);
  152. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherMobileTxtFld);
  153. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherEmailTxtFld);
  154. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherFaxTxtFld);
  155. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherAddressTxtArea);
  156. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherCommentTxtArea);
  157. arkCrudContainerVO.getDetailPanelFormContainer().add(createdDateLabel);
  158. arkCrudContainerVO.getDetailPanelFormContainer().add(researcherRoles);
  159. arkCrudContainerVO.getDetailPanelFormContainer().add(researcherStatuses);
  160. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherAccountNumberTxtFld);
  161. arkCrudContainerVO.getDetailPanelFormContainer().add(billingTypes);
  162. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherBankTxtFld);
  163. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherBSBTxtFld);
  164. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherAccountNameTxtFld);
  165. arkCrudContainerVO.getDetailPanelFormContainer().add(resercherAccountNameTxtFld);
  166. arkCrudContainerVO.getDetailPanelFormContainer().add(titleTypes);
  167. }
  168. /*
  169. * (non-Javadoc)
  170. *
  171. * @see au.org.theark.core.web.form.AbstractDetailForm#attachValidators()
  172. */
  173. @Override
  174. protected void attachValidators() {
  175. resercherFirstNameTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_FIRSTNAME_REQUIRED, resercherFirstNameTxtFld, new Model<String>(Constants.RESEARCHER_FIRST_NAME_TAG)));
  176. resercherFirstNameTxtFld.add(StringValidator.lengthBetween(1, 30)).setLabel(
  177. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_FIRSTNAME_LENGTH, resercherFirstNameTxtFld, new Model<String>(Constants.RESEARCHER_FIRST_NAME_TAG)));
  178. resercherLastNameTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_LASTNAME_REQUIRED, resercherLastNameTxtFld, new Model<String>(Constants.RESEARCHER_LAST_NAME_TAG)));
  179. resercherLastNameTxtFld.add(StringValidator.lengthBetween(1, 45)).setLabel(
  180. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_LASTNAME_LENGTH, resercherLastNameTxtFld, new Model<String>(Constants.RESEARCHER_LAST_NAME_TAG)));
  181. resercherOrganizationTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ORGANIZATION_REQUIRED, resercherOrganizationTxtFld, new Model<String>(Constants.RESEARCHER_ORGANIZATION_TAG)));
  182. resercherOrganizationTxtFld.add(StringValidator.lengthBetween(1, 50)).setLabel(
  183. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ORGANIZATION_LENGTH, resercherOrganizationTxtFld, new Model<String>(Constants.RESEARCHER_ORGANIZATION_TAG)));
  184. resercherAddressTxtArea.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ADDRESS_REQUIRED, resercherAddressTxtArea, new Model<String>(Constants.RESEARCHER_ADDRESS_TAG)));
  185. resercherAddressTxtArea.add(StringValidator.lengthBetween(1, 255)).setLabel(
  186. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ADDRESS_LENGTH, resercherAddressTxtArea, new Model<String>(Constants.RESEARCHER_ADDRESS_TAG)));
  187. researcherRoles.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ROLE_REQUIRED, researcherRoles, new Model<String>(Constants.RESEARCHER_ROLE_TAG)));
  188. researcherStatuses.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_STATUS_REQUIRED, researcherStatuses, new Model<String>(Constants.RESEARCHER_STATUS_TAG)));
  189. resercherOfficePhoneTxtFld.add(StringValidator.lengthBetween(1, 25)).setLabel(
  190. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_OFFICEPHONE_LENGTH, resercherOfficePhoneTxtFld, new Model<String>(Constants.RESEARCHER_OFFICE_PHONE_TAG)));
  191. resercherOfficePhoneTxtFld.add(new PatternValidator(Constants.PHONE_NUMBER_PATTERN){
  192. private static final long serialVersionUID = 1L;
  193. @Override
  194. protected void onValidate(IValidatable<String> validatable) {
  195. super.onValidate(new NumberValidatable(validatable,ValidatableItemType.PHONE_NUMBER));
  196. }
  197. });
  198. resercherMobileTxtFld.add(StringValidator.lengthBetween(1, 25)).setLabel(
  199. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_MOBILEPHONE_LENGTH, resercherMobileTxtFld, new Model<String>(Constants.RESEARCHER_MOBILE_PHONE_TAG)));
  200. resercherMobileTxtFld.add(new PatternValidator(Constants.PHONE_NUMBER_PATTERN){
  201. private static final long serialVersionUID = 1L;
  202. @Override
  203. protected void onValidate(IValidatable<String> validatable) {
  204. super.onValidate(new NumberValidatable(validatable,ValidatableItemType.MOBILE_NUMBER));
  205. }
  206. });
  207. resercherFaxTxtFld.add(StringValidator.lengthBetween(1, 25)).setLabel(
  208. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_FAX_LENGTH, resercherFaxTxtFld, new Model<String>(Constants.RESEARCHER_FAX_TAG)));
  209. resercherFaxTxtFld.add(new PatternValidator(Constants.PHONE_NUMBER_PATTERN){
  210. private static final long serialVersionUID = 1L;
  211. @Override
  212. protected void onValidate(IValidatable<String> validatable) {
  213. super.onValidate(new NumberValidatable(validatable,ValidatableItemType.FAX_NUMBER));
  214. }
  215. });
  216. resercherEmailTxtFld.add(StringValidator.lengthBetween(1, 45)).setLabel(
  217. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_EMAIL_LENGTH, resercherEmailTxtFld, new Model<String>(Constants.RESEARCHER_EMAIL_TAG)));
  218. resercherCommentTxtArea.add(StringValidator.lengthBetween(1, 255)).setLabel(
  219. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_COMMENT_LENGTH, resercherCommentTxtArea, new Model<String>(Constants.RESEARCHER_COMMENT_TAG)));
  220. resercherAccountNumberTxtFld.add(StringValidator.lengthBetween(1, 30)).setLabel(
  221. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ACCOUNTNUMBER_LENGTH, resercherAccountNumberTxtFld, new Model<String>(Constants.RESEARCHER_ACCOUNT_NUMBER_TAG)));
  222. resercherAccountNumberTxtFld.add(new PatternValidator(Constants.FULL_NUMBER_PATTERN){
  223. private static final long serialVersionUID = 1L;
  224. @Override
  225. protected void onValidate(IValidatable<String> validatable) {
  226. super.onValidate(new NumberValidatable(validatable,ValidatableItemType.ACCOUNT_NUMBER));
  227. }
  228. });
  229. resercherBSBTxtFld.add(StringValidator.exactLength(6)).setLabel(
  230. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_BSB_LENGTH, resercherBSBTxtFld, new Model<String>(Constants.RESEARCHER_BSB_TAG)));
  231. resercherBSBTxtFld.add(new PatternValidator(Constants.FULL_NUMBER_PATTERN){
  232. private static final long serialVersionUID = 1L;
  233. @Override
  234. protected void onValidate(IValidatable<String> validatable) {
  235. super.onValidate(new NumberValidatable(validatable,ValidatableItemType.BSB));
  236. }
  237. });
  238. resercherBankTxtFld.add(StringValidator.lengthBetween(1, 50)).setLabel(
  239. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_BANK_LENGTH, resercherBankTxtFld, new Model<String>(Constants.RESEARCHER_BANK_TAG)));
  240. resercherAccountNameTxtFld.add(StringValidator.lengthBetween(1, 50)).setLabel(
  241. new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ACCOUNTNAME_LENGTH, resercherAccountNameTxtFld, new Model<String>(Constants.RESEARCHER_ACCOUNT_NAME_TAG)));
  242. resercherEmailTxtFld.add(EmailAddressValidator.getInstance());
  243. titleTypes.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_TITLE_TYPE_REQUIRED, researcherStatuses, new Model<String>(Constants.RESEARCHER_TITLE_TYPE_TAG)));
  244. }
  245. /*
  246. @Override
  247. public void process(IFormSubmitter submittingComponent) {
  248. Researcher researcher=getFormModel().getResearcher();
  249. if(researcher.getBillingType() !=null &&
  250. "EFT".equalsIgnoreCase(researcher.getBillingType().getName())){
  251. if(!resercherAccountNameTxtFld.isRequired()){
  252. resercherAccountNameTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ACCOUNTNAME_REQUIRED, resercherAccountNameTxtFld, new Model<String>(Constants.RESEARCHER_ACCOUNT_NAME_TAG)));
  253. }
  254. if(!resercherBankTxtFld.isRequired()){
  255. resercherBankTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_BANK_REQUIRED, resercherBankTxtFld, new Model<String>(Constants.RESEARCHER_BANK_TAG)));
  256. }
  257. if(!resercherBSBTxtFld.isRequired()){
  258. resercherBSBTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_BSB_REQUIRED, resercherBSBTxtFld, new Model<String>(Constants.RESEARCHER_BSB_TAG)));
  259. }
  260. if(!resercherAccountNumberTxtFld.isRequired()){
  261. resercherAccountNumberTxtFld.setRequired(true).setLabel(new StringResourceModel(Constants.ERROR_WORK_RESEARCHER_ACCOUNTNUMBER_REQUIRED, resercherAccountNumberTxtFld, new Model<String>(Constants.RESEARCHER_ACCOUNT_NUMBER_TAG)));
  262. }
  263. }
  264. super.process(submittingComponent);
  265. }
  266. */
  267. /*
  268. * (non-Javadoc)
  269. *
  270. * @see au.org.theark.core.web.form.AbstractDetailForm#onCancel(org.apache.wicket.ajax.AjaxRequestTarget)
  271. */
  272. @Override
  273. protected void onCancel(AjaxRequestTarget target) {
  274. ResearcherVo researcherVo = new ResearcherVo();
  275. containerForm.setModelObject(researcherVo);
  276. }
  277. /*
  278. * (non-Javadoc)
  279. *
  280. * @see au.org.theark.core.web.form.AbstractDetailForm#onSave(org.apache.wicket.markup.html.form.Form, org.apache.wicket.ajax.AjaxRequestTarget)
  281. */
  282. @Override
  283. protected void onSave(Form<ResearcherVo> containerForm, AjaxRequestTarget target) {
  284. target.add(arkCrudContainerVO.getDetailPanelContainer());
  285. if(checkBillingDetails()>0){
  286. processErrors(target);
  287. return;
  288. }
  289. try {
  290. if (containerForm.getModelObject().getResearcher().getId() == null) {
  291. Long studyId = (Long) SecurityUtils.getSubject().getSession().getAttribute(au.org.theark.core.Constants.STUDY_CONTEXT_ID);
  292. containerForm.getModelObject().getResearcher().setStudyId(studyId);
  293. iWorkTrackingService.createResearcher(containerForm.getModelObject().getResearcher());
  294. this.info("Researcher " + containerForm.getModelObject().getResearcher().getFirstName() + " " + containerForm.getModelObject().getResearcher().getLastName() + " was created successfully");
  295. processErrors(target);
  296. }
  297. else {
  298. iWorkTrackingService.updateResearcher(containerForm.getModelObject().getResearcher());
  299. this.info("Researcher " + containerForm.getModelObject().getResearcher().getFirstName() + " " + containerForm.getModelObject().getResearcher().getLastName() + " was updated successfully");
  300. processErrors(target);
  301. }
  302. onSavePostProcess(target);
  303. }
  304. catch (Exception e) {
  305. this.error("A System error occured, we will have someone contact you.");
  306. processErrors(target);
  307. }
  308. }
  309. private int checkBillingDetails(){
  310. int count=0;
  311. Researcher researcher=getFormModel().getResearcher();
  312. if(researcher.getBillingType() !=null &&
  313. "EFT".equalsIgnoreCase(researcher.getBillingType().getName())){
  314. if(researcher.getAccountName() ==null
  315. || researcher.getAccountName().trim().length() < 1){
  316. this.error("Field 'Account Name' is required.");
  317. ++count;
  318. }
  319. if(researcher.getBank() ==null
  320. || researcher.getBank().trim().length() < 1){
  321. this.error("Field 'Bank' is required.");
  322. ++count;
  323. }
  324. if(researcher.getBsb() ==null
  325. || researcher.getBsb().trim().length() < 1){
  326. this.error("Field 'BSB' is required.");
  327. ++count;
  328. }
  329. if(researcher.getAccountNumber() == null
  330. || researcher.getAccountNumber().trim().length() < 1){
  331. this.error("Field 'Account Number' is required.");
  332. ++count;
  333. }
  334. }
  335. return count;
  336. }
  337. /*
  338. * (non-Javadoc)
  339. *
  340. * @see au.org.theark.core.web.form.AbstractDetailForm#processErrors(org.apache.wicket.ajax.AjaxRequestTarget)
  341. */
  342. @Override
  343. protected void processErrors(AjaxRequestTarget target) {
  344. target.add(feedBackPanel);
  345. }
  346. protected void onDeleteConfirmed(AjaxRequestTarget target, String selection) {
  347. try {
  348. Long count = iWorkTrackingService.getWorkRequestCount(containerForm.getModelObject().getResearcher());
  349. if(count == 0){
  350. iWorkTrackingService.deleteResearcher(containerForm.getModelObject().getResearcher());
  351. ResearcherVo researcherVo = new ResearcherVo();
  352. containerForm.setModelObject(researcherVo);
  353. containerForm.info("The Researcher was deleted successfully.");
  354. editCancelProcess(target);
  355. }else{
  356. containerForm.error("Cannot Delete this Researcher Component. This researcher is associated with existing Work Requests ");
  357. processErrors(target);
  358. }
  359. }
  360. catch (Exception e) {
  361. containerForm.error("A System Error has occured please contact support.");
  362. processErrors(target);
  363. }
  364. }
  365. private void setEnableBankFields(final boolean enabled,final AjaxRequestTarget target) {
  366. resercherAccountNumberTxtFld.setEnabled(enabled);
  367. resercherBankTxtFld.setEnabled(enabled);
  368. resercherBSBTxtFld.setEnabled(enabled);
  369. resercherAccountNameTxtFld.setEnabled(enabled);
  370. // resercherAccountNameTxtFld.setRequired(false);
  371. // resercherBankTxtFld.setRequired(false);
  372. // resercherBSBTxtFld.setRequired(false);
  373. // resercherAccountNumberTxtFld.setRequired(false);
  374. target.add(resercherAccountNumberTxtFld,resercherBankTxtFld,resercherBSBTxtFld,resercherAccountNameTxtFld);
  375. }
  376. private void setEnableBankFields(final boolean enabled) {
  377. resercherAccountNumberTxtFld.setEnabled(enabled);
  378. resercherBankTxtFld.setEnabled(enabled);
  379. resercherBSBTxtFld.setEnabled(enabled);
  380. resercherAccountNameTxtFld.setEnabled(enabled);
  381. }
  382. /*
  383. * (non-Javadoc)
  384. *
  385. * @see au.org.theark.core.web.form.AbstractDetailForm#isNew()
  386. */
  387. @Override
  388. protected boolean isNew() {
  389. if (containerForm.getModelObject().getResearcher().getId() == null) {
  390. return true;
  391. }
  392. else {
  393. return false;
  394. }
  395. }
  396. private ResearcherVo getFormModel(){
  397. return containerForm.getModelObject();
  398. }
  399. }