//
// 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>