Dude, this is something i've already been working on... been using DOM with
XML schema and Xerces 1.0.1 and getting ready to commit it by the end of
this weekend. Don't really know what we do from here but i will take a close
look at this and if it is beater than what i have i will step aside but i
will let you know... what does every one else think?

-scott-

p.s. if you are new to the project, thank you for your work and welcome to
Turbine, but the next time please check if anyone is working on the same
thing you want to so there is no duplication of work.  once again thanks.


----- Original Message -----
From: Christopher Elkins <[EMAIL PROTECTED]>
To: Turbine <[EMAIL PROTECTED]>
Sent: Friday, January 21, 2000 3:34 PM
Subject: OPaL ClassMap loader


> Hi, all. Because my current project went on a temporary hiatus, I've
finally
> had some time to start working with OPaL. Here's my first cut at a
ClassMap
> loader based on Scott's draft XML schema. This code is rough and
undocumented,
> and it's hard-coded to use Xerces. It compiles successfully using JDK 1.2,
but
> I don't know if it successfully compiles under JDK 1.1 or if it even works
yet!
> However, it's a start. Also, this is the first time I've done _any_ SAX
> programming, so be gentle. ;)
>
> --
> Christopher Elkins
>
>
> ---
> ClassMapLoader.java
> ===================================================================
> package org.apache.turbine.opl.mapping;
> /*
>  * Copyright (c) 1997-1999 The Java Apache Project.  All rights reserved.
>  *
>  * Redistribution and use in source and binary forms, with or without
>  * modification, are permitted provided that the following conditions
>  * are met:
>  *
>  * 1. Redistributions of source code must retain the above copyright
>  *    notice, this list of conditions and the following disclaimer.
>  *
>  * 2. Redistributions in binary form must reproduce the above copyright
>  *    notice, this list of conditions and the following disclaimer in
>  *    the documentation and/or other materials provided with the
>  *    distribution.
>  *
>  * 3. All advertising materials mentioning features or use of this
>  *    software must display the following acknowledgment:
>  *    "This product includes software developed by the Java Apache
>  *    Project for use in the Apache JServ servlet engine project
>  *    <http://java.apache.org/>."
>  *
>  * 4. The names "Apache JServ", "Apache JServ Servlet Engine", "Turbine",
>  *    "Apache Turbine", "Turbine Project", "Apache Turbine Project" and
>  *    "Java Apache Project" must not be used to endorse or promote
products
>  *    derived from this software without prior written permission.
>  *
>  * 5. Products derived from this software may not be called "Apache JServ"
>  *    nor may "Apache" nor "Apache JServ" appear in their names without
>  *    prior written permission of the Java Apache Project.
>  *
>  * 6. Redistributions of any form whatsoever must retain the following
>  *    acknowledgment:
>  *    "This product includes software developed by the Java Apache
>  *    Project for use in the Apache JServ servlet engine project
>  *    <http://java.apache.org/>."
>  *
>  * THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY
>  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE JAVA APACHE PROJECT OR
>  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
>  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
>  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
>  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
>  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
>  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>  * OF THE POSSIBILITY OF SUCH DAMAGE.
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Java Apache Group. For more information
>  * on the Java Apache Project and the Apache JServ Servlet Engine project,
>  * please see <http://java.apache.org/>.
>  *
>  */
>
> import java.io.*;
> import java.util.*;
> import org.xml.sax.*;
> import org.xml.sax.helpers.*;
>
> /**
>  * This class implements the SAX handler for class map documents.
>  *
>  * @author Christopher Elkins
>  */
> public class ClassMapLoader extends HandlerBase {
>     private static final String ELEMENT_CLASSMAPS = "ClassMaps";
>     private static final String ELEMENT_CLASSMAP = "ClassMap";
>     private static final String ELEMENT_ATTRIBUTEMAP = "AttributeMap";
>     private static final String ELEMENT_COLUMNMAP = "ColumnMap";
>     private static final String ELEMENT_TABLEMAP = "TableMap";
>     private static final String ATTRIBUTE_NAME = "Name";
>     private static final String ATTRIBUTE_PROXY = "Proxy";
>     private static final String ATTRIBUTE_PKEY = "PKey";
>
>     private ClassMap currentClassMap;
>     private AttributeMap currentAttributeMap;
>     private ColumnMap currentColumnMap;
>     private TableMap currentTableMap;
>     private Vector classMaps;
>
>     public ClassMapLoader() {
> currentClassMap = null;
> currentAttributeMap = null;
> currentColumnMap = null;
> currentTableMap = null;
> classMaps = new Vector();
>     }
>
>     public Vector load(InputStream source) throws Exception {
> Parser parser =
>     ParserFactory.makeParser("org.apache.xerces.parsers.SAXParser");
> parser.setDocumentHandler(this);
> parser.parse(new InputSource(source));
> return classMaps;
>     }
>
>     public void startElement(String name, AttributeList atts)
> throws SAXException
>     {
> if (name.equals(ELEMENT_CLASSMAP)) {
>     ClassMap classMap = new ClassMap(atts.getValue(ATTRIBUTE_NAME));
>     currentClassMap = classMap;
> } else if (name.equals(ELEMENT_ATTRIBUTEMAP)) {
>     AttributeMap attributeMap =
> new AttributeMap(atts.getValue(ATTRIBUTE_NAME));
>     ColumnMap columnMap = new ColumnMap();
>     attributeMap.setColumnMap(columnMap);
>
>     Boolean isPrimaryKey =
> Boolean.valueOf(atts.getValue(ATTRIBUTE_PKEY));
>     columnMap.setIsKeyColumn(isPrimaryKey.booleanValue());
>     // FIXME: not currently defined in XML schema
>     file://columnMap.setType();
>
>     currentAttributeMap = attributeMap;
>     currentColumnMap = columnMap;
> } else if (name.equals(ELEMENT_COLUMNMAP)) {
>     currentColumnMap.setName(atts.getValue(ATTRIBUTE_NAME));
> } else if (name.equals(ELEMENT_TABLEMAP)) {
>     TableMap tableMap = new TableMap(atts.getValue(ATTRIBUTE_NAME));
>     currentTableMap = tableMap;
> }
>     }
>
>     public void endElement(String name) throws SAXException {
> if (name.equals(ELEMENT_CLASSMAP)) {
>     classMaps.addElement(currentClassMap);
>     currentClassMap = null;
> } else if (name.equals(ELEMENT_ATTRIBUTEMAP)) {
>     currentClassMap.addAttributeMap(currentAttributeMap);
>     currentAttributeMap = null;
> } else if (name.equals(ELEMENT_COLUMNMAP)) {
>     currentColumnMap = null;
> } else if (name.equals(ELEMENT_TABLEMAP)) {
>     currentColumnMap.setTableMap(currentTableMap);
>     currentTableMap = null;
> }
>     }
> }
>
> ---
> Index: PersistenceBroker.java
> ===================================================================
> RCS file:
/products/cvs/turbine/turbine/src/java/org/apache/turbine/opl/database/Persi
stenceBroker.java,v
> retrieving revision 1.24
> diff -c -r1.24 PersistenceBroker.java
> *** PersistenceBroker.java 2000/01/15 00:00:54 1.24
> --- PersistenceBroker.java 2000/01/21 20:13:04
> ***************
> *** 56,61 ****
> --- 56,62 ----
>    */
>
>   // JDK Classe
> + import java.io.*;
>   import java.sql.*;
>   import java.util.*;
>
> ***************
> *** 332,338 ****
>
>       public int retrieveClassMaps()
>       {
> !         return 0;
>       }
>
>       // FIXME! Maybe this should be private.  It's public to facilitate
> --- 333,353 ----
>
>       public int retrieveClassMaps()
>       {
> ! try {
> !     ClassMapLoader classMapLoader = new ClassMapLoader();
> !
> !     // FIXME: Need to read the XML mapping document here
> !     InputStream is = null;
> !     Vector classMaps = classMapLoader.load(is);
> !
> !     Enumeration e = classMaps.elements();
> !     while (e.hasMoreElements()) {
> ! addClassMap((ClassMap)e.nextElement());
> !     }
> !     return 1;
> ! } catch (Exception e) {
> !     return 0;
> ! }
>       }
>
>       // FIXME! Maybe this should be private.  It's public to facilitate
>
>
> ------------------------------------------------------------
> To subscribe:        [EMAIL PROTECTED]
> To unsubscribe:      [EMAIL PROTECTED]
> Problems?:           [EMAIL PROTECTED]
>



------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Problems?:           [EMAIL PROTECTED]

Reply via email to