public PeriodObserver(FormClass formClass, CursorObserver<FieldValue> observer) { periodType = formClass.getSubFormKind().getPeriodType(); this.observer = observer; }
private PeriodValue getActivePeriodFromRecordId() { RecordRef ref = getActiveRecordRef(); PeriodType periodType = subFormKind.getPeriodType(); return periodType.fromSubFormKey(ref); }
public static CursorObserver<ResourceId> fromRecordId(FormClass formClass, final CursorObserver<FieldValue> observer) { final ResourceId formId = formClass.getId(); final PeriodType periodType = formClass.getSubFormKind().getPeriodType(); return new CursorObserver<ResourceId>() { @Override public void onNext(ResourceId value) { observer.onNext(periodType.fromSubFormKey(new RecordRef(formId, value))); } @Override public void done() { observer.done(); } }; } }
private String periodKeyFromRecordId(ResourceId subFormRecordId) { RecordRef ref = new RecordRef(formClass.getId(), subFormRecordId); PeriodType periodType = formClass.getSubFormKind().getPeriodType(); return periodType.fromSubFormKey(ref).toString(); }
private RecordRef computeActiveSubRecord(RecordRef parentRecordRef, FormInputModel inputModel) { // Has the user chosen a specific period? Optional<RecordRef> activeSubRecord = inputModel.getActiveSubRecord(fieldId); if(activeSubRecord.isPresent()) { return activeSubRecord.get(); } // Otherwise choose the active record based on the user's previous choices // or the current date PeriodValue activePeriod = subFormKind.getPeriodType().containingDate(memory.getLastUsedDate()); ResourceId recordId = ResourceId.periodSubRecordId(parentRecordRef, activePeriod); return new RecordRef(subFormId, recordId); }
/** * Previously, when forms were cloned, the 'period' field was cloned along with it but * given a new id in the form 'p34243423'. The routine above then added another field with the * id 'period'. This removes the extra field. * */ private static FormClass removeExtraSubFormPeriodField(FormClass formClass) { ListIterator<FormElement> it = formClass.getElements().listIterator(); while(it.hasNext()) { FormElement element = it.next(); if(element instanceof FormField) { FormField field = (FormField) element; if (field.getType().equals(formClass.getSubFormKind().getPeriodType()) && field.isKey() && !field.getId().equals(PERIOD_FIELD_ID) && field.getId().asString().startsWith("p")) { it.remove(); } } } return formClass; }
private static FormClass ensureSubFormHasPeriodField(FormClass formClass) { Optional<FormField> period = formClass.getFieldIfPresent(PERIOD_FIELD_ID); if(period.isPresent()) { return formClass; } // Add period field FormField periodField = new FormField(ResourceId.valueOf("period")); periodField.setLabel(fieldName(formClass.getSubFormKind())); periodField.setType(formClass.getSubFormKind().getPeriodType()); periodField.setKey(true); periodField.setRequired(true); periodField.setVisible(true); formClass.getElements().add(0, periodField); return formClass; }