Search in sources :

Example 11 with Entity

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

the class EntityServiceImpl method findEntitiesByPackage.

@Override
@Transactional
public List<EntityDto> findEntitiesByPackage(String packageName) {
    List<EntityDto> entities = new ArrayList<>();
    FilterValue filterValue = new FilterValue() {

        @Override
        public Object valueForQuery() {
            return super.getValue();
        }

        @Override
        public String paramTypeForQuery() {
            return String.class.getName();
        }

        @Override
        public List<String> operatorForQueryFilter() {
            return Arrays.asList(".startsWith(", ")");
        }
    };
    filterValue.setValue(packageName);
    Filter filter = new Filter("className", new FilterValue[] { filterValue });
    for (Entity entity : allEntities.filter(new Filters(filter), null, null)) {
        if (entity.isActualEntity()) {
            entities.add(entity.toDto());
        }
    }
    return entities;
}
Also used : EntityDto(org.motechproject.mds.dto.EntityDto) MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) Filters(org.motechproject.mds.filter.Filters) Filter(org.motechproject.mds.filter.Filter) ArrayList(java.util.ArrayList) FilterValue(org.motechproject.mds.filter.FilterValue) Transactional(org.springframework.transaction.annotation.Transactional)

Example 12 with Entity

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

the class EntityServiceImpl method getLookupFieldsMapping.

@Override
@Transactional
public Map<String, FieldDto> getLookupFieldsMapping(Long entityId, String lookupName) {
    Entity entity = allEntities.retrieveById(entityId);
    assertEntityExists(entity, entityId);
    Lookup lookup = entity.getLookupByName(lookupName);
    if (lookup == null) {
        throw new LookupNotFoundException(entity.getName(), lookupName);
    }
    Map<String, FieldDto> fieldMap = new HashMap<>();
    for (String lookupFieldName : lookup.getFieldsOrder()) {
        Field field = lookup.getLookupFieldByName(LookupName.getFieldName(lookupFieldName));
        if (lookupFieldName.contains(".")) {
            Entity relatedEntity = allEntities.retrieveByClassName(field.getMetadata(Constants.MetadataKeys.RELATED_CLASS).getValue());
            field = relatedEntity.getField(LookupName.getRelatedFieldName(lookupFieldName));
        }
        fieldMap.put(lookupFieldName, field.toDto());
    }
    return fieldMap;
}
Also used : MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) LookupNotFoundException(org.motechproject.mds.exception.lookup.LookupNotFoundException) Field(org.motechproject.mds.domain.Field) HashMap(java.util.HashMap) Lookup(org.motechproject.mds.domain.Lookup) LookupFieldDto(org.motechproject.mds.dto.LookupFieldDto) FieldDto(org.motechproject.mds.dto.FieldDto) Transactional(org.springframework.transaction.annotation.Transactional)

Example 13 with Entity

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

the class EntityServiceImpl method createEntity.

@Override
@Transactional
public EntityDto createEntity(EntityDto entityDto) {
    String packageName = ClassName.getPackage(entityDto.getClassName());
    boolean fromUI = StringUtils.isEmpty(packageName);
    String username = getUsername();
    if (fromUI) {
        String className;
        if (entityDto.getName().contains(" ")) {
            entityDto.setName(entityDto.getName().trim());
            StringBuilder stringBuilder = new StringBuilder();
            String[] nameParts = entityDto.getName().split(" ");
            for (String part : nameParts) {
                if (part.length() > 0) {
                    stringBuilder.append(Character.toUpperCase(part.charAt(0)));
                    if (part.length() > 1) {
                        stringBuilder.append(part.substring(1));
                    }
                }
            }
            className = String.format("%s.%s", Constants.PackagesGenerated.ENTITY, stringBuilder.toString());
        } else {
            // in this situation entity.getName() returns a simple name of class
            className = String.format("%s.%s", Constants.PackagesGenerated.ENTITY, entityDto.getName());
        }
        entityDto.setClassName(className);
    }
    if (allEntities.contains(entityDto.getClassName())) {
        throw new EntityAlreadyExistException(entityDto.getName());
    }
    Entity entity = allEntities.create(entityDto);
    LOGGER.debug("Adding default fields to the entity, since it doesn't extend MdsEntity or MdsVersionedEntity");
    if (!MdsEntity.class.getName().equalsIgnoreCase(entityDto.getSuperClass()) && !MdsVersionedEntity.class.getName().equalsIgnoreCase(entityDto.getSuperClass())) {
        EntityHelper.addDefaultFields(entity, allTypes);
    }
    if (username != null) {
        allEntityAudits.createAudit(entity, username);
    }
    return entity.toDto();
}
Also used : EntityAlreadyExistException(org.motechproject.mds.exception.entity.EntityAlreadyExistException) MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) MdsEntity(org.motechproject.mds.domain.MdsEntity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) Transactional(org.springframework.transaction.annotation.Transactional)

