package xml;
import futils.CsvParser;
import futils.ReaderUtil;
import futils.WriterUtil;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.Vector;
import gui.html.HtmlSynthesizer;
import java.io.File;
public class AddressBook {
Vector v = new Vector();
String dtd =
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>\n" +
"<!DOCTYPE AddressBook [\n" +
" <!ELEMENT Address (\n" +
" (title | firstName| lastName | userId | password)*,\n" +
" (streetAddress|address1 | address2| address3 )*,\n" +
" (homePage | emailAddress)*,\n" +
" (homePhone | businessPhone | faxPhone)*,\n" +
" city,\n" +
" state,\n" +
" zip?)>\n" +
" <!ELEMENT title (#PCDATA)>\n" +
" <!ELEMENT firstName (#PCDATA)>\n" +
" <!ELEMENT lastName (#PCDATA)>\n" +
" <!ELEMENT address1 (#PCDATA)>\n" +
" <!ELEMENT address2 (#PCDATA)>\n" +
" <!ELEMENT address3 (#PCDATA)>\n" +
" <!ELEMENT streetAddress (#PCDATA)>\n" +
" <!ELEMENT emailAddress (#PCDATA)>\n" +
" <!ELEMENT homePage (#PCDATA)>\n" +
" <!ELEMENT city (#PCDATA)>\n" +
" <!ELEMENT state (#PCDATA)>\n" +
" <!ELEMENT zip (#PCDATA)>\n" +
" <!ELEMENT homePhone (#PCDATA)>\n" +
" <!ELEMENT businessPhone (#PCDATA)>\n" +
" <!ELEMENT faxPhone (#PCDATA)>\n" +
" <!ELEMENT AddressBook (Address*)>\n" +
"]>\n" ;
public void addAddress(Address a) {
v.addElement(a);
}
public String getAddressXml() {
String s = "\n";
for (int i = 0; i < v.size(); i++)
s = s + ((Address) v.elementAt(i)).toXml();
return s;
}
public String toXml() {
return dtd
+ "\n<AddressBook>"
+ getAddressXml()
+ "\n</AddressBook>";
}
public String toHtmlTable() {
HtmlSynthesizer hs =
new HtmlSynthesizer();
String aa[] = new String[v.size()];
for (int i=0; i < v.size(); i++) {
aa[i] = ((Address)v.elementAt(i)).toHtml();
}
return hs.getTable(hs.getSheet(aa));
}
public String toHtmlCsv() {
HtmlSynthesizer hs =
new HtmlSynthesizer();
StringBuffer sb = new StringBuffer();
for (int i=0; i < v.size(); i++) {
sb.append( ((Address)v.elementAt(i)).toCsv()+"<p>");
}
return sb.toString();
}
public String toCsv() {
String s = "\n";
for (int i = 0; i < v.size(); i++)
s = s + ((Address) v.elementAt(i)).toCsv();
return s;
}
public String toString() {
return toXml();
}
public void processLine(String l) {
v.addElement(new Address(
new CsvParser(l).getTokens()
)
);
}
public void merge(AddressBook ab) {
Address aa[] = ab.getAddresses();
for (int i=0; i < aa.length; i++)
addAddress(aa[i]);
}
public Address[] getAddresses () {
Address aa[] = new Address[v.size()];
v.copyInto(aa);
return aa;
}
public void getLines(BufferedReader br) {
try {
for (String l = br.readLine();
l != null; l = br.readLine())
processLine(l);
} catch (IOException e) {
e.printStackTrace();
}
}
public void open(BufferedReader br) throws IOException {
getLines(br);
br.close();
}
public void open() {
try {
open(
ReaderUtil.getBufferedReader("select *.csv"));
} catch (IOException e) {
}
}
public void save() {
BufferedWriter bw =
WriterUtil.getBufferedWriter("output xml");
WriterUtil.println(bw, toXml());
WriterUtil.close(bw);
}
public void saveAsCsv() {
BufferedWriter bw =
WriterUtil.getBufferedWriter("output xml");
WriterUtil.println(bw, toCsv());
WriterUtil.close(bw);
}
public void saveAsXml() {
BufferedWriter bw =
WriterUtil.getBufferedWriter("output xml");
WriterUtil.println(bw, toXml());
WriterUtil.close(bw);
}
public void saveAsXml(File f) {
BufferedWriter bw =
WriterUtil.getBufferedWriter(f);
WriterUtil.println(bw, toXml());
WriterUtil.close(bw);
}
public AddressBook search(String searchString) {
Address a;
AddressBook ab = new AddressBook();
for (int i=0; i < v.size(); i++){
a = (Address) v.elementAt(i);
if (a.match(searchString))
ab.addAddress(a);
}
return ab;
}
public static void main(String args[]) {
AddressBook ab = new AddressBook();
ab.open();
ab.saveAsXml();
System.out.println("done generating XML");
}
}