1 package uk.ac.ebi.intenz.webapp.controller;
2
3 import java.io.IOException;
4 import java.sql.SQLException;
5 import java.util.Map;
6 import java.util.PropertyResourceBundle;
7
8 import javax.servlet.ServletContext;
9 import javax.servlet.ServletException;
10
11 import org.apache.log4j.Logger;
12
13 import uk.ac.ebi.intenz.domain.enzyme.EnzymeEntry;
14 import uk.ac.ebi.intenz.domain.exceptions.DomainException;
15 import uk.ac.ebi.intenz.mapper.EnzymeEntryMapper;
16 import uk.ac.ebi.intenz.webapp.utilities.IntEnzMessenger;
17 import uk.ac.ebi.rhea.mapper.MapperException;
18
19
20
21
22
23
24
25 public class SearchIDCommand extends DatabaseCommand {
26
27 public static final Logger LOGGER = Logger.getLogger(SearchIDCommand.class);
28
29
30
31
32
33
34
35 public void process() throws ServletException, IOException {
36 String id = request.getParameter("id");
37
38 if (id != null) {
39 EnzymeEntry enzymeEntry = findEnzymeEntry(new Long(id));
40 if (enzymeEntry != null) {
41 request.setAttribute("result", enzymeEntry);
42 forward("/entry.jsp");
43 } else {
44 if (request.getAttribute("message") != null) {
45 forward("/error.jsp");
46 } else {
47 request.setAttribute("message",
48 "The enzyme with the given ID: <b>" + id
49 + "</b> does not exist.");
50 forward("/notFound.jsp");
51 }
52 }
53 } else {
54 request.setAttribute(
55 "message",
56 "The <b>id</b> parameter has to be set to be able to search for an enzyme using its ID.");
57 forward("/error.jsp");
58 return;
59 }
60 }
61
62
63
64
65
66
67
68
69
70
71
72 protected EnzymeEntry findEnzymeEntry(Long id) {
73 EnzymeEntry enzymeEntry = null;
74
75 ServletContext application = request.getSession().getServletContext();
76 @SuppressWarnings("unchecked")
77 Map<Long, EnzymeEntry> entries = (Map<Long, EnzymeEntry>) application
78 .getAttribute("entries_id");
79
80
81 if (entries.containsKey(id)) {
82 enzymeEntry = (EnzymeEntry) entries.get(id);
83 } else {
84 try {
85 enzymeEntry = enzymeEntryMapper.findById(id, con);
86 if (enzymeEntry != null) {
87 entries.put(id, enzymeEntry);
88 }
89 } catch (SQLException e) {
90 IntEnzMessenger.sendError(this.getClass().toString(), e
91 .getMessage(), (String) request.getSession()
92 .getAttribute("user"));
93 request.setAttribute("message", e.getMessage());
94 } catch (MapperException e) {
95 IntEnzMessenger.sendError(this.getClass().toString(), e
96 .getMessage(), (String) request.getSession()
97 .getAttribute("user"));
98 request.setAttribute("message", e.getMessage());
99 } catch (DomainException e) {
100 LOGGER.error("Searching by ID", e);
101 PropertyResourceBundle intenzMessages = (PropertyResourceBundle) request
102 .getSession().getServletContext()
103 .getAttribute("intenz.messages");
104 IntEnzMessenger.sendError(this.getClass().toString(),
105 intenzMessages.getString(e.getMessageKey()),
106 (String) request.getSession().getAttribute("user"));
107 request.setAttribute("message", e.getMessage());
108 } finally {
109 try {
110 con.close();
111 } catch (SQLException e) {
112 IntEnzMessenger.sendError(this.getClass().toString(), e
113 .getMessage(), (String) request.getSession()
114 .getAttribute("user"));
115 request.setAttribute("message", e.getMessage());
116 return null;
117 }
118 }
119 }
120 return enzymeEntry;
121 }
122 }