KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > xml > querying > impl > xtas > QueryProcessor


1 package org.exoplatform.services.xml.querying.impl.xtas;
2
3 import java.io.ByteArrayOutputStream JavaDoc;
4 import java.io.ByteArrayInputStream JavaDoc;
5
6 import javax.xml.transform.Transformer JavaDoc;
7 import javax.xml.transform.TransformerFactory JavaDoc;
8 import javax.xml.transform.TransformerException JavaDoc;
9 import javax.xml.transform.TransformerConfigurationException JavaDoc;
10 import javax.xml.transform.stream.StreamSource JavaDoc;
11 import javax.xml.transform.stream.StreamResult JavaDoc;
12 import org.exoplatform.services.xml.querying.InvalidStatementException;
13 import org.exoplatform.services.xml.querying.QueryRunTimeException;
14
15 /**
16  * XTAS instructions processor
17  *
18  * @version $Id: QueryProcessor.java 566 2005-01-25 12:50:49Z kravchuk $
19  */

20
21 public class QueryProcessor {
22
23     private static TransformerFactory JavaDoc tFactory = TransformerFactory.newInstance();
24     private Transformer JavaDoc transformer;
25
26     protected UniFormTree process(Command command, UniFormTree input) throws QueryRunTimeException
27     {
28        if( transformer == null )
29            throw new QueryRunTimeException("QueryProcessor.process(): Query Run Time Exception. Transformer can not be NULL. Set init first! ");
30     
31        try {
32
33            UniFormTreeFragment fragment = new UniFormTreeFragment ();
34
35            if(!input.isEmpty()) {
36            // Transform
37
ByteArrayOutputStream JavaDoc os = new ByteArrayOutputStream JavaDoc();
38
39            transformer.transform( new StreamSource JavaDoc(input.getAsInputStream()), new StreamResult JavaDoc( os ) );
40
41            fragment.init( new ByteArrayInputStream JavaDoc (os.toByteArray()) );
42
43
44 // System.out.println("IS EMPTY = "+fragment.isEmpty());
45
}
46            return fragment;
47
48         // TransformerException, TransformerConfigurationException
49
} catch (Exception JavaDoc e) {
50
51             throw new QueryRunTimeException("QueryProcessor.process(): Query Run Time Exception: " + e);
52        }
53
54     }
55
56     public void init(Command command) throws InvalidStatementException
57     {
58        try {
59
60            transformer = tFactory.newTransformer(new StreamSource JavaDoc(command.getAsInputStream()));
61 // transformer.setParameter("sourceId", "test");
62
// transformer.setParameter("genarate-info", "0");
63

64
65        } catch (Exception JavaDoc e) {
66
67             throw new InvalidStatementException("QueryProcessor.init(): failed Reason: " + e);
68        }
69
70     }
71
72     public void setParameter(String JavaDoc name, String JavaDoc value) throws InvalidStatementException
73     {
74       try {
75
76           transformer.setParameter(name, value);
77
78        } catch (Exception JavaDoc e) {
79
80             throw new InvalidStatementException("QueryProcessor.init(): failed Reason: " + e);
81        }
82
83     }
84
85 }
86
Popular Tags