@Override public void init(FieldValue value) { ReferenceValue referenceValue = (ReferenceValue) value; RecordRef recordRef = referenceValue.getOnlyReference(); viewModel.setInitialSelection(referenceValue.getReferences()); }
@Override public Collection<Integer> toParameters(FieldValue value) { ReferenceValue referenceValue = (ReferenceValue) value; ResourceId resourceId = referenceValue.getOnlyReference().getRecordId(); Preconditions.checkArgument(resourceId.getDomain() == domain, "id %s does not match expected domain %s", resourceId.asString(), Character.toString(domain)); return Collections.singleton(CuidAdapter.getLegacyIdFromCuid(resourceId)); } }
@Override public String readString(FieldValue value) { if(value instanceof ReferenceValue) { ReferenceValue ref = (ReferenceValue) value; if(ref.getReferences().size() == 1) { return ref.getOnlyReference().getRecordId().asString(); } } return null; } }
@Override public Object toHrdProperty(ReferenceValue value) { if (value.getReferences().isEmpty()) { return null; } else if (value.getReferences().size() == 1) { return value.getOnlyReference().toQualifiedString(); } else { List<String> ids = new ArrayList<>(); for (RecordRef ref : value.getReferences()) { ids.add(ref.toQualifiedString()); } return ids; } }
private FormulaNode binaryFunction(FormulaFunction function) { FormulaNode left = new SymbolNode(fieldId); FormulaNode right; if(value instanceof EnumValue) { right = new ConstantNode(((EnumValue) value)); } else if(value instanceof Quantity) { right = new ConstantNode(((Quantity) value)); } else if(value instanceof TextValue) { right = new ConstantNode(((TextValue) value)); } else if(value instanceof ReferenceValue) { right = new SymbolNode(((ReferenceValue) value).getOnlyReference().getRecordId()); } else { throw new IllegalStateException("value: " + value); } return new FunctionCallNode(function, left, right); }
} else if(change.getKey().equals(CuidAdapter.locationField(activity.getId()))) { ReferenceValue value = (ReferenceValue) change.getValue(); if(value.getOnlyReference().getRecordId().getDomain() == CuidAdapter.LOCATION_DOMAIN) { baseTable.update(change.getKey(), change.getValue()); } else { baseTable.update(change.getKey(), dummyLocationReference(value.getOnlyReference()));
} else if(change.getKey().equals(CuidAdapter.locationField(activity.getId()))) { ReferenceValue value = (ReferenceValue) change.getValue(); if(value.getOnlyReference().getRecordId().getDomain() == CuidAdapter.LOCATION_DOMAIN) { baseTable.set(change.getKey(), change.getValue()); } else { baseTable.set(change.getKey(), dummyLocationReference(value.getOnlyReference()));
public Choice toChoice(TypedFormRecord instance) { if(isRoot()) { return new Choice(getFormId(), instance.getId(), instance.getString(labelFieldId)); } else { ReferenceValue parentRefValue = (ReferenceValue) instance.get(parentFieldId); RecordRef parentRef = parentRefValue.getOnlyReference(); return new Choice(getFormId(), instance.getId(), instance.getString(labelFieldId), parentRef); } } }
@Test public void references() { BioDataForm bioDataForm = setup.getBioDataForm(); Observable<Maybe<RecordTree>> recordTree = setup.getFormStore().getRecordTree(bioDataForm.getRecordRef(0)); Connection<Maybe<RecordTree>> recordTreeView = setup.connect(recordTree); RecordTree tree = recordTreeView.assertLoaded().get(); LookupKeySet lookupKeySet = new LookupKeySet( tree.getFormTree(), tree.getFormTree().getRootField(BioDataForm.PROTECTION_CODE_FIELD_ID).getField()); assertThat(lookupKeySet.getLookupKeys(), hasSize(1)); ReferenceValue referenceValue = (ReferenceValue) tree.getRoot().get(BioDataForm.PROTECTION_CODE_FIELD_ID); RecordRef ref = referenceValue.getOnlyReference(); assertThat(lookupKeySet.label(tree, ref), equalTo(Maybe.of("00667"))); }
@Test public void labelTest() { NfiForm nfiForm = setup.getNfiForm(); VillageForm villageForm = setup.getVillageForm(); AdminLevelForm territoryForm = villageForm.getParentForm(); AdminLevelForm provinceForm = territoryForm.getParentForm().get(); Observable<Maybe<RecordTree>> nfiRecordTree = setup.getFormStore().getRecordTree(nfiForm.getRecordRef(0)); Connection<Maybe<RecordTree>> nfiRecordTreeView = setup.connect(nfiRecordTree); RecordTree tree = nfiRecordTreeView.assertLoaded().get(); LookupKeySet lookupKeySet = new LookupKeySet( tree.getFormTree(), tree.getFormTree().getRootField(nfiForm.getVillageField().getId()).getField() ); assertThat(lookupKeySet.getLookupKeys().size(), equalTo(3)); ReferenceValue referenceValue = (ReferenceValue) tree.getRoot().get(nfiForm.getVillageField().getId()); RecordRef villageRef = referenceValue.getOnlyReference(); RecordTree villageTree = tree.subTree(villageRef); referenceValue = (ReferenceValue) villageTree.getRoot().get(villageForm.getAdminFieldId()); RecordRef territoryRef = referenceValue.getOnlyReference(); RecordTree territoryTree = villageTree.subTree(territoryRef); referenceValue = (ReferenceValue) territoryTree.getRoot().get(territoryForm.getParentFieldId()); RecordRef provinceRef = referenceValue.getOnlyReference(); Maybe<String> villageLabel = lookupKeySet.label(tree, villageRef); Maybe<String> territoryLabel = lookupKeySet.label(tree, territoryRef); Maybe<String> provinceLabel = lookupKeySet.label(tree, provinceRef); assertThat(villageLabel, equalTo(Maybe.of("Village 660"))); assertThat(territoryLabel, equalTo(Maybe.of("Territory 85"))); assertThat(provinceLabel, equalTo(Maybe.of("Province 11"))); }