diff software/mpdl-services/mpiwg-mpdl-xml/src/de/mpg/mpiwg/berlin/mpdl/xml/transform/FragmentTransformer.java @ 23:e845310098ba

diverse Korrekturen
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 27 Nov 2012 12:35:19 +0100
parents dc5e9fcb3fdc
children
line wrap: on
line diff
--- a/software/mpdl-services/mpiwg-mpdl-xml/src/de/mpg/mpiwg/berlin/mpdl/xml/transform/FragmentTransformer.java	Wed Dec 14 13:57:09 2011 +0100
+++ b/software/mpdl-services/mpiwg-mpdl-xml/src/de/mpg/mpiwg/berlin/mpdl/xml/transform/FragmentTransformer.java	Tue Nov 27 12:35:19 2012 +0100
@@ -3,7 +3,6 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.net.URL;
-import java.util.Date;
 
 import javax.xml.transform.stream.StreamSource;
 
@@ -24,25 +23,18 @@
   private XsltCompiler xsltCompiler;
   private XsltTransformer xsltFragmentTransformer;
   
-  public static void main(String[] args) {
-    try {
-      FragmentTransformer fragmentTransformer = new FragmentTransformer();
-      String goerzDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Goerz_2008.xml";
-      String benDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Benedetti_1585.xml";
-      String pageFragment = fragmentTransformer.getFragment(goerzDoc, "pb", 1, "pb", 2);
-      Date before = new Date();
-      for (int i=1; i<=50; i++) {
-        pageFragment = fragmentTransformer.getFragment(benDoc, "pb", i, "pb", i+1);
-      }
-      Date after = new Date();
-      System.out.println("Needed time: " + (after.getTime() - before.getTime()) + " ms");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
+  public FragmentTransformer() throws ApplicationException {
+    init();
   }
   
-  public FragmentTransformer() throws ApplicationException {
+  public FragmentTransformer(String xmlFileName) throws ApplicationException {
     init();
+    try {
+      StreamSource xmlDoc = new StreamSource(xmlFileName); 
+      xsltFragmentTransformer.setSource(xmlDoc);  // needs some time for bigger documents
+    } catch (SaxonApiException e) {
+      throw new ApplicationException(e);
+    }
   }
   
   private void init() throws ApplicationException {
@@ -69,8 +61,6 @@
       serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
       xsltFragmentTransformer.setSource(xmlDoc);  // needs some time for bigger documents
       xsltFragmentTransformer.setDestination(serializer);
-      QName xmlFileNameQName = new QName("xmlFileName");
-      XdmValue xmlFileNameXdmValue = new XdmAtomicValue(xmlFileName);
       QName ms1NameQName = new QName("ms1Name");
       XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name);
       QName ms1PositionQName = new QName("ms1Position");
@@ -79,7 +69,6 @@
       XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name);
       QName ms2PositionQName = new QName("ms2Position");
       XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos);
-      xsltFragmentTransformer.setParameter(xmlFileNameQName, xmlFileNameXdmValue);
       xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue);
       xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue);
       xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue);
@@ -91,4 +80,33 @@
     }
     return pageFragment;
   }
+
+  public String getFragment(String ms1Name, int ms1Pos, String ms2Name, int ms2Pos) throws ApplicationException {
+    String pageFragment = null;
+    try {
+      Serializer serializer = new Serializer();
+      serializer.setOutputWriter(new StringWriter());
+      serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
+      xsltFragmentTransformer.setDestination(serializer);
+      QName ms1NameQName = new QName("ms1Name");
+      XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name);
+      QName ms1PositionQName = new QName("ms1Position");
+      XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos);
+      QName ms2NameQName = new QName("ms2Name");
+      XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name);
+      QName ms2PositionQName = new QName("ms2Position");
+      XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos);
+      xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue);
+      xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue);
+      xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue);
+      xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue);
+      xsltFragmentTransformer.transform();  // needs some time for bigger documents
+      pageFragment = serializer.getOutputDestination().toString();
+    } catch (Exception e) {
+      throw new ApplicationException(e);
+    }
+    return pageFragment;
+  }
+
+
 }