List of usage examples for org.hibernate LockMode UPGRADE
LockMode UPGRADE
To view the source code for org.hibernate LockMode UPGRADE.
Click Source Link
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.PointsDAO.java
License:Open Source License
@Override public Points createPoints(Map<String, String[]> pointGiven, Submission submission, Participation participation, String publicComment, String internalComment, PointStatus pointStatus, Integer duplicate) { Session session = getSession();// w w w . j av a 2 s. c om session.lock(submission, LockMode.UPGRADE); session.lock(submission.getTask(), LockMode.UPGRADE); boolean changed = false; // implement hacky solution since this will be a short list ;) PointGivenDAOIf pointGivenDAO = DAOFactory.PointGivenDAOIf(session); Iterator<PointGiven> pointsGivenIterator = pointGivenDAO.getPointsGivenOfSubmission(submission).iterator(); PointGiven lastPointGiven = null; if (pointsGivenIterator.hasNext()) { lastPointGiven = pointsGivenIterator.next(); } int numPoints = 0; for (PointCategory category : submission.getTask().getPointCategories()) { while (lastPointGiven != null && category.getPointcatid() > lastPointGiven.getCategory().getPointcatid()) { if (pointsGivenIterator.hasNext()) { lastPointGiven = pointsGivenIterator.next(); } else { lastPointGiven = null; break; } } int issuedPoints = 0; if (pointGiven.get("point_" + category.getPointcatid()) != null) { issuedPoints = Util.convertToPoints(pointGiven.get("point_" + category.getPointcatid())[0], submission.getTask().getMinPointStep()); } if (issuedPoints > category.getPoints()) { issuedPoints = category.getPoints(); } if (lastPointGiven != null && category.getPointcatid() == lastPointGiven.getCategory().getPointcatid()) { if (issuedPoints == 0) { storeInHistory(submission, category.getDescription(), Util.showPoints(lastPointGiven.getPoints()), "0", participation); pointGivenDAO.revokePointGiven(lastPointGiven); changed = true; } else { if (issuedPoints != lastPointGiven.getPoints()) { storeInHistory(submission, category.getDescription(), Util.showPoints(lastPointGiven.getPoints()), Util.showPoints(issuedPoints), participation); pointGivenDAO.revokePointGiven(lastPointGiven); pointGivenDAO.givePoint(issuedPoints, submission, category); changed = true; } numPoints += issuedPoints; } } else { if (issuedPoints > 0) { numPoints += issuedPoints; storeInHistory(submission, category.getDescription(), "0", Util.showPoints(issuedPoints), participation); pointGivenDAO.givePoint(issuedPoints, submission, category); changed = true; } } } Points oldPoints = submission.getPoints(); Points points = new Points(); points.setPoints(numPoints); points.setPointStatus(pointStatus); points.setDuplicate(duplicate); points.setIssuedBy(participation); submission.setPoints(points); points.setPublicComment(publicComment); points.setInternalComment(internalComment); session.save(submission); // TODO: Attention: see @MarkApproved.java if (oldPoints != null) { if (!oldPoints.getPointStatus().equals(points.getPointStatus())) { storeInHistory(submission, "status", PointStatus.values()[oldPoints.getPointStatus()].toString(), PointStatus.values()[points.getPointStatus()].toString(), participation); if (!((oldPoints.getPointStatus() == PointStatus.NICHT_ABGENOMMEN.ordinal() && points.getPointStatus() == PointStatus.ABGENOMMEN.ordinal()) || (oldPoints.getPointStatus() == PointStatus.NICHT_ABGENOMMEN.ordinal() && points.getPointStatus() == PointStatus.ABGENOMMEN_FAILED.ordinal()))) { changed = true; } } if (oldPoints.getDuplicate() != null || points.getDuplicate() != null) { if (oldPoints.getDuplicate() == null) { storeInHistory(submission, "duplicate", "", points.getDuplicate() + "", participation); changed = true; } else if (points.getDuplicate() == null) { storeInHistory(submission, "duplicate", oldPoints.getDuplicate() + "", "", participation); changed = true; } else if (!oldPoints.getDuplicate().equals(points.getDuplicate())) { storeInHistory(submission, "duplicate", oldPoints.getDuplicate() + "", points.getDuplicate() + "", participation); changed = true; } } if (!oldPoints.getPoints().equals(points.getPoints())) { storeInHistory(submission, "points", Util.showPoints(oldPoints.getPoints()), Util.showPoints(points.getPoints()), participation); changed = true; } if (oldPoints.getInternalComment() != null && !oldPoints.getInternalComment().equals(points.getInternalComment())) { storeInHistory(submission, "internalComment", oldPoints.getInternalComment(), points.getInternalComment(), participation); changed = true; } if (oldPoints.getPublicComment() != null && !oldPoints.getPublicComment().equals(points.getPublicComment())) { storeInHistory(submission, "publicComment", oldPoints.getPublicComment(), points.getPublicComment(), participation); changed = true; } if (changed && oldPoints.getIssuedBy().getUser().getUid() != participation.getUser().getUid()) { // HACK hardcoded URL MailSender.sendMail(oldPoints.getIssuedBy().getUser().getFullEmail(), "Mark-Change Notification", "Hallo,\n\n" + participation.getUser().getFullName() + " hat Deine Bewertung von <https://si.in.tu-clausthal.de/submissionsystem/servlets/ShowSubmission?sid=" + submission.getSubmissionid() + "> verndert.\n\n-- \nReply is not possible."); } } else { if (points.getPointStatus() != null) { storeInHistory(submission, "status", "", PointStatus.values()[points.getPointStatus()].toString(), participation); } if (points.getDuplicate() != null) { storeInHistory(submission, "duplicate", "", points.getDuplicate() + "", participation); } if (points.getPoints() != null) { storeInHistory(submission, "points", "", Util.showPoints(points.getPoints()), participation); } if (points.getInternalComment() != null && !"".equals(points.getInternalComment())) { storeInHistory(submission, "internalComment", "", points.getInternalComment(), participation); } if (points.getPublicComment() != null && !"".equals(points.getPublicComment())) { storeInHistory(submission, "publicComment", "", points.getPublicComment(), participation); } } return points; }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.ResultDAO.java
License:Open Source License
@Override public void createResults(Submission submission, List<String> results) { session.lock(submission, LockMode.UPGRADE); for (Result result : (List<Result>) session.createCriteria(Result.class) .add(Restrictions.eq("submission", submission)).setLockMode(LockMode.UPGRADE).list()) { session.delete(result);/*from w ww.j a va 2 s .co m*/ } for (String stringResult : results) { session.save(new Result(submission, stringResult)); } }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SimilarityTestDAO.java
License:Open Source License
@Override public SimilarityTest getSimilarityTestLocked(int similarityTestId) { return (SimilarityTest) getSession().get(SimilarityTest.class, similarityTestId, LockMode.UPGRADE); }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SimilarityTestDAO.java
License:Open Source License
@Override public SimilarityTest takeSimilarityTest() { Session session = getSession();/* w w w . jav a 2 s.c om*/ Transaction tx = session.beginTransaction(); SimilarityTest similarityTest = (SimilarityTest) session.createCriteria(SimilarityTest.class) .add(Restrictions.eq("status", 1)).setLockMode(LockMode.UPGRADE).createCriteria("task") .add(Restrictions.le("deadline", Util.correctTimezone(new Date()))).setMaxResults(1).uniqueResult(); if (similarityTest != null) { similarityTest.setStatus(2); session.save(similarityTest); } tx.commit(); return similarityTest; }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SubmissionDAO.java
License:Open Source License
public Submission getSubmissionLocked(int submissionid) { return (Submission) getSession().get(Submission.class, submissionid, LockMode.UPGRADE); }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SubmissionDAO.java
License:Open Source License
@Override public Submission getSubmissionLocked(Task task, User user) { return (Submission) getSession().createCriteria(Submission.class).add(Restrictions.eq("task", task)) .createCriteria("submitters").add(Restrictions.eq("user", user)).setLockMode(LockMode.UPGRADE) .uniqueResult();/*from ww w.j av a 2s . c o m*/ }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SubmissionDAO.java
License:Open Source License
@Override public boolean deleteIfNoFiles(Submission submission, File submissionPath) { Session session = getSession();/*from w w w. j av a 2 s .co m*/ session.lock(submission, LockMode.UPGRADE); boolean result = false; Util.recursiveDeleteEmptySubDirectories(submissionPath); if (submissionPath.listFiles().length == 0 && submissionPath.delete()) { session.delete(submission); result = true; } return result; }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.TaskNumberDAO.java
License:Open Source License
@Override public List<TaskNumber> getTaskNumbersForTaskLocked(Task task, Participation participation) { return getSession().createCriteria(TaskNumber.class).add(Restrictions.eq("task", task)) .add(Restrictions.eq("participation", participation)).addOrder(Order.asc("tasknumberid")) .setLockMode(LockMode.UPGRADE).list(); }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.TestCountDAO.java
License:Open Source License
@Override public boolean canSeeResultAndIncrementCounter(Test test, Submission submission) { Session session = getSession();//from w w w.ja v a 2 s . com Transaction tx = session.beginTransaction(); for (Participation participation : submission.getSubmitters()) { TestCount testCount = (TestCount) session.createCriteria(TestCount.class) .add(Restrictions.eq("test", test)).add(Restrictions.eq("user", participation.getUser())) .setLockMode(LockMode.UPGRADE).setMaxResults(1).uniqueResult(); if (testCount == null) { testCount = new TestCount(); testCount.setUser(participation.getUser()); testCount.setTest(test); } if (testCount.getTimesExecuted() >= test.getTimesRunnableByStudents()) { tx.commit(); // rollback is evil in hibernate! ;) return false; } testCount.setTimesExecuted(testCount.getTimesExecuted() + 1); session.saveOrUpdate(testCount); } tx.commit(); return true; }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.TestDAO.java
License:Open Source License
@Override public Test getTestLocked(int testId) { return (Test) getSession().get(Test.class, testId, LockMode.UPGRADE); }