/** * */ package fna.parsing; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; /** * @author Hong Updates *transform NeXML files */ public class Type4Transformer4Phenoscape extends Type4Transformer { ArrayList<Treatment> treatments = new ArrayList<Treatment>(); /** * @param listener * @param dataprefix */ public Type4Transformer4Phenoscape(ProcessListener listener, String dataprefix) { super(listener, dataprefix); } /** * */ /* do one thing: * take out description element and save them in a separate folder. * make sure the file names are mapped to numbers * */ /** * @param files: NeXML files, one for each PDF source file */ @Override protected void transformXML(File[] files) { int number = 0; try{ SAXBuilder builder = new SAXBuilder(); for(int f = 0; f < files.length; f++) { int fn = f+1; Document doc = builder.build(files[f]); Element root = doc.getRootElement(); formatDescription(root,"/treatment/description", null, fn, 0); root.detach(); writeTreatment2Transformed(root, fn, 0); listener.info((number++)+"", fn+"_0.xml"); // list the file on GUI here getDescriptionFrom(root,fn, 0); populateTreatments(root, files[f]); } }catch(Exception e){ e.printStackTrace(); LOGGER.error("Type4Transformer : error.", e); } } /** * * @param root * @param file */ private void populateTreatments(Element root, File file) { String filename = file.getName(); try{ List<Element> descriptions = XPath.selectNodes(root,"/treatment/statement"); //Treatment t = new Treatment(); }catch(Exception e){ e.printStackTrace(); LOGGER.error("Type4Transformer : populateTreatments.", e); } } @SuppressWarnings("unchecked") protected void getDescriptionFrom(Element root, int fn, int count) { try{ List<Element> descriptions = XPath.selectNodes(root, "/treatment/description"); Iterator<Element> it = descriptions.iterator(); int i = 0; while(it.hasNext()){ Element description = it.next(); writeDescription2Descriptions(description.getTextNormalize(), fn+"_"+count+".txtp"+i); //record the position for each paragraph. i++; } }catch(Exception e){ e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }