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