/** * $Id: VolumeFinalizer.java 996 2011-10-07 01:13:47Z hong1.cui $ */ package fna.parsing; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import org.apache.log4j.Logger; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Text; import org.jdom.Comment; import org.jdom.Element; import outputter.ApplicationUtilities; //import outputter.TermEQ2IDEQ; import outputter.XML2EQ; import fna.charactermarkup.StanfordParser; import fna.parsing.state.SentenceOrganStateMarker; import java.sql.Timestamp; import java.util.Date; /** * @author chunshui */ @SuppressWarnings("unused") public class VolumeFinalizer extends Thread { /*glossary established in VolumeDehyphenizer private String glossary;*/ private static ProcessListener listener; private String dataPrefix; private static final Logger LOGGER = Logger.getLogger(VolumeFinalizer.class); private Connection conn = null; private String glossaryPrefix; private static String version="$Id: VolumeFinalizer.java 996 2011-10-07 01:13:47Z hong1.cui $"; private static boolean standalone = Boolean.valueOf(ApplicationUtilities.getProperty("finalizer.standalone"));//set to true when running only StanfordParser; false when running with GUI. private static String standalonefolder = "C:/Users/updates/CharaParserTest/EQ-patterns_FixedGloss"; private Text finalLog; private Display display; public VolumeFinalizer(ProcessListener listener, Text finalLog, String dataPrefix, Connection conn, String glossaryPrefix, Display display) { if(!standalone) VolumeFinalizer.listener = listener; if(!standalone) this.finalLog = finalLog; if(!standalone) this.display = display; this.dataPrefix = dataPrefix; this.conn = conn; this.glossaryPrefix = glossaryPrefix; } public void run () { try{ outputFinal(); }catch(Exception e){ this.showOutputMessage(e.toString()); e.printStackTrace(); } //check for final result errors //no final folder for EQ application /*File finalFileList= null; File transformedFileList = null; if(!standalone){ finalFileList = new File(Registry.TargetDirectory+"\\final\\"); transformedFileList = new File(Registry.TargetDirectory+"\\transformed\\"); } if(standalone){ finalFileList = new File(this.standalonefolder+"\\final\\"); transformedFileList = new File(this.standalonefolder+"\\transformed\\"); } if(finalFileList.list().length != transformedFileList.list().length) { if(!standalone) this.showOutputMessage("System terminates with errors. Annotated files are not completed."); }*/ } /** * stanford parser * @throws ParsingException */ public void outputFinal() throws Exception { if(!standalone) this.showOutputMessage("System is starting the annotation step [could take hours on large collections]..."); String posedfile = Registry.TargetDirectory+System.getProperty("file.separator")+this.dataPrefix + "_"+ApplicationUtilities.getProperty("POSED"); String parsedfile =Registry.TargetDirectory+System.getProperty("file.separator")+this.dataPrefix + "_"+ApplicationUtilities.getProperty("PARSED"); String database = ApplicationUtilities.getProperty("database.name"); String glosstable = this.glossaryPrefix; SentenceOrganStateMarker sosm = new SentenceOrganStateMarker(conn, this.dataPrefix, glosstable, true, null, null); if(!standalone) this.showOutputMessage("System is pre-tagging sentences..."); sosm.markSentences(); StanfordParser sp = new StanfordParser(posedfile, parsedfile, database, this.dataPrefix,glosstable, false); if(!standalone) this.showOutputMessage("System is POS-tagging sentences..."); sp.POSTagging(); if(!standalone) this.showOutputMessage("System is syntactic-parsing sentences..."); sp.parsing(); if(!standalone) this.showOutputMessage("System is annotating sentences..."); sp.extracting(); if(!standalone) this.showOutputMessage("System is generating term-based EQ statements..."); String xmldir = Registry.TargetDirectory+System.getProperty("file.separator")+"final"+System.getProperty("file.separator"); String outputtable = this.dataPrefix+"_xml2eq"; //String benchmarktable = "internalworkbench"; if(!standalone) this.showOutputMessage("System is transforming EQ statements..."); String ontodir = ApplicationUtilities.getProperty("ontology.dir"); String uberon = ontodir+System.getProperty("file.separator")+ApplicationUtilities.getProperty("ontology.uberon")+".owl"; String bspo = ontodir+System.getProperty("file.separator")+ApplicationUtilities.getProperty("ontology.bspo")+".owl"; String pato = ontodir+System.getProperty("file.separator")+ApplicationUtilities.getProperty("ontology.pato")+".owl"; //XML2EQ x2e = new XML2EQ(xmldir, database, outputtable, uberon, bspo, pato); //x2e.outputEQs(); //Appending new date to the csv and txt output - Hariharan task1 Date d = new Date(); String time = new Timestamp(d.getTime())+""; String csv = (Registry.TargetDirectory+System.getProperty("file.separator")+dataPrefix+"_"+time.replaceAll("[:-]","_")+"_EQ.csv").replaceAll("\\\\+", "/"); String txt = (Registry.TargetDirectory+System.getProperty("file.separator")+dataPrefix+"_"+time.replaceAll("[:-]","_")+"_version.txt").replaceAll("\\\\+", "/"); if(!standalone){ this.showOutputMessage("Operations completed."); this.showOutputMessage("Check result file in "+csv); } //String ontologyfolder =new File(new File(Registry.TargetDirectory).getParent(), "ontologies").getAbsolutePath(); //TermEQ2IDEQ t2id = new TermEQ2IDEQ(database, outputtable, dataPrefix, ontologyfolder, csv,txt,version); } public static void outputFinalXML(Element root, String fileindex, String targetstring) { File target = null; if(!standalone) target = new File(Registry.TargetDirectory, ApplicationUtilities.getProperty(targetstring)); if(standalone) target = new File(standalonefolder+System.getProperty("file.separator")+"target"+System.getProperty("file.separator")+"final"); File result = new File(target, fileindex + ".xml"); Comment comment = new Comment("produced by "+VolumeFinalizer.version+System.getProperty("line.separator")); //Comment comment = null; ParsingUtil.outputXML(root, result, comment); if(!standalone) listener.info("" + fileindex, result.getPath(), "");//TODO: test 3/19/10 } protected void showOutputMessage(final String message) { display.syncExec(new Runnable() { public void run() { finalLog.append(message+"\n"); } }); } /** * create an XML file named with thisCharaID * @param thisCharaID:Buckup_1998.xml_088683b8-4718-48de-ad0e-eb1de9c58eb6 * @return */ public static Element createCharacterHolder(String thisCharaID) { String pdf = thisCharaID.replaceFirst("\\.xml.*", ""); String cid = thisCharaID.replaceFirst(".*\\.xml_", ""); Element root = new Element("character_unit"); root.setAttribute("source_pdf", pdf); root.setAttribute("character_id", cid); return root; } public static void main (String [] args) { String database="annotationevaluation"; String username="root"; String password="root"; Connection conn = null; try{ if(conn == null){ Class.forName("com.mysql.jdbc.Driver"); String URL = "jdbc:mysql://localhost/"+database+"?user="+username+"&password="+password; conn = DriverManager.getConnection(URL); } }catch(Exception e){ e.printStackTrace(); } //VolumeFinalizer vf = new VolumeFinalizer(null, "fnav19", conn, "fnaglossaryfixed"); //vf.start(); } }