public static ConsentLevel getIdentityConsentLevel(DetailedSample sample) { SampleIdentity identity = null; if (isIdentitySample(sample)) { identity = (SampleIdentity) sample; } else { identity = LimsUtils.getParent(SampleIdentity.class, sample); } if (identity != null && identity.getConsentLevel() != null) { return identity.getConsentLevel(); } return null; }
private void setIdentity(DetailedSample descendant) throws IOException, MisoNamingException { if (descendant.getParent() == null) { throw new IllegalArgumentException(ERR_MISSING_PARENT_ID); } DetailedSample child = descendant; DetailedSample parent = descendant.getParent(); while (parent.getParent() != null) { child = parent; parent = child.getParent(); } if (!isIdentitySample(parent)) { throw new IllegalStateException("Missing Identity at root of hierarchy"); } if (descendant.getIdentityId() != null) { parent.setId(descendant.getIdentityId()); } SampleIdentity identity = findOrCreateIdentity(descendant, (SampleIdentity) parent); child.setParent(identity); }
@Override public String generate(Sample sample) throws MisoNamingException, IOException { if (!LimsUtils.isDetailedSample(sample)) { throw new IllegalArgumentException("Can only generate an alias for detailed samples"); } DetailedSample detailed = (DetailedSample) sample; if (isIdentitySample(detailed)) { return generateIdentityAlias((SampleIdentity) detailed); } for (DetailedSample parent = detailed.getParent(); parent != null; parent = parent.getParent()) { if (isAliquotSample(parent)) { return addSiblingTag(parent.getAlias(), detailed); } if (isTissueSample(parent)) { if (isTissueSample(detailed)) { // tissues parented to tissues return generateTissueAlias((SampleTissue) detailed, LimsUtils.getParent(SampleIdentity.class, parent)); } else { return addSiblingTag(parent.getAlias(), detailed); } } if (isIdentitySample(parent)) { if (!isTissueSample(detailed)) throw new IllegalArgumentException("Missing parent tissue"); return generateTissueAlias((SampleTissue) detailed, (SampleIdentity) parent); } } throw new IllegalStateException("Unexpected conditions for alias generation"); }
return (DetailedSample) parent; } else { if (isTissueSample(tempParent) && isIdentitySample(tempParent.getParent())) { DetailedSample tissueParent = sampleStore.getMatchingGhostTissue((SampleTissue) tempParent); if (tissueParent != null) {
if (isDetailedSample(sample)) { DetailedSample detailed = (DetailedSample) sample; if (!isIdentitySample(sample)) { try { setIdentity(detailed); if (!isIdentitySample(detailed.getParent())) { detailed.setParent(findOrCreateParent(detailed));
private static DetailedSampleDto asDetailedSampleDto(@Nonnull DetailedSample from) { DetailedSampleDto dto = null; if (isIdentitySample(from)) { dto = asIdentitySampleDto((SampleIdentity) from); } else if (isTissueSample(from)) {
dTarget.setQcPassed(dSource.getQcPassed()); dTarget.setSubproject(dSource.getSubproject()); if (isIdentitySample(target)) { applyIdentityChanges((SampleIdentity) target, (SampleIdentity) source); } else if (isTissueSample(target)) {