]> matita.cs.unibo.it Git - helm.git/blob - helm/xsltd/xaland-java2/xaland2.java
Initial revision
[helm.git] / helm / xsltd / xaland-java2 / xaland2.java
1 import java.net.*;
2 import java.io.*;
3
4 // Imported TraX classes
5 import org.apache.trax.Processor;
6 import org.apache.trax.Templates;
7 import org.apache.trax.Transformer;
8 import org.apache.trax.Result;
9 import org.apache.trax.ProcessorException;
10 import org.apache.trax.ProcessorFactoryException;
11 import org.apache.trax.TransformException;
12
13 // Imported SAX classes
14 import org.xml.sax.InputSource;
15 import org.xml.sax.SAXException;
16 import org.xml.sax.Parser;
17 import org.xml.sax.helpers.ParserAdapter;
18 import org.xml.sax.helpers.XMLReaderFactory;
19 import org.xml.sax.XMLReader;
20 import org.xml.sax.ContentHandler;
21 import org.xml.sax.ext.LexicalHandler;
22
23 // Imported DOM classes
24 import org.w3c.dom.Node;
25
26 // Imported Serializer classes
27 import org.apache.serialize.OutputFormat;
28 import org.apache.serialize.Serializer;
29 import org.apache.serialize.SerializerFactory;
30
31 // Imported JAVA API for XML Parsing 1.0 classes
32 import javax.xml.parsers.DocumentBuilder;
33 import javax.xml.parsers.DocumentBuilderFactory;
34 import javax.xml.parsers.ParserConfigurationException;
35
36
37 public class xaland2 {
38    public static void main(String argv[]) throws  IOException, MalformedURLException, SAXException, ParserConfigurationException
39    {
40       int port    = Integer.parseInt(argv[0]);
41       int port2   = Integer.parseInt(argv[1]);
42       String xsl1 = argv[2];
43       String xsl2 = argv[3];
44       String theory_xsl1 = argv[4];
45       String theory_xsl2 = argv[5];
46
47       Processor theory_processor = Processor.newInstance("xslt");
48       Templates theory_style1 = theory_processor.process(new InputSource(theory_xsl1));
49       Transformer theory_transformer1 = theory_style1.newTransformer();
50
51       Templates theory_style2 = theory_processor.process(new InputSource(theory_xsl2));
52       Transformer theory_transformer2 = theory_style2.newTransformer();
53
54
55       Processor processor = Processor.newInstance("xslt");
56       Templates style1 = processor.process(new InputSource(xsl1));
57       Transformer transformer1 = style1.newTransformer();
58
59       Templates style2 = processor.process(new InputSource(xsl2));
60       Transformer transformer2 = style2.newTransformer();
61
62
63       DatagramSocket socket = new DatagramSocket(port);
64
65       System.out.println("Demon activated on input port " + port +
66        " and output port " + port2);
67       while(true) {
68          System.out.print("Ready...");
69
70          /* Warning: the packet must be a fresh one! */
71          DatagramPacket packet = new DatagramPacket(new byte[1024],1024);
72          socket.receive(packet);
73          byte data[] = packet.getData();
74          int datalen = packet.getLength();
75          String received = new String(data,0,datalen);
76
77          int first = received.indexOf(' ');
78          int last  = received.lastIndexOf(' ');
79          String mode = received.substring(0,first);
80          String input = received.substring(first+1,last);
81          String output = received.substring(last+1);
82
83          System.out.println("request received! Parameters are");
84          System.out.println("Mode: " + mode + " ");
85          System.out.println("Input file: \"" + input + "\"");
86          System.out.println("Output file: \"" + output  + "\"\n");
87
88          if ((new File(output)).exists()) {
89             System.out.println("Using cached version\n");
90          } else {
91             FileOutputStream fout = new FileOutputStream(output);
92             if (mode.equals("cic")) {
93                XMLReader reader = XMLReaderFactory.createXMLReader();
94                ContentHandler chandler = transformer1.getInputContentHandler();
95                reader.setContentHandler(chandler);
96                if (chandler instanceof LexicalHandler)
97                 reader.setProperty("http://xml.org/sax/properties/lexical-handler", chandler);
98                else
99                 reader.setProperty("http://xml.org/sax/properties/lexical-handler", null);
100
101                transformer1.setContentHandler(transformer2.getInputContentHandler());
102                Serializer serializer = SerializerFactory.getSerializer("xml");
103                serializer.setOutputStream(fout);
104                transformer2.setContentHandler(serializer.asContentHandler());
105
106                reader.parse(input);
107             } else if (mode.equals("theory")) {
108                XMLReader reader = XMLReaderFactory.createXMLReader();
109                ContentHandler chandler = theory_transformer1.getInputContentHandler();
110                reader.setContentHandler(chandler);
111                if (chandler instanceof LexicalHandler)
112                 reader.setProperty("http://xml.org/sax/properties/lexical-handler", chandler);
113                else
114                 reader.setProperty("http://xml.org/sax/properties/lexical-handler", null);
115
116                theory_transformer1.setContentHandler(theory_transformer2.getInputContentHandler());
117                Serializer serializer = SerializerFactory.getSerializer("xml");
118                serializer.setOutputStream(fout);
119                theory_transformer2.setContentHandler(serializer.asContentHandler());
120
121                reader.parse(input);
122              }
123          }
124
125          InetAddress address = InetAddress.getLocalHost();
126          DatagramSocket socket2 = new DatagramSocket();
127
128          byte buf[] = new byte[0];
129          DatagramPacket packet2 = new DatagramPacket(buf,0,address,port2);
130
131          socket2.send(packet2);
132       }
133    }
134 }