File:  [Repository] / edoc-applet / Bundle.java
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Mon Jul 21 10:14:15 2003 UTC (20 years, 9 months ago) by rogo
Branches: MAIN
CVS tags: HEAD
Download working

//
//  Bundle.java
//  
//
//  Created by rogo on Thu Jan 30 2003.
//  Copyright (c) 2001 __MyCompanyName__. All rights reserved.
//
import java.util.*;
import java.io.*;

public class Bundle 
{
  String name="";
  int grp=0;
  Vector documents=new Vector();
  Hashtable docs=new Hashtable();
  Hashtable docsLocator=new Hashtable();
  static Hashtable genresId=new Hashtable();
  static Hashtable genresLabel=new Hashtable();
  static Hashtable genresName=new Hashtable();

  static Vector genVec= new Vector();
  public Bundle()
  {
  
  }
  public void exportToXML(File f) throws Exception
  {
    FileWriter fw = new FileWriter(f);
    BufferedWriter buffr = new BufferedWriter(fw);
    buffr.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    buffr.newLine();
    buffr.write("<edoc>\n");
    // write Documents
    for(int j=0;j<docs.size();++j)
    {
      Document doc=(Document)documents.elementAt(j);
      doc.exportToXML(buffr);
    }
    
    buffr.newLine();
    buffr.write("</edoc>");
  
    buffr.close();
    fw.close();
  }

  public void exportToXMLDownload(File f,File startFile) throws Exception
  {
    String fileLink="";// to save original fileLink
    FileWriter fw = new FileWriter(f);
    BufferedWriter buffr = new BufferedWriter(fw);
    buffr.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    buffr.newLine();
    buffr.write("<edoc>\n");
    // write Documents
    for(int j=0;j<docs.size();++j)
    {
      Document doc=(Document)documents.elementAt(j);
      if(doc.fileLink!="")
      {
        
        fileLink=doc.fileLink;
        doc.fileLink=startFile.getAbsolutePath()+"/images/"+doc.fileName;
        doc.modified = new File(doc.fileLink).lastModified();
       // System.out.println(doc.fileLink);
      } else fileLink="";
      doc.exportToXML(buffr);
      doc.fileLink=fileLink;
    }
    
    buffr.newLine();
    buffr.write("</edoc>");
  
    buffr.close();
    fw.close();
  }
  static class Document
  {
    int docID=0;
    int ver=0;
    String title = "";
    String type =  ""; // edoc Type e.g.  Archimedes Image Collection 
    String locator="";
    String comment="";
    String placeofevent="";
    int fileID=0;
    int fileVer=0;
    String fileName="";
    String mimeType="";
    String md5cs="";
    int size=0;
    String fileLink="";
    Hashtable metaTags = new Hashtable();
    long modified = System.currentTimeMillis();
    boolean downloadAgain = false; 
    static int lastDocID=0;
    public Document() 
    {
      docID=++lastDocID;  
    }
    public Document(int docID,int ver,String title,String locator,String comment,String placeofevent,int fileID,int fileVer,String fileName,String mimeType,String md5cs, int size, String fileLink)
    {
      this.docID=docID;
      this.ver=ver;
      this.title=title;
      this.locator=locator;
      this.comment=comment;
      this.placeofevent=placeofevent;
      this.fileID=fileID;
      this.fileVer=fileVer;
      this.fileName=fileName;
      this.mimeType=mimeType;
      this.md5cs=md5cs;
      this.size=size;
      this.fileLink=fileLink;
    }
    public void addData(String key,String value)
    {
      //System.out.println(key+" "+value);
      // known tags
      if(key.equals("docID"))
      docID = Integer.parseInt(value);
      else if(key.equals("ver"))
      ver = Integer.parseInt(value);
      else if(key.equals("title"))
      {
        title=value;
        metaTags.put(key,value);
      }
      else if(key.equals("type"))
      type=value;
      else if(key.equals("locator")||key.equals("locater")) // wrong Typing in interface
      {
        locator=value;
        // temporarly because of typing error
        metaTags.put("locator",value);
      }
       else if(key.equals("comment"))
      {
        comment=value;
        metaTags.put(key,value);
      }
      else if(key.equals("placeofevent"))
      {
        placeofevent=value;
        metaTags.put(key,value);
      }
      else if(key.equals("fileID"))
      fileID = Integer.parseInt(value);
      else if(key.equals("fileVer"))
      fileVer = Integer.parseInt(value);
      else if(key.equals("filename"))
      fileName=value;
      else if(key.equals("mimetype"))
      mimeType=value;
      else if(key.equals("md5cs"))
      md5cs=value;
        else if(key.equals("size"))
      size=Integer.parseInt(value);
      else if(key.equals("filelink"))
      fileLink=value; 
    else if(key.equals("lastmodified"))
    {
      modified = Long.parseLong(value);
    }
    // end of known tags
      else
      metaTags.put(key,value);
    //if(key.equals("docaffs")) System.out.println(value);
    }
    public void removeData(String key)
    {
      metaTags.remove(key);
    }
    public void exportToXML(BufferedWriter buffr) throws Exception
    {
      buffr.write("  <doc id = \""+docID+"\" ver = \""+ver+"\">\n");
      buffr.write("    <type>"+type+"</type>\n");

      Enumeration en = metaTags.keys();
      while(en.hasMoreElements())
      {
        String key=(String)en.nextElement();
        buffr.write("   <"+key+">");
        buffr.write((String)metaTags.get(key));
        buffr.write("</"+key+">\n");
       
      }
      buffr.write("   <file id = \""+fileID+"\" ver = \""+fileVer+"\">\n");
      buffr.write("     <filename>"+fileName+"</filename>\n");
      buffr.write("     <mimetype>"+mimeType+"</mimetype>\n");
      buffr.write("     <md5cs>"+md5cs+"</md5cs>\n");
      buffr.write("     <size>"+size+"</size>\n");
      buffr.write("     <filelink>"+fileLink+"</filelink>\n");  
      buffr.write("     <lastmodified>"+modified+"</lastmodified>\n");
      buffr.write("   </file>\n");
      buffr.write("  </doc>\n"); 
    }
    public String toString() {
     return "Document "+docID+" "+size;
    }
    
  } 
  static class Genre 
  {
 
    static boolean debug=false; 
    Integer id; 
    String label=""; 
    String name="";
    String definition="";
    public Genre()  {}
    public String toString() 
    {
      if(debug)
      return id+"\n"+label+"\n"+name+"\n"+definition;
      else return id+"  "+label;
    }
    public void addData(String key,String value)
    {
      //System.out.println(key+" "+value);
      // known tags
      if(key.equals("label"))
      label = value;
      else if(key.equals("name"))
      name = value;
      else if(key.equals("definition"))
        definition=value;
    }
  }
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>