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
24
25
26
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
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
46 AuditPackageMapper auditPackageMapper = new AuditPackageMapper();
47 auditPackageMapper.setRemark(AuditPackageMapper.STANDARD_REMARK, con);
48
49
50 LOGGER.info("Committing form data.");
51 unitOfWork.commit(enzymeDTO, con);
52 LOGGER.info("Data subimtted");
53
54 if (!enzymeDTO.isActive()){
55
56 HistoryEventMapper hem = new HistoryEventMapper();
57 hem.updateEventNote(Integer.valueOf(enzymeDTO.getLatestHistoryEventId()),
58 Integer.valueOf(enzymeDTO.getLatestHistoryEventGroupId()),
59 enzymeDTO.getLatestHistoryEventNote(), con);
60 } else {
61
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
76 throw e;
77 } finally {
78 els.releaseLock(enzymeId.toString());
79 LOGGER.info("Lock of EC " + enzymeDTO.getEc() + " (ID: " + enzymeId + ") released.");
80 }
81
82
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 }