@Override public FieldType createType() { return new SerialNumberType(); }
public SerialNumberType withPrefixFormula(String formula) { return new SerialNumberType(formula, this.digits); }
@Override public FieldType deserializeType(JsonValue parametersObject) { SerialNumberType type = new SerialNumberType(); if(parametersObject.hasKey("prefixFormula")) { type.prefixFormula = parametersObject.get("prefixFormula").asString(); } if(parametersObject.hasKey("digits")) { type.digits = parametersObject.get("digits").asInt(); } return type; } };
public String label(TypedFormRecord record) { if(fieldId.getName().equals(ColumnModel.RECORD_ID_SYMBOL)) { return record.getId().asString(); } FieldValue fieldValue = record.get(ResourceId.valueOf(fieldId.getName())); if(fieldValue == null) { return record.getId().asString(); } if(fieldValue instanceof SerialNumber) { SerialNumberType type = new SerialNumberType(); return type.format(((SerialNumber) fieldValue)); } else { return ((HasStringValue) fieldValue).asString(); } }
@Test public void noPrefixes() { SerialNumberBlock block = new SerialNumberBlock(new SerialNumberType()); Entity blockEntity = new Entity("Block", 1); block.update(blockEntity, 0, new SerialNumber(1)); block.update(blockEntity, 2, new SerialNumber(2)); block.update(blockEntity, 1, new SerialNumber(3)); block.update(blockEntity, 8, new SerialNumber(4)); FormEntity header = new FormEntity(); header.setNumberedRecordCount(10); TombstoneIndex tombstoneIndex = new TombstoneIndex(header); ColumnView view = block.buildView(header, tombstoneIndex, Arrays.asList(blockEntity).iterator()); assertThat(view.numRows(), equalTo(10)); assertThat(view.getString(0), equalTo("00001")); assertThat(view.getString(1), equalTo("00003")); assertThat(view.getString(2), equalTo("00002")); assertThat(view.isMissing(3), equalTo(true)); assertThat(view.isMissing(4), equalTo(true)); assertThat(view.isMissing(5), equalTo(true)); assertThat(view.getString(8), equalTo("00004")); }
@Test public void prefixes() { SerialNumberBlock block = new SerialNumberBlock(new SerialNumberType()); Entity blockEntity = new Entity("Block", 1); block.update(blockEntity, 0, new SerialNumber("ABC", 1)); block.update(blockEntity, 1, new SerialNumber("XYZ", 1)); block.update(blockEntity, 2, new SerialNumber("ABC", 2)); block.update(blockEntity, 3, new SerialNumber("XYZ", 3)); block.update(blockEntity, 4, new SerialNumber("ABC", 3)); block.update(blockEntity, 5, new SerialNumber("ATC", 1)); FormEntity header = new FormEntity(); header.setNumberedRecordCount(6); TombstoneIndex tombstoneIndex = new TombstoneIndex(header); ColumnView view = block.buildView(header, tombstoneIndex, Arrays.asList(blockEntity).iterator()); assertThat(view.numRows(), equalTo(6)); assertThat(view.getString(0), equalTo("ABC-00001")); assertThat(view.getString(1), equalTo("XYZ-00001")); assertThat(view.getString(2), equalTo("ABC-00002")); assertThat(view.getString(3), equalTo("XYZ-00003")); assertThat(view.getString(4), equalTo("ABC-00003")); assertThat(view.getString(5), equalTo("ATC-00001")); }
@Test public void serialNumber() throws JsonMappingException { FormClass formClass = new FormClass(ResourceId.valueOf("FORM1")); formClass.addField(ResourceId.valueOf("FIELD0")) .setType(TextType.SIMPLE) .setLabel("Province Code") .setCode("PROVINCE") .setRequired(true); FormField serialNumberField = formClass.addField(ResourceId.valueOf("FIELD1")) .setType(new SerialNumberType("PROVINCE", 5)) .setRequired(true) .setLabel("File Number") .setCode("SN"); JsonValue fields = Json.createObject(); fields.put("PROVINCE", "KUNDUZ"); JsonValue change = createObject(); change.put("recordId", "A"); change.put("formId", "FORM1"); change.put("fields", fields); TypedRecordUpdate update = Updater.parseChange(formClass, change, userId); TypedFormRecord effectiveRecord = updater.computeEffectiveRecord(formClass, Optional.<FormRecord>absent(), update); updater.generateSerialNumber(formClass, serialNumberField, effectiveRecord, update); FieldValue serialValue = update.getChangedFieldValues().get(serialNumberField.getId()); assertThat(serialValue, equalTo((FieldValue)new SerialNumber("KUNDUZ", 1))); }
formClass.setLabel("New Form"); FormField serialNumField = new FormField(CuidAdapter.generateIndicatorId()) .setType(new SerialNumberType()) .setLabel("NUM") .setRequired(true);
@Test public void simpleTest() { ApplicationDriver driver = harness.newUser(); TestDatabase database = driver.createDatabase(); ActivityInfoClient client = driver.getClient(); FormClass formClass = new FormClass(harness.newFormId()); formClass.setLabel("Test Form"); formClass.setDatabaseId(database.getId()); FormField partnerField = CuidAdapter.partnerField(formClass); formClass.addElement(partnerField); FormField fileNumberField = formClass.addField(harness.newFieldId()) .setType(new SerialNumberType()) .setLabel("Record Number"); FormField nameField = formClass.addField(harness.newFieldId()) .setType(TextType.SIMPLE) .setLabel("Name"); client.createForm(formClass); TypedFormRecord record1 = new TypedFormRecord(harness.newRecordId(), formClass.getId()); record1.set(nameField.getId(), "Sue"); record1.set(partnerField.getId(), database.getDefaultPartner()); TypedFormRecord record2 = new TypedFormRecord(harness.newRecordId(), formClass.getId()); record2.set(nameField.getId(), "Bob"); record2.set(partnerField.getId(), database.getDefaultPartner()); client.createRecord(record1); client.createRecord(record2); record1 = client.getTypedRecord(formClass, record1.getId()); record2 = client.getTypedRecord(formClass, record2.getId()); assertThat(record1.get(fileNumberField.getId()), equalTo((FieldValue) new SerialNumber(1))); assertThat(record2.get(fileNumberField.getId()), equalTo((FieldValue) new SerialNumber(2))); }
.setType(new SerialNumberType("PROVINCE", 5)) .setLabel("Record Number");
.setLabel("Protection Code") .setRequired(true) .setType(new SerialNumberType());