Search in sources :

Example 66 with Field

use of org.motechproject.mds.domain.Field 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 67 with Field

use of org.motechproject.mds.domain.Field in project motech by motech.

the class EntityServiceImpl method getEntityFieldById.

@Override
@Transactional
public FieldDto getEntityFieldById(Long entityId, Long fieldId) {
    Entity entity = allEntities.retrieveById(entityId);
    Field field = entity.getField(fieldId);
    if (field == null) {
        throw new FieldNotFoundException(entity.getClassName(), fieldId);
    }
    return field.toDto();
}
Also used : MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) Field(org.motechproject.mds.domain.Field) FieldNotFoundException(org.motechproject.mds.exception.field.FieldNotFoundException) Transactional(org.springframework.transaction.annotation.Transactional)

Example 68 with Field

use of org.motechproject.mds.domain.Field in project motech by motech.

the class EntityServiceImpl method addField.

private void addField(Entity entity, FieldDto fieldDto) {
    FieldBasicDto basic = fieldDto.getBasic();
    String typeClass = fieldDto.getType().getTypeClass();
    Type type = allTypes.retrieveByClassName(typeClass);
    Field field = new Field(entity, basic.getName(), basic.getDisplayName(), basic.isRequired(), basic.isUnique(), fieldDto.isReadOnly(), fieldDto.isNonEditable(), fieldDto.isNonDisplayable(), (String) basic.getDefaultValue(), basic.getTooltip(), basic.getPlaceholder(), null);
    field.setType(type);
    if (type.hasSettings()) {
        for (TypeSetting setting : type.getSettings()) {
            SettingDto settingDto = fieldDto.getSetting(setting.getName());
            FieldSetting fieldSetting = new FieldSetting(field, setting);
            if (null != settingDto) {
                fieldSetting.setValue(settingDto.getValueAsString());
            }
            field.addSetting(fieldSetting);
        }
    }
    if (type.hasValidation()) {
        for (TypeValidation validation : type.getValidations()) {
            FieldValidation fieldValidation = new FieldValidation(field, validation);
            FieldValidationDto validationDto = fieldDto.getValidation();
            if (null != validationDto) {
                ValidationCriterionDto criterion = validationDto.getCriterion(validation.getDisplayName());
                if (null != criterion) {
                    fieldValidation.setValue(criterion.valueAsString());
                    fieldValidation.setEnabled(criterion.isEnabled());
                }
            }
            field.addValidation(fieldValidation);
        }
    }
    for (MetadataDto metadata : fieldDto.getMetadata()) {
        field.addMetadata(new FieldMetadata(metadata));
    }
    entity.addField(field);
}
Also used : FieldMetadata(org.motechproject.mds.domain.FieldMetadata) MetadataDto(org.motechproject.mds.dto.MetadataDto) FieldSetting(org.motechproject.mds.domain.FieldSetting) Field(org.motechproject.mds.domain.Field) Type(org.motechproject.mds.domain.Type) TypeValidation(org.motechproject.mds.domain.TypeValidation) FieldBasicDto(org.motechproject.mds.dto.FieldBasicDto) ValidationCriterionDto(org.motechproject.mds.dto.ValidationCriterionDto) TypeSetting(org.motechproject.mds.domain.TypeSetting) FieldValidationDto(org.motechproject.mds.dto.FieldValidationDto) SettingDto(org.motechproject.mds.dto.SettingDto) FieldValidation(org.motechproject.mds.domain.FieldValidation)

Example 69 with Field

use of org.motechproject.mds.domain.Field 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 70 with Field

use of org.motechproject.mds.domain.Field in project motech by motech.

the class UserPreferencesServiceImpl method unselectFields.

@Override
@Transactional
public void unselectFields(Long id, String username) {
    Entity entity = getEntity(id);
    UserPreferences userPreferences = allUserPreferences.retrieveByClassNameAndUsername(entity.getClassName(), username);
    userPreferences = checkPreferences(userPreferences, entity, username);
    Set<Field> fields = new HashSet<>();
    fields.addAll(entity.getFields());
    userPreferences.setUnselectedFields(fields);
    userPreferences.setSelectedFields(new HashSet<Field>());
    allUserPreferences.update(userPreferences);
}
Also used : UserPreferences(org.motechproject.mds.domain.UserPreferences) AllUserPreferences(org.motechproject.mds.repository.internal.AllUserPreferences) Entity(org.motechproject.mds.domain.Entity) Field(org.motechproject.mds.domain.Field) HashSet(java.util.HashSet) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

Field (org.motechproject.mds.domain.Field)73 Entity (org.motechproject.mds.domain.Entity)33 Test (org.junit.Test)24 Lookup (org.motechproject.mds.domain.Lookup)16 MdsEntity (org.motechproject.mds.domain.MdsEntity)15 MdsVersionedEntity (org.motechproject.mds.domain.MdsVersionedEntity)15 Type (org.motechproject.mds.domain.Type)14 ArrayList (java.util.ArrayList)13 Transactional (org.springframework.transaction.annotation.Transactional)13 FieldDto (org.motechproject.mds.dto.FieldDto)12 LookupFieldDto (org.motechproject.mds.dto.LookupFieldDto)12 HashSet (java.util.HashSet)8 Matchers.anyString (org.mockito.Matchers.anyString)6 FieldSetting (org.motechproject.mds.domain.FieldSetting)6 TypeSetting (org.motechproject.mds.domain.TypeSetting)6 UserPreferences (org.motechproject.mds.domain.UserPreferences)5 EntityDto (org.motechproject.mds.dto.EntityDto)5 AllUserPreferences (org.motechproject.mds.repository.internal.AllUserPreferences)5 FieldMetadata (org.motechproject.mds.domain.FieldMetadata)4 LookupDto (org.motechproject.mds.dto.LookupDto)4