use of org.motechproject.mds.dto.MetadataDto in project motech by motech.
the class EntityControllerTest method shouldGetEntityFields.
@Test
public void shouldGetEntityFields() throws Exception {
List<MetadataDto> exampleMetadata = new LinkedList<>();
exampleMetadata.add(new MetadataDto("key1", "value1"));
exampleMetadata.add(new MetadataDto("key2", "value2"));
List<FieldDto> expected = new LinkedList<>();
expected.add(new FieldDto(14L, 9005L, STRING, new FieldBasicDto("Other", "Other", false, false, "test", null, null), false, exampleMetadata, FieldValidationDto.STRING, null, null));
ResultActions actions = controller.perform(get("/entities/9005/fields")).andExpect(status().isOk());
List<FieldDto> fields = new ObjectMapper().readValue(actions.andReturn().getResponse().getContentAsByteArray(), new TypeReference<List<FieldDto>>() {
});
assertEquals(expected, fields);
}
use of org.motechproject.mds.dto.MetadataDto in project motech by motech.
the class EntityControllerTest method shouldFindFieldByName.
@Test
public void shouldFindFieldByName() throws Exception {
List<MetadataDto> exampleMetadata = new LinkedList<>();
exampleMetadata.add(new MetadataDto("key1", "value1"));
exampleMetadata.add(new MetadataDto("key2", "value2"));
FieldDto expected = new FieldDto(14L, 9005L, STRING, new FieldBasicDto("Other", "Other", false, false, "test", null, null), false, exampleMetadata, FieldValidationDto.STRING, null, null);
ResultActions actions = controller.perform(get("/entities/9005/fields/Other")).andExpect(status().isOk());
FieldDto field = new ObjectMapper().readValue(actions.andReturn().getResponse().getContentAsByteArray(), FieldDto.class);
assertEquals(expected, field);
}
use of org.motechproject.mds.dto.MetadataDto in project motech by motech.
the class FieldProcessor method process.
@Override
protected void process(AnnotatedElement element) {
AccessibleObject ac = (AccessibleObject) element;
Class<?> classType = MemberUtil.getCorrectType(ac);
Class<?> genericType = MemberUtil.getGenericType(element);
Class<?> declaringClass = MemberUtil.getDeclaringClass(ac);
Class<?> valueType = null;
if (null != classType) {
if (Map.class.isAssignableFrom(classType)) {
valueType = MemberUtil.getGenericType(element, 1);
}
String fieldName = MemberUtil.getFieldName(ac);
FieldDto currentField = getFieldByName(declaringClass.getName(), fieldName);
boolean isRelationship = ReflectionsUtil.hasAnnotationClassLoaderSafe(genericType, genericType, Entity.class);
boolean isOwningSide = isRelationship && getMappedBy(ac) == null;
boolean isCollection = Collection.class.isAssignableFrom(classType);
Field annotation = getAnnotationClassLoaderSafe(ac, classType, Field.class);
String relatedFieldName = getRelatedFieldName(ac, classType, genericType, declaringClass, isRelationship);
java.lang.reflect.Field relatedField = (relatedFieldName != null) ? ReflectionUtils.findField(genericType, relatedFieldName) : null;
boolean relatedFieldIsCollection = isRelatedFieldCollection(relatedField);
boolean isTextArea = getAnnotationValue(annotation, TYPE, EMPTY).equalsIgnoreCase("text");
TypeDto type = getCorrectType(classType, isCollection, isRelationship, relatedFieldIsCollection);
FieldBasicDto basic = new FieldBasicDto();
basic.setDisplayName(isUiChanged(currentField) ? currentField.getBasic().getDisplayName() : getAnnotationValue(annotation, DISPLAY_NAME, convertFromCamelCase(fieldName)));
basic.setName(fieldName);
basic.setDefaultValue(getDefaultValueForField(annotation, classType));
basic.setRequired(isFieldRequired(annotation, classType));
basic.setUnique(isFieldUnique(ac));
FieldDto field = new FieldDto();
if (null != annotation) {
basic.setTooltip(isUiChanged(currentField) ? currentField.getBasic().getTooltip() : annotation.tooltip());
basic.setPlaceholder(annotation.placeholder());
String fn = getAnnotationValue(annotation, NAME, EMPTY);
if (!fn.equals(EMPTY)) {
field.addMetadata(new MetadataDto(DATABASE_COLUMN_NAME, fn));
}
}
field.setEntityId(entity.getId());
field.setType(type);
field.setBasic(basic);
field.setValidation(createValidation(ac, type));
field.setReadOnly(true);
field.setNonEditable(false);
field.setNonDisplayable(false);
field.setUiChanged(isUiChanged(currentField));
field.setUiFilterable(isUiFilterable(currentField));
setFieldSettings(ac, classType, isRelationship, isTextArea, field);
setFieldMetadata(classType, genericType, valueType, isCollection, isRelationship, relatedFieldIsCollection, isOwningSide, field, relatedFieldName);
add(field);
} else {
LOGGER.warn("Field type is unknown in: {}", ac);
}
}
Aggregations