Search in sources :

Example 26 with MetadataDto

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);
}
Also used : FieldBasicDto(org.motechproject.mds.dto.FieldBasicDto) Collections.singletonList(java.util.Collections.singletonList) Arrays.asList(java.util.Arrays.asList) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) ResultActions(org.springframework.test.web.server.ResultActions) MetadataDto(org.motechproject.mds.dto.MetadataDto) LinkedList(java.util.LinkedList) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) FieldDto(org.motechproject.mds.dto.FieldDto) Test(org.junit.Test)

Example 27 with MetadataDto

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);
}
Also used : FieldBasicDto(org.motechproject.mds.dto.FieldBasicDto) ResultActions(org.springframework.test.web.server.ResultActions) MetadataDto(org.motechproject.mds.dto.MetadataDto) LinkedList(java.util.LinkedList) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) FieldDto(org.motechproject.mds.dto.FieldDto) Test(org.junit.Test)

Example 28 with MetadataDto

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);
    }
}
Also used : PredicateUtil.entityField(org.motechproject.mds.annotations.internal.PredicateUtil.entityField) Field(org.motechproject.mds.annotations.Field) FieldBasicDto(org.motechproject.mds.dto.FieldBasicDto) AccessibleObject(java.lang.reflect.AccessibleObject) TypeDto(org.motechproject.mds.dto.TypeDto) MetadataDto(org.motechproject.mds.dto.MetadataDto) FieldDto(org.motechproject.mds.dto.FieldDto)

Aggregations

MetadataDto (org.motechproject.mds.dto.MetadataDto)28 FieldDto (org.motechproject.mds.dto.FieldDto)22 Test (org.junit.Test)9 FieldBasicDto (org.motechproject.mds.dto.FieldBasicDto)8 TypeDto (org.motechproject.mds.dto.TypeDto)7 ArrayList (java.util.ArrayList)6 SettingDto (org.motechproject.mds.dto.SettingDto)6 LookupFieldDto (org.motechproject.mds.dto.LookupFieldDto)5 LinkedList (java.util.LinkedList)3 FieldMetadata (javax.jdo.metadata.FieldMetadata)3 EntityDto (org.motechproject.mds.dto.EntityDto)3 FieldValidationDto (org.motechproject.mds.dto.FieldValidationDto)3 LookupDto (org.motechproject.mds.dto.LookupDto)3 Method (java.lang.reflect.Method)2 List (java.util.List)2 ForeignKeyMetadata (javax.jdo.metadata.ForeignKeyMetadata)2 ObjectMapper (org.codehaus.jackson.map.ObjectMapper)2 ClassData (org.motechproject.mds.domain.ClassData)2 ValidationCriterionDto (org.motechproject.mds.dto.ValidationCriterionDto)2 ResultActions (org.springframework.test.web.server.ResultActions)2