/** {@inheritDoc} */ @Override @Put public Representation put(Representation entity) { authenticate(); Representation representation = null; Experiment newObj = null; JaxbObject<Experiment> jo = new JaxbObject<Experiment>(); try { String text = entity.getText(); newObj = (Experiment) XmlTools.unMarshal(jo, new Experiment(), text); } catch (SAXException ex) { ex.printStackTrace(); throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, ex); } catch (IOException e) { e.printStackTrace(); throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e); } try { ExperimentService service = BeanFactory.getExperimentServiceBean(); Experiment exp = (Experiment) testIfNull(service.findByID(newObj.getExperimentId())); exp.givesPermission(registration); // simple types String title = newObj.getTitle(); String name = newObj.getName(); String desc = newObj.getDescription(); String alias = newObj.getAlias(); String accession = newObj.getAccession(); String status = newObj.getStatus(); String centerName = newObj.getCenterName(); String sequencerSpace = newObj.getSequenceSpace(); String baseCaller = newObj.getBaseCaller(); String qualityScorer = newObj.getQualityScorer(); Integer qualityNumberLevels = newObj.getQualityNumberOfLevels(); Integer qualityMultiplier = newObj.getQualityMultiplier(); Long expectedNumberSpots = newObj.getExpectedNumberSpots(); Long expectedNumberReads = newObj.getExpectedNumberReads(); // foreign keys Study study = newObj.getStudy(); Registration owner = newObj.getOwner(); // sets Set<ExperimentAttribute> expAttributes = newObj.getExperimentAttributes(); if (title != null) { exp.setTitle(title); } if (name != null) { exp.setName(name); } if (desc != null) { exp.setDescription(desc); } if (alias != null) { exp.setAlias(alias); } if (accession != null) { exp.setAccession(accession); } if (status != null) { exp.setStatus(status); } if (centerName != null) { exp.setCenterName(centerName); } if (sequencerSpace != null) { exp.setSequenceSpace(sequencerSpace); } if (baseCaller != null) { exp.setBaseCaller(baseCaller); } if (qualityScorer != null) { exp.setQualityScorer(qualityScorer); } if (qualityNumberLevels != null) { exp.setQualityNumberOfLevels(qualityNumberLevels); } if (qualityMultiplier != null) { exp.setQualityMultiplier(qualityMultiplier); } if (expectedNumberSpots != null) { exp.setExpectedNumberSpots(expectedNumberSpots); } if (expectedNumberReads != null) { exp.setExpectedNumberReads(expectedNumberReads); } if (study != null) { StudyService ss = BeanFactory.getStudyServiceBean(); Study newStudy = ss.findByID(study.getStudyId()); if (newStudy != null && newStudy.givesPermission(registration)) { exp.setStudy(newStudy); } else if (newStudy == null) { Log.info("Could not be found " + study); } } if (owner != null) { RegistrationService rs = BeanFactory.getRegistrationServiceBean(); Registration newReg = rs.findByEmailAddress(owner.getEmailAddress()); if (newReg != null) { exp.setOwner(newReg); } else { Log.info("Could not be found " + owner); } } else if (exp.getOwner() == null) { exp.setOwner(registration); } if (null != expAttributes) { exp.getExperimentAttributes().clear(); for (ExperimentAttribute ea : expAttributes) { ea.setExperiment(exp); exp.getExperimentAttributes().add(ea); } } service.update(registration, exp); Hibernate3DtoCopier copier = new Hibernate3DtoCopier(); Experiment detachedLane = copier.hibernate2dto(Experiment.class, exp); Document line = XmlTools.marshalToDocument(jo, detachedLane); representation = XmlTools.getRepresentation(line); getResponse().setEntity(representation); getResponse() .setLocationRef( getRequest().getRootRef() + "/experiments/" + 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; 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} */ @Override public Representation put(Representation entity) { authenticate(); Representation representation = null; Workflow newWorkflow = null; JaxbObject<Workflow> jo = new JaxbObject<Workflow>(); try { String text = entity.getText(); newWorkflow = (Workflow) XmlTools.unMarshal(jo, new Workflow(), text); } catch (SAXException ex) { ex.printStackTrace(); throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, ex.getMessage()); } catch (IOException e) { e.printStackTrace(); throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage()); } try { WorkflowService fs = BeanFactory.getWorkflowServiceBean(); Workflow workflow = (Workflow) testIfNull(fs.findByID(newWorkflow.getWorkflowId())); workflow.givesPermission(registration); // simple types String name = newWorkflow.getName(); String desc = newWorkflow.getDescription(); String baseIniFile = newWorkflow.getBaseIniFile(); String command = newWorkflow.getCommand(); String cwd = newWorkflow.getCwd(); String host = newWorkflow.getHost(); String inputAlgorithm = newWorkflow.getInputAlgorithm(); String permanentBundleLocation = newWorkflow.getPermanentBundleLocation(); String seqwareVersion = newWorkflow.getSeqwareVersion(); String template = newWorkflow.getTemplate(); String username = newWorkflow.getUsername(); String version = newWorkflow.getVersion(); // foreign keys Registration owner = newWorkflow.getOwner(); workflow.setName(name); workflow.setDescription(desc); workflow.setBaseIniFile(baseIniFile); workflow.setCommand(command); workflow.setCwd(cwd); workflow.setHost(host); workflow.setInputAlgorithm(inputAlgorithm); workflow.setPermanentBundleLocation(permanentBundleLocation); workflow.setSeqwareVersion(seqwareVersion); workflow.setTemplate(template); workflow.setUsername(username); workflow.setVersion(version); workflow.setUpdateTimestamp(new Date()); workflow.setWorkflowClass(newWorkflow.getWorkflowClass()); workflow.setWorkflowType(newWorkflow.getWorkflowType()); workflow.setWorkflowEngine(newWorkflow.getWorkflowEngine()); if (owner != null) { RegistrationService rs = BeanFactory.getRegistrationServiceBean(); Registration newReg = rs.findByEmailAddress(owner.getEmailAddress()); if (newReg != null) { workflow.setOwner(newReg); } else { Log.info("Could not be found: " + owner); } } else if (workflow.getOwner() == null) { workflow.setOwner(registration); } if (newWorkflow.getWorkflowAttributes() != null) { workflow.getWorkflowAttributes().clear(); for (WorkflowAttribute wfa : newWorkflow.getWorkflowAttributes()) { wfa.setWorkflow(workflow); workflow.getWorkflowAttributes().add(wfa); } } fs.update(registration, workflow); Hibernate3DtoCopier copier = new Hibernate3DtoCopier(); Workflow detachedWorkflow = copier.hibernate2dto(Workflow.class, workflow); Document line = XmlTools.marshalToDocument(jo, detachedWorkflow); representation = XmlTools.getRepresentation(line); getResponse().setEntity(representation); getResponse() .setLocationRef( getRequest().getRootRef() + "/workflows/" + detachedWorkflow.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; }