source: gs3-extensions/mat/trunk/src/src/org/greenstone/mat/servlet/MetadataStats.java@ 25025

Last change on this file since 25025 was 25025, checked in by sjm84, 12 years ago

Fixing Mat to work with the new UserContext construct

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