2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2004, The Institute for Genomic Research (TIGR). |
2 |
26 Feb 07 |
jari |
All rights reserved. |
2 |
26 Feb 07 |
jari |
4 |
*/ |
2 |
26 Feb 07 |
jari |
5 |
/* |
2 |
26 Feb 07 |
jari |
* $RCSfile: RepositoryConfigParser.java,v $ |
2 |
26 Feb 07 |
jari |
* $Revision: 1.4 $ |
2 |
26 Feb 07 |
jari |
* $Date: 2005/03/10 15:48:03 $ |
2 |
26 Feb 07 |
jari |
* $Author: braistedj $ |
2 |
26 Feb 07 |
jari |
* $State: Exp $ |
2 |
26 Feb 07 |
jari |
11 |
*/ |
2 |
26 Feb 07 |
jari |
12 |
/* |
2 |
26 Feb 07 |
jari |
* RepositoryConfigParser.java |
2 |
26 Feb 07 |
jari |
14 |
* |
2 |
26 Feb 07 |
jari |
* Created on June 25, 2004, 10:31 AM |
2 |
26 Feb 07 |
jari |
16 |
*/ |
2 |
26 Feb 07 |
jari |
17 |
|
2 |
26 Feb 07 |
jari |
18 |
package org.tigr.microarray.mev.cluster.clusterUtil.submit; |
2 |
26 Feb 07 |
jari |
19 |
|
2 |
26 Feb 07 |
jari |
20 |
import java.io.File; |
2 |
26 Feb 07 |
jari |
21 |
import java.net.URL; |
2 |
26 Feb 07 |
jari |
22 |
import java.util.Hashtable; |
2 |
26 Feb 07 |
jari |
23 |
import java.util.Iterator; |
2 |
26 Feb 07 |
jari |
24 |
import java.util.Set; |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
27 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
28 |
|
2 |
26 Feb 07 |
jari |
29 |
import org.apache.xerces.parsers.DOMParser; |
2 |
26 Feb 07 |
jari |
30 |
import org.tigr.microarray.mev.TMEV; |
2 |
26 Feb 07 |
jari |
31 |
import org.w3c.dom.Document; |
2 |
26 Feb 07 |
jari |
32 |
import org.w3c.dom.Element; |
2 |
26 Feb 07 |
jari |
33 |
import org.w3c.dom.NodeList; |
2 |
26 Feb 07 |
jari |
34 |
import org.xml.sax.SAXException; |
2 |
26 Feb 07 |
jari |
35 |
import org.xml.sax.SAXParseException; |
2 |
26 Feb 07 |
jari |
36 |
import org.xml.sax.helpers.DefaultHandler; |
2 |
26 Feb 07 |
jari |
37 |
|
2 |
26 Feb 07 |
jari |
38 |
/** |
2 |
26 Feb 07 |
jari |
39 |
* |
2 |
26 Feb 07 |
jari |
* @author braisted |
2 |
26 Feb 07 |
jari |
41 |
*/ |
2 |
26 Feb 07 |
jari |
42 |
public class RepositoryConfigParser extends DefaultHandler { |
2 |
26 Feb 07 |
jari |
/** XML Document |
2 |
26 Feb 07 |
jari |
44 |
*/ |
2 |
26 Feb 07 |
jari |
45 |
Document document; |
2 |
26 Feb 07 |
jari |
46 |
|
2 |
26 Feb 07 |
jari |
/** Root Element */ |
2 |
26 Feb 07 |
jari |
48 |
private Element root; |
2 |
26 Feb 07 |
jari |
49 |
|
2 |
26 Feb 07 |
jari |
/** Hashtable with repository name keys and repository Element values */ |
2 |
26 Feb 07 |
jari |
51 |
private Hashtable repositoryHash; |
2 |
26 Feb 07 |
jari |
52 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of RepositoryConfigParser */ |
2 |
26 Feb 07 |
jari |
54 |
public RepositoryConfigParser() { |
2 |
26 Feb 07 |
jari |
55 |
|
2 |
26 Feb 07 |
jari |
56 |
} |
2 |
26 Feb 07 |
jari |
57 |
|
2 |
26 Feb 07 |
jari |
/** Parses config file |
2 |
26 Feb 07 |
jari |
59 |
*/ |
2 |
26 Feb 07 |
jari |
60 |
public boolean parseSubmissionConfigFile() { |
2 |
26 Feb 07 |
jari |
61 |
|
2 |
26 Feb 07 |
jari |
62 |
try { |
2 |
26 Feb 07 |
jari |
63 |
File file = TMEV.getConfigurationFile("archive_submission_config.xml"); |
2 |
26 Feb 07 |
jari |
64 |
|
2 |
26 Feb 07 |
jari |
65 |
if(file == null || !file.exists()) { |
2 |
26 Feb 07 |
jari |
66 |
JOptionPane.showMessageDialog(new JFrame(), "Error during submission configuration. The file archive_submission_config.xml which contains\n"+ |
2 |
26 Feb 07 |
jari |
67 |
"cluter repository information was missing or not in MeV's config folder.\n", "Cluster Submission Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
68 |
return false; |
2 |
26 Feb 07 |
jari |
69 |
} |
2 |
26 Feb 07 |
jari |
70 |
|
2 |
26 Feb 07 |
jari |
71 |
URL url = file.toURL(); |
2 |
26 Feb 07 |
jari |
72 |
|
2 |
26 Feb 07 |
jari |
73 |
DOMParser parser = new DOMParser(); |
2 |
26 Feb 07 |
jari |
74 |
|
2 |
26 Feb 07 |
jari |
75 |
parser.setFeature("http://xml.org/sax/features/validation", true); |
2 |
26 Feb 07 |
jari |
76 |
parser.setErrorHandler(this); |
2 |
26 Feb 07 |
jari |
77 |
parser.parse(url.toString()); |
2 |
26 Feb 07 |
jari |
78 |
document = parser.getDocument(); |
2 |
26 Feb 07 |
jari |
79 |
root = document.getDocumentElement(); |
2 |
26 Feb 07 |
jari |
80 |
} catch ( NullPointerException e ) { |
2 |
26 Feb 07 |
jari |
81 |
e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
82 |
JOptionPane.showMessageDialog(new JFrame(), "Error parsing archive_submission_config.xml which contains repository information.", "Cluster Submission Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
83 |
return false; |
2 |
26 Feb 07 |
jari |
84 |
} catch (Exception e) { |
2 |
26 Feb 07 |
jari |
85 |
e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
86 |
JOptionPane.showMessageDialog(new JFrame(), "Error parsing archive_submission_config.xml which contains repository information.", "Cluster Submission Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
87 |
return false; |
2 |
26 Feb 07 |
jari |
88 |
} |
2 |
26 Feb 07 |
jari |
89 |
|
2 |
26 Feb 07 |
jari |
90 |
initializeRepositoryHash(); |
2 |
26 Feb 07 |
jari |
91 |
|
2 |
26 Feb 07 |
jari |
92 |
return true; |
2 |
26 Feb 07 |
jari |
93 |
} |
2 |
26 Feb 07 |
jari |
94 |
|
2 |
26 Feb 07 |
jari |
95 |
|
2 |
26 Feb 07 |
jari |
/** Returns the root element |
2 |
26 Feb 07 |
jari |
97 |
*/ |
2 |
26 Feb 07 |
jari |
98 |
public Element getRoot() { |
2 |
26 Feb 07 |
jari |
99 |
return root; |
2 |
26 Feb 07 |
jari |
100 |
} |
2 |
26 Feb 07 |
jari |
101 |
|
2 |
26 Feb 07 |
jari |
102 |
|
2 |
26 Feb 07 |
jari |
/** Returns available repository names |
2 |
26 Feb 07 |
jari |
104 |
*/ |
2 |
26 Feb 07 |
jari |
105 |
public String [] getRepositoryNames() { |
2 |
26 Feb 07 |
jari |
106 |
if(repositoryHash == null) |
2 |
26 Feb 07 |
jari |
107 |
return null; |
2 |
26 Feb 07 |
jari |
108 |
|
2 |
26 Feb 07 |
jari |
109 |
Set keys = repositoryHash.keySet(); |
2 |
26 Feb 07 |
jari |
110 |
String [] names = new String[keys.size()]; |
2 |
26 Feb 07 |
jari |
111 |
Iterator iter = keys.iterator(); |
2 |
26 Feb 07 |
jari |
112 |
for(int i = 0; i < names.length; i++) |
2 |
26 Feb 07 |
jari |
113 |
names[i] = (String)(iter.next()); |
2 |
26 Feb 07 |
jari |
114 |
return names; |
2 |
26 Feb 07 |
jari |
115 |
} |
2 |
26 Feb 07 |
jari |
116 |
|
2 |
26 Feb 07 |
jari |
117 |
|
2 |
26 Feb 07 |
jari |
/** returns a repository description given a repository name. |
2 |
26 Feb 07 |
jari |
* @param repName name of the repository |
2 |
26 Feb 07 |
jari |
120 |
*/ |
2 |
26 Feb 07 |
jari |
121 |
public String getRepositoryDescription(String repName) { |
2 |
26 Feb 07 |
jari |
122 |
if(repositoryHash == null) |
2 |
26 Feb 07 |
jari |
123 |
return null; |
2 |
26 Feb 07 |
jari |
124 |
|
2 |
26 Feb 07 |
jari |
125 |
Element elem = getRepositoryXMLElement(repName); |
2 |
26 Feb 07 |
jari |
126 |
NodeList list = elem.getElementsByTagName("description"); |
2 |
26 Feb 07 |
jari |
127 |
|
2 |
26 Feb 07 |
jari |
128 |
return list.item(0).getChildNodes().item(0).getNodeValue(); |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
/** returns a repository's DOM Element given a repository name |
2 |
26 Feb 07 |
jari |
* @param repName name of the repository |
2 |
26 Feb 07 |
jari |
133 |
*/ |
2 |
26 Feb 07 |
jari |
134 |
public Element getRepositoryXMLElement(String repName) { |
2 |
26 Feb 07 |
jari |
135 |
if(repositoryHash == null) |
2 |
26 Feb 07 |
jari |
136 |
return null; |
2 |
26 Feb 07 |
jari |
137 |
|
2 |
26 Feb 07 |
jari |
138 |
return (Element)(repositoryHash.get(repName)); |
2 |
26 Feb 07 |
jari |
139 |
} |
2 |
26 Feb 07 |
jari |
140 |
|
2 |
26 Feb 07 |
jari |
141 |
|
2 |
26 Feb 07 |
jari |
/** Returns all available repository names |
2 |
26 Feb 07 |
jari |
143 |
*/ |
2 |
26 Feb 07 |
jari |
144 |
private void initializeRepositoryHash() { |
2 |
26 Feb 07 |
jari |
145 |
this.repositoryHash = new Hashtable(); |
2 |
26 Feb 07 |
jari |
146 |
NodeList nameList = root.getElementsByTagName("submit_entry"); |
2 |
26 Feb 07 |
jari |
147 |
String [] names = new String[nameList.getLength()]; |
2 |
26 Feb 07 |
jari |
148 |
for(int i = 0; i < names.length; i++) { |
2 |
26 Feb 07 |
jari |
149 |
repositoryHash.put(((Element)(nameList.item(i))).getAttribute("name"), (Element)(nameList.item(i))); |
2 |
26 Feb 07 |
jari |
150 |
} |
2 |
26 Feb 07 |
jari |
151 |
} |
2 |
26 Feb 07 |
jari |
152 |
|
2 |
26 Feb 07 |
jari |
153 |
|
2 |
26 Feb 07 |
jari |
154 |
/** |
2 |
26 Feb 07 |
jari |
* Returns a table of repository specifications |
2 |
26 Feb 07 |
jari |
156 |
*/ |
2 |
26 Feb 07 |
jari |
157 |
public String getRepositorySpecifications(String repName) { |
2 |
26 Feb 07 |
jari |
158 |
String table = new String(); |
2 |
26 Feb 07 |
jari |
159 |
String key, value; |
2 |
26 Feb 07 |
jari |
160 |
table += "<table cellpadding=5><tr><th colspan=2 align=left>Additional Submission Details</th></tr>"; |
2 |
26 Feb 07 |
jari |
161 |
Element elem = getRepositoryXMLElement(repName); |
2 |
26 Feb 07 |
jari |
162 |
elem = (Element)(elem.getElementsByTagName("submission").item(0)); |
2 |
26 Feb 07 |
jari |
163 |
elem = (Element)(elem.getElementsByTagName("specification_table").item(0)); |
2 |
26 Feb 07 |
jari |
164 |
NodeList list = elem.getElementsByTagName("spec"); //get spects |
2 |
26 Feb 07 |
jari |
165 |
for(int i = 0; i < list.getLength(); i++) { |
2 |
26 Feb 07 |
jari |
166 |
key = ((Element)(list.item(i))).getAttribute("key"); |
2 |
26 Feb 07 |
jari |
167 |
value = ((Element)(list.item(i))).getAttribute("value"); |
2 |
26 Feb 07 |
jari |
168 |
table += "<tr><td><b>"+key+":</b></td><td>"+value+"</td></tr>"; |
2 |
26 Feb 07 |
jari |
169 |
} |
2 |
26 Feb 07 |
jari |
170 |
table += "</table>"; |
2 |
26 Feb 07 |
jari |
171 |
return table; |
2 |
26 Feb 07 |
jari |
172 |
} |
2 |
26 Feb 07 |
jari |
173 |
|
2 |
26 Feb 07 |
jari |
174 |
|
2 |
26 Feb 07 |
jari |
175 |
/** |
2 |
26 Feb 07 |
jari |
* Constructs a repository description page |
2 |
26 Feb 07 |
jari |
177 |
*/ |
2 |
26 Feb 07 |
jari |
178 |
public String getRepositoryPage(String repName) { |
2 |
26 Feb 07 |
jari |
179 |
String text = new String(); |
2 |
26 Feb 07 |
jari |
180 |
text += "<html><body><h2>"+repName+"</h2><hr size=3>"+ |
2 |
26 Feb 07 |
jari |
181 |
"<b>Repository Name:  </b>"+ repName +"<br><br>"+ |
2 |
26 Feb 07 |
jari |
182 |
"<b>Repository Web Site:  </b>"+ getRepositoryURL(repName) +"<br><br>"+ |
2 |
26 Feb 07 |
jari |
183 |
"<b>Description:  </b>"+ getRepositoryDescription(repName) +"<br><br>"; |
2 |
26 Feb 07 |
jari |
184 |
text += getRepositorySpecifications(repName); |
2 |
26 Feb 07 |
jari |
185 |
text += "</body></html>"; |
2 |
26 Feb 07 |
jari |
186 |
return text; |
2 |
26 Feb 07 |
jari |
187 |
} |
2 |
26 Feb 07 |
jari |
188 |
|
2 |
26 Feb 07 |
jari |
189 |
|
2 |
26 Feb 07 |
jari |
/** Returns user information in a Hashtable with possible, user_name, password, and email |
2 |
26 Feb 07 |
jari |
191 |
*/ |
2 |
26 Feb 07 |
jari |
192 |
public Hashtable getUserInfo(String repName) { |
2 |
26 Feb 07 |
jari |
193 |
Hashtable table = new Hashtable(); |
2 |
26 Feb 07 |
jari |
194 |
Element elem = getRepositoryXMLElement(repName); |
2 |
26 Feb 07 |
jari |
195 |
NodeList list = elem.getElementsByTagName("user"); |
2 |
26 Feb 07 |
jari |
196 |
elem = (Element)(list.item(0)); |
2 |
26 Feb 07 |
jari |
197 |
|
2 |
26 Feb 07 |
jari |
198 |
String value = elem.getAttribute("user_name"); |
2 |
26 Feb 07 |
jari |
199 |
table.put("user_name", value); |
2 |
26 Feb 07 |
jari |
200 |
value = elem.getAttribute("password"); |
2 |
26 Feb 07 |
jari |
201 |
table.put("password", value); |
2 |
26 Feb 07 |
jari |
202 |
value = elem.getAttribute("email"); |
2 |
26 Feb 07 |
jari |
203 |
table.put("email", value); |
2 |
26 Feb 07 |
jari |
204 |
|
2 |
26 Feb 07 |
jari |
205 |
return table; |
2 |
26 Feb 07 |
jari |
206 |
} |
2 |
26 Feb 07 |
jari |
207 |
|
2 |
26 Feb 07 |
jari |
/** Returns the implementation class for the repository |
2 |
26 Feb 07 |
jari |
209 |
*/ |
2 |
26 Feb 07 |
jari |
210 |
public String getRepositorySubmissionClass(String repName) { |
2 |
26 Feb 07 |
jari |
211 |
Element elem = getRepositoryXMLElement(repName); |
2 |
26 Feb 07 |
jari |
212 |
NodeList list = elem.getElementsByTagName("impl"); |
2 |
26 Feb 07 |
jari |
213 |
return ((Element)(list.item(0))).getAttribute("impl_class"); |
2 |
26 Feb 07 |
jari |
214 |
} |
2 |
26 Feb 07 |
jari |
215 |
|
2 |
26 Feb 07 |
jari |
/** Returns the repository's URL if available, else null |
2 |
26 Feb 07 |
jari |
* @param repName repository name |
2 |
26 Feb 07 |
jari |
218 |
*/ |
2 |
26 Feb 07 |
jari |
219 |
public String getRepositoryURL(String repName) { |
2 |
26 Feb 07 |
jari |
220 |
Element elem = getRepositoryXMLElement(repName); |
2 |
26 Feb 07 |
jari |
221 |
if(elem != null) |
2 |
26 Feb 07 |
jari |
222 |
return elem.getAttribute("url"); |
2 |
26 Feb 07 |
jari |
223 |
return null; |
2 |
26 Feb 07 |
jari |
224 |
} |
2 |
26 Feb 07 |
jari |
225 |
|
2 |
26 Feb 07 |
jari |
// WARNING Event Handler |
2 |
26 Feb 07 |
jari |
/** Reports Parser Exceptions (Warning level exp.) |
2 |
26 Feb 07 |
jari |
* @param e reported exception |
2 |
26 Feb 07 |
jari |
* @throws SAXException |
2 |
26 Feb 07 |
jari |
230 |
*/ |
2 |
26 Feb 07 |
jari |
231 |
public void warning(SAXParseException e) |
2 |
26 Feb 07 |
jari |
232 |
throws SAXException { |
2 |
26 Feb 07 |
jari |
233 |
System.err.println("Warning: "+e); |
2 |
26 Feb 07 |
jari |
234 |
|
2 |
26 Feb 07 |
jari |
// parseErrors++; |
2 |
26 Feb 07 |
jari |
// errorLog.recordWarning(e); |
2 |
26 Feb 07 |
jari |
237 |
} |
2 |
26 Feb 07 |
jari |
238 |
|
2 |
26 Feb 07 |
jari |
// ERROR Event Handler |
2 |
26 Feb 07 |
jari |
/** Parse error reporting. |
2 |
26 Feb 07 |
jari |
241 |
*/ |
2 |
26 Feb 07 |
jari |
242 |
public void error(SAXParseException e) |
2 |
26 Feb 07 |
jari |
243 |
throws SAXException { |
2 |
26 Feb 07 |
jari |
244 |
System.err.println("Error: "+e); |
2 |
26 Feb 07 |
jari |
// errorLog.recordError(e); |
2 |
26 Feb 07 |
jari |
// parseErrors++; |
2 |
26 Feb 07 |
jari |
247 |
} |
2 |
26 Feb 07 |
jari |
248 |
|
2 |
26 Feb 07 |
jari |
// FATAL ERROR Event Handler |
2 |
26 Feb 07 |
jari |
/** Parse Fatal errors |
2 |
26 Feb 07 |
jari |
251 |
*/ |
2 |
26 Feb 07 |
jari |
252 |
public void fatalError(SAXParseException e) |
2 |
26 Feb 07 |
jari |
253 |
throws SAXException { |
2 |
26 Feb 07 |
jari |
254 |
System.err.println("Fatal Error: "+e); |
2 |
26 Feb 07 |
jari |
// errorLog.recordFatalError(e); |
2 |
26 Feb 07 |
jari |
// parseErrors++; |
2 |
26 Feb 07 |
jari |
257 |
} |
2 |
26 Feb 07 |
jari |
258 |
|
2 |
26 Feb 07 |
jari |
259 |
} |