package edu.harvard.wcfia.yoshikoder.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
class VersionHandler extends DefaultHandler {
private int version = ImportUtil.UNKNOWN_FILE;
private boolean done = false;
// check the first, top level element only
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException{
if (!done){
String vers = attributes.getValue("style");
if (vers != null){
if (qName.equals("dictionary") && "041204".equals(vers))
version = ImportUtil.YKDICTIONARY_041204_FILE;
else if (qName.equals("dictionary") && "050805".equals(vers))
version = ImportUtil.YKDICTIONARY_050805_FILE;
else if (qName.equals("ykproject") && "050805".equals(vers))
version = ImportUtil.YKPROJECT_050805_FILE;
else if (qName.equals("concordance") && "050805".equals(vers))
version = ImportUtil.YKCONCORDANCE_050805_FILE;
}
done = true;
}
}
public int getFileVersion(){
return version;
}
public static void main(String[] args) {
if (args.length==0)
args = new String[]{"/Users/will/java/foo/yk2/ReleaseNotes.txt"};
File f = new File(args[0]);
if (!f.exists()){
System.out.println("File does not exist");
System.exit(0);
}
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
VersionHandler h = new VersionHandler();
InputStream stream = new FileInputStream(f);
parser.parse(stream, h);
stream.close();
int ver = h.getFileVersion();
System.out.println("YKDictionary 041204 style? " + (ver==ImportUtil.YKDICTIONARY_041204_FILE));
System.out.println("YKDictionary 050805 style? " + (ver==ImportUtil.YKDICTIONARY_050805_FILE));
System.out.println("YKProject 050805 style? " + (ver==ImportUtil.YKPROJECT_050805_FILE));
System.out.println("YKConcordance 050805 style? " + (ver==ImportUtil.YKCONCORDANCE_050805_FILE));
} catch (Exception ex){
if (ex instanceof SAXException)
System.out.println("Unknown file type...");
else
ex.printStackTrace();
}
}
}