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]

Reply via email to