refactored standard static 'ArchiveReports' into their own class.
[vamsas.git] / src / org / vamsas / test / simpleclient / ArchiveReader.java
1 package org.vamsas.test.simpleclient;
2
3 import java.io.BufferedInputStream;
4 import java.io.File;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7
8 import org.vamsas.client.simpleclient.VamsasArchiveReader;
9 import org.vamsas.objects.core.VAMSAS;
10 import org.vamsas.objects.core.VamsasDocument;
11
12 public class ArchiveReader {
13   public static void main(String args[]) {
14     
15     try {
16       File av = new File(args[0]);
17       VamsasArchiveReader var = new VamsasArchiveReader(av);
18       VAMSAS roots[]=null;
19       if (var.isValid()) {
20         InputStreamReader vdoc = new InputStreamReader(var.getVamsasDocumentStream());
21         VamsasDocument doc = VamsasDocument.unmarshal(vdoc);
22         if (ArchiveReports.reportDocument(doc, var)) {
23           roots = doc.getVAMSAS();
24         }
25       } else {
26         InputStream vxmlis = var.getVamsasXmlStream();
27         
28         if (vxmlis!=null) { // Might be an old vamsas file.
29           BufferedInputStream ixml = new BufferedInputStream(var.getVamsasXmlStream());
30           InputStreamReader vxml = new InputStreamReader(ixml);
31           VAMSAS root;
32           // unmarshal seems to always close the stream (should check this)
33           if ((root = VAMSAS.unmarshal(vxml))!=null) {
34             System.out.println("Read a root.");
35             roots = new VAMSAS[1];
36             roots[0] = root;
37           }
38         }
39       }
40       if (!ArchiveReports.rootReport(roots))
41         System.err.print(args[0]+" is not a valid vamsas archive.");
42     } catch (Exception e) {
43       e.printStackTrace(System.err);
44     }
45   }
46 }