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);
}
}
}
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();
}
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);
}
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;
}
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);
}
Aggregations