1 package uk.ac.ebi.intenz.tools.sib.sptr_enzyme;
2
3 import uk.ac.ebi.interfaces.sptr.SPTRCrossReference;
4
5 import java.io.Serializable;
6 import java.util.Hashtable;
7
8 /**
9 * This class implements the {@link uk.ac.ebi.interfaces.sptr.SPTRCrossReference SPTRCrossReference} interface.
10 *
11 * @author Michael Darsow
12 * @version preliminary - $Revision: 1.2 $ $Date: 2008/01/28 11:43:22 $
13 */
14 public class EnzymeCrossReference implements SPTRCrossReference, Serializable {
15
16 /** Constant for database cross reference to SwissProt. */
17 public static final String SWISSPROT = "SwissProt";
18
19 /** Constant for database cross reference to PROSITE. */
20 public static final String PROSITE = "PROSITE";
21
22 /** Constant for database cross reference to MIM Disease Database. */
23 public static final String MIM = "MIM";
24
25 private String accessionNumber;
26
27 private String databaseName;
28
29 private Hashtable properties;
30
31 /**
32 * Creates an <code>EnzymeCrossReference</code> instance to the given database.
33 *
34 * Possible database name constants are:
35 * <ul>
36 * <li>{@link uk.ac.ebi.intenz.tools.sib.sptr_enzyme.EnzymeCrossReference#SWISSPROT SwissProt}</li>
37 * <li>{@link uk.ac.ebi.intenz.tools.sib.sptr_enzyme.EnzymeCrossReference#PROSITE PROSITE}</li>
38 * <li>{@link uk.ac.ebi.intenz.tools.sib.sptr_enzyme.EnzymeCrossReference#MIM MIM Disease Database}</li>
39 * </ul>
40 *
41 * @param databaseName The name of database of this cross reference.
42 */
43 public EnzymeCrossReference(String databaseName) {
44 this.accessionNumber = "";
45 this.databaseName = databaseName;
46 properties = new Hashtable();
47 }
48
49 /**
50 * <em class="text">
51 * Sets the accession number of this EnzymeCrossReference.
52 * </em>
53 * <br><br>
54 * <em class="text">
55 * Cross references are found in the DR/PR/DI lines on the marked positions, where
56 * the data base name is marked red (if existing) and the accession number green.
57 * DR lines are SwissProt, PR lines are PROSITE and DI lines are MIM cross references.
58 * DR lines contain between 1 and 3 cross references.
59 *
60 * <pre class="example">
61 * DR <em class="green">O66503</em>; RIR1_AQUAE; <em class="green">P42491</em>, RIR1_ASFB7; <em class="green">P26685</em>, RIR1_ASFM2;
62 * PR <em class="red">PROSITE</em>; <em class="green">PDOC00084</em>;
63 * DI Guanidinoacetate methyltransferase deficiency; <em class="red">MIM</em>:<em class="green">601240</em>.
64 * </pre>
65 * </em>
66 *
67 * @param accessionNumber The accession number.
68 */
69 public void setAccessionNumber(String accessionNumber) {
70 this.accessionNumber = accessionNumber;
71 }
72
73 /**
74 * <em class="text">
75 * Returns the accession number of this EnzymeCrossReference.
76 * </em>
77 * <br><br>
78 * <em class="text">
79 * Cross references are found in the DR/PR/DI lines on the marked positions, where
80 * the data base name is marked red (if existing) and the accession number green.
81 * DR lines are SwissProt, PR lines are PROSITE and DI lines are MIM cross references.
82 * DR lines contain between 1 and 3 cross references.
83 *
84 * <pre class="example">
85 * DR <em class="green">O66503</em>; RIR1_AQUAE; <em class="green">P42491</em>, RIR1_ASFB7; <em class="green">P26685</em>, RIR1_ASFM2;
86 * PR <em class="red">PROSITE</em>; <em class="green">PDOC00084</em>;
87 * DI Guanidinoacetate methyltransferase deficiency; <em class="red">MIM</em>:<em class="green">601240</em>.
88 * </pre>
89 * </em>
90 *
91 * @return The accession number of this EnzymeCrossReference.
92 */
93 public String getAccessionNumber() {
94 return accessionNumber;
95 }
96
97 /**
98 * <em class="text">
99 * Sets a property and value of this EnzymeCrossReference.
100 * </em>
101 *
102 * Properties of Enzyme cross references are always
103 * {@link uk.ac.ebi.intenz.tools.sib.sptr_enzyme.EnzymeCrossReference#PROPERTY_DESCRIPTION description}s.
104 *
105 * @param property The property.
106 * @param value The value of the property.
107 * @throws IllegalArgumentException if the <code>property</code> is not a valid property.
108 */
109 public void setPropertyValue(int property, String value) {
110 if(property != EnzymeCrossReference.PROPERTY_DESCRIPTION) throw new IllegalArgumentException("The given property is not supported.");
111 properties.put(new Integer(property), value);
112 }
113
114 /**
115 * <em class="text">
116 * Indicates if a cross reference property is set.
117 * </em>
118 *
119 * @param property The property.
120 * @return true, if the property is set, false if it is not.
121 */
122 public boolean hasProperty(int property) {
123 return properties.get(new Integer(property)) != null;
124 }
125
126 /**
127 * <em class="text">
128 * Returns the value of the property.
129 * </em>
130 *
131 * @param property The property.
132 * @return The value of the property.
133 */
134 public String getPropertyValue(int property) {
135 return (String) properties.get(new Integer(property));
136 }
137
138 /**
139 * <em class="text">
140 * Returns the name of the database this EnzymeCrossReference refers to.
141 * </em>
142 *
143 * @return The name of the database this EnzymeCrossReference refers to.
144 */
145 public String getDatabaseName() {
146 return databaseName;
147 }
148 }