/** * @param assessment * @param username * @param speciesID * @param displayName * @return */ private AssessmentIOWriteResult assignIDAndSave(AssessmentData assessment, String username) throws RegionConflictException { if (assessment.getAssessmentID().equals("new")) { if (assessment.getType().equals(BaseAssessment.DRAFT_ASSESSMENT_STATUS)) assessment.setAssessmentID(getNextDraftID(vfs, assessment.getSpeciesID())); else if (assessment.getType().equals(BaseAssessment.PUBLISHED_ASSESSMENT_STATUS)) assessment.setAssessmentID(pubIDFactory.getNextIDAsString()); else // TODO: Figure out if we're going to need multiple user assessments per species. assessment.setAssessmentID(assessment.getSpeciesID()); } return saveAssessment(assessment, username); }
private void deleteAssessmentsForTaxon( String taxonID, String type, String user, Request request, Response response) { List<AssessmentData> assessments = AssessmentIO.readAllAssessmentsForTaxon(vfs, taxonID, user); for (AssessmentData cur : assessments) { deleteAssessment(request, response, cur.getAssessmentID(), cur.getType(), user); // If it's locked, force the release and delete again. Taxomatic operations are almighty. if (response.getStatus() == Status.CLIENT_ERROR_LOCKED) { Lock lock = FileLocker.impl.getAssessmentPersistentLock(cur.getAssessmentID(), cur.getType()); FileLocker.impl.persistentEagerRelease( cur.getAssessmentID(), cur.getType(), lock.getUsername()); deleteAssessment(request, response, cur.getAssessmentID(), cur.getType(), user); } } }
private AssessmentIOWriteResult saveAssessment(AssessmentData assessment, String username) throws RegionConflictException { if (assessment.getType().equals(BaseAssessment.DRAFT_ASSESSMENT_STATUS)) { List<AssessmentData> compareTo = AssessmentIO.readAllDraftAssessments(vfs, assessment.getSpeciesID()); for (AssessmentData cur : compareTo) { if (cur.getRegionIDs().containsAll(assessment.getRegionIDs()) || cur.isGlobal() && assessment.isGlobal()) { if (!cur.getAssessmentID().equals(assessment.getAssessmentID())) throw new RegionConflictException(); } } } return AssessmentIO.writeAssessment(assessment, username, vfs, true); }