comparison 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
comparison
equal deleted inserted replaced
22:6a45a982c333 23:e845310098ba
1 package de.mpg.mpiwg.berlin.mpdl.xml.transform; 1 package de.mpg.mpiwg.berlin.mpdl.xml.transform;
2 2
3 import java.io.IOException; 3 import java.io.IOException;
4 import java.io.StringWriter; 4 import java.io.StringWriter;
5 import java.net.URL; 5 import java.net.URL;
6 import java.util.Date;
7 6
8 import javax.xml.transform.stream.StreamSource; 7 import javax.xml.transform.stream.StreamSource;
9 8
10 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; 9 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
11 10
22 public class FragmentTransformer { 21 public class FragmentTransformer {
23 private Processor processor; 22 private Processor processor;
24 private XsltCompiler xsltCompiler; 23 private XsltCompiler xsltCompiler;
25 private XsltTransformer xsltFragmentTransformer; 24 private XsltTransformer xsltFragmentTransformer;
26 25
27 public static void main(String[] args) { 26 public FragmentTransformer() throws ApplicationException {
28 try { 27 init();
29 FragmentTransformer fragmentTransformer = new FragmentTransformer();
30 String goerzDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Goerz_2008.xml";
31 String benDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Benedetti_1585.xml";
32 String pageFragment = fragmentTransformer.getFragment(goerzDoc, "pb", 1, "pb", 2);
33 Date before = new Date();
34 for (int i=1; i<=50; i++) {
35 pageFragment = fragmentTransformer.getFragment(benDoc, "pb", i, "pb", i+1);
36 }
37 Date after = new Date();
38 System.out.println("Needed time: " + (after.getTime() - before.getTime()) + " ms");
39 } catch (Exception e) {
40 e.printStackTrace();
41 }
42 } 28 }
43 29
44 public FragmentTransformer() throws ApplicationException { 30 public FragmentTransformer(String xmlFileName) throws ApplicationException {
45 init(); 31 init();
32 try {
33 StreamSource xmlDoc = new StreamSource(xmlFileName);
34 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents
35 } catch (SaxonApiException e) {
36 throw new ApplicationException(e);
37 }
46 } 38 }
47 39
48 private void init() throws ApplicationException { 40 private void init() throws ApplicationException {
49 try { 41 try {
50 processor = new Processor(false); 42 processor = new Processor(false);
67 Serializer serializer = new Serializer(); 59 Serializer serializer = new Serializer();
68 serializer.setOutputWriter(new StringWriter()); 60 serializer.setOutputWriter(new StringWriter());
69 serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); 61 serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
70 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents 62 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents
71 xsltFragmentTransformer.setDestination(serializer); 63 xsltFragmentTransformer.setDestination(serializer);
72 QName xmlFileNameQName = new QName("xmlFileName");
73 XdmValue xmlFileNameXdmValue = new XdmAtomicValue(xmlFileName);
74 QName ms1NameQName = new QName("ms1Name"); 64 QName ms1NameQName = new QName("ms1Name");
75 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name); 65 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name);
76 QName ms1PositionQName = new QName("ms1Position"); 66 QName ms1PositionQName = new QName("ms1Position");
77 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos); 67 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos);
78 QName ms2NameQName = new QName("ms2Name"); 68 QName ms2NameQName = new QName("ms2Name");
79 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name); 69 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name);
80 QName ms2PositionQName = new QName("ms2Position"); 70 QName ms2PositionQName = new QName("ms2Position");
81 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos); 71 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos);
82 xsltFragmentTransformer.setParameter(xmlFileNameQName, xmlFileNameXdmValue);
83 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue); 72 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue);
84 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue); 73 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue);
85 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue); 74 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue);
86 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue); 75 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue);
87 xsltFragmentTransformer.transform(); // needs some time for bigger documents 76 xsltFragmentTransformer.transform(); // needs some time for bigger documents
89 } catch (Exception e) { 78 } catch (Exception e) {
90 throw new ApplicationException(e); 79 throw new ApplicationException(e);
91 } 80 }
92 return pageFragment; 81 return pageFragment;
93 } 82 }
83
84 public String getFragment(String ms1Name, int ms1Pos, String ms2Name, int ms2Pos) throws ApplicationException {
85 String pageFragment = null;
86 try {
87 Serializer serializer = new Serializer();
88 serializer.setOutputWriter(new StringWriter());
89 serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
90 xsltFragmentTransformer.setDestination(serializer);
91 QName ms1NameQName = new QName("ms1Name");
92 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name);
93 QName ms1PositionQName = new QName("ms1Position");
94 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos);
95 QName ms2NameQName = new QName("ms2Name");
96 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name);
97 QName ms2PositionQName = new QName("ms2Position");
98 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos);
99 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue);
100 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue);
101 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue);
102 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue);
103 xsltFragmentTransformer.transform(); // needs some time for bigger documents
104 pageFragment = serializer.getOutputDestination().toString();
105 } catch (Exception e) {
106 throw new ApplicationException(e);
107 }
108 return pageFragment;
109 }
110
111
94 } 112 }