/** * Function used to temporarily add a target to a goal */ private boolean addNewTargetToSelectedGoal() { // Not only the local context containing the selected object needs to be // a PatientGoal, // but also in the grid on the form a row must be selected, and that row // value must be of type PatientGoal // Check for a selected PatientGoal if (!(form.getLocalContext().getSelectedRowValue() instanceof PatientGoalVo)) throw new CodingRuntimeException("Major Logical Error - Can only add a PatientGoalTarget to a PatientGoal"); // Check for a selected row if (form.grdTarget().getSelectedRow() != null && !(form.grdTarget().getSelectedRow().getValue() instanceof PatientGoalRefVo)) throw new CodingRuntimeException("Major Logical Error - Can only add a PatientGoalTarget to a selected Patient Goal"); // Get a PatientGoalTargetVo from screen data PatientGoalTargetVo patientGoalTarget = populatePatientGoalTargetFromScreen(); // Validate PatientGoalTarget VO obtained from screen data String[] errors = patientGoalTarget.validate(); if (errors != null && errors.length > 0) { engine.showErrors(errors); return false; } // Add a child row to currently selected row with PatientGoalTarget // value grdTargetRow newRow = form.grdTarget().getSelectedRow().getRows().newRow(); setPatientGoalTargetRow(newRow, patientGoalTarget); // Set background color for new row newRow.setBackColor(Color.Bisque); // Get PatientGoalVo from local context PatientGoalVo patientGoal = (PatientGoalVo) form.getLocalContext().getSelectedRowValue(); // Check PatientGoal target collection - create a new collection if need // to if (!patientGoal.getTargetIsNotNull()) { patientGoal.setTarget(new PatientGoalTargetVoCollection()); } // Add target to selected PatientGoal patientGoal.getTarget().add(patientGoalTarget); return true; }