31 |
31 |
|
32 |
32 |
import java.io.BufferedWriter;
|
33 |
33 |
import java.io.File;
|
|
34 |
import java.io.FileNotFoundException;
|
34 |
35 |
import java.io.FileOutputStream;
|
35 |
36 |
import java.io.IOException;
|
36 |
37 |
import java.io.OutputStreamWriter;
|
... | ... | |
61 |
62 |
import javax.xml.xpath.XPathExpressionException;
|
62 |
63 |
import javax.xml.xpath.XPathFactory;
|
63 |
64 |
|
|
65 |
import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
|
|
66 |
import org.odftoolkit.simple.SpreadsheetDocument;
|
|
67 |
import org.odftoolkit.simple.table.Row;
|
|
68 |
import org.odftoolkit.simple.table.Table;
|
64 |
69 |
import org.txm.importer.AddAttributeInXml;
|
65 |
70 |
import org.txm.importer.PersonalNamespaceContext;
|
|
71 |
import org.txm.libs.msoffice.ReadExcel;
|
|
72 |
import org.txm.libs.office.ReadODS;
|
66 |
73 |
import org.txm.utils.AsciiUtils;
|
67 |
74 |
import org.txm.utils.CsvReader;
|
68 |
75 |
import org.txm.utils.Pair;
|
... | ... | |
77 |
84 |
* The Class Metadatas.
|
78 |
85 |
*/
|
79 |
86 |
public class Metadatas extends LinkedHashMap<String , TextInjection> {
|
80 |
|
|
|
87 |
|
81 |
88 |
/** Load metadatas from a xml file $lt;metadatas> $lt;meta key="key1"> $lt;entry name="attr1" value="value1"/> $lt;entry name="attr1" value="value1"/> $lt;meta/> $lt;/metadatas>. */
|
82 |
89 |
File xmlfile;
|
83 |
|
|
|
90 |
|
84 |
91 |
/** The metadatas. */
|
85 |
92 |
ArrayList<Metadata> metadatas = new ArrayList<Metadata>();
|
86 |
|
|
|
93 |
|
87 |
94 |
/** The headers list. */
|
88 |
95 |
ArrayList<String> headersList = new ArrayList<String>();
|
89 |
|
|
|
96 |
|
90 |
97 |
/** The isinialize. */
|
91 |
98 |
boolean isinialize = false;
|
92 |
|
|
|
99 |
|
93 |
100 |
/**
|
94 |
101 |
* Checks if is initialized.
|
95 |
102 |
*
|
... | ... | |
99 |
106 |
{
|
100 |
107 |
return isinialize;
|
101 |
108 |
}
|
102 |
|
|
|
109 |
|
103 |
110 |
/** The ns context. */
|
104 |
111 |
NamespaceContext nsContext = new PersonalNamespaceContext();
|
105 |
|
|
|
112 |
|
106 |
113 |
/**
|
107 |
114 |
* Instantiates a new metadatas.
|
108 |
115 |
*
|
... | ... | |
114 |
121 |
if(!initialize())
|
115 |
122 |
System.out.println("Error: failed to load metadata from the file "+xmlfile);
|
116 |
123 |
}
|
|
124 |
|
|
125 |
/**
|
|
126 |
* Find a metadata file in a directory
|
|
127 |
*
|
|
128 |
* @param directory
|
|
129 |
* @return an input file, try in order : ods, xlsx, tsv and finally csv extension
|
|
130 |
*/
|
|
131 |
public static File findMetadataFile(File directory) {
|
|
132 |
File f = new File(directory, "metadata.ods");
|
|
133 |
if (f.exists()) return f;
|
|
134 |
|
|
135 |
f = new File(directory, "metadata.xlsx");
|
|
136 |
if (f.exists()) return f;
|
|
137 |
|
|
138 |
f = new File(directory, "metadata.tsv");
|
|
139 |
if (f.exists()) return f;
|
|
140 |
|
|
141 |
f = new File(directory, "metadata.csv");
|
|
142 |
if (f.exists()) return f;
|
|
143 |
|
|
144 |
return null;
|
|
145 |
}
|
117 |
146 |
|
118 |
147 |
/**
|
119 |
|
* Instantiates a new metadatas.
|
|
148 |
* Instantiates a new metadatas using an input file : ods, xlsx, tsv or csv.
|
120 |
149 |
*
|
121 |
|
* @param csvfile the csvfile
|
|
150 |
* @param inputFile the CSV, XSLS or ODS
|
122 |
151 |
* @param encoding the encoding
|
123 |
152 |
* @param separator the separator
|
124 |
153 |
* @param nbheaderline the nbheaderline
|
125 |
154 |
*/
|
126 |
|
public Metadatas(File csvfile, String encoding, String separator, String txtseparator, int nbheaderline)
|
|
155 |
public Metadatas(File inputFile, String encoding, String separator, String txtseparator, int nbheaderline)
|
127 |
156 |
{
|
128 |
|
File xmlfile = new File(csvfile.getParent(), csvfile.getName()+".xml");
|
|
157 |
File xmlfile = new File(inputFile.getParent(), inputFile.getName()+".xml");
|
129 |
158 |
//println "create xml file version of "+csvfile+" : "+xmlfile
|
130 |
159 |
try {
|
131 |
|
if(convertCsvToXml(csvfile, xmlfile, encoding, separator, txtseparator, nbheaderline))
|
132 |
|
{
|
133 |
|
this.xmlfile = xmlfile;
|
134 |
|
//println "xml file : "+xmlfile
|
135 |
|
if(!initialize())
|
136 |
|
System.out.println("Error: failed to load metadata from the file "+xmlfile);
|
|
160 |
if (inputFile.getName().endsWith(".ods")) {
|
|
161 |
if (convertODSToXml(inputFile, xmlfile)) {
|
|
162 |
this.xmlfile = xmlfile;
|
|
163 |
//println "xml file : "+xmlfile
|
|
164 |
|
|
165 |
}
|
|
166 |
} else if (inputFile.getName().endsWith(".xlsx")) {
|
|
167 |
if (convertXLSXToXml(inputFile, xmlfile)) {
|
|
168 |
this.xmlfile = xmlfile;
|
|
169 |
//println "xml file : "+xmlfile
|
|
170 |
|
|
171 |
}
|
|
172 |
} else if (inputFile.getName().endsWith(".tsv")) {
|
|
173 |
if (convertCsvToXml(inputFile, xmlfile, encoding, "\t", "", 0)) {
|
|
174 |
this.xmlfile = xmlfile;
|
|
175 |
//println "xml file : "+xmlfile
|
|
176 |
|
|
177 |
}
|
|
178 |
} else {
|
|
179 |
if (convertCsvToXml(inputFile, xmlfile, encoding, separator, txtseparator, nbheaderline)) {
|
|
180 |
this.xmlfile = xmlfile;
|
|
181 |
//println "xml file : "+xmlfile
|
|
182 |
|
|
183 |
}
|
137 |
184 |
}
|
|
185 |
|
|
186 |
if (!initialize()) {
|
|
187 |
System.out.println("Error: failed to load metadata from the file "+xmlfile);
|
|
188 |
}
|
138 |
189 |
} catch (Exception e) {
|
139 |
190 |
// TODO Auto-generated catch block
|
140 |
191 |
org.txm.utils.logger.Log.printStackTrace(e);
|
141 |
192 |
Log.severe(e.toString());
|
142 |
193 |
}
|
143 |
194 |
}
|
144 |
|
|
|
195 |
|
|
196 |
private boolean convertXLSXToXml(File inputFile, File xmlFile) throws Exception {
|
|
197 |
ArrayList<ArrayList<String>> data = ReadExcel.toTable(inputFile, "metadata");
|
|
198 |
System.out.println(data);
|
|
199 |
return data.size() > 0 && convertTableToXml(data, xmlFile);
|
|
200 |
}
|
|
201 |
|
|
202 |
private boolean convertTableToXml(ArrayList<ArrayList<String>> data, File xmlFile) throws Exception {
|
|
203 |
XMLOutputFactory factory = XMLOutputFactory.newInstance();
|
|
204 |
FileOutputStream output = new FileOutputStream(xmlFile);
|
|
205 |
XMLStreamWriter writer = factory.createXMLStreamWriter(output, "UTF-8");//create a new file
|
|
206 |
|
|
207 |
writer.writeStartDocument("UTF-8", "1.0");
|
|
208 |
writer.writeCharacters("\n");
|
|
209 |
writer.writeStartElement("enrichissement");
|
|
210 |
writer.writeCharacters("\n");
|
|
211 |
writer.writeStartElement("metadatas");
|
|
212 |
writer.writeCharacters("\n");
|
|
213 |
|
|
214 |
ArrayList<String> headers = data.get(0); // first line
|
|
215 |
|
|
216 |
for (int i = 1 ; i < headers.size() ; i++) {
|
|
217 |
if (headers.get(i).length() == 0) {
|
|
218 |
headers.set(i, "noname");
|
|
219 |
System.out.println("Warning: the "+(i+1)+"the column name is empty");
|
|
220 |
}
|
|
221 |
//if(!headers[i].equals("id"))// the first
|
|
222 |
//{
|
|
223 |
writer.writeStartElement("metadata");
|
|
224 |
writer.writeAttribute("id", AsciiUtils.buildId(headers.get(i)));
|
|
225 |
writer.writeAttribute("shortname", headers.get(i));
|
|
226 |
writer.writeAttribute("longname", headers.get(i));
|
|
227 |
writer.writeAttribute("type", "String");
|
|
228 |
writer.writeAttribute("colwidth", "100");
|
|
229 |
writer.writeAttribute("selection", "true");
|
|
230 |
writer.writeAttribute("partition", "true");
|
|
231 |
writer.writeAttribute("display", "true");
|
|
232 |
|
|
233 |
writer.writeEndElement();
|
|
234 |
writer.writeCharacters("\n");
|
|
235 |
//}
|
|
236 |
}
|
|
237 |
writer.writeEndElement(); //close metadatas
|
|
238 |
writer.writeCharacters("\n");
|
|
239 |
|
|
240 |
writer.writeStartElement("texts");
|
|
241 |
writer.writeCharacters("\n");
|
|
242 |
for (int i = 1 ; i < data.size() ; i++) { // the next lines
|
|
243 |
ArrayList<String> dataline = data.get(i);
|
|
244 |
|
|
245 |
writer.writeStartElement("text");
|
|
246 |
|
|
247 |
// write the id attribute
|
|
248 |
for (int j = 0 ; j < headers.size() ; j++) {
|
|
249 |
if (headers.get(j).equals("id")) {
|
|
250 |
writer.writeAttribute("id", dataline.get(j));
|
|
251 |
}
|
|
252 |
}
|
|
253 |
// write the other attributes
|
|
254 |
for (int j = 0 ; j < headers.size() ; j++) {
|
|
255 |
if (!headers.get(j).equals("id")) {
|
|
256 |
writer.writeAttribute(headers.get(j), dataline.get(j));
|
|
257 |
}
|
|
258 |
}
|
|
259 |
writer.writeEndElement();
|
|
260 |
writer.writeCharacters("\n");
|
|
261 |
}
|
|
262 |
writer.writeEndElement();//close texts
|
|
263 |
writer.writeCharacters("\n");
|
|
264 |
writer.writeEndElement();//close metadatas
|
|
265 |
|
|
266 |
writer.close();
|
|
267 |
output.close();
|
|
268 |
|
|
269 |
writer.close();
|
|
270 |
return true;
|
|
271 |
}
|
|
272 |
|
|
273 |
private boolean convertODSToXml(File inputFile, File xmlFile) throws Exception {
|
|
274 |
ArrayList<ArrayList<String>> data = ReadODS.toTable(inputFile, "metadata");
|
|
275 |
|
|
276 |
return data.size() > 0 && convertTableToXml(data, xmlFile);
|
|
277 |
}
|
|
278 |
|
145 |
279 |
public File getXMLFile() {
|
146 |
280 |
return xmlfile;
|
147 |
281 |
}
|
148 |
|
|
|
282 |
|
149 |
283 |
/** The sattr. */
|
150 |
284 |
String sattr = "";
|
151 |
|
|
|
285 |
|
152 |
286 |
/**
|
153 |
287 |
* Initialize.
|
154 |
288 |
*
|
... | ... | |
183 |
317 |
sattr +="+"+m.id;
|
184 |
318 |
headersList.add(m.id);
|
185 |
319 |
}
|
186 |
|
|
|
320 |
|
187 |
321 |
// List<Node> Lmetadatas = doc.texts.text;
|
188 |
322 |
// get metadata nodes
|
189 |
323 |
NodeList textsNodes = doc.getElementsByTagName("texts");
|
... | ... | |
198 |
332 |
TextInjection inj = new TextInjection(e);
|
199 |
333 |
this.put(inj.id, inj);
|
200 |
334 |
}
|
201 |
|
|
|
335 |
|
202 |
336 |
isinialize = true;
|
203 |
337 |
return true;
|
204 |
338 |
}
|
205 |
|
|
|
339 |
|
206 |
340 |
public HashMap<String, String> getTextMetadata(File f)
|
207 |
341 |
{
|
208 |
342 |
HashMap<String, String> data = new HashMap<String, String>();
|
209 |
343 |
String txtname = f.getName();
|
210 |
344 |
int idx = txtname.lastIndexOf(".");
|
211 |
345 |
if(idx > 0) txtname = txtname.substring(0, idx);
|
212 |
|
|
|
346 |
|
213 |
347 |
TextInjection injection = this.get(txtname);
|
214 |
348 |
if (injection == null) {
|
215 |
349 |
System.out.println("Could not find injection for text "+txtname);
|
... | ... | |
218 |
352 |
for (Entry e : injection) {
|
219 |
353 |
data.put(e.getId(), e.getValue());
|
220 |
354 |
}
|
221 |
|
|
|
355 |
|
222 |
356 |
return data;
|
223 |
357 |
}
|
224 |
|
|
|
358 |
|
225 |
359 |
/**
|
226 |
360 |
* Convert csv to xml.
|
227 |
361 |
*
|
... | ... | |
248 |
382 |
System.out.println("Error: CSV file does not exists");
|
249 |
383 |
return false;
|
250 |
384 |
}
|
251 |
|
|
|
385 |
|
252 |
386 |
XMLOutputFactory factory = XMLOutputFactory.newInstance();
|
253 |
387 |
FileOutputStream output = new FileOutputStream(xmlFile);
|
254 |
388 |
XMLStreamWriter writer = factory.createXMLStreamWriter(output, "UTF-8");//create a new file
|
255 |
|
|
|
389 |
|
256 |
390 |
CsvReader reader = new CsvReader(csvfile.getAbsolutePath(), separator.charAt(0), Charset.forName(encoding));
|
257 |
391 |
if (txtseparator != null && txtseparator.length() > 0)
|
258 |
392 |
reader.setTextQualifier(txtseparator.charAt(0));
|
259 |
|
|
|
393 |
|
260 |
394 |
reader.readHeaders();
|
261 |
|
|
|
395 |
|
262 |
396 |
String[] headers = reader.getHeaders();
|
263 |
|
|
|
397 |
|
264 |
398 |
if (headers.length == 0)
|
265 |
399 |
{
|
266 |
400 |
System.out.println("Error: No header in the metadata file "+csvfile);
|
267 |
401 |
return false;
|
268 |
402 |
}
|
269 |
|
|
|
403 |
|
270 |
404 |
if(!headers[0].equals("id"))
|
271 |
405 |
{
|
272 |
406 |
System.out.println("Error: The first column name in the header line of the metadata file '$csvfile' must be 'id' and found '"+headers[0]+"'");
|
273 |
407 |
return false;
|
274 |
408 |
}
|
275 |
|
|
|
409 |
|
276 |
410 |
//check for double columns
|
277 |
411 |
HashSet<String> testhash = new HashSet<String>();
|
278 |
412 |
HashSet<String> doubles = new HashSet<String>();
|
... | ... | |
287 |
421 |
System.out.println("Error: the metadata file '$csvfile' contains duplicated column names: "+doubles);
|
288 |
422 |
return false;
|
289 |
423 |
}
|
290 |
|
|
|
424 |
|
291 |
425 |
String[] longnames = new String[headers.length];
|
292 |
426 |
String[] types = new String[headers.length];
|
293 |
427 |
if (nbheaderline > 1)//get longnames
|
... | ... | |
301 |
435 |
for (int i = 0 ; i < headers.length ; i++) {
|
302 |
436 |
longnames[i] = headers[i];
|
303 |
437 |
}
|
304 |
|
|
|
438 |
|
305 |
439 |
if (nbheaderline > 2)//got types
|
306 |
440 |
{
|
307 |
441 |
reader.readRecord();
|
... | ... | |
316 |
450 |
types[i] = "String";
|
317 |
451 |
}
|
318 |
452 |
}
|
319 |
|
|
|
453 |
|
320 |
454 |
writer.writeStartDocument("UTF-8", "1.0");
|
321 |
455 |
writer.writeStartElement("enrichissement");
|
322 |
456 |
writer.writeStartElement("metadatas");
|
|
457 |
writer.writeCharacters("\n");
|
323 |
458 |
//println "headers : "+Arrays.toString(headers)
|
324 |
459 |
for (int i = 1 ; i < headers.length ; i++) {
|
325 |
460 |
if (headers[i].length() == 0) {
|
... | ... | |
337 |
472 |
writer.writeAttribute("selection", "true");
|
338 |
473 |
writer.writeAttribute("partition", "true");
|
339 |
474 |
writer.writeAttribute("display", "true");
|
340 |
|
|
|
475 |
|
341 |
476 |
writer.writeEndElement();
|
|
477 |
writer.writeCharacters("\n");
|
342 |
478 |
//}
|
343 |
479 |
}
|
344 |
480 |
writer.writeEndElement();//close metadatas
|
|
481 |
writer.writeCharacters("\n");
|
345 |
482 |
|
346 |
483 |
writer.writeStartElement("texts");
|
|
484 |
writer.writeCharacters("\n");
|
347 |
485 |
while (reader.readRecord()) {
|
348 |
486 |
writer.writeStartElement("text");
|
349 |
487 |
for(int i = 0 ; i < headers.length ; i++)
|
... | ... | |
352 |
490 |
} else if(headers[i].equals("xpath")) {
|
353 |
491 |
writer.writeAttribute("xpath", reader.get(headers[i]));
|
354 |
492 |
}
|
355 |
|
|
|
493 |
|
356 |
494 |
for(int i = 0 ; i < headers.length ; i++)
|
357 |
495 |
if(!headers[i].equals("id") && !headers[i].equals("xpath"))
|
358 |
496 |
{
|
... | ... | |
363 |
501 |
writer.writeAttribute("value", "N/A");
|
364 |
502 |
else
|
365 |
503 |
writer.writeAttribute("value", value);
|
366 |
|
|
|
504 |
|
367 |
505 |
}
|
368 |
506 |
writer.writeEndElement();
|
|
507 |
writer.writeCharacters("\n");
|
369 |
508 |
}
|
370 |
509 |
writer.writeEndElement();//close texts
|
|
510 |
writer.writeCharacters("\n");
|
371 |
511 |
writer.writeEndElement();//close metadatas
|
372 |
|
|
|
512 |
|
373 |
513 |
reader.close();
|
374 |
514 |
writer.close();
|
375 |
515 |
output.close();
|
376 |
|
|
|
516 |
|
377 |
517 |
output = null;
|
378 |
518 |
writer = null;
|
379 |
519 |
return true;
|
380 |
520 |
}
|
381 |
|
|
|
521 |
|
382 |
522 |
/**
|
383 |
523 |
* Keep only metadatas.
|
384 |
524 |
*
|
... | ... | |
398 |
538 |
i--;
|
399 |
539 |
}
|
400 |
540 |
}
|
401 |
|
|
|
541 |
|
402 |
542 |
for(TextInjection inj : this.values())
|
403 |
543 |
{
|
404 |
544 |
for(int i = 0 ; i < inj.size() ; i++)
|
... | ... | |
412 |
552 |
}
|
413 |
553 |
}
|
414 |
554 |
}
|
415 |
|
|
|
555 |
|
416 |
556 |
/**
|
417 |
557 |
* Inject metadatas in xml txm.
|
418 |
558 |
*
|
... | ... | |
427 |
567 |
{
|
428 |
568 |
return injectMetadatasInXml(infile, outfile,"text", "tei");
|
429 |
569 |
}
|
430 |
|
|
|
570 |
|
431 |
571 |
/**
|
432 |
572 |
* Inject metadatas in xml.
|
433 |
573 |
*
|
... | ... | |
443 |
583 |
{
|
444 |
584 |
return injectMetadatasInXml(infile, outfile,tag, null);
|
445 |
585 |
}
|
446 |
|
|
|
586 |
|
447 |
587 |
/**
|
448 |
588 |
* Inject metadatas in xml.
|
449 |
589 |
*
|
... | ... | |
461 |
601 |
String key = infile.getName();
|
462 |
602 |
if(key.lastIndexOf(".") > 0)
|
463 |
603 |
key = key.substring(0, key.lastIndexOf("."));
|
464 |
|
|
|
604 |
|
465 |
605 |
ArrayList<org.txm.metadatas.Entry> metas = get(key);
|
466 |
|
|
|
606 |
|
467 |
607 |
if (metas == null) {
|
468 |
608 |
System.out.println("\nError: can't find metadata for text of id="+key);
|
469 |
609 |
System.out.println("Maybe the metadata file doesn't have the right format (comma separated values are needed)");
|
470 |
610 |
return false;
|
471 |
611 |
}
|
472 |
|
|
|
612 |
|
473 |
613 |
AddAttributeInXml builder = new AddAttributeInXml(infile, tag, metas);
|
474 |
614 |
builder.onlyOneElement();
|
475 |
615 |
return builder.process(outfile);
|
476 |
616 |
}
|
477 |
|
|
|
617 |
|
478 |
618 |
/**
|
479 |
619 |
* Save.
|
480 |
620 |
*
|
... | ... | |
487 |
627 |
try {
|
488 |
628 |
// Création de la source DOM
|
489 |
629 |
Source source = new DOMSource(doc);
|
490 |
|
|
|
630 |
|
491 |
631 |
// Création du fichier de sortie
|
492 |
632 |
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), "UTF-8"));
|
493 |
633 |
Result resultat = new StreamResult(writer);
|
494 |
|
|
|
634 |
|
495 |
635 |
// Configuration du transformer
|
496 |
636 |
TransformerFactory fabrique = new net.sf.saxon.TransformerFactoryImpl();
|
497 |
637 |
Transformer transformer = fabrique.newTransformer();
|
498 |
638 |
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
499 |
639 |
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
|
500 |
640 |
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
|
501 |
|
|
|
641 |
|
502 |
642 |
// Transformation
|
503 |
643 |
transformer.transform(source, resultat);
|
504 |
644 |
writer.close();
|
... | ... | |
509 |
649 |
return false;
|
510 |
650 |
}
|
511 |
651 |
}
|
512 |
|
|
|
652 |
|
513 |
653 |
/**
|
514 |
654 |
* Insert.
|
515 |
655 |
*
|
... | ... | |
524 |
664 |
//println ("insert $pairs into $xpath")
|
525 |
665 |
XPathFactory factory = XPathFactory.newInstance();
|
526 |
666 |
XPath XpathObj = factory.newXPath();
|
527 |
|
|
|
667 |
|
528 |
668 |
XpathObj.setNamespaceContext(nsContext);
|
529 |
669 |
XPathExpression expr = XpathObj.compile(xpath);
|
530 |
|
|
|
670 |
|
531 |
671 |
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
|
532 |
672 |
int count = 0;
|
533 |
673 |
for(int i = 0 ; i < nodes.getLength() ; i++) {
|
... | ... | |
539 |
679 |
}
|
540 |
680 |
count++;
|
541 |
681 |
}
|
542 |
|
|
|
682 |
|
543 |
683 |
factory = null;
|
544 |
684 |
XpathObj = null;
|
545 |
685 |
expr = null;
|
... | ... | |
551 |
691 |
return false;
|
552 |
692 |
}
|
553 |
693 |
}
|
554 |
|
|
|
694 |
|
555 |
695 |
/**
|
556 |
696 |
* Gets the property names.
|
557 |
697 |
*
|
... | ... | |
561 |
701 |
{
|
562 |
702 |
return headersList;
|
563 |
703 |
}
|
564 |
|
|
|
704 |
|
565 |
705 |
/**
|
566 |
706 |
* Gets the sattributes.
|
567 |
707 |
*
|
... | ... | |
574 |
714 |
sattr += "+"+attr;
|
575 |
715 |
return sattr;
|
576 |
716 |
}
|
577 |
|
|
|
717 |
|
578 |
718 |
/* (non-Javadoc)
|
579 |
719 |
* @see java.util.AbstractMap#toString()
|
580 |
720 |
*/
|
581 |
721 |
@Override
|
582 |
|
public String toString()
|
583 |
|
{
|
|
722 |
public String toString() {
|
584 |
723 |
StringBuffer str = new StringBuffer();
|
585 |
724 |
str.append("Metadata: \n");
|
586 |
|
for(Metadata data : metadatas)
|
|
725 |
for (Metadata data : metadatas) {
|
587 |
726 |
str.append(" "+data.toString()+"\n");
|
588 |
|
|
|
727 |
}
|
|
728 |
|
589 |
729 |
str.append("Injections: \n");
|
590 |
|
for(TextInjection injection : this.values())
|
591 |
|
{
|
|
730 |
for(TextInjection injection : this.values()) {
|
592 |
731 |
str.append(" "+injection.toString()+"\n");
|
593 |
732 |
}
|
594 |
733 |
return str.toString();
|
595 |
734 |
}
|
596 |
|
|
|
735 |
|
597 |
736 |
/**
|
598 |
737 |
* The main method.
|
599 |
738 |
*
|
600 |
739 |
* @param args the arguments
|
601 |
740 |
*/
|
602 |
|
public static void main(String[] args)
|
603 |
|
{
|
|
741 |
public static void main(String[] args) {
|
604 |
742 |
String userhome = System.getProperty("user.home");
|
605 |
743 |
File xmlfile = new File(userhome, "/xml/metadata.xml");
|
606 |
744 |
File csvfile = new File(userhome, "/xml/metadata.csv");
|
|
745 |
File odsfile = new File(userhome, "/xml/metadata.ods");
|
|
746 |
File xlsxfile = new File(userhome, "/xml/metadata.xlsx");
|
607 |
747 |
|
608 |
|
Metadatas m = new Metadatas(csvfile, "UTF-8", ",","\"", 1);
|
609 |
|
if(m.isInitialized())
|
610 |
|
{
|
611 |
|
String[] okmetadatas = {"date", "lieu"};
|
|
748 |
Metadatas m = new Metadatas(odsfile, "UTF-8", ",","\"", 1);
|
|
749 |
if (m.isInitialized()) {
|
612 |
750 |
System.out.println(m.toString());
|
613 |
751 |
}
|
614 |
752 |
}
|
... | ... | |
616 |
754 |
public ArrayList<Metadata> getMetadatas() {
|
617 |
755 |
return metadatas;
|
618 |
756 |
}
|
619 |
|
|
|
757 |
|
620 |
758 |
public ArrayList<String> getHeadersList(){
|
621 |
759 |
return this.headersList;
|
622 |
760 |
}
|