View Javadoc
1   package uk.ac.ebi.intenz.webapp.dtos;
2   
3   import javax.servlet.http.HttpServletRequest;
4   
5   import org.apache.struts.action.ActionErrors;
6   import org.apache.struts.action.ActionForm;
7   import org.apache.struts.action.ActionMapping;
8   import org.apache.struts.action.ActionMessage;
9   
10  import uk.ac.ebi.biobabel.validator.SyntaxValidator;
11  import uk.ac.ebi.intenz.domain.constants.EnzymeNameQualifierConstant;
12  import uk.ac.ebi.intenz.domain.constants.EnzymeSourceConstant;
13  import uk.ac.ebi.intenz.domain.constants.EnzymeViewConstant;
14  import uk.ac.ebi.intenz.webapp.utilities.IntEnzValidations;
15  import uk.ac.ebi.xchars.SpecialCharacters;
16  import uk.ac.ebi.xchars.XMLErrorReport;
17  import uk.ac.ebi.xchars.utilities.XCharsValidator;
18  
19  /**
20   * @author Michael Darsow
21   * @version $Revision: 1.2 $ $Date: 2008/01/28 12:33:07 $
22   */
23  public class EnzymeNameDTO extends ActionForm {
24  
25    private String name;
26    private String xmlName;
27    private String type;
28    private String qualifier;
29    private String qualifierDisplay;
30    private String orderIn;
31    private String source;
32    private String view;
33    private String sourceDisplay;
34    private String viewDisplayString;
35    private String viewDisplayImage;
36  
37    public EnzymeNameDTO() {
38      name = "";
39      xmlName = "";
40      type = "";
41      qualifier = "NON";
42      qualifierDisplay = "";
43      orderIn = "0";
44      source = "INTENZ";
45      view = "INTENZ";
46      sourceDisplay = "IntEnz";
47      viewDisplayString = "all views";
48      viewDisplayImage = "\"<img src=\\\"images/blue_bullet.gif\\\"/><img src=\\\"images/green_bullet.gif\\\"/><img src=\\\"images/red_bullet.gif\\\"/>\"";
49    }
50  
51    public EnzymeNameDTO(EnzymeNameDTO enzymeNameDTO) {
52      setName(enzymeNameDTO.getName());
53      setXmlName(enzymeNameDTO.getXmlName());
54      setType(enzymeNameDTO.getType());
55      setQualifier(enzymeNameDTO.getQualifier());
56      setQualifierDisplay(enzymeNameDTO.getQualifierDisplay());
57      setOrderIn(enzymeNameDTO.getOrderIn());
58      setSource(enzymeNameDTO.getSource());
59      setView(enzymeNameDTO.getView());
60      setSourceDisplay(enzymeNameDTO.getSourceDisplay());
61      setViewDisplayString(enzymeNameDTO.getViewDisplayString());
62      setViewDisplayImage(enzymeNameDTO.getViewDisplayImage());
63    }
64  
65    /**
66     * Sets convenience fields which cannot be set through the forms.
67     * and validates the XML markup.
68     *
69     * @param mapping The Action mapping.
70     * @param request The common request object.
71     * @return errors, if any (otherwise <code>null</code>).
72     */
73    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
74      ActionErrors errors = new ActionErrors();
75  
76      // Set name value according to XML name value.
77      if (xmlName != null && !xmlName.equals("")) {
78        SpecialCharacters encoding = (SpecialCharacters) request.getSession().getAttribute("characters");
79        name = encoding.xml2Display(xmlName.trim());
80      }
81      if (!SyntaxValidator.getInstance().validate(xmlName, SyntaxValidator.BRACKETS))
82      	errors.add("names", new ActionMessage("errors.form.brackets", "name", xmlName));
83      XMLErrorReport xmlErrors = XCharsValidator.validate(xmlName);
84      if (xmlErrors != null)
85      	errors.add("names",
86      			new ActionMessage("errors.form.xchars", "name", xmlName, xmlErrors.getErrorMessage()));
87      if (!IntEnzValidations.hasNoUnicode(xmlName))
88      	errors.add("names", new ActionMessage("errors.form.unicode", "name", xmlName));
89      return errors.isEmpty() ? null : errors;
90    }
91  
92    public boolean equals(Object o) {
93      if (this == o) return true;
94      if (!(o instanceof EnzymeNameDTO)) return false;
95  
96      final EnzymeNameDTO enzymeNameDTO = (EnzymeNameDTO) o;
97  
98      if (source != null ? !source.equals(enzymeNameDTO.source) : enzymeNameDTO.source != null) return false;
99      if (type != null ? !type.equals(enzymeNameDTO.type) : enzymeNameDTO.type != null) return false;
100     if (xmlName != null ? !xmlName.equals(enzymeNameDTO.xmlName) : enzymeNameDTO.xmlName != null) return false;
101 
102     return true;
103   }
104 
105   public int hashCode() {
106     int result;
107     result = (xmlName != null ? xmlName.hashCode() : 0);
108     result = 29 * result + (type != null ? type.hashCode() : 0);
109     result = 29 * result + (source != null ? source.hashCode() : 0);
110     return result;
111   }
112 
113 
114   // ------------------------------- GETTER & SETTER --------------------------------
115 
116   public String getName() {
117     return name;
118   }
119 
120   public void setName(String name) {
121     this.name = name.trim();
122   }
123 
124   public String getXmlName() {
125     return xmlName;
126   }
127 
128   public void setXmlName(String xmlName) {
129     this.xmlName = xmlName.trim();
130   }
131 
132   public String getType() {
133     return type;
134   }
135 
136   public void setType(String type) {
137     this.type = type;
138   }
139 
140   public String getQualifier() {
141     return qualifier;
142   }
143 
144   public void setQualifier(String qualifier) {
145     this.qualifier = qualifier;
146     if (qualifier != null && !qualifier.equals("")) {
147       EnzymeNameQualifierConstant qualifierConstant = EnzymeNameQualifierConstant.valueOf(qualifier);
148       if (qualifierConstant == EnzymeNameQualifierConstant.UNDEF) setQualifierDisplay("");
149       setQualifierDisplay(qualifierConstant.toHTML(xmlName));
150     }
151   }
152 
153   public String getQualifierDisplay() {
154     return qualifierDisplay;
155   }
156 
157   public void setQualifierDisplay(String qualifierDisplay) {
158     this.qualifierDisplay = qualifierDisplay;
159   }
160 
161   public String getOrderIn() {
162     return orderIn;
163   }
164 
165   public void setOrderIn(String orderIn) {
166     this.orderIn = orderIn;
167   }
168 
169   public String getSource() {
170     return source;
171   }
172 
173   public void setSource(String source) {
174     this.source = source;
175     if (source != null && !source.equals("")) {
176       sourceDisplay = EnzymeSourceConstant.toDisplayString(source);
177     }
178   }
179 
180   public String getView() {
181     return view;
182   }
183 
184   public void setView(String view) {
185     this.view = view;
186     if (view != null && !view.equals("")) updateView();
187   }
188 
189   public String getSourceDisplay() {
190     return sourceDisplay;
191   }
192 
193   public void setSourceDisplay(String sourceDisplay) {
194     this.sourceDisplay = sourceDisplay;
195   }
196 
197   public String getViewDisplayString() {
198     return viewDisplayString;
199   }
200 
201   public void setViewDisplayString(String viewDisplayString) {
202     this.viewDisplayString = viewDisplayString;
203   }
204 
205   public String getViewDisplayImage() {
206     return viewDisplayImage;
207   }
208 
209   public void setViewDisplayImage(String viewDisplayImage) {
210     this.viewDisplayImage = viewDisplayImage;
211   }
212 
213   /**
214    * Updates <code>viewDisplayImage</code> and <code>viewDisplayString</code> using the given <code>view</code> value.
215    */
216   private void updateView() {
217     viewDisplayImage = EnzymeViewConstant.toDisplayImage(view);
218     viewDisplayString = EnzymeViewConstant.toDisplayString(view);
219   }
220 }