annotate src/de/mpiwg/itgroup/eSciDoc/Tools/DRI/CheckAndAddDRIs.java @ 11:ecd66e70cb65

Tools for adding and changing DRIs in index.meta
author dwinter
date Thu, 26 Jul 2012 11:24:03 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
1
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
2 package de.mpiwg.itgroup.eSciDoc.Tools.DRI;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
3
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
4 import java.awt.datatransfer.StringSelection;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
5 import java.io.BufferedReader;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
6 import java.io.BufferedWriter;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
7 import java.io.DataInputStream;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
8 import java.io.File;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
9 import java.io.FileInputStream;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
10 import java.io.FileNotFoundException;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
11 import java.io.FileOutputStream;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
12 import java.io.FileWriter;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
13 import java.io.IOException;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
14 import java.io.InputStreamReader;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
15 import java.io.OutputStreamWriter;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
16 import java.io.Writer;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
17 import java.util.HashMap;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
18
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
19 import org.jdom.Document;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
20 import org.jdom.Element;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
21 import org.jdom.JDOMException;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
22 import org.jdom.input.SAXBuilder;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
23 import org.jdom.output.XMLOutputter;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
24 import org.jdom.xpath.XPath;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
25
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
26 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
27 import de.mpiwg.itgroup.eSciDoc.utils.EScidocNameSpaceContext;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
28
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
29 /**
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
30 * This package loads a list of filenames and the dris belonging to them as tab delimited list.
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
31 * It checks if the DRI are already in the index.meta, if not there are added, if there is wrong ID
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
32 * this is eithrer corrected or an warning message is generated
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
33 * @author dwinter
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
34 *
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
35 */
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
36 public class CheckAndAddDRIs {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
37
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
38 public class DRI{
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
39
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
40 DRI(Document doc, String driString, Element driElement, boolean hasNameSpace){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
41 this.doc = doc;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
42 this.driString=driString;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
43 this.driElement=driElement;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
44 this.hasNameSpace=hasNameSpace;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
45
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
46
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
47 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
48 Document doc;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
49 String driString;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
50 Element driElement;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
51 boolean hasNameSpace;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
52 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
53
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
54 HashMap<String,String> fileToDri;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
55 String driType;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
56
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
57 public CheckAndAddDRIs(String fileName, String driType) throws IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
58
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
59 this.driType=driType;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
60
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
61 FileInputStream fstream = new FileInputStream(fileName);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
62
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
63 DataInputStream in = new DataInputStream(fstream);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
64 BufferedReader br = new BufferedReader(new InputStreamReader(in));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
65 String strLine;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
66
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
67
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
68 // lies alle files and dris
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
69 fileToDri = new HashMap<String, String>();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
70 while ((strLine = br.readLine()) != null) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
71 String[] splitted= strLine.split(("\t"));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
72 fileToDri.put(splitted[0], splitted[1]);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
73 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
74 //Close the input stream
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
75 in.close();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
76
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
77 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
78
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
79
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
80 /**
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
81 * Checks if the DRIs are in the index.meta
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
82 */
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
83 private void doDRI(String mode) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
84 for (String key: fileToDri.keySet()){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
85 int result;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
86 DRI dri;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
87 try {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
88 dri = getDRI(key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
89 result = checkDRI(dri,fileToDri.get(key));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
90 } catch (JDOMException e) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
91 System.err.println("jdomExecption:"+key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
92 continue;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
93
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
94 } catch (IOException e) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
95 System.err.println("IOError:"+key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
96 e.printStackTrace();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
97 continue;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
98
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
99 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
100 if (result==0){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
101 System.out.println(String.format("%s\t%s\tOK", key,fileToDri.get(key)));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
102 } else if (result==1){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
103 if (mode.equals("check")){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
104 System.out.println(String.format("%s\t%s\tno DRI", key,fileToDri.get(key)));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
105 } else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
106 try {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
107 System.out.println(String.format("%s\t%s\tadding DRI", key,fileToDri.get(key)));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
108 add(key,dri,fileToDri.get(key));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
109 } catch (JDOMException e) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
110 System.err.println("jdomExecption:"+key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
111 continue;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
112 } catch (IOException e) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
113
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
114 System.err.println("IOExecption:"+key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
115 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
116 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
117 } else if (result==2){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
118
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
119 if (mode.equals("modify")){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
120 try {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
121 modify(key,dri,fileToDri.get(key));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
122 } catch (IOException e) {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
123 System.err.println("IOExecption:"+key);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
124 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
125 } else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
126 System.out.println(String.format("%s\t%s\twrong DRI", key,fileToDri.get(key)));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
127 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
128 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
129
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
130 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
131
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
132
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
133
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
134
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
135 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
136 private void modify(String fileName, DRI dri, String driString) throws IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
137 dri.driElement.setText(driString);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
138 writeIndexMeta(fileName, dri);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
139
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
140 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
141
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
142
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
143 private void add(String fileName, DRI dri, String driString) throws JDOMException, IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
144 XPath xp;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
145 if (dri.hasNameSpace){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
146 xp = EScidocTools.getESciDocXpath("//mpiwg:meta");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
147 } else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
148 xp = EScidocTools.getESciDocXpath("//meta");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
149 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
150 Element meta = (Element)xp.selectSingleNode(dri.doc);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
151 if (meta==null){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
152 System.err.println("NO metatag in:"+fileName);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
153 return;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
154 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
155
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
156 Element el;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
157 if (dri.hasNameSpace){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
158 el = new Element("dri",EScidocNameSpaceContext.MPIWG);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
159 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
160 else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
161 el = new Element("dri");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
162 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
163
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
164 el.setAttribute("type",this.driType);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
165 el.addContent(driString);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
166 meta.addContent(el);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
167
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
168 writeIndexMeta(fileName,dri);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
169 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
170
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
171
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
172 private void writeIndexMeta(String fileName, DRI dri) throws IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
173
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
174 File im = new File(fileName+"/index.meta");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
175 File old = new File(fileName+"/index.meta_old_DRI");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
176
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
177 if (im.renameTo(old)){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
178 XMLOutputter out = new XMLOutputter();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
179
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
180 String string = out.outputString(dri.doc);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
181 Writer out1 = new BufferedWriter(new OutputStreamWriter(
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
182 new FileOutputStream(fileName+"/index.meta"), "UTF-8"));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
183
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
184
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
185 out1.write(string);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
186 out1.close();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
187 } else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
188 System.err.println("cannot rename:"+fileName);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
189 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
190
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
191
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
192
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
193
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
194 // TODO Auto-generated method stub
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
195
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
196 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
197
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
198
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
199 private int checkDRI(DRI dri, String driString) throws JDOMException, IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
200
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
201
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
202 if(dri.driString==null){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
203 return 1;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
204 } else if (dri.driString.equals(driString)){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
205 return 0;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
206 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
207
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
208 return 2;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
209 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
210
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
211
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
212 private DRI getDRI(String filename) throws JDOMException, IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
213
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
214
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
215 Document doc = readIndexMeta(filename);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
216
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
217 XPath xpath = EScidocTools.getESciDocXpath("//meta/dri[@type=\""+driType+"\"]");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
218
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
219
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
220 Element res = (Element)xpath.selectSingleNode(doc);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
221
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
222 boolean hasNameSpace=false;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
223 //Try namespace
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
224 if (res == null){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
225 xpath = EScidocTools.getESciDocXpath("//mpiwg:meta/mpiwg:dri[@type=\""+driType+"\"]");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
226 res = (Element)xpath.selectSingleNode(doc);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
227
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
228 if (res==null)
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
229 return new DRI(doc,null,null,false);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
230 else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
231 hasNameSpace=true;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
232 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
233 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
234
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
235 String txt=res.getTextTrim();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
236
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
237
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
238
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
239 return new DRI(doc, txt, res, hasNameSpace);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
240 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
241
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
242
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
243 private Document readIndexMeta(String filename) throws JDOMException, IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
244 SAXBuilder builder = new SAXBuilder();
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
245 Document doc = builder.build(new File(filename+"/index.meta"));
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
246 return doc;
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
247 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
248
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
249
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
250 /**
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
251 * @param args
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
252 * @throws IOException
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
253 */
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
254 public static void main(String[] args) throws IOException {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
255 if (args.length <3){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
256 System.out.print("USAGE: command filename dri-type");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
257 System.exit(0);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
258 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
259
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
260 String command = args[0];
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
261 String fileName = args[1];
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
262 String driType = args[2];
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
263
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
264 final CheckAndAddDRIs ck = new CheckAndAddDRIs(fileName,driType);
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
265
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
266 if (command.equals("check")){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
267 System.out.println("only checking");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
268 ck.doDRI("check");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
269 } else if (command.equals("add")){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
270 System.out.println("only adding");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
271 ck.doDRI("add");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
272 } else if (command.equals("modify")){
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
273 System.out.println("adding and modify");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
274 ck.doDRI("modify");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
275 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
276 else {
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
277 System.out.println("Only the commands: check, add or modify are allowed");
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
278 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
279
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
280
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
281 }
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
282
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
283
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
284
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
285
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
286
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
287
ecd66e70cb65 Tools for adding and changing DRIs in index.meta
dwinter
parents:
diff changeset
288 }