cziegeler 01/10/12 03:06:01
Modified: . changes.xml
src/org/apache/cocoon/transformation SQLTransformer.java
Log:
Applied patch for the SQLTransformer to output namespaces for the
generated elements.
Submitted by: Per-Olof Nor�n [EMAIL PROTECTED]
Revision Changes Path
1.36 +5 -1 xml-cocoon2/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/changes.xml,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- changes.xml 2001/10/12 09:56:41 1.35
+++ changes.xml 2001/10/12 10:06:00 1.36
@@ -4,7 +4,7 @@
<!--
History of Cocoon changes
- $Id: changes.xml,v 1.35 2001/10/12 09:56:41 cziegeler Exp $
+ $Id: changes.xml,v 1.36 2001/10/12 10:06:00 cziegeler Exp $
-->
<changes title="History of Changes">
@@ -26,6 +26,10 @@
</devs>
<release version="2.1-dev" date="@date@">
+ <action dev="CZ" type="update">
+ Applied patch for the SQLTransformer to output namespaces for the
+ generated elements. Patch submitted by Per-Olof Nor�n [EMAIL PROTECTED]
+ </action>
<action dev="CZ" type="fix">
Throw exception for internal requests instead of using the error handler
and
fixed component handling in subsitemaps when invoked internally.
Components only
1.21 +97 -22
xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java
Index: SQLTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- SQLTransformer.java 2001/10/11 07:28:24 1.20
+++ SQLTransformer.java 2001/10/12 10:06:00 1.21
@@ -35,7 +35,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* (PWR Organisation & Entwicklung)
* @author <a href="mailto:[EMAIL PROTECTED]">Sven Beauprez</a>
- * @version CVS $Revision: 1.20 $ $Date: 2001/10/11 07:28:24 $ $Author:
cziegeler $
+ * @version CVS $Revision: 1.21 $ $Date: 2001/10/12 10:06:00 $ $Author:
cziegeler $
*/
public class SQLTransformer extends AbstractTransformer implements
Composable, Recyclable, Disposable, Configurable {
@@ -62,6 +62,9 @@
public static final String MAGIC_OUT_PARAMETER_NAME_ATTRIBUTE = "name";
public static final String MAGIC_OUT_PARAMETER_NR_ATTRIBUTE = "nr";
public static final String MAGIC_OUT_PARAMETER_TYPE_ATTRIBUTE = "type";
+
+ public static final String MAGIC_NS_URI_ELEMENT = "namespace-uri";
+ public static final String MAGIC_NS_PREFIX_ELEMENT = "namespace-prefix";
public static final String MAGIC_ANCESTOR_VALUE = "ancestor-value";
public static final String MAGIC_ANCESTOR_VALUE_LEVEL_ATTRIBUTE =
"level";
@@ -105,7 +108,16 @@
/** Is the old-driver turned on? (default is off) */
private boolean oldDriver = false;
-
+
+ /** Namespace prefix to output */
+ protected String outPrefix;
+
+ /** Namespace uri to output */
+ protected String outUri;
+
+ /** The prefix of our namespace to listen to */
+ protected String inPrefix;
+
protected ComponentSelector dbSelector = null;
protected ComponentManager manager;
@@ -206,6 +218,19 @@
getLogger().debug("ROW-ELEMENT: " + parameter);
default_properties.setProperty(SQLTransformer.MAGIC_ROW_ELEMENT,
parameter);
}
+
+ // Check namespace-prefix and namespace-uri
+ parameter =
parameters.getParameter(SQLTransformer.MAGIC_NS_URI_ELEMENT, null);
+ if (parameter != null) {
+ getLogger().debug("NS-URI: " + parameter);
+
default_properties.setProperty(SQLTransformer.MAGIC_NS_URI_ELEMENT, parameter);
+ }
+
+ parameter =
parameters.getParameter(SQLTransformer.MAGIC_NS_PREFIX_ELEMENT, null);
+ if (parameter != null) {
+ getLogger().debug("NS-PREFIX: " + parameter);
+
default_properties.setProperty(SQLTransformer.MAGIC_NS_PREFIX_ELEMENT,
parameter);
+ }
}
/** END SitemapComponent methods **/
@@ -216,24 +241,40 @@
* This will be the meat of SQLTransformer, where the query is run.
*/
protected void executeQuery(int index) throws SAXException {
-// this.contentHandler.startPrefixMapping("",my_uri);
- getLogger().debug("SQLTransformer executing query nr " + index);
+
+
+
+ // First set up the namespace handling
+
if(getCurrentQuery().properties.getProperty(SQLTransformer.MAGIC_NS_URI_ELEMENT)
!= null) {
+ outUri =
getCurrentQuery().properties.getProperty(SQLTransformer.MAGIC_NS_URI_ELEMENT);
+ } else {
+ outUri = my_uri;
+ }
+
+ if
(getCurrentQuery().properties.getProperty(SQLTransformer.MAGIC_NS_PREFIX_ELEMENT)
!= null) {
+ outPrefix =
getCurrentQuery().properties.getProperty(SQLTransformer.MAGIC_NS_PREFIX_ELEMENT);
+ } else {
+ outPrefix = "";
+ }
+ if ( !"".equals(outPrefix) && !"".equals(outUri) ) {
+ this.contentHandler.startPrefixMapping(outPrefix, outUri);
+ }
+
+ getLogger().debug("SQLTransformer executing query nr " + index);
AttributesImpl attr = new AttributesImpl();
Query query = (Query) queries.elementAt(index);
try {
query.execute();
if (showNrOfRows!=null && showNrOfRows.equalsIgnoreCase("true"))
{
-
attr.addAttribute(my_uri,query.nr_of_rows,query.nr_of_rows,"CDATA",
- String.valueOf(query.getNrOfRows()));
+ this.attribute(attr, query.nr_of_rows,
String.valueOf(query.getNrOfRows()));
}
String name = query.getName();
- if (name !=null) {
-
attr.addAttribute(my_uri,query.name_attribute,query.name_attribute,"CDATA",
- name);
+ if (name != null) {
+ this.attribute(attr, query.name_attribute, name);
}
this.start(query.rowset_name, attr);
- attr=new AttributesImpl();
+ attr = new AttributesImpl();
if (!query.isStoredProcedure()) {
while (query.next()) {
this.start(query.row_name, attr);
@@ -257,7 +298,9 @@
}
}
this.end(query.rowset_name);
-// this.contentHandler.endPrefixMapping("");
+ if ( !"".equals(outPrefix) && !"".equals(outUri) ) {
+ this.contentHandler.endPrefixMapping(outPrefix);
+ }
}
protected static void throwIllegalStateException(String message) {
@@ -510,13 +553,46 @@
}
}
+ /**
+ Qualifies an element name by giving it a prefix.
+ @param name the element name
+ @param prefix the prefix to qualify with
+ @return a namespace qualified name that is correct
+ */
+ protected String nsQualify(String name, String prefix) {
+ if (name == null || "".equals(name)) {
+ return name;
+ }
+ if (prefix != null && !"".equals(prefix)) {
+ return prefix + ":" + name;
+ }
+ else {
+ return name;
+ }
+ }
+
/** END my very own methods **/
/** BEGIN SAX ContentHandler handlers **/
+
+ public void startPrefixMapping(String prefix, String uri) throws
SAXException {
+ if ( uri.equals(my_uri) ) {
+ inPrefix = prefix;
+ } else {
+ super.contentHandler.startPrefixMapping(prefix, uri);
+ }
+ }
+ public void endPrefixMapping(String prefix) throws SAXException {
+ if (!prefix.equals(inPrefix)) {
+ super.contentHandler.endPrefixMapping(prefix);
+ }
+ }
+
+
public void setDocumentLocator(Locator locator) {
- getLogger().info("PUBLIC ID"+locator.getPublicId());
- getLogger().info("SYSTEM ID"+locator.getSystemId());
+ getLogger().info("PUBLIC ID: " + locator.getPublicId());
+ getLogger().info("SYSTEM ID: " + locator.getSystemId());
if (super.contentHandler != null)
super.contentHandler.setDocumentLocator(locator);
}
@@ -579,29 +655,27 @@
current_state != SQLTransformer.STATE_INSIDE_QUERY_ELEMENT) {
super.characters(ary, start, length);
}
- getLogger().debug("RECEIVED CHARACTERS: "+
+ getLogger().debug("RECEIVED CHARACTERS: " +
new String(ary, start, length));
current_value.append(ary, start, length);
}
private void attribute(AttributesImpl attr, String name, String value) {
- attr.addAttribute("",name, name, "CDATA",value);
+ attr.addAttribute(outUri, name, nsQualify(name, outPrefix), "CDATA",
value);
}
- private void start(String name,
- AttributesImpl attr) throws SAXException {
- super.contentHandler.startElement(my_uri, name, name, attr);
+ private void start(String name, AttributesImpl attr) throws SAXException
{
+ super.contentHandler.startElement(outUri, name, nsQualify(name,
outPrefix), attr);
attr.clear();
}
private void end(String name) throws SAXException {
- super.contentHandler.endElement(my_uri, name, name);
+ super.contentHandler.endElement(outUri, name, nsQualify(name,
outPrefix) );
}
private void data(String data) throws SAXException {
if (data != null) {
- super.contentHandler.characters(data.toCharArray(), 0,
- data.length());
+ super.contentHandler.characters(data.toCharArray(), 0,
data.length());
}
}
@@ -821,7 +895,8 @@
}
if (null !=
properties.getProperty(SQLTransformer.MAGIC_ROW_ELEMENT)) {
this.row_name =
properties.getProperty(SQLTransformer.MAGIC_ROW_ELEMENT);
- }
+ }
+
Enumeration enum = query_parts.elements();
StringBuffer sb = new StringBuffer();
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]