1 package org.splat.simer;
3 import org.hibernate.HibernateException;
4 import org.hibernate.Session;
5 import org.hibernate.Transaction;
6 import org.splat.som.Database;
7 import org.splat.som.Study;
10 public class EditStudyAction extends DisplayStudyStepAction {
12 private static final long serialVersionUID = -4865668290514118396L;
14 private enum Execute { publish, promote }
16 // ==============================================================================================================================
18 // ==============================================================================================================================
20 public String doEdition () {
21 // --------------------------
22 Session connex = Database.getSession();
23 Transaction transax = connex.beginTransaction();
25 mystudy = getOpenStudy();
27 Execute todo = Execute.valueOf(action);
28 Study study = mystudy.getStudyObject();
30 if (todo == Execute.publish) study.moveToPublic();
31 else if (todo == Execute.promote) study.moveToReference();
32 mystudy.getPopup().setContext("study", mystudy.getStudyRights()); // The context has changed
34 // Useless to update the open study
38 catch (RuntimeException saverror) {
39 logger.error("Reason:", saverror);
40 if (transax != null && transax.isActive()) {
41 // Second try-catch as the rollback could fail as well
44 } catch (HibernateException backerror) {
45 logger.debug("Error rolling back transaction", backerror);