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); }
private DetailedSample createGhostParent(DetailedSample parent, DetailedSample child) throws IOException { parent.setProject(child.getProject()); parent.setSampleType(child.getSampleType()); parent.setScientificName(child.getScientificName()); parent.setVolume(0D); parent.setVolumeUnits(VolumeUnit.MICROLITRES); parent.setSynthetic(true); if (child.getIdentityId() != null) parent.setIdentityId(child.getIdentityId()); if (isLcmTubeSample(child)) { SampleSlide parentSlides = (SampleSlide) parent; Integer slides = parentSlides.getSlides() == null ? 0 : parentSlides.getSlides(); slides += ((SampleLCMTube) child).getSlidesConsumed(); parentSlides.setSlides(slides); parentSlides.setDiscards(0); if (parentSlides.getId() != SampleImpl.UNSAVED_ID) { update(parentSlides); } } create(parent); return parent; }