source: other-projects/trunk/greenstone3-extension/mat/src/java/org/greenstone/gsdl3_extension/mat/servlet/MetadataStats.java@ 17365

Last change on this file since 17365 was 17365, checked in by cc108, 16 years ago

Updating Mat Source Code

File size: 22.9 KB
Line 
1package org.greenstone.gsdl3_extension.mat.servlet;
2
3
4import org.w3c.dom.*;
5import javax.xml.parsers.*;
6import javax.xml.transform.*;
7import javax.xml.transform.dom.*;
8import javax.xml.transform.stream.*;
9
10
11import java.io.BufferedWriter;
12import java.io.File;
13import java.io.FileOutputStream;
14import java.io.OutputStreamWriter;
15import java.io.PrintWriter;
16import java.io.Writer;
17
18import java.util.ArrayList;
19import java.util.Collection;
20import java.util.HashMap;
21import java.util.Iterator;
22import java.util.Set;
23import java.util.StringTokenizer;
24
25import org.greenstone.gsdl3.core.MessageRouter;
26import org.greenstone.gsdl3.util.DBInfo;
27import org.greenstone.gsdl3.util.GDBMWrapper;
28import org.greenstone.gsdl3.util.GSFile;
29import org.greenstone.gsdl3.util.GSXML;
30import org.greenstone.gsdl3.util.GlobalProperties;
31import org.greenstone.gsdl3.util.XMLConverter;
32
33import org.w3c.dom.Document;
34import org.w3c.dom.Element;
35import org.w3c.dom.NamedNodeMap;
36import org.w3c.dom.Node;
37import org.w3c.dom.NodeList;
38
39
40public class MetadataStats {
41
42 private Document doc=null;
43 private MessageRouter mr = null;
44 private XMLConverter converter=null;
45 private GDBMWrapper gdbm_src = null;
46 private GlobalProperties globalProperty = null;
47 private String site_name = "localsite";
48 private String node_id = "browselist";
49 private String DLS_SET = "dls";
50 private String DC_SET = "dublin";
51 private String OAI_URL = "";
52 private boolean status = false;
53 private String oai_Prefix ="";
54 private PrintWriter pw;
55 public String StatsDirectory;
56 public String HTMLDirectory;
57 // servlet
58 String destination = "";
59 //final String destination = "/research/cc108/greenstone3/web/mat/";
60 private int TotalDoc = 0;
61 //private int TotalElement = 0;
62 String linkIdentifier ="";
63 private HashMap MDS_list = new HashMap();
64
65 private String collection = null;
66 public ArrayList metadataNameList = new ArrayList();
67 //public String myNewDir;
68 private String collection_Name = null;
69
70
71 MetadataElement me;
72 /*
73 The constructor connects to the database and retrieve
74 information for the collection
75 */
76
77 private static boolean deleteDir(File dir) {
78 if (dir.isDirectory()) {
79 String[] children = dir.list();
80 for (int i=0; i<children.length; i++) {
81 boolean success = deleteDir(new File(dir, children[i]));
82 if (!success) {
83 return false;
84 }
85 }
86 }
87
88 return dir.delete();
89 }
90
91 public MetadataStats(String site_home, String collection,String url, PrintWriter out, String oaiPrefix){
92 OAI_URL = url;
93 collection_Name = collection;
94 oai_Prefix = oaiPrefix;
95 pw = out;
96
97 destination = globalProperty.getGSDL3Home()+"/Collection_Analysis/";
98 HTMLDirectory = destination+collection+"/";
99 System.out.println(HTMLDirectory + " HTML DIRECTORY");
100 StatsDirectory =HTMLDirectory+"metadataStats/";
101 System.out.println(StatsDirectory+ " Stats Directory ");
102
103 if(new File(StatsDirectory).exists()){
104 deleteDir(new File(StatsDirectory));
105 }
106 new File(StatsDirectory).mkdirs();
107 //String gdbm = GSFile.GDBMDatabaseFile(site_home,collection,collection);
108 //GSFile.GDBMDatabaseFile(arg0, arg1, arg2)
109 //String gdbm = GSFile.GDBMDatabaseFile(site_home, collection, collection);
110 String gdbm = GSFile.collectionDatabaseFile(site_home,collection,collection,"gdbm");
111 //out.print("<p>gdbm =" + gdbm + "</p>");
112 mr = new MessageRouter();
113 mr.setSiteName(this.site_name);
114 mr.configure();
115
116 this.collection = collection;
117 this.gdbm_src = new GDBMWrapper();
118 this.converter = new XMLConverter();
119 this.doc = this.converter.newDOM();
120 Setup(out, gdbm);
121 }
122
123 public void getAvailableMetadataSets(String SetName,HashMap UsedMap, String SetAbbr){
124
125 File metadata_directory = new File("/research/cc108/greenstone3/gli/metadata");
126 //File metadata_directory = new File("/greenstone3/gli/metadata");
127 //File metadata_directory = new File("C://Program Files//Greenstone3//gli//metadata");
128
129 if (metadata_directory.exists()) {
130 // Load just those .mds files in this directory, and return them
131 File[] directory_files = metadata_directory.listFiles();
132
133 for (int i = 0; i < directory_files.length; i++) {
134 File child_file = directory_files[i];
135
136 if (!child_file.isDirectory() && child_file.getName().endsWith("mds")) {
137 String fileName = child_file.getName();
138
139 /////////////////////////
140 //LOADING DLS CORE
141 //---if(fileName.equals(SetName)&& fileName.equals("dls.mds") && DLS_STATUS){
142 if(!MDS_list.containsKey(SetName)&& fileName.equals(SetName+".mds")){
143
144 MetadataSet ms = new MetadataSet();
145 ms.setName(SetName);
146 ms.setAbb(SetAbbr);
147
148 converter.newDOM();
149 Document d = converter.getDOM(child_file);
150
151 NodeList e = d.getElementsByTagName("Element");
152
153 int length = e.getLength();
154
155 for(int y = 0; y<length; y++){
156 Node temp = e.item(y);
157 NamedNodeMap mmp = temp.getAttributes();
158
159 if(!mmp.item(0).getNodeValue().equals("dc.Description")){
160 MetadataElement me = new MetadataElement();
161 //me.setMetadataName((SetAbbr+"."+mmp.item(0).getNodeValue().toLowerCase()));
162 me.setMetadataName((SetAbbr+"."+mmp.item(0).getNodeValue()));
163 //System.out.println(me.getMetadataName());
164 //.child_file............child_file
165 if(!metadataNameList.contains(me.getMetadataName())){
166 metadataNameList.add(me.getMetadataName());
167 ms.addIndex(me.getMetadataName());
168 }
169 UsedMap.put(me.getMetadataName(),me);
170 }
171 }
172 //System.out.println(ms.getName()+"loaded");
173 MDS_list.put(ms.getName(), ms);
174 //pw.write("load metadata set"+ms.getName());
175 //pw.flush();
176 //System.gc();
177 }// DLS FINISH
178 }
179 }
180 }
181 }
182
183 // doc_list is the list of document ids
184 //MetadataElement represents which metadata element we want to explore
185 private void parseMetadata(ArrayList doc_list, String MetadataElement){
186
187 //System.out.println("parse metadata starts");
188 int counter = 0;
189 //int x = 0;
190 int docSize = doc_list.size();
191
192 pw.write("<!-- prepare request -->");
193 while(true){
194
195 Node message = this.doc.createElement(GSXML.MESSAGE_ELEM);
196
197 Node request = GSXML.createBasicRequest(
198 this.doc, GSXML.REQUEST_TYPE_PROCESS,collection+"/DocumentMetadataRetrieve","en", "");
199
200 Node param_list = this.doc.createElement(
201 GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
202
203 param_list.appendChild(GSXML.createParameter(
204 this.doc, "metadata", MetadataElement));
205
206 Node documentNode_list = this.doc.createElement(
207 GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
208
209 if(docSize>=500){
210 docSize = docSize - 500;
211 for(int i = 0; i<500; i++){
212 Element documentNode = this.doc.createElement(GSXML.DOC_NODE_ELEM);
213 documentNode.setAttribute("nodeID",(String)doc_list.get(counter));
214 documentNode_list.appendChild(documentNode);
215 counter++;
216 }
217 request.appendChild(param_list);
218 request.appendChild(documentNode_list);
219 message.appendChild(request);
220 //System.out.println(this.converter.getPrettyString(message));
221 //pw.write("send request");
222 //pw.flush();
223 Node response = mr.process(message);
224 //pw.write("receive request");
225 //pw.flush();
226 //System.out.println(this.converter.getPrettyString(response));
227
228 getAttributes(response);
229
230 response = null;
231 request = null;
232 param_list = null;
233 documentNode_list = null;
234 //System.gc();
235 }
236
237 else if(docSize<500){
238 for(int i = 0; i<docSize; i++){
239 Element documentNode = this.doc.createElement(GSXML.DOC_NODE_ELEM);
240 documentNode.setAttribute("nodeID",(String)doc_list.get(counter));
241 documentNode_list.appendChild(documentNode);
242 counter++;
243 }
244 request.appendChild(param_list);
245 request.appendChild(documentNode_list);
246 message.appendChild(request);
247
248 //pw.write("send request");
249 Node response = mr.process(message);
250 //pw.write("receive request\n");
251 //pw.write(this.converter.getPrettyString(response));
252 //System.out.println(this.converter.getPrettyString(response));
253 //System.out.println(this.converter.getPrettyString(response));
254 getAttributes(response);
255 response = null;
256 request = null;
257 param_list = null;
258 documentNode_list = null;
259 //System.gc();
260 break;
261 }
262 }
263 }
264
265 public boolean getStatus(){
266 return this.status;
267 }
268
269
270 private void Setup(PrintWriter out, String gdbm){
271
272 //out.println("<p>gdbm_src = " + gdbm_src + "</p>");
273 //out.println("<p>GDBMWrapper.READER = " + GDBMWrapper.READER + "</p>");
274 //out.println("<p>GDBM = " + gdbm + "</p>");
275 //gdbm_src
276 //gdbm_src.
277
278 //String updateMsg= constructUpdateMessgae();
279 //mr.process(updateMsg);
280
281 if (!this.gdbm_src.openDatabase(gdbm, GDBMWrapper.READ)) {
282 out.println("Could not open GDBM database!");
283
284 }
285
286 else{
287 /*
288 DBInfo info = this.gdbm_src.getInfo(node_id);
289
290 if (info == null) {
291 out.println("cannot locate the list");
292 }
293 else{
294 String contains = info.getInfo("contains");
295 if (contains.equals("")) {
296 out.println("the db does not contain any info");
297 }
298
299 ArrayList children = new ArrayList();
300 StringTokenizer st = new StringTokenizer(contains, ";");
301
302 while (st.hasMoreTokens()) {
303 String child_id = st.nextToken().replaceAll("\"", node_id);
304 children.add(child_id);
305 }
306 */
307 String info = this.gdbm_src.getValue("browselist");
308
309 if (info == null) {
310 System.out.println("cannot locate the list");
311 }
312 else{
313 if (info == null) {
314 System.out.println("the db does not contain any info");
315 }
316
317 ArrayList children = new ArrayList();
318 StringTokenizer st = new StringTokenizer(info, ";");
319
320 while (st.hasMoreTokens()) {
321 String part = st.nextToken(";");
322
323 if(part.contains("<contains>")){
324 part = part.replace("<contains>", "");
325 }
326 else if(part.contains("<thistype>")){
327 int location = part.indexOf("<thistype>");
328 part = part.substring(0,location-1);
329 }
330 children.add(part);
331 }
332
333 gdbm_src.closeDatabase();
334 parseMetadata(children,"all");
335 TotalDoc = children.size();
336 System.out.println("Total Doc:"+TotalDoc);
337 status = true;
338 //Display();
339 }
340 }
341 }
342 /*
343 private void Display(){
344
345 Collection c = MDS_list.values();
346 Iterator ic = c.iterator();
347 while(ic.hasNext()){
348 MetadataSet ms = (MetadataSet)ic.next();
349 String name = ms.getName();
350 String abb = ms.getAbb();
351 System.out.println(name+" "+abb);
352 ArrayList al = ms.getIndexsList();
353 System.out.print(al.size());
354 for(int i = 0; i<al.size(); i++){
355 System.out.print(al.get(i)+" ");
356 }
357 System.out.println("\n");
358 }
359 }
360 */
361
362 public void getAttributes(Node f){
363
364 HashMap UsedMap = new HashMap();
365 Element e = (Element) f;
366 NodeList metadataNode = e.getElementsByTagName("metadata");
367 int length = metadataNode.getLength();
368
369 for (int j = 0; j < length; j++){
370 Node aNode = metadataNode.item(j);
371 NamedNodeMap NodeMap = aNode.getAttributes();
372 Node AttributeNode = NodeMap.item(0);
373 String att_name = AttributeNode.getNodeValue();
374
375 if(att_name.indexOf("dls.")!=-1){getAvailableMetadataSets(DLS_SET,UsedMap,"dls");}
376 else if(att_name.indexOf("dc.")!=-1){getAvailableMetadataSets(DC_SET,UsedMap,"dc");}
377
378 }
379 //UsedMap = combineList(UsedMap);
380 adjust(UsedMap,e);
381 UsedMap = null;
382 e = null;
383 System.gc();
384 }
385
386
387 /*
388 * MATCH UP THE ELEMENTS FROM BOTH DOCUMENTS AND PRE-DEFINED METADATA SET
389 * MOVE THE ELEMENT FROM NOUSEDMAP TO USEDMAP IF THE ELEMENT HAS NOT BEEN DISCOVERED BEFORE
390 * INCREASE THE COUNTER ONCE THE ELEMENT IS RECONGNIZED
391 * CALCULATE THE TIMES OF ELEMENTS USED AND STORE IT INTO THE LIST
392 */
393
394 private void adjust(HashMap UsedMap, Element response){
395
396 pw.write("<!-- start parsing -->");
397 pw.flush();
398 //try{
399 String DocID;;
400 NodeList nList = response.getElementsByTagName("documentNode");
401 int length = nList.getLength();
402 for (int j = 0; j <length; j++){
403
404 Node aNode = nList.item(j);
405 NamedNodeMap NodeMap = aNode.getAttributes();
406 Node AttributeNode = NodeMap.item(0);
407 String att_name = AttributeNode.getNodeValue();
408 DocID = att_name;
409
410 NodeList childList = aNode.getChildNodes();
411 Node nNode = childList.item(0);
412 NodeList grandChildList = nNode.getChildNodes();
413
414 int length1 = grandChildList.getLength();
415
416 for(int e = 0; e<length1 ; e++){
417
418 Node xNode = grandChildList.item(e);
419 NamedNodeMap xNodeMap = xNode.getAttributes();
420 Node xAttributeNode = xNodeMap.item(0);
421 String xatt_name = xAttributeNode.getNodeValue();
422
423 NodeList cList = xNode.getChildNodes();
424
425 String ActValue = cList.item(0).getNodeValue();
426
427 //////////////
428 char firstchart = xatt_name.charAt(0);
429 //if(Character.isLetter(firstchart)
430 ////////////////
431 pw.write("<!--"+xatt_name+"-->");
432 pw.flush();
433 //System.out.println(xatt_name+" "+UsedMap.containsKey(xatt_name));
434
435 if(xatt_name.indexOf("dc.")!=-1){
436 int position = xatt_name.indexOf(".");
437 char x = xatt_name.charAt(position+1);
438 x = Character.toUpperCase(x);
439 xatt_name = "dc."+x+xatt_name.substring(position+2);
440 }
441
442 if(xatt_name.indexOf('^')!=-1){
443 xatt_name = xatt_name.replace('^', '.');
444 }
445
446 if(UsedMap.containsKey(xatt_name)){
447 //pw.write("add element to list");
448 MetadataElement met = (MetadataElement) UsedMap.get(xatt_name);
449 met.IncreaseFrequency();
450 HashMap metadataMap = met.getMetadataList();
451
452 if(metadataMap.containsKey(DocID)){
453 //pw.write("element contains ID");
454 DocumentInfo dc = (DocumentInfo)metadataMap.get(DocID);
455 dc.IncreaseFrequence();
456 dc.addActualValue(ActValue);
457 metadataMap.put(DocID, dc);
458 }
459 else{
460 //pw.write("element DOES NOT contain ID");
461 DocumentInfo dc = new DocumentInfo();
462 dc.IncreaseFrequence();
463 dc.setDocumentID(DocID);
464 dc.addActualValue(ActValue);
465 metadataMap.put(DocID, dc);
466 }
467
468 HashMap valueMap = met.getValueList();
469 if(valueMap.containsKey(ActValue)){
470 Integer f = (Integer)valueMap.get(ActValue);
471 int fx = f.intValue();
472 fx++;
473 valueMap.put(ActValue,new Integer(fx));
474 }
475 else{
476 valueMap.put(ActValue, new Integer(1));
477 }
478
479 }
480 //else if ((!UsedMap.containsKey(xatt_name)) && (xatt_name.indexOf(".")==-1) && (!xatt_name.equals("prettymd")) && (!xatt_name.equals("Description")) && (Character.isLetter(firstchart)) && (xatt_name.indexOf("-")==-1)){
481 else if( (!UsedMap.containsKey(xatt_name)) && xatt_name.equals("archivedir")){
482 //pw.write("NEW EX element");
483 String SetAbbr = "ex";
484 String SetName = "extracted";
485
486 MetadataSet ms = new MetadataSet();
487 ms.setName(SetName);
488 ms.setAbb(SetAbbr);
489
490 MetadataElement me = new MetadataElement();
491 me.setMetadataName(xatt_name);
492 me.IncreaseFrequency();
493 HashMap metadataMap = me.getMetadataList();
494
495 if(metadataMap.containsKey(DocID)){
496 DocumentInfo dc = (DocumentInfo)metadataMap.get(DocID);
497 dc.IncreaseFrequence();
498 dc.addActualValue(ActValue);
499 metadataMap.put(DocID, dc);
500 }
501 else{
502 DocumentInfo dc = new DocumentInfo();
503 dc.IncreaseFrequence();
504 dc.setDocumentID(DocID);
505 dc.addActualValue(ActValue);
506 metadataMap.put(DocID, dc);
507 }
508
509 HashMap valueMap = me.getValueList();
510 if(valueMap.containsKey(ActValue)){
511 Integer f = (Integer)valueMap.get(ActValue);
512 int fx = f.intValue();
513 fx++;
514 valueMap.put(ActValue,new Integer(fx));
515 }
516 else{
517 //System.out.println(ActValue+" doesn't already exist");
518 valueMap.put(ActValue, new Integer(1));
519 }
520 if(!metadataNameList.contains(me.getMetadataName())){
521 metadataNameList.add(me.getMetadataName());
522 ms.addIndex(me.getMetadataName());
523 }
524 //pw.write("adding element");
525 UsedMap.put(me.getMetadataName(), me);
526 if(!MDS_list.containsKey(ms.getName())){MDS_list.put(ms.getName(), ms);}
527 else{
528 MetadataSet msx = (MetadataSet)MDS_list.get(ms.getName());
529 msx.addIndex(me.getMetadataName());
530 MDS_list.put(ms.getName(), msx);
531 }
532 }
533
534
535 else if((!UsedMap.containsKey(xatt_name)) && xatt_name.indexOf(".")!=-1 && xatt_name.indexOf("dc.")==-1){
536 //pw.write("NEW EX element");
537 int dotLocation = xatt_name.indexOf(".");
538
539 String SetAbbr = new String();
540 String SetName = new String();
541 if(dotLocation==0){
542 SetAbbr = "Other";
543 SetName = "Other";
544 }
545 else{
546 SetAbbr = xatt_name.substring(0,dotLocation);
547 SetName = SetAbbr;
548 }
549 MetadataSet ms = new MetadataSet();
550 ms.setName(SetName);
551 ms.setAbb(SetAbbr);
552
553 MetadataElement me = new MetadataElement();
554 me.setMetadataName(xatt_name);
555 me.IncreaseFrequency();
556 HashMap metadataMap = me.getMetadataList();
557
558 if(metadataMap.containsKey(DocID)){
559 DocumentInfo dc = (DocumentInfo)metadataMap.get(DocID);
560 dc.IncreaseFrequence();
561 dc.addActualValue(ActValue);
562 metadataMap.put(DocID, dc);
563 }
564 else{
565 DocumentInfo dc = new DocumentInfo();
566 dc.IncreaseFrequence();
567 dc.setDocumentID(DocID);
568 dc.addActualValue(ActValue);
569 metadataMap.put(DocID, dc);
570 }
571
572 HashMap valueMap = me.getValueList();
573 if(valueMap.containsKey(ActValue)){
574 Integer f = (Integer)valueMap.get(ActValue);
575 int fx = f.intValue();
576 fx++;
577 valueMap.put(ActValue,new Integer(fx));
578 }
579 else{
580 //System.out.println(ActValue+" doesn't already exist");
581 valueMap.put(ActValue, new Integer(1));
582 }
583 if(!metadataNameList.contains(me.getMetadataName())){
584 metadataNameList.add(me.getMetadataName());
585 ms.addIndex(me.getMetadataName());
586 }
587 //pw.write("adding element");
588 UsedMap.put(me.getMetadataName(), me);
589 if(!MDS_list.containsKey(ms.getName())){MDS_list.put(ms.getName(), ms);}
590 else{
591 MetadataSet msx = (MetadataSet)MDS_list.get(ms.getName());
592 msx.addIndex(me.getMetadataName());
593 MDS_list.put(ms.getName(), msx);
594 }
595 }
596
597 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
598 else if ((!UsedMap.containsKey(xatt_name)) && (xatt_name.indexOf("dc.")==0) && xatt_name.indexOf("dc.Description")!=0){
599
600 //pw.write("QUALIFIED DC element");
601
602 String SetName = "dublin";
603 xatt_name = xatt_name.replace('^', '.');
604
605 MetadataElement me = new MetadataElement();
606 me.setMetadataName(xatt_name);
607 me.IncreaseFrequency();
608 HashMap metadataMap = me.getMetadataList();
609
610 DocumentInfo dc = new DocumentInfo();
611 dc.IncreaseFrequence();
612 dc.setDocumentID(DocID);
613 dc.addActualValue(ActValue);
614 metadataMap.put(DocID, dc);
615
616 HashMap valueMap = me.getValueList();
617 valueMap.put(ActValue, new Integer(1));
618
619 if(!metadataNameList.contains(me.getMetadataName())){
620 metadataNameList.add(me.getMetadataName());
621 }
622
623 //pw.write("adding element");
624 UsedMap.put(me.getMetadataName(), me);
625
626 MetadataSet msx = (MetadataSet)MDS_list.get(SetName);
627 msx.addIndex(me.getMetadataName());
628 MDS_list.put(SetName, msx);
629 }
630 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
631 }// element
632
633 }//doc id
634 ////////////////////
635 //write file
636 int counter = 0;
637 //System.out.println("write");
638 //pw.write("write files" + UsedMap.size()+ metadataNameList.size() );
639 //pw.flush();
640
641 Set s = UsedMap.keySet();
642 Iterator is = s.iterator();
643 //System.out.println(UsedMap.size());
644 while(is.hasNext()){
645
646 String fileName = (String)is.next();
647 MetadataElement me = (MetadataElement)UsedMap.get(fileName);
648 HashMap hp = me.getMetadataList();
649 Collection ks = hp.values();
650 Iterator iks = ks.iterator();
651
652 try{
653
654 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
655 DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
656 Document doc = docBuilder.newDocument();
657 Element root = doc.createElement("root");
658 boolean fileExist = (new File(StatsDirectory+"/"+fileName+".xml")).exists();
659
660 if(!fileExist){
661 root = doc.createElement("root");
662 }
663 else{
664 doc = docBuilder.parse (new File(StatsDirectory+"/"+fileName+".xml"));
665 root = doc.getDocumentElement();
666 }
667
668 while(iks.hasNext()){
669
670 DocumentInfo dc = (DocumentInfo)iks.next();
671 Element docID = doc.createElement("Document");
672 docID.setAttribute("id", dc.getDocumentID());
673 //pw.write("doc id"+dc.getDocumentID());
674
675 Element freq = doc.createElement("Frequency");
676 Text text = doc.createTextNode(dc.getFrequence()+"");
677 freq.appendChild(text);
678 docID.appendChild(freq);
679
680 Element actValue = doc.createElement("ActualValue");
681 ArrayList alist = dc.getActualValue();
682 if(alist.size()==0){
683 text = doc.createTextNode(" ");
684 actValue = doc.createElement("ActualValue");
685 actValue.appendChild(text);
686 docID.appendChild(actValue);
687 }
688
689 for(int i = 0; i<alist.size(); i++){
690 actValue = doc.createElement("ActualValue");
691 String utf8String = new String(((String)alist.get(i)).getBytes(),"UTF-8");
692 Text text1 = doc.createTextNode(utf8String);
693 actValue.appendChild(text1);
694 docID.appendChild(actValue);
695 }
696
697 root.appendChild(docID);
698 docID = null;
699 counter++;
700 }
701
702 TransformerFactory tf=TransformerFactory.newInstance();
703 Transformer transformer=tf.newTransformer();
704 DOMSource source=new DOMSource(root);
705 transformer.setOutputProperty(OutputKeys.INDENT,"yes");
706
707 Writer pwx= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(StatsDirectory+"/"+fileName+".xml"),"UTF-8"));
708 StreamResult result= new StreamResult(pwx);
709 transformer.transform(source,result);
710 pwx.close();
711
712 root = null;
713 docBuilderFactory = null;
714 docBuilder = null;
715 doc = null;
716
717 }catch (Exception e) {
718 //System.out.println(e);
719 e.printStackTrace(pw);
720 }
721 }
722 }
723
724 public int getDocNum(){
725 return TotalDoc;
726 }
727
728 public HashMap getMetadataSetMap(){
729 MDS_list.remove("extracted");
730 return (HashMap)MDS_list.clone();
731 }
732
733 public String getCollectionName(){
734 return collection_Name;
735 }
736
737 public void setOAIURL(String url){
738 OAI_URL = url;
739 }
740
741 public String getOAIURL(){
742 return OAI_URL;
743 }
744
745 public String getOaiPrefix(){
746 return oai_Prefix;
747 }
748
749 public ArrayList getMetadataNameList(){
750 return (ArrayList)metadataNameList.clone();
751 }
752 private String constructUpdateMessgae (){
753 String message = "<message><request type='system' to=''><system type='configure' subset=''/></request></message>";
754 return message;
755 }
756 public String getIdendifier(){
757 return linkIdentifier;
758 }
759}
Note: See TracBrowser for help on using the repository browser.