public void execute(RecordTransaction tx) { TransactionalStorageProvider txStorageProvider = (TransactionalStorageProvider) catalog; txStorageProvider.begin(); try { for (RecordUpdate change : tx.getChanges()) { executeChange(change); } txStorageProvider.commit(); } catch (Exception e) { txStorageProvider.rollback(); throw e; } }
@Test public void updateLocation() throws SQLException { ResourceId recordId = CuidAdapter.cuid(LOCATION_DOMAIN, 1); ResourceId formId = CuidAdapter.locationFormClass(1); RecordUpdate update = new RecordUpdate(); update.setFormId(formId); update.setRecordId(recordId); update.setFieldValue(CuidAdapter.field(formId, CuidAdapter.NAME_FIELD), TextValue.valueOf("New Name")); Updater updater = updater(); updater.executeChange(update); newRequest(); FormStorage formStorage = catalog.getForm(formId).get(); FormRecord record = formStorage.get(recordId).get(); TypedFormRecord typedRecord = TypedFormRecord.toTypedFormRecord(formStorage.getFormClass(), record); GeoPoint point = (GeoPoint) typedRecord.get(CuidAdapter.field(formId, CuidAdapter.GEOMETRY_FIELD)); assertThat(point, not(nullValue())); } }
@Test public void deleteSite() { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000001"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setDeleted(true); Updater updater = updater(); updater.executeChange(changeObject); newRequest(); query(activityFormClass(1), "_id"); assertThat(column("_id"), hasValues("s0000000002", "s0000000003")); }
@Test public void deleteAdminEntity() { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId(entity(21).asString()); changeObject.setFormId(adminLevelFormClass(2).asString()); changeObject.setDeleted(true); Updater updater = updater(); updater.setEnforcePermissions(false); updater.executeChange(changeObject); query(adminLevelFormClass(2), "_id", "name"); assertThat(column("name"), hasValues("Bukavu", "Walungu", "Shabunda", "Kalehe")); }
@Test public void creatingActivitiesWithNullaryLocations() { int newId = new KeyGenerator().generateInt(); RecordUpdate change = new RecordUpdate(); change.setRecordId(cuid(SITE_DOMAIN, newId).asString()); change.setFormId(activityFormClass(ADVOCACY).asString()); change.setFieldValue("partner", partnerRecordId(1).asString()); change.setFieldValue("date1", "2015-01-01"); change.setFieldValue("date2", "2015-01-31"); Updater updater = updater(); updater.executeChange(change); query(activityFormClass(ADVOCACY), "_id", "partner"); }
@Test public void updateAdminEntity() throws JsonMappingException { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId(entity(21).asString()); changeObject.setFormId(adminLevelFormClass(2).asString()); changeObject.setFieldValue("name", "Nouveau Irumu"); Updater updater = updater(); updater.setEnforcePermissions(false); updater.executeChange(changeObject); query(adminLevelFormClass(2), "_id", "name"); assertThat(column("_id"), hasValues("z0000000010", "z0000000011", "z0000000012", "z0000000013", "z0000000021")); assertThat(column("name"), hasValues("Bukavu", "Walungu", "Shabunda", "Kalehe", "Nouveau Irumu")); }
@Test public void updateSite() throws JsonMappingException { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000001"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setFieldValue("partner", partnerRecordId(2).asString()); Updater updater = updater(); updater.executeChange(changeObject); query(activityFormClass(1), "_id", "partner.label", "BENE"); assertThat(column("_id"), hasValues("s0000000001", "s0000000002", "s0000000003")); assertThat(column("partner.label"), hasValues("Solidarites", "NRC", "Solidarites")); assertThat(column("BENE"), hasValues(1500, 3600, 10000)); }
@Test public void updateSiteWithMultiAttributes() { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000001"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setFieldValue(attributeGroupField(1).asString(), "Deplacement"); changeObject.setFieldValue(attributeGroupField(2).asString(), "Casserole"); Updater updater = updater(); updater.executeChange(changeObject); query(activityFormClass(1), "_id", "cause", "[contenu du kit]"); assertThat(column("_id"), hasValues("s0000000001", "s0000000002", "s0000000003")); assertThat(column("cause"), hasValues("Deplacement", "Deplacement", "Catastrophe Naturelle")); }
@Test public void updateSiteSetValueToBlank() throws JsonMappingException { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000001"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setFieldValue("BENE", Json.createNull()); changeObject.setFieldValue("comments", Json.createNull()); Updater updater = updater(); updater.executeChange(changeObject); query(activityFormClass(1), "_id", "BENE", "comments"); assertThat(column("_id"), hasValues("s0000000001", "s0000000002", "s0000000003")); assertThat(column("BENE"), hasValues(null, 3600, 10000)); assertThat(column("comments"), hasValues((String)null, null, null)); }
@Test public void deleteSiteWithMonthlyReports() { query(CuidAdapter.reportingPeriodFormClass(3), "_id", "site", CuidAdapter.indicatorField(5).asString()); assertThat(column("site"), hasValues("s0000000009", "s0000000009", "s0000000009")); RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000009"); changeObject.setFormId(activityFormClass(3).asString()); changeObject.setDeleted(true); newRequest(); Updater updater = updater(); updater.executeChange(changeObject); newRequest(); query(CuidAdapter.reportingPeriodFormClass(3), "_id", "site", CuidAdapter.indicatorField(5).asString()); assertThat(column("site"), hasValues(new String[0])); }
@Test public void createSite() throws JsonMappingException { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000013"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setFieldValue("partner", partnerRecordId(1).asString()); changeObject.setFieldValue("date1", "2015-01-01"); changeObject.setFieldValue("date2", "2015-01-01"); changeObject.setFieldValue("BENE", 45000); changeObject.setFieldValue("location", locationInstanceId(3).asString()); Updater updater = updater(); updater.executeChange(changeObject); query(activityFormClass(1), "_id", "partner.label", "BENE"); assertThat(column("_id"), hasValues("s0000000001", "s0000000002", "s0000000003", "s0000000013")); assertThat(column("partner.label"), hasValues("NRC", "NRC", "Solidarites", "NRC")); assertThat(column("BENE"), hasValues(1500, 3600, 10000, 45000)); }
@Test public void updateSiteWithMultipleProperties() { RecordUpdate changeObject = new RecordUpdate(); changeObject.setRecordId("s0000000001"); changeObject.setFormId(activityFormClass(1).asString()); changeObject.setFieldValue("partner", partnerRecordId(2).asString()); changeObject.setFieldValue("BENE", 2100); changeObject.setFieldValue(attributeGroupField(1).asString(), "Deplacement"); Updater updater = updater(); updater.executeChange(changeObject); query(activityFormClass(1), "_id", "partner.label", "BENE", "cause"); assertThat(column("_id"), hasValues("s0000000001", "s0000000002", "s0000000003")); assertThat(column("partner.label"), hasValues("Solidarites", "NRC", "Solidarites")); assertThat(column("BENE"), hasValues(2100, 3600, 10000)); assertThat(column("cause"), hasValues("Deplacement", "Deplacement", "Catastrophe Naturelle")); }