Search in sources :

Example 26 with Lookup

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();
}
Also used : MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) Lookup(org.motechproject.mds.domain.Lookup) Transactional(org.springframework.transaction.annotation.Transactional)

Example 27 with Lookup

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);
        }
    }
}
Also used : Field(org.motechproject.mds.domain.Field) LookupDto(org.motechproject.mds.dto.LookupDto) ArrayList(java.util.ArrayList) Lookup(org.motechproject.mds.domain.Lookup) LookupFieldDto(org.motechproject.mds.dto.LookupFieldDto)

Example 28 with Lookup

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;
}
Also used : Entity(org.motechproject.mds.domain.Entity) ArrayList(java.util.ArrayList) RestOptions(org.motechproject.mds.domain.RestOptions) Time(org.motechproject.commons.date.model.Time) DateTime(org.joda.time.DateTime) LocalDate(org.joda.time.LocalDate) Date(java.util.Date) LocalDate(org.joda.time.LocalDate) Field(org.motechproject.mds.domain.Field) Lookup(org.motechproject.mds.domain.Lookup)

Example 29 with Lookup

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());
        }
    }
}
Also used : Lookup(org.motechproject.mds.domain.Lookup)

Example 30 with Lookup

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());
}
Also used : ArrayList(java.util.ArrayList) Lookup(org.motechproject.mds.domain.Lookup) HashSet(java.util.HashSet)

Aggregations

Lookup (org.motechproject.mds.domain.Lookup)30 Field (org.motechproject.mds.domain.Field)16 Entity (org.motechproject.mds.domain.Entity)12 ArrayList (java.util.ArrayList)8 Test (org.junit.Test)8 LookupDto (org.motechproject.mds.dto.LookupDto)5 HashSet (java.util.HashSet)4 MdsEntity (org.motechproject.mds.domain.MdsEntity)4 MdsVersionedEntity (org.motechproject.mds.domain.MdsVersionedEntity)4 HashMap (java.util.HashMap)3 FieldSetting (org.motechproject.mds.domain.FieldSetting)3 RestOptions (org.motechproject.mds.domain.RestOptions)3 Type (org.motechproject.mds.domain.Type)3 TypeSetting (org.motechproject.mds.domain.TypeSetting)3 LookupFieldDto (org.motechproject.mds.dto.LookupFieldDto)3 LinkedList (java.util.LinkedList)2 Query (javax.jdo.Query)2 Matchers.anyString (org.mockito.Matchers.anyString)2 Tracking (org.motechproject.mds.domain.Tracking)2 FieldDto (org.motechproject.mds.dto.FieldDto)2