private List<?> convertMref(Attribute attr, Object paramValue) { List<?> value; if (paramValue != null) { List<?> mrefParamValues; if (paramValue instanceof String) { mrefParamValues = asList(StringUtils.split((String) paramValue, ',')); } else if (paramValue instanceof List<?>) { mrefParamValues = (List<?>) paramValue; } else { throw new MolgenisDataException( format( "Attribute [%s] value is of type [%s] instead of [%s] or [%s]", attr.getName(), paramValue.getClass().getSimpleName(), String.class.getSimpleName(), List.class.getSimpleName())); } EntityType mrefEntity = attr.getRefEntity(); Attribute mrefEntityIdAttr = mrefEntity.getIdAttribute(); value = mrefParamValues .stream() .map(mrefParamValue -> toEntityValue(mrefEntityIdAttr, mrefParamValue, null)) .map(mrefIdValue -> entityManager.getReference(mrefEntity, mrefIdValue)) .collect(toList()); } else { value = emptyList(); } return value; }
Iterable<Entity> getReferences(EntityType refEntityType, Iterable<?> ids) { return entityManager.getReferences(refEntityType, ids); }
LOG.trace("Hydrating entity: {} for entity {}", dehydratedEntity, entityType.getId()); Entity hydratedEntity = entityManager.create(entityType, NO_POPULATE); value = entityManager.getReferences(attribute.getRefEntity(), (List<Object>) value); } else if (isSingleReferenceType(attribute)) { value = entityManager.getReference(attribute.getRefEntity(), value);
/** * Creates a new entity based from a HttpServletRequest. For file attributes persists the file in * the file store and persist a file meta data entity. * * @param meta entity meta data * @param request HTTP request parameters * @return entity created from HTTP request parameters */ public Entity toEntity(final EntityType meta, final Map<String, Object> request) { final Entity entity = entityManager.create(meta, POPULATE); for (Attribute attr : meta.getAtomicAttributes()) { if (attr.getExpression() == null) { String paramName = attr.getName(); if (request.containsKey(paramName)) { final Object paramValue = request.get(paramName); Attribute idAttribute = meta.getIdAttribute(); Object idValue = request.get(idAttribute.getName()); final Object value = this.toEntityValue(attr, paramValue, idValue); entity.set(attr.getName(), value); } } } return entity; }
@Override public Entity mapRow(ResultSet resultSet, int i) throws SQLException { Entity e = entityManager.createFetch(entityType, fetch); // TODO performance, iterate over fetch if available for (Attribute attr : entityType.getAtomicAttributes()) { if (fetch == null || fetch.hasField(attr.getName())) { if (attr.getExpression() != null) { continue; } e.set(attr.getName(), mapValue(resultSet, attr)); } } return e; }
/** Package-private for testablility */ Entity applyMappingToEntity( EntityMapping sourceMapping, Entity sourceEntity, EntityType targetMetaData, int depth) { Entity target = entityManager.create(targetMetaData, POPULATE); if (targetMetaData.getAttribute(SOURCE) != null) { target.set(SOURCE, sourceMapping.getName()); } sourceMapping .getAttributeMappings() .forEach( attributeMapping -> applyMappingToAttribute( attributeMapping, sourceEntity, target, sourceMapping.getSourceEntityType(), depth)); return target; }
private Entity convertRef(Attribute attr, Object value) { if (value instanceof Entity) { return (Entity) value; } if (value == null) { return null; } // try to convert value Object idValue = toQueryRuleValue(value, attr.getRefEntity().getIdAttribute()); return entityManager.getReference(attr.getRefEntity(), idValue); }
Entity row = entityManager.create(entityType, NO_POPULATE);
value = entityManager.getReferences(entityType, asList(mrefIds)); } else { value = null;
private Object convertRef(Attribute attr, Object paramValue) { Object value; if (paramValue != null) { Object idValue = toEntityValue(attr.getRefEntity().getIdAttribute(), paramValue, null); value = entityManager.getReference(attr.getRefEntity(), idValue); } else { value = null; } return value; }
private JobExecution createJobExecution(ScheduledJob scheduledJob) { JobExecution jobExecution = (JobExecution) entityManager.create(scheduledJob.getType().getJobExecutionType(), POPULATE); writePropertyValues(jobExecution, getPropertyValues(scheduledJob.getParameters())); jobExecution.setFailureEmail(scheduledJob.getFailureEmail()); jobExecution.setSuccessEmail(scheduledJob.getSuccessEmail()); jobExecution.setUser(scheduledJob.getUser()); jobExecution.setScheduledJobId(scheduledJob.getId()); return jobExecution; }
/** * Maps a single results set array value to an entity value for one-to-many attributes. * * @param arrayValue result set array value * @param attr attribute meta data * @return mapped value * @throws SQLException if an error occurs while attempting to access the array */ private Object mapValueOneToMany(Array arrayValue, Attribute attr) throws SQLException { EntityType refEntityType = attr.getRefEntity(); Object value; Object[] postgreSqlMrefIds = (Object[]) arrayValue.getArray(); if (postgreSqlMrefIds.length > 0 && postgreSqlMrefIds[0] != null) { Attribute idAttr = refEntityType.getIdAttribute(); Object[] mrefIds = new Object[postgreSqlMrefIds.length]; for (int i = 0; i < postgreSqlMrefIds.length; ++i) { Object mrefIdRaw = postgreSqlMrefIds[i]; Object mrefId = mrefIdRaw != null ? convertMrefIdValue(mrefIdRaw.toString(), idAttr) : null; mrefIds[i] = mrefId; } // convert ids to (lazy) entities value = entityManager.getReferences(refEntityType, asList(mrefIds)); } else { value = null; } return value; }
Object refIdValue = mapValue(resultSet, xrefEntityType.getIdAttribute(), colName); value = refIdValue != null ? entityManager.getReference(xrefEntityType, refIdValue) : null; break; case CATEGORICAL_MREF:
@Override public QuestionnaireResponse startQuestionnaire(String entityTypeId) { Questionnaire questionnaire = findQuestionnaireEntity(entityTypeId); if (questionnaire == null) { EntityType questionnaireEntityType = dataService.getEntityType(entityTypeId); boolean rlsEnabled = mutableAclClassService .getAclClassTypes() .contains(EntityIdentityUtils.toType(questionnaireEntityType)); if (!rlsEnabled) { throw new QuestionnaireNotRowLevelSecuredException(questionnaireEntityType); } questionnaire = questionnaireFactory.create(entityManager.create(questionnaireEntityType, POPULATE)); questionnaire.setOwner(getCurrentUsername()); questionnaire.setStatus(OPEN); dataService.add(entityTypeId, questionnaire); Questionnaire newQuestionnaire = findQuestionnaireEntity(questionnaire.getEntityType().getId()); return QuestionnaireResponse.create(newQuestionnaire); } else { return QuestionnaireResponse.create(questionnaire); } }
case FILE: convertedValue = value != null ? entityManager .getReference(attr.getRefEntity(), convert(value, attr.getRefEntity().getIdAttribute())) : null; break; case CATEGORICAL_MREF: .getReference(attr.getRefEntity(), convert(valueId, attr.getRefEntity().getIdAttribute()))) .collect(toList()); break;
convertedValue = value != null ? entityManager.getReference( attr.getRefEntity(), convert(value, attr.getRefEntity().getIdAttribute())) : null; .map( valueId -> entityManager.getReference( attr.getRefEntity(), convert(valueId, attr.getRefEntity().getIdAttribute())))