use of org.motechproject.mds.domain.Lookup in project motech by motech.
the class EntityServiceImpl method getLookupByName.
@Override
@Transactional
public LookupDto getLookupByName(Long entityId, String lookupName) {
Entity entity = allEntities.retrieveById(entityId);
assertEntityExists(entity, entityId);
Lookup lookup = entity.getLookupByName(lookupName);
return (lookup == null) ? null : lookup.toDto();
}
use of org.motechproject.mds.domain.Lookup in project motech by motech.
the class EntityServiceImpl method addOrUpdateLookups.
private void addOrUpdateLookups(Entity entity, Collection<LookupDto> lookups) {
for (LookupDto lookupDto : lookups) {
Lookup lookup = entity.getLookupByName(lookupDto.getLookupName());
List<String> fieldsOrder = new ArrayList<>();
List<Field> lookupFields = new ArrayList<>();
for (LookupFieldDto lookupField : lookupDto.getLookupFields()) {
String fieldName = lookupField.getName();
Field field;
field = entity.getField(fieldName);
fieldsOrder.add(LookupName.buildLookupFieldName(lookupField.getName(), lookupField.getRelatedName()));
if (field == null) {
LOGGER.error("No field {} in entity {}", fieldName, entity.getClassName());
} else {
if (!lookupFields.contains(field)) {
lookupFields.add(field);
}
}
}
lookupDto.setFieldsOrder(fieldsOrder);
if (lookup == null) {
Lookup newLookup = new Lookup(lookupDto, lookupFields);
entity.addLookup(newLookup);
} else {
lookup.update(lookupDto, lookupFields);
}
}
}
use of org.motechproject.mds.domain.Lookup in project motech by motech.
the class SwaggerGeneratorTest method entities.
private List<Entity> entities() {
List<Entity> entities = new ArrayList<>();
// Entity 1
Entity entity = new Entity();
entity.setClassName("org.example.TestEntity");
entity.setName("TestEntity");
entity.setModule("example");
entity.setNamespace("ns");
RestOptions restOptions = new RestOptions(entity);
restOptions.setAllowCreate(true);
restOptions.setAllowRead(true);
entity.setRestOptions(restOptions);
List<Field> fields = new ArrayList<>();
Field strField = field("str", String.class, true, true);
strField.setTooltip("A string field used in tests");
fields.add(strField);
fields.add(field("integerField", Integer.class, true, true));
Field longField = field("longField", Long.class, false, true);
fields.add(longField);
fields.add(field("timeField", Time.class, false, true));
fields.add(field("ignoredField", String.class, false, false));
fields.addAll(autoGeneratedFields());
entity.setFields(fields);
Lookup lookup = new Lookup("Find By Str & Long", true, true, asList(strField, longField), true, "findByStrLong");
lookup.setFieldsOrder(asList("str", "longField"));
entity.addLookup(lookup);
entities.add(entity);
// Entity 2
entity = new Entity();
entity.setClassName("org.motechproject.ExampleEnt");
entity.setName("ExampleEnt");
restOptions = new RestOptions(entity);
restOptions.setAllowUpdate(true);
restOptions.setAllowDelete(true);
entity.setRestOptions(restOptions);
fields = new ArrayList<>();
fields.add(field("doubleField", Double.class, true, true));
fields.add(field("dateField", Date.class, false, true));
Field dtField = field("dtField", DateTime.class, false, true);
fields.add(dtField);
fields.add(field("ldField", LocalDate.class, false, true));
Field localeField = field("localeField", Locale.class, false, true);
fields.add(localeField);
Field listField = FieldTestHelper.fieldWithComboboxSettings(entity, "listField", "list disp", List.class, true, false, asList("one", "two", "three"));
listField.setExposedViaRest(true);
listField.setRequired(true);
fields.add(listField);
fields.addAll(autoGeneratedFields());
entity.setFields(fields);
lookup = new Lookup("By Dt and Locale", false, true, asList(dtField, localeField), false, "byDtAndLocale");
lookup.setRangeLookupFields(asList(dtField.getName()));
lookup.setSetLookupFields(asList(localeField.getName()));
lookup.setFieldsOrder(asList("dtField", "localeField"));
entity.addLookup(lookup);
entities.add(entity);
return entities;
}
use of org.motechproject.mds.domain.Lookup in project motech by motech.
the class EntityValidator method validateAdvancedSettingsEdit.
public void validateAdvancedSettingsEdit(Entity entity, String path) {
if (path.length() != 0) {
String[] splitPath = path.split("\\.");
if (INDEXES.equals(splitPath[0])) {
Lookup lookup = entity.getLookups().get(Integer.parseInt(splitPath[1]));
validateLookupsReferences(Arrays.asList(lookup.getLookupName()), entity.getName());
}
}
}
use of org.motechproject.mds.domain.Lookup in project motech by motech.
the class EntityValidator method validateEntityLookupsReferences.
private void validateEntityLookupsReferences(EntityDraft draft) {
List<String> parentLookupsNames = new ArrayList<>();
List<String> draftLookupNames = new ArrayList<>();
for (Lookup lookup : draft.getParentEntity().getLookups()) {
parentLookupsNames.add(lookup.getLookupName());
}
for (Lookup lookup : draft.getLookups()) {
draftLookupNames.add(lookup.getLookupName());
}
// lets find all lookups names that are present in parent entity,
// but are not in draft entity (lookup removed or renamed)
Set<String> validateLookups = new HashSet<>();
validateLookups.addAll(parentLookupsNames);
validateLookups.removeAll(draftLookupNames);
validateLookupsReferences(validateLookups, draft.getClassName());
}
Aggregations