@Override public QC updateQc(QC qc) throws IOException { QcTargetStore handler = getHandler(qc.getType().getQcTarget()); QualityControlEntity entity = handler.getEntity(qc.getEntity().getId()); authorizationManager.throwIfNotWritable(entity); User user = authorizationManager.getCurrentUser(); QC original = handler.get(qc.getId()); if (original.getType().getId() != qc.getType().getId()) { throw new IllegalArgumentException("QC type has changed"); } original.setResults(qc.getResults()); original.setLastModified(new Date()); entity.setChangeDetails(user); changeLoggableStore.update(entity); handler.save(original); return original; }
@Override public QC createQC(QC qc) throws IOException { QcTargetStore handler = getHandler(qc.getType().getQcTarget()); QualityControlEntity entity = handler.getEntity(qc.getEntity().getId()); authorizationManager.throwIfNotWritable(entity); User user = authorizationManager.getCurrentUser(); qc.setCreator(user); qc.setCreationTime(new Date()); qc.setLastModified(qc.getCreationTime()); QcType type = qcTypeStore.get(qc.getType().getId()); if (!type.getQcTarget().equals(entity.getQcTarget())) { throw new IllegalArgumentException("QC type and entity are mismatched."); } if (qc.getType().isAutoUpdateField()) { handler.updateEntity(qc.getEntity().getId(), qc.getType().getCorrespondingField(), qc.getResults(), qc.getType().getUnits()); } entity.setChangeDetails(user); changeLoggableStore.update(entity); long id = handler.save(qc); return handler.get(id); }
public static QcDto asDto(@Nonnull QC from) { QcDto dto = new QcDto(); dto.setId(from.getId()); dto.setDate(formatDate(from.getDate())); dto.setCreator(from.getCreator().getFullName()); dto.setType(asDto(from.getType())); dto.setResults(from.getResults()); dto.setEntityId(from.getEntity().getId()); dto.setEntityAlias(from.getEntity().getAlias()); dto.setDescription(from.getDescription()); return dto; }