| org.apache.cocoon.transformation.AbstractTransformer org.apache.cocoon.transformation.AbstractSAXTransformer org.apache.cocoon.transformation.SQLTransformer
SQLTransformer | public class SQLTransformer extends AbstractSAXTransformer (Code) | | The SQLTransformer can be plugged into a pipeline to transform
SAX events into updated or queries and responses to/from a SQL interface.
It is declared and configured as follows:
<map:transformers default="...">
<map:transformer name="sql" src="org.apache.cocoon.transformation.SQLTransformer">
<old-driver>false</old-driver>
<connection-attempts>5</connection-attempts>
<connection-waittime>5000</connection-waittime>
</map:transformer>
</map:transformers>
It can be used in the sitemap pipeline as follows:
<map:transform type="sql">
<map:parameter name="own-connection" value="..."/>
<map:parameter name="use-connection" value="..."/>
<map:parameter name="dburl" value="..."/>
<map:parameter name="username" value="..."/>
<map:parameter name="password" value="..."/>
<map:parameter name="show-nr-or-rows" value="false"/>
<map:parameter name="doc-element" value="rowset"/>
<map:parameter name="row-element" value="row"/>
<map:parameter name="namespace-uri" value="http://apache.org/cocoon/SQL/2.0"/>
<map:parameter name="namespace-prefix" value="sql"/>
<map:parameter name="clob-encoding" value=""/>
</map:transform>
The following DTD is valid:
<!ENTITY % param "(own-connection?,(use-connection|(dburl,username,password))?,show-nr-or-rows?,doc-element?,row-element?,namespace-uri?,namespace-prefix?,clob-encoding?)">
<!ELEMENT execute-query (query,(in-parameter|in-xml-parameter|out-parameter)*,execute-query?, %param;)>
<!ELEMENT own-connection (#PCDATA)>
<!ELEMENT use-connection (#PCDATA)>
<!ELEMENT query (#PCDATA | substitute-value | ancestor-value | escape-string| xml)*>
<!ATTLIST query name CDATA #IMPLIED isstoredprocedure (true|false) "false" isupdate (true|false) "false">
<!ELEMENT substitute-value EMPTY>
<!ATTLIST substitute-value name CDATA #REQUIRED>
<!ELEMENT ancestor-value EMPTY>
<!ATTLIST ancestor-value name CDATA #REQUIRED level CDATA #REQUIRED>
<!ELEMENT in-parameter EMPTY>
<!ATTLIST in-parameter nr CDATA #REQUIRED type CDATA #REQUIRED>
<!ELEMENT in-xml-parameter EMPTY>
<!ATTLIST in-xml-parameter nr CDATA #REQUIRED type CDATA #REQUIRED>
<!ELEMENT out-parameter EMPTY>
<!ATTLIST out-parameter nr CDATA #REQUIRED name CDATA #REQUIRED type CDATA #REQUIRED>
<!ELEMENT escape-string (#PCDATA)>
<!ELEMENT xml (#PCDATA)>
Each query can override default transformer parameters. Nested queries do not inherit parent
query parameters, but only transformer parameters. Each query can have connection to different
database, directly or using the connection pool. If database connection parameters are the same
as for any of the ancestor queries, nested query will re-use ancestor query connection.
Connection sharing between queries can be disabled, globally or on per-query basis, using
own-connection parameter.
By default, CLOBs are read from the database using getSubString, so that character
decoding is performed by the database. Using clob-encoding parameter,
this behavior can be overrided, so that data is read as byte stream and decoded using
specified character encoding.
Inserting of XML data can be done by using the new sql:xml or SQL:in-xml-parameter tags.
- sql:xml must be used like sql:escape-string
- sql:in-xml-parameter must be used like sql:in-parameter.
author: Carsten Ziegeler author: Donald Ball author: Giacomo Pati author: (PWR Organisation & Entwicklung) author: Sven Beauprez author: Alfio Saglimbeni author: Philipp Hahn author: Vadim Gritsenko version: $Id: SQLTransformer.java 467820 2006-10-26 00:33:41Z vgritsenko $ |
Method Summary | |
public void | configure(Configuration conf) Configure transformer. | protected void | data(String data) | public void | dispose() | protected void | end(String uri, String prefix, String name) | protected void | endAncestorValueElement() | protected void | endEscapeStringElement() | protected void | endExecuteQueryElement() | protected void | endInParameterElement() | protected void | endInXmlParameterElement() | protected void | endOutParameterElement() | protected void | endQueryElement() | protected void | endSubstituteValueElement() | public String | endTextRecording() Stop recording of text and return the recorded information.
The String, trimmed.NB. | public void | endTransformingElement(String uri, String name, String raw) | protected void | endValueElement() | protected void | endXmlElement() | protected String | nsQualify(String name, String prefix) Qualifies an element name by giving it a prefix. | public void | recycle() | public void | service(ServiceManager manager) | public void | setup(SourceResolver resolver, Map objectModel, String source, Parameters parameters) Setup for the current request. | protected void | start(String uri, String prefix, String name, Attributes attr) | protected void | startAncestorValueElement(Attributes attributes) | protected void | startEscapeStringElement(Attributes attributes) | protected void | startExecuteQueryElement() | protected void | startInParameterElement(Attributes attributes) | protected void | startInXmlParameterElement(Attributes attributes) | protected void | startOutParameterElement(Attributes attributes) | protected void | startQueryElement(Attributes attributes) | protected void | startSubstituteValueElement(Attributes attributes) | public void | startTransformingElement(String uri, String name, String raw, Attributes attributes) | protected void | startValueElement(String name) | protected void | startXmlElement(Attributes attributes) | protected static void | throwIllegalStateException(String message) |
MAGIC_ANCESTOR_VALUE | final public static String MAGIC_ANCESTOR_VALUE(Code) | | |
MAGIC_ANCESTOR_VALUE_LEVEL_ATTRIBUTE | final public static String MAGIC_ANCESTOR_VALUE_LEVEL_ATTRIBUTE(Code) | | |
MAGIC_ANCESTOR_VALUE_NAME_ATTRIBUTE | final public static String MAGIC_ANCESTOR_VALUE_NAME_ATTRIBUTE(Code) | | |
MAGIC_COLUMN_CASE | final public static String MAGIC_COLUMN_CASE(Code) | | |
MAGIC_CONNECTION | final public static String MAGIC_CONNECTION(Code) | | |
MAGIC_DOC_ELEMENT | final public static String MAGIC_DOC_ELEMENT(Code) | | |
MAGIC_ESCAPE_STRING | final public static String MAGIC_ESCAPE_STRING(Code) | | |
MAGIC_EXECUTE_QUERY | final public static String MAGIC_EXECUTE_QUERY(Code) | | |
MAGIC_IN_PARAMETER | final public static String MAGIC_IN_PARAMETER(Code) | | |
MAGIC_IN_PARAMETER_NR_ATTRIBUTE | final public static String MAGIC_IN_PARAMETER_NR_ATTRIBUTE(Code) | | |
MAGIC_IN_PARAMETER_VALUE_ATTRIBUTE | final public static String MAGIC_IN_PARAMETER_VALUE_ATTRIBUTE(Code) | | |
MAGIC_IN_XML_PARAMETER | final public static String MAGIC_IN_XML_PARAMETER(Code) | | |
MAGIC_NAME_ATTRIBUTE | final public static String MAGIC_NAME_ATTRIBUTE(Code) | | |
MAGIC_NR_OF_ROWS | final public static String MAGIC_NR_OF_ROWS(Code) | | |
MAGIC_NS_PREFIX_ELEMENT | final public static String MAGIC_NS_PREFIX_ELEMENT(Code) | | |
MAGIC_NS_URI_ELEMENT | final public static String MAGIC_NS_URI_ELEMENT(Code) | | |
MAGIC_OUT_PARAMETER | final public static String MAGIC_OUT_PARAMETER(Code) | | |
MAGIC_OUT_PARAMETER_NAME_ATTRIBUTE | final public static String MAGIC_OUT_PARAMETER_NAME_ATTRIBUTE(Code) | | |
MAGIC_OUT_PARAMETER_NR_ATTRIBUTE | final public static String MAGIC_OUT_PARAMETER_NR_ATTRIBUTE(Code) | | |
MAGIC_OUT_PARAMETER_TYPE_ATTRIBUTE | final public static String MAGIC_OUT_PARAMETER_TYPE_ATTRIBUTE(Code) | | |
MAGIC_PASSWORD | final public static String MAGIC_PASSWORD(Code) | | |
MAGIC_ROW_ELEMENT | final public static String MAGIC_ROW_ELEMENT(Code) | | |
MAGIC_STORED_PROCEDURE_ATTRIBUTE | final public static String MAGIC_STORED_PROCEDURE_ATTRIBUTE(Code) | | |
MAGIC_SUBSTITUTE_VALUE | final public static String MAGIC_SUBSTITUTE_VALUE(Code) | | |
MAGIC_SUBSTITUTE_VALUE_NAME_ATTRIBUTE | final public static String MAGIC_SUBSTITUTE_VALUE_NAME_ATTRIBUTE(Code) | | |
MAGIC_UPDATE_ATTRIBUTE | final public static String MAGIC_UPDATE_ATTRIBUTE(Code) | | |
MAGIC_USERNAME | final public static String MAGIC_USERNAME(Code) | | |
NAMESPACE | final public static String NAMESPACE(Code) | | The SQL transformer namespace
|
STATE_INSIDE_ANCESTOR_VALUE_ELEMENT | final protected static int STATE_INSIDE_ANCESTOR_VALUE_ELEMENT(Code) | | |
STATE_INSIDE_ESCAPE_STRING | final protected static int STATE_INSIDE_ESCAPE_STRING(Code) | | |
STATE_INSIDE_EXECUTE_QUERY_ELEMENT | final protected static int STATE_INSIDE_EXECUTE_QUERY_ELEMENT(Code) | | |
STATE_INSIDE_IN_PARAMETER_ELEMENT | final protected static int STATE_INSIDE_IN_PARAMETER_ELEMENT(Code) | | |
STATE_INSIDE_IN_XML_PARAMETER_ELEMENT | final protected static int STATE_INSIDE_IN_XML_PARAMETER_ELEMENT(Code) | | |
STATE_INSIDE_OUT_PARAMETER_ELEMENT | final protected static int STATE_INSIDE_OUT_PARAMETER_ELEMENT(Code) | | |
STATE_INSIDE_QUERY_ELEMENT | final protected static int STATE_INSIDE_QUERY_ELEMENT(Code) | | |
STATE_INSIDE_SUBSTITUTE_VALUE_ELEMENT | final protected static int STATE_INSIDE_SUBSTITUTE_VALUE_ELEMENT(Code) | | |
STATE_INSIDE_VALUE_ELEMENT | final protected static int STATE_INSIDE_VALUE_ELEMENT(Code) | | |
STATE_INSIDE_XML | final protected static int STATE_INSIDE_XML(Code) | | |
STATE_OUTSIDE | final protected static int STATE_OUTSIDE(Code) | | |
conn | protected Connection conn(Code) | | The connection shared by top level queries (if configuration allows)
|
connName | protected String connName(Code) | | The "name" of the connection shared by top level queries (if configuration allows)
|
connectAttempts | protected int connectAttempts(Code) | | How many connection attempts to do? (default is 5 times)
|
connectWaittime | protected int connectWaittime(Code) | | How long wait between connection attempts? (default is 5000 ms)
|
datasources | protected ServiceSelector datasources(Code) | | The datasource component selector
|
oldDriver | protected boolean oldDriver(Code) | | Is the old-driver turned on? (default is off)
|
parser | protected SAXParser parser(Code) | | |
query | protected Query query(Code) | | The current query we are working on
|
state | protected int state(Code) | | The current state of the event receiving FSM
|
SQLTransformer | public SQLTransformer()(Code) | | Constructor
|
configure | public void configure(Configuration conf) throws ConfigurationException(Code) | | Configure transformer. Supported configuration elements:
- old-driver
- connect-attempts
- connect-waittime
|
dispose | public void dispose()(Code) | | Dispose
|
endAncestorValueElement | protected void endAncestorValueElement()(Code) | | </ancestor-value>
|
endEscapeStringElement | protected void endEscapeStringElement() throws SAXException(Code) | | </escape-string>
|
endExecuteQueryElement | protected void endExecuteQueryElement() throws SAXException(Code) | | </execute-query>
|
endInParameterElement | protected void endInParameterElement()(Code) | | </in-parameter>
|
endOutParameterElement | protected void endOutParameterElement()(Code) | | </out-parameter>
|
endSubstituteValueElement | protected void endSubstituteValueElement()(Code) | | </substitute-value>
|
endTextRecording | public String endTextRecording() throws SAXException(Code) | | Stop recording of text and return the recorded information.
The String, trimmed.NB. SQLTransformer needs to have a special version of this methodIt needs the TextRecorder to not trim whitespace from the queries it is building |
nsQualify | protected String nsQualify(String name, String prefix)(Code) | | Qualifies an element name by giving it a prefix.
Parameters: name - the element name Parameters: prefix - the prefix to qualify with a namespace qualified name that is correct |
recycle | public void recycle()(Code) | | Recycle this component
|
service | public void service(ServiceManager manager) throws ServiceException(Code) | | Serviceable
|
startExecuteQueryElement | protected void startExecuteQueryElement()(Code) | | <execute-query>
|
startInParameterElement | protected void startInParameterElement(Attributes attributes)(Code) | | <in-parameter>
|
startOutParameterElement | protected void startOutParameterElement(Attributes attributes)(Code) | | <out-parameter>
|
throwIllegalStateException | protected static void throwIllegalStateException(String message)(Code) | | |
Methods inherited from org.apache.cocoon.transformation.AbstractSAXTransformer | protected void addRecorder(XMLConsumer recorder)(Code)(Java Doc) public void characters(char[] p0, int p1, int p2) throws SAXException(Code)(Java Doc) public void comment(char ary, int start, int length) throws SAXException(Code)(Java Doc) public void configure(Configuration configuration) throws ConfigurationException(Code)(Java Doc) public void dispose()(Code)(Java Doc) public void endCDATA() throws SAXException(Code)(Java Doc) public void endDTD() throws SAXException(Code)(Java Doc) public void endDocument() throws SAXException(Code)(Java Doc) public void endElement(String uri, String name, String raw) throws SAXException(Code)(Java Doc) public void endEntity(String name) throws SAXException(Code)(Java Doc) public SourceParameters endParametersRecording(Parameters source) throws SAXException(Code)(Java Doc) public SourceParameters endParametersRecording(SourceParameters source) throws SAXException(Code)(Java Doc) public void endPrefixMapping(String prefix) throws SAXException(Code)(Java Doc) public DocumentFragment endRecording() throws SAXException(Code)(Java Doc) public XMLizable endSAXRecording() throws SAXException(Code)(Java Doc) public String endSerializedXMLRecording() throws SAXException, ProcessingException(Code)(Java Doc) public String endTextRecording() throws SAXException(Code)(Java Doc) public void endTransformingElement(String uri, String name, String raw) throws ProcessingException, IOException, SAXException(Code)(Java Doc) protected String findPrefixMapping(String uri)(Code)(Java Doc) protected AttributesImpl getMutableAttributes(Attributes a)(Code)(Java Doc) public void ignorableWhitespace(char[] p0, int p1, int p2) throws SAXException(Code)(Java Doc) public void processingInstruction(String target, String data) throws SAXException(Code)(Java Doc) public void recycle()(Code)(Java Doc) protected Object removeRecorder()(Code)(Java Doc) public void sendEndElementEvent(String localname) throws SAXException(Code)(Java Doc) public void sendEndElementEventNS(String localname) throws SAXException(Code)(Java Doc) protected void sendEndPrefixMapping() throws SAXException(Code)(Java Doc) public void sendEvents(Node node) throws SAXException(Code)(Java Doc) public void sendParametersEvents(SourceParameters pars) throws SAXException(Code)(Java Doc) public void sendStartElementEvent(String localname) throws SAXException(Code)(Java Doc) public void sendStartElementEvent(String localname, Attributes attr) throws SAXException(Code)(Java Doc) public void sendStartElementEventNS(String localname) throws SAXException(Code)(Java Doc) public void sendStartElementEventNS(String localname, Attributes attr) throws SAXException(Code)(Java Doc) protected void sendStartPrefixMapping() throws SAXException(Code)(Java Doc) public void sendTextEvent(String text) throws SAXException(Code)(Java Doc) public void service(ServiceManager manager) throws ServiceException(Code)(Java Doc) public void setDocumentLocator(Locator locator)(Code)(Java Doc) public void setup(SourceResolver resolver, Map objectModel, String src, Parameters params) throws ProcessingException, SAXException, IOException(Code)(Java Doc) public void setupTransforming() throws IOException, ProcessingException, SAXException(Code)(Java Doc) public void skippedEntity(String name) throws SAXException(Code)(Java Doc) public void startCDATA() throws SAXException(Code)(Java Doc) public void startDTD(String name, String public_id, String system_id) throws SAXException(Code)(Java Doc) public void startDocument() throws SAXException(Code)(Java Doc) public void startElement(String uri, String name, String raw, Attributes attr) throws SAXException(Code)(Java Doc) public void startEntity(String name) throws SAXException(Code)(Java Doc) public void startParametersRecording() throws SAXException(Code)(Java Doc) public void startPrefixMapping(String prefix, String uri) throws SAXException(Code)(Java Doc) public void startRecording() throws SAXException(Code)(Java Doc) public void startSAXRecording() throws SAXException(Code)(Java Doc) public void startSerializedXMLRecording(Properties format) throws SAXException(Code)(Java Doc) public void startTextRecording() throws SAXException(Code)(Java Doc) public void startTransformingElement(String uri, String name, String raw, Attributes attr) throws ProcessingException, IOException, SAXException(Code)(Java Doc)
|
|
|