View Javadoc
1   package uk.ac.ebi.intenz.webapp.controller.modification;
2   
3   import org.apache.log4j.Logger;
4   import org.apache.struts.action.ActionForm;
5   import org.apache.struts.action.ActionForward;
6   import org.apache.struts.action.ActionMapping;
7   
8   import uk.ac.ebi.intenz.mapper.AuditPackageMapper;
9   import uk.ac.ebi.intenz.mapper.EventPackageMapper;
10  import uk.ac.ebi.intenz.mapper.HistoryEventMapper;
11  import uk.ac.ebi.intenz.webapp.dtos.EcSearchForm;
12  import uk.ac.ebi.intenz.webapp.dtos.EnzymeDTO;
13  import uk.ac.ebi.intenz.webapp.utilities.EntryLockSingleton;
14  import uk.ac.ebi.intenz.webapp.utilities.UnitOfWork;
15  import uk.ac.ebi.intenz.webapp.exceptions.DeregisterException;
16  
17  import javax.servlet.http.HttpServletRequest;
18  import javax.servlet.http.HttpServletResponse;
19  import java.sql.Connection;
20  import java.sql.SQLException;
21  
22  /**
23   * This Action ...
24   *
25   * @author Michael Darsow
26   * @version $Revision: 1.3 $ $Date: 2008/11/17 17:14:10 $
27   */
28  public class DeleteEntryUpdateAction extends CurationAction {
29    private static final Logger LOGGER =
30  	  Logger.getLogger(DeleteEntryUpdateAction.class.getName());
31    private final static String SEARCH_BY_EC_ACTION_FWD = "searchEc";
32  
33    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
34                                 HttpServletResponse response) throws Exception {
35      // Do standard checks in the parent's execute method.
36      ActionForward forward = super.execute(mapping, form, request, response);
37      if (forward != null) return forward;
38  
39      EnzymeDTO enzymeDTO = (EnzymeDTO) form;
40      Long enzymeId = new Long(enzymeDTO.getId());
41      Connection con = (Connection) request.getSession().getAttribute("connection");
42      EntryLockSingleton els = (EntryLockSingleton) request.getSession().getServletContext().getAttribute("entryLock");
43      UnitOfWork unitOfWork = (UnitOfWork) request.getSession().getAttribute("uow");
44      try {
45        // Set the standard remark in the audit tables.
46        AuditPackageMapper auditPackageMapper = new AuditPackageMapper();
47        auditPackageMapper.setRemark(AuditPackageMapper.STANDARD_REMARK, con);
48  
49        // Commit
50        LOGGER.info("Committing form data.");
51        unitOfWork.commit(enzymeDTO, con);
52        LOGGER.info("Data subimtted");
53  
54        if (!enzymeDTO.isActive()){
55      	  // Modifying an already deleted entry, just its event note:
56      	  HistoryEventMapper hem = new HistoryEventMapper();
57      	  hem.updateEventNote(Integer.valueOf(enzymeDTO.getLatestHistoryEventId()),
58      			  Integer.valueOf(enzymeDTO.getLatestHistoryEventGroupId()),
59      			  enzymeDTO.getLatestHistoryEventNote(), con);
60        } else {
61            // Update event.
62            EventPackageMapper eventPackageMapper = new EventPackageMapper();
63            eventPackageMapper.updateFutureDeletionEvent(Integer.parseInt(enzymeDTO.getLatestHistoryEventGroupId()),
64                    Integer.parseInt(enzymeDTO.getLatestHistoryEventId()), enzymeDTO.getLatestHistoryEventNote(),
65                    enzymeDTO.getStatusCode(), con);
66        }
67        con.commit();
68  
69        LOGGER.info("Delete event updated.");
70      } catch (SQLException e) {
71          con.rollback();
72          throw e;
73      } catch (DeregisterException e) {
74        LOGGER.error(e.getMessage());
75        // Create standard error message (see 'struts_config.xml').
76        throw e;
77      } finally { // release lock
78        els.releaseLock(enzymeId.toString());
79        LOGGER.info("Lock of EC " + enzymeDTO.getEc() + " (ID: " + enzymeId + ") released.");
80      }
81  
82      // Forward to 'searchEc' Action to show both entries.
83      EcSearchForm ecSearchForm = new EcSearchForm();
84      ecSearchForm.setEc(enzymeDTO.getEc());
85      request.setAttribute("ecSearchForm", ecSearchForm);
86      return mapping.findForward(SEARCH_BY_EC_ACTION_FWD);
87    }
88  
89  }