Revision 1716
Added by berkley over 21 years ago
lib/web.xml | ||
---|---|---|
1 |
<!DOCTYPE web-app
|
|
2 |
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
|
|
1 |
<!DOCTYPE web-app |
|
2 |
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" |
|
3 | 3 |
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> |
4 | 4 |
|
5 | 5 |
<web-app> |
6 |
<display-name>monarch</display-name> |
|
6 | 7 |
|
7 |
|
|
8 |
<!-- General description of your web application --> |
|
9 |
|
|
10 |
<display-name>Metadata Catalog Demo</display-name> |
|
11 |
<description> |
|
12 |
This version is a development release only. |
|
13 |
</description> |
|
14 |
|
|
15 |
|
|
16 |
<!-- Context initialization parameters that define shared |
|
17 |
String constants used within your application, which |
|
18 |
can be customized by the system administrator who is |
|
19 |
installing your application. The values actually |
|
20 |
assigned to these parameters can be retrieved in a |
|
21 |
servlet or JSP page by calling: |
|
22 |
|
|
23 |
String value = |
|
24 |
getServletContext().getInitParameter("name"); |
|
25 |
|
|
26 |
where "name" matches the <param-name> element of |
|
27 |
one of these initialization parameters. |
|
28 |
|
|
29 |
You can define any number of context initialization |
|
30 |
parameters, including zero. |
|
31 |
--> |
|
32 |
|
|
33 | 8 |
<context-param> |
34 | 9 |
<param-name>jones</param-name> |
35 | 10 |
<param-value>jones@nceas.ucsb.edu</param-value> |
36 | 11 |
<description> |
37 |
The EMAIL address of the administrator to whom questions |
|
38 |
and comments about this application should be addressed. |
|
39 | 12 |
</description> |
40 | 13 |
</context-param> |
41 | 14 |
|
42 |
|
|
43 |
<!-- Servlet definitions for the servlets that make up |
|
44 |
your web application, including initialization |
|
45 |
parameters. With Tomcat, you can also send requests |
|
46 |
to servlets not listed here with a request like this: |
|
47 |
|
|
48 |
http://localhost:8080/{context-path}/servlet/{classname} |
|
49 |
|
|
50 |
but this usage is not guaranteed to be portable. It also |
|
51 |
makes relative references to images and other resources |
|
52 |
required by your servlet more complicated, so defining |
|
53 |
all of your servlets (and defining a mapping to them with |
|
54 |
a <servlet-mapping> element) is recommended. |
|
55 |
|
|
56 |
Servlet initialization parameters can be retrieved in a |
|
57 |
servlet or JSP page by calling: |
|
58 |
|
|
59 |
String value = |
|
60 |
getServletConfig().getInitParameter("name"); |
|
61 |
|
|
62 |
where "name" matches the <param-name> element of |
|
63 |
one of these initialization parameters. |
|
64 |
|
|
65 |
You can define any number of servlets, including zero. |
|
66 |
--> |
|
67 |
|
|
68 | 15 |
<servlet> |
69 | 16 |
<servlet-name>metacat</servlet-name> |
70 |
<description> |
|
71 |
The main controlling servlet for the metacat application. |
|
72 |
</description> |
|
73 | 17 |
<servlet-class>edu.ucsb.nceas.metacat.MetaCatServlet</servlet-class> |
74 |
<!-- Load this servlet at server startup time --> |
|
75 |
<load-on-startup>5</load-on-startup> |
|
18 |
<init-param> |
|
19 |
<param-name>debug</param-name> |
|
20 |
<param-value>1</param-value> |
|
21 |
</init-param> |
|
22 |
<init-param> |
|
23 |
<param-name>listings</param-name> |
|
24 |
<param-value>true</param-value> |
|
25 |
</init-param> |
|
26 |
<load-on-startup>1</load-on-startup> |
|
76 | 27 |
</servlet> |
77 | 28 |
|
78 |
<servlet> |
|
29 |
<servlet>
|
|
79 | 30 |
<servlet-name>replication</servlet-name> |
80 |
<description> |
|
81 |
The replication control servlet for metacat |
|
82 |
</description> |
|
83 | 31 |
<servlet-class>edu.ucsb.nceas.metacat.MetacatReplication</servlet-class> |
84 |
<load-on-startup>5</load-on-startup> |
|
32 |
<init-param> |
|
33 |
<param-name>debug</param-name> |
|
34 |
<param-value>1</param-value> |
|
35 |
</init-param> |
|
36 |
<init-param> |
|
37 |
<param-name>listings</param-name> |
|
38 |
<param-value>true</param-value> |
|
39 |
</init-param> |
|
40 |
<load-on-startup>1</load-on-startup> |
|
85 | 41 |
</servlet> |
86 | 42 |
|
87 |
|
|
88 |
<!-- Define mappings that are used by the servlet container to |
|
89 |
translate a particular request URI (context-relative) to a |
|
90 |
particular servlet. The examples below correspond to the |
|
91 |
servlet descriptions above. Thus, a request URI like: |
|
92 |
|
|
93 |
http://localhost:8080/{contextpath}/graph |
|
94 |
|
|
95 |
will be mapped to the "graph" servlet, while a request like: |
|
96 |
|
|
97 |
http://localhost:8080/{contextpath}/saveCustomer.do |
|
98 |
|
|
99 |
will be mapped to the "controller" servlet. |
|
100 |
|
|
101 |
You may define any number of servlet mappings, including zero. |
|
102 |
It is also legal to define more than one mapping for the same |
|
103 |
servlet, if you wish to. |
|
104 |
--> |
|
105 |
|
|
106 | 43 |
<servlet-mapping> |
107 |
<servlet-name>metacat</servlet-name>
|
|
108 |
<url-pattern>/metacat*</url-pattern>
|
|
44 |
<servlet-name>invoker</servlet-name>
|
|
45 |
<url-pattern>/servlet/*</url-pattern>
|
|
109 | 46 |
</servlet-mapping> |
110 |
|
|
111 |
<!-- Define the default session timeout for your application, |
|
112 |
in minutes. From a servlet or JSP page, you can modify |
|
113 |
the timeout for a particular session dynamically by using |
|
114 |
HttpSession.getMaxInactiveInterval(). --> |
|
115 | 47 |
|
116 | 48 |
<session-config> |
117 |
<session-timeout>30</session-timeout> <!-- 30 minutes -->
|
|
49 |
<session-timeout>30</session-timeout> |
|
118 | 50 |
</session-config> |
119 |
|
|
120 | 51 |
</web-app> |
src/edu/ucsb/nceas/metacat/DBTransform.java | ||
---|---|---|
70 | 70 |
import org.w3c.dom.Element; |
71 | 71 |
import org.xml.sax.SAXException; |
72 | 72 |
|
73 |
/**
|
|
73 |
/** |
|
74 | 74 |
* A Class that transforms XML documents utitlizing XSL style sheets |
75 | 75 |
*/ |
76 | 76 |
public class DBTransform { |
... | ... | |
87 | 87 |
* |
88 | 88 |
* @param conn the database connection from which to lookup the public ids |
89 | 89 |
*/ |
90 |
public DBTransform()
|
|
91 |
throws IOException,
|
|
92 |
SQLException,
|
|
90 |
public DBTransform() |
|
91 |
throws IOException, |
|
92 |
SQLException, |
|
93 | 93 |
ClassNotFoundException |
94 | 94 |
{ |
95 | 95 |
//this.conn = conn; |
... | ... | |
97 | 97 |
configDir = util.getOption("config-dir"); |
98 | 98 |
defaultStyle = util.getOption("default-style"); |
99 | 99 |
} |
100 |
|
|
100 |
|
|
101 | 101 |
/** |
102 |
* @see transformXMLDocument(String doc, String sourceType, |
|
103 |
* String targetType, String qformat, PrintWriter pw, |
|
104 |
* String sessionid) |
|
105 |
*/ |
|
106 |
public void transformXMLDocument(String doc, String sourceType, |
|
107 |
String targetType, String qformat, PrintWriter pw) |
|
108 |
{ |
|
109 |
transformXMLDocument(doc, sourceType, targetType, qformat, pw, null); |
|
110 |
} |
|
111 |
|
|
112 |
/** |
|
102 | 113 |
* Transform an XML document using the stylesheet reference from the db |
103 | 114 |
* |
104 | 115 |
* @param doc the document to be transformed |
... | ... | |
108 | 119 |
* @param pw the PrintWriter to which output is printed |
109 | 120 |
* @param params some parameters for eml2 transformation |
110 | 121 |
*/ |
111 |
public void transformXMLDocument(String doc, String sourceType, |
|
112 |
String targetType, String qformat, |
|
113 |
PrintWriter pw, Hashtable param) |
|
122 |
public void transformXMLDocument(String doc, String sourceType, |
|
123 |
String targetType, String qformat, |
|
124 |
PrintWriter pw, Hashtable param, |
|
125 |
String sessionid) |
|
114 | 126 |
{ |
115 |
|
|
127 |
|
|
116 | 128 |
// Look up the stylesheet for this type combination |
117 | 129 |
String xslSystemId = getStyleSystemId(qformat, sourceType, targetType); |
118 | 130 |
|
... | ... | |
124 | 136 |
new StreamSource(xslSystemId)); |
125 | 137 |
//transformer.setParameter("qformat", qformat); |
126 | 138 |
//MetaCatUtil.debugMessage("qformat: "+qformat, 30); |
127 |
|
|
139 |
|
|
140 |
if(sessionid != null) |
|
141 |
{ |
|
142 |
transformer.setParameter("sessid", sessionid); |
|
143 |
} |
|
144 |
|
|
128 | 145 |
// Set up parameter for transformation |
129 | 146 |
if ( param != null) |
130 | 147 |
{ |
... | ... | |
137 | 154 |
transformer.setParameter(key, value); |
138 | 155 |
} |
139 | 156 |
} |
140 |
|
|
141 |
transformer.transform(new StreamSource(new StringReader(doc)),
|
|
157 |
|
|
158 |
transformer.transform(new StreamSource(new StringReader(doc)), |
|
142 | 159 |
new StreamResult(pw)); |
143 | 160 |
} catch (Exception e) { |
144 | 161 |
pw.println(xslSystemId + "Error transforming document in " + |
145 | 162 |
"DBTransform.transformXMLDocument: " + |
146 | 163 |
e.getMessage()); |
147 |
|
|
164 |
|
|
148 | 165 |
} |
149 | 166 |
} else { |
150 |
// No stylesheet registered form this document type, so just return the
|
|
167 |
// No stylesheet registered form this document type, so just return the |
|
151 | 168 |
// XML stream we were passed |
152 | 169 |
pw.print(doc); |
153 | 170 |
} |
154 | 171 |
} |
155 |
|
|
172 |
|
|
156 | 173 |
/** |
157 |
* Transform an XML document to StringWriter using the stylesheet reference
|
|
174 |
* Transform an XML document to StringWriter using the stylesheet reference |
|
158 | 175 |
* from the db |
159 | 176 |
* @param doc the document to be transformed |
160 | 177 |
* @param sourceType the document type of the source |
... | ... | |
163 | 180 |
* @param pw the StringWriter to which output will be stored |
164 | 181 |
*/ |
165 | 182 |
public void transformXMLDocument(String doc, String sourceType, |
166 |
String targetType, String qFormat, StringWriter pw) { |
|
183 |
String targetType, String qFormat, StringWriter pw, |
|
184 |
String sessionid) { |
|
167 | 185 |
|
168 | 186 |
// Look up the stylesheet for this type combination |
169 | 187 |
String xslSystemId = getStyleSystemId(qFormat, sourceType, targetType); |
... | ... | |
174 | 192 |
TransformerFactory tFactory = TransformerFactory.newInstance(); |
175 | 193 |
Transformer transformer = tFactory.newTransformer( |
176 | 194 |
new StreamSource(xslSystemId)); |
195 |
if(sessionid != null) |
|
196 |
{ |
|
197 |
transformer.setParameter("sessid", sessionid); |
|
198 |
} |
|
177 | 199 |
transformer.setParameter("qFormat", qFormat); |
178 | 200 |
transformer.transform(new StreamSource(new StringReader(doc)), |
179 | 201 |
new StreamResult(pw)); |
... | ... | |
181 | 203 |
util.debugMessage(xslSystemId + "Error transforming document in " + |
182 | 204 |
"DBTransform.transformXMLDocument: " + |
183 | 205 |
e.getMessage(), 30); |
184 |
|
|
206 |
|
|
185 | 207 |
} |
186 | 208 |
} else { |
187 |
// No stylesheet registered form this document type, so just return the
|
|
209 |
// No stylesheet registered form this document type, so just return the |
|
188 | 210 |
// XML stream we were passed |
189 | 211 |
pw.write(doc); |
190 | 212 |
} |
191 | 213 |
} |
192 |
|
|
214 |
|
|
193 | 215 |
/** |
216 |
* @see transformXMLDocument(String doc, String sourceType, |
|
217 |
* String targetType, String qFormat, StringWriter pw |
|
218 |
* String sessionid) |
|
219 |
*/ |
|
220 |
public void transformXMLDocument(String doc, String sourceType, |
|
221 |
String targetType, String qFormat, StringWriter pw) |
|
222 |
{ |
|
223 |
transformXMLDocument(doc, sourceType, targetType, qFormat, pw, null); |
|
224 |
} |
|
225 |
|
|
226 |
/** |
|
194 | 227 |
* gets the content of a tag in a given xml file with the given path |
195 | 228 |
* @param f the file to parse |
196 | 229 |
* @param path the path to get the content from |
197 | 230 |
*/ |
198 |
public static NodeList getPathContent(File f, String path)
|
|
231 |
public static NodeList getPathContent(File f, String path) |
|
199 | 232 |
{ |
200 | 233 |
if(f == null) |
201 | 234 |
{ |
202 | 235 |
return null; |
203 | 236 |
} |
204 |
|
|
237 |
|
|
205 | 238 |
DOMParser parser = new DOMParser(); |
206 | 239 |
InputSource in; |
207 | 240 |
FileInputStream fs; |
208 |
|
|
241 |
|
|
209 | 242 |
try |
210 |
{
|
|
243 |
{ |
|
211 | 244 |
fs = new FileInputStream(f); |
212 | 245 |
in = new InputSource(fs); |
213 | 246 |
} |
... | ... | |
216 | 249 |
fnf.printStackTrace(); |
217 | 250 |
return null; |
218 | 251 |
} |
219 |
|
|
252 |
|
|
220 | 253 |
try |
221 | 254 |
{ |
222 | 255 |
parser.parse(in); |
... | ... | |
224 | 257 |
} |
225 | 258 |
catch(Exception e1) |
226 | 259 |
{ |
227 |
System.err.println("File: " + f.getPath() + " : parse threw: " +
|
|
260 |
System.err.println("File: " + f.getPath() + " : parse threw: " + |
|
228 | 261 |
e1.toString()); |
229 | 262 |
return null; |
230 | 263 |
} |
231 |
|
|
264 |
|
|
232 | 265 |
Document doc = parser.getDocument(); |
233 |
|
|
266 |
|
|
234 | 267 |
try |
235 | 268 |
{ |
236 | 269 |
NodeList docNodeList = XPathAPI.selectNodeList(doc, path); |
... | ... | |
238 | 271 |
} |
239 | 272 |
catch(Exception se) |
240 | 273 |
{ |
241 |
System.err.println("file: " + f.getPath() + " : parse threw: " +
|
|
274 |
System.err.println("file: " + f.getPath() + " : parse threw: " + |
|
242 | 275 |
se.toString()); |
243 | 276 |
return null; |
244 | 277 |
} |
... | ... | |
251 | 284 |
* @param sourcetype the document type of the source |
252 | 285 |
* @param targettype the document type of the target |
253 | 286 |
*/ |
254 |
public String getStyleSystemId(String qformat, String sourcetype,
|
|
287 |
public String getStyleSystemId(String qformat, String sourcetype, |
|
255 | 288 |
String targettype) { |
256 | 289 |
String systemId = null; |
257 | 290 |
|
... | ... | |
262 | 295 |
// Load the style-set map for this qformat into a DOM |
263 | 296 |
try { |
264 | 297 |
boolean breakflag = false; |
265 |
String filename = configDir + "/" + qformat + ".xml";
|
|
298 |
String filename = configDir + "/" + qformat + ".xml"; |
|
266 | 299 |
util.debugMessage("Trying style-set file: " + filename, 30); |
267 | 300 |
File f = new File(filename); |
268 | 301 |
NodeList nlDoctype = getPathContent(f, "/style-set/doctype"); |
269 | 302 |
NodeList nlDefault = getPathContent(f, "/style-set/default-style"); |
270 | 303 |
Node nDefault = nlDefault.item(0); |
271 | 304 |
systemId = nDefault.getFirstChild().getNodeValue(); //set the default |
272 |
|
|
305 |
|
|
273 | 306 |
for(int i=0; i<nlDoctype.getLength(); i++) |
274 | 307 |
{ //look for the right sourcetype |
275 | 308 |
Node nDoctype = nlDoctype.item(i); |
... | ... | |
303 | 336 |
} |
304 | 337 |
} |
305 | 338 |
} |
306 |
|
|
339 |
|
|
307 | 340 |
if(breakflag) |
308 | 341 |
{ |
309 | 342 |
break; |
310 | 343 |
} |
311 | 344 |
} |
312 | 345 |
} |
313 |
|
|
346 |
|
|
314 | 347 |
if(breakflag) |
315 | 348 |
{ |
316 | 349 |
break; |
... | ... | |
335 | 368 |
* @param sourcetype the document type of the source |
336 | 369 |
* @param targettype the document type of the target |
337 | 370 |
*/ |
338 |
public String getSystemId(String objecttype, String sourcetype,
|
|
371 |
public String getSystemId(String objecttype, String sourcetype, |
|
339 | 372 |
String targettype) { |
340 | 373 |
|
341 | 374 |
// Look up the System ID of a particular object |
... | ... | |
366 | 399 |
try { |
367 | 400 |
the_system_id = rs.getString(1); |
368 | 401 |
} catch (SQLException e) { |
369 |
System.out.println("Error with getString in " +
|
|
370 |
"DBTransform.getSystemId: " + e.getMessage());
|
|
402 |
System.out.println("Error with getString in " + |
|
403 |
"DBTransform.getSystemId: " + e.getMessage()); |
|
371 | 404 |
} |
372 | 405 |
} else { |
373 |
the_system_id = null;
|
|
406 |
the_system_id = null; |
|
374 | 407 |
} |
375 | 408 |
} catch (SQLException e) { |
376 |
System.err.println("Error with next in DBTransform.getSystemId: " +
|
|
409 |
System.err.println("Error with next in DBTransform.getSystemId: " + |
|
377 | 410 |
e.getMessage()); |
378 | 411 |
return ("Error with next: " + e.getMessage()); |
379 | 412 |
} |
380 | 413 |
} catch (SQLException e) { |
381 |
System.err.println("Error with getrset in DBTransform.getSystemId: " +
|
|
414 |
System.err.println("Error with getrset in DBTransform.getSystemId: " + |
|
382 | 415 |
e.getMessage()); |
383 | 416 |
return ("Error with getrset: " + e.getMessage()); |
384 | 417 |
} |
385 | 418 |
pstmt.close(); |
386 | 419 |
} catch (SQLException e) { |
387 |
System.err.println("Error getting id in DBTransform.getSystemId: " +
|
|
420 |
System.err.println("Error getting id in DBTransform.getSystemId: " + |
|
388 | 421 |
e.getMessage()); |
389 |
return ("Error getting id in DBTransform.getSystemId:: " +
|
|
422 |
return ("Error getting id in DBTransform.getSystemId:: " + |
|
390 | 423 |
e.getMessage()); |
391 | 424 |
} |
392 | 425 |
finally |
... | ... | |
414 | 447 |
* Usage: java DBTransform |
415 | 448 |
*/ |
416 | 449 |
static public void main(String[] args) { |
417 |
|
|
450 |
|
|
418 | 451 |
if (args.length > 0) |
419 | 452 |
{ |
420 | 453 |
System.err.println("Wrong number of arguments!!!"); |
... | ... | |
422 | 455 |
return; |
423 | 456 |
} else { |
424 | 457 |
try { |
425 |
|
|
458 |
|
|
426 | 459 |
// Open a connection to the database |
427 | 460 |
/*MetaCatUtil util = new MetaCatUtil(); |
428 | 461 |
Connection dbconn = util.openDBConnection();*/ |
... | ... | |
436 | 469 |
|
437 | 470 |
// Transform the document to the new doctype |
438 | 471 |
DBTransform dbt = new DBTransform(); |
439 |
dbt.transformXMLDocument(testdoc.toString(),
|
|
440 |
"-//NCEAS//eml-dataset//EN",
|
|
441 |
"-//W3C//HTML//EN",
|
|
472 |
dbt.transformXMLDocument(testdoc.toString(), |
|
473 |
"-//NCEAS//eml-dataset//EN", |
|
474 |
"-//W3C//HTML//EN", |
|
442 | 475 |
"knb", |
443 | 476 |
new PrintWriter(System.out), null); |
444 | 477 |
|
... | ... | |
449 | 482 |
} |
450 | 483 |
} |
451 | 484 |
} |
452 |
|
|
485 |
|
|
453 | 486 |
private void dbg(int position) { |
454 | 487 |
System.err.println("Debug flag: " + position); |
455 | 488 |
} |
src/edu/ucsb/nceas/metacat/MetaCatServlet.java | ||
---|---|---|
245 | 245 |
{ |
246 | 246 |
return; |
247 | 247 |
} |
248 |
|
|
248 | 249 |
//if the user clicked on the input images, decode which image |
249 | 250 |
//was clicked then set the action. |
250 | 251 |
String action = ((String[])params.get("action"))[0]; |
... | ... | |
303 | 304 |
password = (String)sess.getAttribute("password"); |
304 | 305 |
groupnames = (String[])sess.getAttribute("groupnames"); |
305 | 306 |
try { |
306 |
sess_id = (String)sess.getId(); |
|
307 |
if(params.containsKey("sessionid")) |
|
308 |
{ |
|
309 |
sess_id = (String)params.get("sessionid"); |
|
310 |
sess.setAttribute("JSESSIONID", sess_id); |
|
311 |
} |
|
312 |
else |
|
313 |
{ |
|
314 |
sess_id = (String)sess.getId(); |
|
315 |
} |
|
307 | 316 |
} catch(IllegalStateException ise) { |
308 | 317 |
System.out.println("error in handleGetOrPost: this shouldn't " + |
309 | 318 |
"happen: the session should be valid: " + |
... | ... | |
316 | 325 |
// to a particular action handler |
317 | 326 |
if(action.equals("query")) { |
318 | 327 |
PrintWriter out = response.getWriter(); |
319 |
handleQuery(out,params,response,username,groupnames); |
|
328 |
handleQuery(out,params,response,username,groupnames,sess_id);
|
|
320 | 329 |
out.close(); |
321 | 330 |
} else if(action.equals("squery")) { |
322 | 331 |
PrintWriter out = response.getWriter(); |
323 | 332 |
if(params.containsKey("query")) { |
324 |
handleSQuery(out, params,response,username,groupnames); |
|
333 |
handleSQuery(out, params,response,username,groupnames,sess_id);
|
|
325 | 334 |
out.close(); |
326 | 335 |
} else { |
327 | 336 |
out.println("Illegal action squery without \"query\" parameter"); |
... | ... | |
333 | 342 |
} else if (action.equals("read")) { |
334 | 343 |
handleReadAction(params, response, username,password, groupnames); |
335 | 344 |
} else if (action.equals("readinlinedata")) { |
336 |
handleReadInlineDataAction(params, response, username,
|
|
345 |
handleReadInlineDataAction(params, response, username, |
|
337 | 346 |
password, groupnames); |
338 | 347 |
} else if (action.equals("insert") || action.equals("update")) { |
339 | 348 |
PrintWriter out = response.getWriter(); |
... | ... | |
542 | 551 |
* @param conn the database connection |
543 | 552 |
*/ |
544 | 553 |
protected void handleSQuery(PrintWriter out, Hashtable params, |
545 |
HttpServletResponse response, String user, String[] groups) |
|
554 |
HttpServletResponse response, String user, String[] groups, |
|
555 |
String sessionid) |
|
546 | 556 |
{ |
547 | 557 |
String xmlquery = ((String[])params.get("query"))[0]; |
548 | 558 |
String qformat = ((String[])params.get("qformat"))[0]; |
... | ... | |
566 | 576 |
outPutTime = System.currentTimeMillis()/1000; |
567 | 577 |
MetaCatUtil.debugMessage("Output time: "+(outPutTime-toStringTime), 30); |
568 | 578 |
} else { |
569 |
transformResultset(resultdoc, response, out, qformat); |
|
579 |
transformResultset(resultdoc, response, out, qformat, sessionid);
|
|
570 | 580 |
outPutTime = System.currentTimeMillis()/1000; |
571 | 581 |
MetaCatUtil.debugMessage("Output time: "+(outPutTime-toStringTime), 30); |
572 | 582 |
} |
... | ... | |
581 | 591 |
* @param response the response object linked to the client |
582 | 592 |
*/ |
583 | 593 |
protected void handleQuery(PrintWriter out, Hashtable params, |
584 |
HttpServletResponse response, String user, String[] groups) |
|
594 |
HttpServletResponse response, String user, String[] groups, |
|
595 |
String sessionid) |
|
585 | 596 |
{ |
586 | 597 |
//create the query and run it |
587 | 598 |
String xmlquery = DBQuery.createSQuery(params); |
... | ... | |
596 | 607 |
response.setContentType("text/xml"); |
597 | 608 |
out.println(resultdoc); |
598 | 609 |
} else { |
599 |
transformResultset(resultdoc, response, out, qformat); |
|
610 |
transformResultset(resultdoc, response, out, qformat, sessionid);
|
|
600 | 611 |
} |
601 | 612 |
} |
602 | 613 |
|
... | ... | |
671 | 682 |
*/ |
672 | 683 |
protected void transformResultset(String resultdoc, |
673 | 684 |
HttpServletResponse response, |
674 |
PrintWriter out, String qformat) |
|
685 |
PrintWriter out, String qformat, |
|
686 |
String sessionid) |
|
675 | 687 |
{ |
676 | 688 |
|
677 | 689 |
try { |
... | ... | |
679 | 691 |
DBTransform trans = new DBTransform(); |
680 | 692 |
response.setContentType("text/html"); |
681 | 693 |
trans.transformXMLDocument(resultdoc, "-//NCEAS//resultset//EN", |
682 |
"-//W3C//HTML//EN", qformat, out, null);
|
|
694 |
"-//W3C//HTML//EN", qformat, out, sessionid);
|
|
683 | 695 |
|
684 | 696 |
} |
685 | 697 |
catch(Exception e) |
... | ... | |
820 | 832 |
|
821 | 833 |
}//handleExportAction |
822 | 834 |
|
823 |
|
|
835 |
|
|
824 | 836 |
//read inline data section |
825 | 837 |
/** |
826 |
* In eml2 document, the xml can have inline data and data was stripped off
|
|
838 |
* In eml2 document, the xml can have inline data and data was stripped off |
|
827 | 839 |
* and store in file system. This action can be used to read inline data only |
828 | 840 |
* @param params the Hashtable of HTTP request parameters |
829 | 841 |
* @param response the HTTP response object linked to the client |
... | ... | |
854 | 866 |
{ |
855 | 867 |
throw new Exception("You didn't specify requested inlinedataid"); |
856 | 868 |
}//if |
857 |
|
|
869 |
|
|
858 | 870 |
// check for permission |
859 | 871 |
docId = MetaCatUtil.getDocIdWithoutRevFromInlineDataID(inlineDataId); |
860 | 872 |
PermissionController controller = new PermissionController(docId); |
861 | 873 |
// check top level read permission |
862 |
if (!controller.hasPermission(user, groups,
|
|
874 |
if (!controller.hasPermission(user, groups, |
|
863 | 875 |
AccessControlInterface.READSTRING)) |
864 | 876 |
{ |
865 | 877 |
throw new Exception("User "+ user + " doesn't have permission "+ |
... | ... | |
876 | 888 |
throw new Exception("User "+ user + " doesn't have permission "+ |
877 | 889 |
" to read inlinedata " + inlineDataId); |
878 | 890 |
}//if |
879 |
|
|
891 |
|
|
880 | 892 |
}//else |
881 |
|
|
893 |
|
|
882 | 894 |
// Get output stream |
883 | 895 |
out = response.getOutputStream(); |
884 | 896 |
// read the inline data from the file |
... | ... | |
898 | 910 |
catch (Exception e) |
899 | 911 |
{ |
900 | 912 |
try |
901 |
{
|
|
913 |
{ |
|
902 | 914 |
PrintWriter pw = null; |
903 | 915 |
// Send error message back |
904 | 916 |
if (out != null) |
... | ... | |
908 | 920 |
else |
909 | 921 |
{ |
910 | 922 |
pw = response.getWriter(); |
911 |
}
|
|
923 |
} |
|
912 | 924 |
pw.println("<?xml version=\"1.0\"?>"); |
913 | 925 |
pw.println("<error>"); |
914 | 926 |
pw.println(e.getMessage()); |
... | ... | |
928 | 940 |
ioe.getMessage(), 30); |
929 | 941 |
}//catch |
930 | 942 |
|
931 |
MetaCatUtil.debugMessage("Error in MetacatServlet.handleReadInlineDataAction: "
|
|
943 |
MetaCatUtil.debugMessage("Error in MetacatServlet.handleReadInlineDataAction: " |
|
932 | 944 |
+ e.getMessage(), 30); |
933 |
|
|
945 |
|
|
934 | 946 |
}//catch |
935 | 947 |
|
936 | 948 |
}//handleReadInlineDataAction |
937 |
|
|
949 |
|
|
938 | 950 |
/* |
939 | 951 |
* Get the nodeid from xml_nodes for the inlinedataid |
940 | 952 |
*/ |
941 |
private long getInlineDataNodeId(String inLineDataId, String docId)
|
|
953 |
private long getInlineDataNodeId(String inLineDataId, String docId) |
|
942 | 954 |
throws SQLException |
943 | 955 |
{ |
944 | 956 |
long nodeId = 0; |
... | ... | |
949 | 961 |
int serialNumber = -1; |
950 | 962 |
String sql ="SELECT nodeid FROM xml_nodes WHERE docid=? AND nodedata=? " + |
951 | 963 |
"AND nodetype='TEXT' AND parentnodeid IN " + |
952 |
"(SELECT nodeid FROM xml_nodes WHERE docid=? AND " +
|
|
964 |
"(SELECT nodeid FROM xml_nodes WHERE docid=? AND " + |
|
953 | 965 |
"nodetype='ELEMENT' AND nodename='" + INLINE + "')"; |
954 |
|
|
966 |
|
|
955 | 967 |
try |
956 | 968 |
{ |
957 | 969 |
//check out DBConnection |
958 | 970 |
conn=DBConnectionPool.getDBConnection("AccessControlList.isAllowFirst"); |
959 | 971 |
serialNumber=conn.getCheckOutSerialNumber(); |
960 |
|
|
972 |
|
|
961 | 973 |
pStmt = conn.prepareStatement(sql); |
962 | 974 |
//bind value |
963 | 975 |
pStmt.setString(1, docId);//docid |
964 | 976 |
pStmt.setString(2, inLineDataId);//inlinedataid |
965 | 977 |
pStmt.setString(3, docId); |
966 |
// excute query
|
|
978 |
// excute query |
|
967 | 979 |
pStmt.execute(); |
968 | 980 |
ResultSet rs = pStmt.getResultSet(); |
969 | 981 |
hasRow=rs.next(); |
970 | 982 |
// get result |
971 | 983 |
if (hasRow) |
972 | 984 |
{ |
973 |
nodeId = rs.getLong(1);
|
|
985 |
nodeId = rs.getLong(1); |
|
974 | 986 |
}//if |
975 |
|
|
987 |
|
|
976 | 988 |
}//try |
977 | 989 |
catch (SQLException e) |
978 | 990 |
{ |
... | ... | |
993 | 1005 |
" is: "+nodeId, 35); |
994 | 1006 |
return nodeId; |
995 | 1007 |
} |
996 |
|
|
997 |
|
|
998 |
|
|
1008 |
|
|
1009 |
|
|
1010 |
|
|
999 | 1011 |
// READ SECTION |
1000 | 1012 |
/** |
1001 | 1013 |
* Handle the "read" request of metadata/data files from Metacat |
... | ... | |
1033 | 1045 |
// the param for only metadata (eml) |
1034 | 1046 |
if (params.containsKey("inlinedata")) |
1035 | 1047 |
{ |
1036 |
|
|
1048 |
|
|
1037 | 1049 |
String inlineData = ((String[])params.get("inlinedata"))[0]; |
1038 | 1050 |
if (inlineData.equalsIgnoreCase("false")) |
1039 | 1051 |
{ |
1040 | 1052 |
withInlineData = false; |
1041 | 1053 |
} |
1042 |
}
|
|
1054 |
} |
|
1043 | 1055 |
if (params.containsKey("abstractpath")) { |
1044 | 1056 |
abstrpath = ((String[])params.get("abstractpath"))[0]; |
1045 | 1057 |
if ( !abstrpath.equals("") && (abstrpath != null) ) { |
... | ... | |
1224 | 1236 |
// read metadata or data from Metacat |
1225 | 1237 |
private void readFromMetacat(HttpServletResponse response, String docid, |
1226 | 1238 |
String qformat, String abstrpath, String user, |
1227 |
String[] groups, boolean zip,
|
|
1239 |
String[] groups, boolean zip, |
|
1228 | 1240 |
ZipOutputStream zout, boolean withInlineData, |
1229 | 1241 |
Hashtable params) |
1230 | 1242 |
throws ClassNotFoundException, IOException, SQLException, |
... | ... | |
1257 | 1269 |
|
1258 | 1270 |
//MIME type |
1259 | 1271 |
String contentType = getServletContext().getMimeType(filename); |
1260 |
if (contentType == null)
|
|
1272 |
if (contentType == null) |
|
1261 | 1273 |
{ |
1262 | 1274 |
ContentTypeProvider provider = new ContentTypeProvider(docid); |
1263 | 1275 |
contentType = provider.getContentType(); |
1264 | 1276 |
MetaCatUtil.debugMessage("Final contenttype is: "+ contentType, 30); |
1265 | 1277 |
} |
1266 |
|
|
1278 |
|
|
1267 | 1279 |
response.setContentType(contentType); |
1268 | 1280 |
// if we decide to use "application/octet-stream" for all data returns |
1269 | 1281 |
// response.setContentType("application/octet-stream"); |
... | ... | |
1298 | 1310 |
// Transform the document to the new doctype |
1299 | 1311 |
DBTransform dbt = new DBTransform(); |
1300 | 1312 |
dbt.transformXMLDocument(doc.toString(user, groups, withInlineData), |
1301 |
doctype,"-//W3C//HTML//EN",
|
|
1313 |
doctype,"-//W3C//HTML//EN", |
|
1302 | 1314 |
qformat, out, params); |
1303 | 1315 |
} |
1304 | 1316 |
|
... | ... | |
1514 | 1526 |
}//readFromRemoteMetaCat |
1515 | 1527 |
|
1516 | 1528 |
// END OF READ SECTION |
1517 |
|
|
1518 |
|
|
1519 |
|
|
1529 |
|
|
1530 |
|
|
1531 |
|
|
1520 | 1532 |
// INSERT/UPDATE SECTION |
1521 | 1533 |
/** |
1522 | 1534 |
* Handle the database putdocument request and write an XML document |
... | ... | |
1582 | 1594 |
{ |
1583 | 1595 |
documentWrapper = new DocumentImplWrapper("", false); |
1584 | 1596 |
} |
1585 |
|
|
1597 |
|
|
1586 | 1598 |
xml = new StringReader(doctext[0]); |
1587 | 1599 |
|
1588 | 1600 |
String[] action = (String[])params.get("action"); |
... | ... | |
1622 | 1634 |
newdocid = documentWrapper.write(dbConn, xml, pub, dtd, doAction, |
1623 | 1635 |
null, user, groups); |
1624 | 1636 |
}//catch |
1625 |
|
|
1637 |
|
|
1626 | 1638 |
}//try |
1627 | 1639 |
finally |
1628 | 1640 |
{ |
... | ... | |
1637 | 1649 |
out.println("<docid>" + newdocid + "</docid>"); |
1638 | 1650 |
out.println("</success>"); |
1639 | 1651 |
|
1640 |
}
|
|
1641 |
catch (NullPointerException npe)
|
|
1652 |
} |
|
1653 |
catch (NullPointerException npe) |
|
1642 | 1654 |
{ |
1643 | 1655 |
//response.setContentType("text/xml"); |
1644 | 1656 |
out.println("<?xml version=\"1.0\"?>"); |
... | ... | |
1646 | 1658 |
out.println(npe.getMessage()); |
1647 | 1659 |
out.println("</error>"); |
1648 | 1660 |
} |
1649 |
}
|
|
1650 |
catch (Exception e)
|
|
1661 |
} |
|
1662 |
catch (Exception e) |
|
1651 | 1663 |
{ |
1652 | 1664 |
//response.setContentType("text/xml"); |
1653 | 1665 |
out.println("<?xml version=\"1.0\"?>"); |
... | ... | |
1716 | 1728 |
return validate; |
1717 | 1729 |
} |
1718 | 1730 |
// END OF INSERT/UPDATE SECTION |
1719 |
|
|
1731 |
|
|
1720 | 1732 |
/* check if the xml string contains key words to specify schema loocation*/ |
1721 | 1733 |
private boolean needSchemaValidation(String xml) |
1722 | 1734 |
{ |
... | ... | |
1728 | 1740 |
return needSchemaValidate; |
1729 | 1741 |
} |
1730 | 1742 |
String targetLine = getSchemaLine(xml); |
1731 |
// to see if the second line contain some keywords
|
|
1743 |
// to see if the second line contain some keywords |
|
1732 | 1744 |
if (targetLine != null && (targetLine.indexOf(SCHEMALOCATIONKEYWORD) != -1|| |
1733 | 1745 |
targetLine.indexOf(NONAMESPACELOCATION) != -1 )) |
1734 | 1746 |
{ |
1735 | 1747 |
// if contains schema location key word, should be validate |
1736 | 1748 |
needSchemaValidate = true; |
1737 | 1749 |
} |
1738 |
|
|
1739 |
MetaCatUtil.debugMessage("Validation for schema is " +
|
|
1750 |
|
|
1751 |
MetaCatUtil.debugMessage("Validation for schema is " + |
|
1740 | 1752 |
needSchemaValidate, 10); |
1741 | 1753 |
return needSchemaValidate; |
1742 |
|
|
1754 |
|
|
1743 | 1755 |
} |
1744 |
|
|
1756 |
|
|
1745 | 1757 |
/* check if the xml string contains key words to specify schema loocation*/ |
1746 | 1758 |
private boolean needEml2Validation(String xml) |
1747 | 1759 |
{ |
... | ... | |
1754 | 1766 |
return needEml2Validate; |
1755 | 1767 |
} |
1756 | 1768 |
String targetLine = getSchemaLine(xml); |
1757 |
|
|
1758 |
if (targetLine != null && targetLine.indexOf(EML2KEYWORD) != -1 &&
|
|
1769 |
|
|
1770 |
if (targetLine != null && targetLine.indexOf(EML2KEYWORD) != -1 && |
|
1759 | 1771 |
targetLine.indexOf(emlNameSpace) != -1) |
1760 | 1772 |
{ |
1761 | 1773 |
// if contains schema location key word, should be validate |
1762 | 1774 |
needEml2Validate = true; |
1763 | 1775 |
} |
1764 |
|
|
1765 |
MetaCatUtil.debugMessage("Validation for eml is " +
|
|
1776 |
|
|
1777 |
MetaCatUtil.debugMessage("Validation for eml is " + |
|
1766 | 1778 |
needEml2Validate, 10); |
1767 | 1779 |
return needEml2Validate; |
1768 |
|
|
1780 |
|
|
1769 | 1781 |
} |
1770 |
|
|
1782 |
|
|
1771 | 1783 |
private String getSchemaLine(String xml) |
1772 | 1784 |
{ |
1773 | 1785 |
// find the line |
... | ... | |
1795 | 1807 |
break; |
1796 | 1808 |
}//if |
1797 | 1809 |
}//for |
1798 |
// get the second line string
|
|
1810 |
// get the second line string |
|
1799 | 1811 |
MetaCatUtil.debugMessage("The start index for second line: "+startIndex, 25); |
1800 | 1812 |
MetaCatUtil.debugMessage("The end index for second line: "+endIndex, 25); |
1801 | 1813 |
if (startIndex != 0 && endIndex != 0) |
1802 | 1814 |
{ |
1803 | 1815 |
secondLine = xml.substring(startIndex+1, endIndex); |
1804 |
|
|
1816 |
|
|
1805 | 1817 |
}//if |
1806 | 1818 |
MetaCatUtil.debugMessage("the second line string is: "+secondLine, 25); |
1807 | 1819 |
return secondLine; |
1808 | 1820 |
} |
1809 |
|
|
1821 |
|
|
1810 | 1822 |
// DELETE SECTION |
1811 | 1823 |
/** |
1812 | 1824 |
* Handle the database delete request and delete an XML document |
... | ... | |
2164 | 2176 |
|
2165 | 2177 |
try { |
2166 | 2178 |
// MBJ: need to put filesize limit in Metacat config (metacat.properties) |
2167 |
MultipartParser mp = new MultipartParser(request, sizeLimit*1024*1024);
|
|
2179 |
MultipartParser mp = new MultipartParser(request, sizeLimit*1024*1024); |
|
2168 | 2180 |
Part part; |
2169 | 2181 |
while ((part = mp.readNextPart()) != null) { |
2170 | 2182 |
String name = part.getName(); |
... | ... | |
2358 | 2370 |
out.println("</error>"); |
2359 | 2371 |
} |
2360 | 2372 |
} |
2361 |
|
|
2373 |
|
|
2362 | 2374 |
/* |
2363 | 2375 |
* A method to handle set access action |
2364 | 2376 |
*/ |
... | ... | |
2378 | 2390 |
String error = null; |
2379 | 2391 |
Vector successList = new Vector(); |
2380 | 2392 |
String success = null; |
2381 |
|
|
2382 |
|
|
2393 |
|
|
2394 |
|
|
2383 | 2395 |
// Get parameters |
2384 |
if (params.containsKey("docid"))
|
|
2396 |
if (params.containsKey("docid")) |
|
2385 | 2397 |
{ |
2386 | 2398 |
docList = (String[])params.get("docid"); |
2387 | 2399 |
} |
2388 | 2400 |
if (params.containsKey("principal")) |
2389 | 2401 |
{ |
2390 |
principalList = (String[])params.get("principal");
|
|
2402 |
principalList = (String[])params.get("principal"); |
|
2391 | 2403 |
} |
2392 | 2404 |
if (params.containsKey("permission")) |
2393 | 2405 |
{ |
2394 | 2406 |
permissionList = (String[])params.get("permission"); |
2395 |
|
|
2407 |
|
|
2396 | 2408 |
} |
2397 | 2409 |
if (params.containsKey("permType")) |
2398 | 2410 |
{ |
2399 | 2411 |
permTypeList = (String[])params.get("permType"); |
2400 |
|
|
2412 |
|
|
2401 | 2413 |
} |
2402 | 2414 |
if (params.containsKey("permOrder")) |
2403 | 2415 |
{ |
2404 | 2416 |
permOrderList = (String[])params.get("permOrder"); |
2405 |
|
|
2417 |
|
|
2406 | 2418 |
} |
2407 |
|
|
2419 |
|
|
2408 | 2420 |
// Make sure the parameter is not null |
2409 | 2421 |
if (docList == null || principalList == null || permTypeList == null || |
2410 | 2422 |
permissionList == null) |
... | ... | |
2416 | 2428 |
outputResponse(successList, errorList, out); |
2417 | 2429 |
return; |
2418 | 2430 |
} |
2419 |
|
|
2431 |
|
|
2420 | 2432 |
// Only select first element for permission, type and order |
2421 | 2433 |
permission = permissionList[0]; |
2422 | 2434 |
permType = permTypeList[0]; |
... | ... | |
2424 | 2436 |
{ |
2425 | 2437 |
permOrder = permOrderList[0]; |
2426 | 2438 |
} |
2427 |
|
|
2439 |
|
|
2428 | 2440 |
// Get package doctype set |
2429 | 2441 |
Vector packageSet =MetaCatUtil.getOptionList( |
2430 | 2442 |
MetaCatUtil.getOption("packagedoctypeset")); |
... | ... | |
2433 | 2445 |
{ |
2434 | 2446 |
for (int i = 0; i<packageSet.size(); i++) |
2435 | 2447 |
{ |
2436 |
MetaCatUtil.debugMessage("doctype in package set: " +
|
|
2448 |
MetaCatUtil.debugMessage("doctype in package set: " + |
|
2437 | 2449 |
(String)packageSet.elementAt(i), 34); |
2438 | 2450 |
} |
2439 | 2451 |
}//if |
2440 |
|
|
2452 |
|
|
2441 | 2453 |
// handle every accessionNumber |
2442 | 2454 |
for (int i=0; i <docList.length; i++) |
2443 | 2455 |
{ |
... | ... | |
2459 | 2471 |
errorList.addElement(error); |
2460 | 2472 |
continue; |
2461 | 2473 |
} |
2462 |
//check if user is the owner. Only owner can do owner
|
|
2474 |
//check if user is the owner. Only owner can do owner |
|
2463 | 2475 |
if (username == null || owner == null || !username.equals(owner)) |
2464 | 2476 |
{ |
2465 | 2477 |
error = "User - " + username + " does not have permission to set " + |
... | ... | |
2467 | 2479 |
errorList.addElement(error); |
2468 | 2480 |
continue; |
2469 | 2481 |
} |
2470 |
|
|
2482 |
|
|
2471 | 2483 |
// If docid publicid is BIN data file or other beta4, 6 package document |
2472 | 2484 |
// we could not do set access control. Because we don't want inconsistent |
2473 | 2485 |
// to its access docuemnt |
... | ... | |
2478 | 2490 |
errorList.addElement(error); |
2479 | 2491 |
continue; |
2480 | 2492 |
} |
2481 |
|
|
2493 |
|
|
2482 | 2494 |
// for every principle |
2483 | 2495 |
for (int j = 0; j<principalList.length; j++) |
2484 | 2496 |
{ |
... | ... | |
2486 | 2498 |
try |
2487 | 2499 |
{ |
2488 | 2500 |
//insert permission |
2489 |
AccessControlForSingleFile accessControl = new
|
|
2501 |
AccessControlForSingleFile accessControl = new |
|
2490 | 2502 |
AccessControlForSingleFile(accessionNumber, |
2491 | 2503 |
principal, permission, permType, permOrder); |
2492 | 2504 |
accessControl.insertPermissions(); |
... | ... | |
2498 | 2510 |
{ |
2499 | 2511 |
MetaCatUtil.debugMessage("Erorr in handleSetAccessAction2: " + |
2500 | 2512 |
ee.getMessage(), 30); |
2501 |
error = "Faild to set access control for document " +
|
|
2513 |
error = "Faild to set access control for document " + |
|
2502 | 2514 |
accessionNumber + " because " + ee.getMessage(); |
2503 | 2515 |
errorList.addElement(error); |
2504 | 2516 |
continue; |
2505 | 2517 |
} |
2506 | 2518 |
}//for every principle |
2507 |
}//for every document
|
|
2519 |
}//for every document |
|
2508 | 2520 |
outputResponse(successList, errorList, out); |
2509 | 2521 |
}//handleSetAccessAction |
2510 |
|
|
2511 |
|
|
2522 |
|
|
2523 |
|
|
2512 | 2524 |
/* |
2513 | 2525 |
* A method try to determin a docid's public id, if couldn't find null |
2514 | 2526 |
* will be returned. |
2515 | 2527 |
*/ |
2516 |
private String getFieldValueForDoc(String accessionNumber, String fieldName)
|
|
2528 |
private String getFieldValueForDoc(String accessionNumber, String fieldName) |
|
2517 | 2529 |
throws Exception |
2518 | 2530 |
{ |
2519 | 2531 |
if (accessionNumber==null || accessionNumber.equals("") ||fieldName == null |
... | ... | |
2521 | 2533 |
{ |
2522 | 2534 |
throw new Exception("Docid or field name was not specified"); |
2523 | 2535 |
} |
2524 |
|
|
2536 |
|
|
2525 | 2537 |
PreparedStatement pstmt = null; |
2526 | 2538 |
ResultSet rs = null; |
2527 | 2539 |
String fieldValue = null; |
2528 | 2540 |
String docId = null; |
2529 | 2541 |
DBConnection conn = null; |
2530 | 2542 |
int serialNumber = -1; |
2531 |
|
|
2543 |
|
|
2532 | 2544 |
// get rid of revision if access number has |
2533 | 2545 |
docId = MetaCatUtil.getDocIdFromString(accessionNumber); |
2534 | 2546 |
try |
... | ... | |
2539 | 2551 |
pstmt = conn.prepareStatement( |
2540 | 2552 |
"SELECT " + fieldName + " FROM xml_documents " + |
2541 | 2553 |
"WHERE docid = ? "); |
2542 |
|
|
2554 |
|
|
2543 | 2555 |
pstmt.setString(1, docId); |
2544 | 2556 |
pstmt.execute(); |
2545 | 2557 |
rs = pstmt.getResultSet(); |
2546 | 2558 |
boolean hasRow = rs.next(); |
2547 | 2559 |
int perm = 0; |
2548 |
if ( hasRow )
|
|
2560 |
if ( hasRow ) |
|
2549 | 2561 |
{ |
2550 | 2562 |
fieldValue = rs.getString(1); |
2551 | 2563 |
} |
... | ... | |
2566 | 2578 |
{ |
2567 | 2579 |
rs.close(); |
2568 | 2580 |
pstmt.close(); |
2569 |
|
|
2581 |
|
|
2570 | 2582 |
} |
2571 | 2583 |
finally |
2572 | 2584 |
{ |
... | ... | |
2575 | 2587 |
} |
2576 | 2588 |
return fieldValue; |
2577 | 2589 |
}//getFieldValueForDoc |
2578 |
|
|
2590 |
|
|
2579 | 2591 |
/* |
2580 | 2592 |
* A method to output setAccess action result |
2581 | 2593 |
*/ |
2582 |
private void outputResponse(Vector successList,
|
|
2594 |
private void outputResponse(Vector successList, |
|
2583 | 2595 |
Vector errorList, |
2584 | 2596 |
PrintWriter out) |
2585 | 2597 |
{ |
... | ... | |
2609 | 2621 |
error = true; |
2610 | 2622 |
}//for |
2611 | 2623 |
}//if |
2612 |
|
|
2624 |
|
|
2613 | 2625 |
// if no error and no success info, send a error that nothing happened |
2614 | 2626 |
if( !error && !success) |
2615 | 2627 |
{ |
... | ... | |
2617 | 2629 |
out.println("Nothing happend for setaccess action"); |
2618 | 2630 |
out.println(ERRORCLOSE); |
2619 | 2631 |
} |
2620 |
|
|
2632 |
|
|
2621 | 2633 |
}//outputResponse |
2622 | 2634 |
} |
build.xml | ||
---|---|---|
48 | 48 |
<property name="dbDriver" value="org.postgresql.Driver"/> |
49 | 49 |
<property name="dbAdapter" |
50 | 50 |
value="edu.ucsb.nceas.dbadapter.PostgresqlAdapter"/> |
51 |
<property name="jdbc" value="/usr/share/pgsql/jdbc7.1-1.2.jar" />
|
|
51 |
<property name="jdbc" value="lib/jdbc7.1-1.2.jar" />
|
|
52 | 52 |
</target> |
53 | 53 |
|
54 | 54 |
<target name="config" depends="postgresql"> |
... | ... | |
57 | 57 |
|
58 | 58 |
<!-- Customize these properties for your system --> |
59 | 59 |
<property name="tomcat" value="/usr/local/devtools/jakarta-tomcat" /> |
60 |
<property name="webapps" value="/usr/local/devtools/jakarta-tomcat/webapps" />
|
|
61 |
<property name="context" value="tao" />
|
|
62 |
<property name="user" value="tao"/>
|
|
60 |
<property name="webapps" value="/opt/tomcat/webapps" />
|
|
61 |
<property name="context" value="metacat" />
|
|
62 |
<property name="user" value="berkley"/>
|
|
63 | 63 |
<property name="password" value=""/> |
64 |
<property name="server" value="pine.nceas.ucsb.edu:8443"/> |
|
65 |
<property name="systemidserver" value="http://pine.nceas.ucsb.edu:8080" /> |
|
66 |
<property name="datafilepath" value="/usr/local/devtools/jakarta-tomcat/data/tao/data" /> |
|
67 |
<property name="inlinedatafilepath" value="/usr/local/devtools/jakarta-tomcat/data/tao/inlinedata" /> |
|
68 |
<property name="debuglevel" value="35" /> |
|
64 |
|
|
65 |
<property name="server" value="trestles.nceas.ucsb.edu:8080"/> |
|
66 |
<property name="systemidserver" value="http://trestles.nceas.ucsb.edu:8080" /> |
|
67 |
<property name="datafilepath" value="/opt/data" /> |
|
68 |
<property name="inlinedatafilepath" value="/opt/data" /> |
|
69 |
<property name="debuglevel" value="10" /> |
|
70 |
|
|
69 | 71 |
<property name="forcereplicationwaitingtime" value="30000"/> |
70 | 72 |
<property name="cvsroot" |
71 |
value=":ext:tao@cvs.ecoinformatics.org:/cvs" />
|
|
73 |
value=":ext:berkley@cvs.ecoinformatics.org:/cvs" />
|
|
72 | 74 |
<property name="web-base-url" |
73 | 75 |
value="http://knb.ecoinformatics.org"/> |
74 | 76 |
<property name="default-style" value="knb" /> |
... | ... | |
78 | 80 |
<!-- Make sure these paths match the location of the jar files |
79 | 81 |
on your system, the defaults should usually work --> |
80 | 82 |
<property name="jsdk" |
81 |
value="${tomcat}/lib/common/servlet.jar" />
|
|
83 |
value="${tomcat}/common/lib/servlet.jar" />
|
|
82 | 84 |
<property name="xmlp" |
83 | 85 |
value="lib/xercesImpl.jar" /> |
84 | 86 |
<property name="srb" |
... | ... | |
181 | 183 |
<property name="ver.src" value="${ver.dir}/src"/> |
182 | 184 |
|
183 | 185 |
<property name="package.home" value="edu/ucsb/nceas/metacat" /> |
184 |
|
|
185 | 186 |
</target> |
186 | 187 |
|
187 | 188 |
<target name="prepare" depends="init"> |
... | ... | |
304 | 305 |
password="${password}" |
305 | 306 |
src="${build.src}/loaddtdschema.sql" /> |
306 | 307 |
</target> |
307 |
|
|
308 |
|
|
308 | 309 |
<target name="schemasql" depends="prepare"> |
309 | 310 |
<echo/> |
310 | 311 |
<echo>Registering the DTDs with the new Metacat instance...</echo> |
... | ... | |
561 | 562 |
<outputproperty name="indent" value="yes"/> |
562 | 563 |
</xslt> |
563 | 564 |
</target> |
564 |
|
|
565 |
|
|
565 | 566 |
</project> |
Also available in: Unified diff
changes to make session management between monarch and metacat work.