Example 14 with Entity

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

the class EntityServiceImpl method getEntityDraft.

@Override
@Transactional
public EntityDraft getEntityDraft(Long entityId, String username) {
    Entity entity = allEntities.retrieveById(entityId);
    assertEntityExists(entity, entityId);
    if (entity instanceof EntityDraft) {
        return (EntityDraft) entity;
    }
    if (username == null) {
        throw new AccessDeniedException("Cannot save draft - no user");
    }
    // get the draft
    EntityDraft draft = allEntityDrafts.retrieve(entity, username);
    if (draft == null) {
        draft = allEntityDrafts.create(entity, username);
    }
    return draft;
}
Also used : MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) AccessDeniedException(org.springframework.security.access.AccessDeniedException) EntityDraft(org.motechproject.mds.domain.EntityDraft) Transactional(org.springframework.transaction.annotation.Transactional)

Example 15 with Entity

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

the class EntityServiceImpl method addNonPersistentDataForLookupFields.

private void addNonPersistentDataForLookupFields(Collection<LookupDto> lookupDtos, Entity entity) {
    for (LookupDto lookup : lookupDtos) {
        for (LookupFieldDto lookupField : lookup.getLookupFields()) {
            Field field = entity.getField(lookupField.getName());
            if (StringUtils.isNotBlank(lookupField.getRelatedName())) {
                Entity relatedEntity = allEntities.retrieveByClassName(field.getMetadata(Constants.MetadataKeys.RELATED_CLASS).getValue());
                Field relatedField = relatedEntity.getField(lookupField.getRelatedName());
                addNonPersistentDataForLookupField(relatedField, lookupField, field.getDisplayName(), relatedField.getDisplayName());
            } else {
                addNonPersistentDataForLookupField(field, lookupField, field.getDisplayName(), null);
            }
        }
    }
}
Also used : Field(org.motechproject.mds.domain.Field) MdsEntity(org.motechproject.mds.domain.MdsEntity) Entity(org.motechproject.mds.domain.Entity) MdsVersionedEntity(org.motechproject.mds.domain.MdsVersionedEntity) LookupDto(org.motechproject.mds.dto.LookupDto) LookupFieldDto(org.motechproject.mds.dto.LookupFieldDto)

Aggregations

Entity (org.motechproject.mds.domain.Entity)97 Test (org.junit.Test)35 Field (org.motechproject.mds.domain.Field)33 MdsEntity (org.motechproject.mds.domain.MdsEntity)32 MdsVersionedEntity (org.motechproject.mds.domain.MdsVersionedEntity)32 Transactional (org.springframework.transaction.annotation.Transactional)32 ArrayList (java.util.ArrayList)14 Lookup (org.motechproject.mds.domain.Lookup)12 UserPreferences (org.motechproject.mds.domain.UserPreferences)8 Type (org.motechproject.mds.domain.Type)7 AllUserPreferences (org.motechproject.mds.repository.internal.AllUserPreferences)7 EntityDto (org.motechproject.mds.dto.EntityDto)6 LookupFieldDto (org.motechproject.mds.dto.LookupFieldDto)6 HashMap (java.util.HashMap)5 FieldDto (org.motechproject.mds.dto.FieldDto)5 HashSet (java.util.HashSet)4 EntityDraft (org.motechproject.mds.domain.EntityDraft)4 MotechDataService (org.motechproject.mds.service.MotechDataService)4 Query (javax.jdo.Query)3 FieldSetting (org.motechproject.mds.domain.FieldSetting)3