/** getXml. */ @Get public void getXml() { authenticate(); JaxbObject<Lane> jaxbTool = new JaxbObject<>(); Hibernate3DtoCopier copier = new Hibernate3DtoCopier(); SampleService ss = BeanFactory.getSampleServiceBean(); Sample sample = testIfNull(ss.findBySWAccession(getId())); CollectionPropertyName<Sample>[] createCollectionPropertyNames = CollectionPropertyName.createCollectionPropertyNames( Sample.class, new String[] {"sampleAttributes"}); Sample dto = copier.hibernate2dto( Sample.class, sample, new Class<?>[] {}, createCollectionPropertyNames); if (fields.contains("lanes")) { SortedSet<Lane> lanes = sample.getLanes(); if (lanes != null) { SortedSet<Lane> copiedLanes = new TreeSet<>(); for (Lane lane : lanes) { copiedLanes.add(copier.hibernate2dto(Lane.class, lane)); } dto.setLanes(copiedLanes); } else { Log.info("Could not be found: lanes"); } } if (fields.contains("ius")) { SortedSet<IUS> ius = sample.getIUS(); if (ius != null) { SortedSet<IUS> copiedIUS = new TreeSet<>(); for (IUS i : ius) { copiedIUS.add(copier.hibernate2dto(IUS.class, i)); } dto.setIUS(copiedIUS); } { Log.info("Could not be found : ius"); } } Document line = XmlTools.marshalToDocument(jaxbTool, dto); getResponse().setEntity(XmlTools.getRepresentation(line)); }
/** * {@inheritDoc} * * @return */ @Override @Put public Representation put(Representation entity) { authenticate(); Representation representation = null; Lane newLane = null; JaxbObject<Lane> jo = new JaxbObject<>(); try { String text = entity.getText(); newLane = (Lane) XmlTools.unMarshal(jo, new Lane(), text); } catch (SAXException | IOException ex) { ex.printStackTrace(); throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, ex); } try { LaneService fs = BeanFactory.getLaneServiceBean(); Lane lane = testIfNull(fs.findByID(newLane.getLaneId())); lane.givesPermission(registration); // simple types String name = newLane.getName(); String desc = newLane.getDescription(); Integer laneIndex = newLane.getLaneIndex(); String cycleDescriptor = newLane.getCycleDescriptor(); Boolean skip = newLane.getSkip(); String tags = newLane.getTags(); String regions = newLane.getRegions(); // foreign keys Sample sample = newLane.getSample(); Registration owner = newLane.getOwner(); Set<LaneAttribute> newAttributes = newLane.getLaneAttributes(); if (name != null) { lane.setName(name); } if (desc != null) { lane.setDescription(desc); } if (laneIndex != null) { lane.setLaneIndex(laneIndex); } if (cycleDescriptor != null) { lane.setCycleDescriptor(cycleDescriptor); } if (skip != null) { lane.setSkip(skip); } if (tags != null) { lane.setTags(tags); } if (regions != null) { lane.setRegions(regions); } if (sample != null) { SampleService ss = BeanFactory.getSampleServiceBean(); Sample newSample = ss.findByID(sample.getSampleId()); if (newSample != null && newSample.givesPermission(registration)) { lane.setSample(newSample); } else if (newSample == null) { Log.info("Could not be found " + sample); } } if (owner != null) { RegistrationService rs = BeanFactory.getRegistrationServiceBean(); Registration newReg = rs.findByEmailAddress(owner.getEmailAddress()); if (newReg != null) { lane.setOwner(newReg); } else { Log.info("Could not be found " + owner); } } else if (lane.getOwner() == null) { lane.setOwner(registration); } if (newAttributes != null) { // SEQWARE-1577 - AttributeAnnotator cascades deletes when annotating LaneIDResource.mergeAttributes(lane.getLaneAttributes(), newAttributes, lane); } fs.update(registration, lane); Hibernate3DtoCopier copier = new Hibernate3DtoCopier(); Lane detachedLane = copier.hibernate2dto( Lane.class, lane, new Class<?>[] {LibraryStrategy.class, LibrarySource.class, LibrarySelection.class}, new CollectionPropertyName<?>[] {}); Document line = XmlTools.marshalToDocument(jo, detachedLane); representation = XmlTools.getRepresentation(line); getResponse().setEntity(representation); getResponse() .setLocationRef(getRequest().getRootRef() + "/lanes/" + detachedLane.getSwAccession()); getResponse().setStatus(Status.SUCCESS_CREATED); } catch (SecurityException e) { getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN, e.getMessage()); } catch (Exception e) { e.printStackTrace(); getResponse().setStatus(Status.SERVER_ERROR_INTERNAL, e.getMessage()); } return representation; }
/** * {@inheritDoc} * * @return */ @Override @Put public Representation put(Representation entity) { authenticate(); Representation representation = null; try { JaxbObject<Sample> jo = new JaxbObject<>(); String text = entity.getText(); Sample o = null; try { o = (Sample) XmlTools.unMarshal(jo, new Sample(), text); } catch (SAXException ex) { throw new ResourceException(Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY, ex); } SampleService service = BeanFactory.getSampleServiceBean(); Sample sample = testIfNull(service.findByID(o.getSampleId())); sample.givesPermission(registration); String anonymizedName = o.getAnonymizedName(); String individualName = o.getIndividualName(); Integer swAccession = o.getSwAccession(); String name = o.getName(); String title = o.getTitle(); String alias = o.getAlias(); String description = o.getDescription(); String type = o.getType(); String tags = o.getTags(); String adapters = o.getAdapters(); String regions = o.getRegions(); Integer expectedNumRuns = o.getExpectedNumRuns(); Integer expectedNumSpots = o.getExpectedNumSpots(); Integer expectedNumReads = o.getExpectedNumReads(); Boolean skip = o.getSkip(); Boolean isSelected = o.getIsSelected(); Boolean isHasFile = o.getIsHasFile(); Integer countFile = o.getCountFile(); if (null != anonymizedName) sample.setAnonymizedName(anonymizedName); if (null != individualName) sample.setIndividualName(individualName); if (null != swAccession) sample.setSwAccession(swAccession); if (null != name) sample.setName(name); if (null != title) sample.setTitle(title); if (null != alias) sample.setAlias(alias); if (null != description) sample.setDescription(description); if (null != type) sample.setType(type); if (null != tags) sample.setTags(tags); if (null != adapters) sample.setAdapters(adapters); if (null != regions) sample.setRegions(regions); if (null != expectedNumRuns) sample.setExpectedNumRuns(expectedNumRuns); if (null != expectedNumSpots) sample.setExpectedNumSpots(expectedNumSpots); if (null != expectedNumReads) sample.setExpectedNumReads(expectedNumReads); if (null != skip) sample.setSkip(skip); if (null != isSelected) sample.setIsSelected(isSelected); if (null != isHasFile) sample.setIsHasFile(isHasFile); if (null != countFile) sample.setCountFile(countFile); if (null != o.getSampleAttributes()) { // SEQWARE-1577 - AttributeAnnotator cascades deletes when annotating SampleIDResource.mergeAttributes( sample.getSampleAttributes(), o.getSampleAttributes(), sample); } if (null != o.getParents()) { SampleService ss = BeanFactory.getSampleServiceBean(); Set<Sample> parents = new HashSet<>(sample.getParents()); for (Sample s : o.getParents()) { parents.add(ss.findByID(s.getSampleId())); } sample.setParents(parents); } if (null != o.getChildren()) { SampleService ss = BeanFactory.getSampleServiceBean(); Set<Sample> children = new HashSet<>(sample.getChildren()); for (Sample s : o.getChildren()) { children.add(ss.findByID(s.getSampleId())); } sample.setChildren(children); } service.update(sample); // persist object Hibernate3DtoCopier copier = new Hibernate3DtoCopier(); Sample detachedSample = copier.hibernate2dto(Sample.class, sample); Document line = XmlTools.marshalToDocument(jo, detachedSample); getResponse().setEntity(XmlTools.getRepresentation(line)); getResponse() .setLocationRef( getRequest().getRootRef() + "/samples/" + detachedSample.getSwAccession()); getResponse().setStatus(Status.SUCCESS_CREATED); } catch (SecurityException e) { getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN, e); } catch (Exception e) { e.printStackTrace(); getResponse().setStatus(Status.SERVER_ERROR_INTERNAL, e); } return representation; }