⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sessionimpl.java

📁 一个工作流设计及定义的系统,可以直接与数据库结合进行系统工作流程的定义及应用.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    //    // METHODS    protected long generateUniqueId ()    {        return ((Long)this.uiGenerator.generateUniqueId()).longValue();    }    protected long insert         (long xmlDocumentId, String clientId, org.jdom.Document doc)    throws         XdbcException    {        java.sql.Statement st = null;        try        {            //log.debug(">>> >>> inserting document");            if (xmlDocumentId < 0)                xmlDocumentId = generateUniqueId();            st = getConnection().createStatement();            StringBuffer sb = new StringBuffer();            sb.append("INSERT INTO ");            sb.append(DOCUMENT);            sb.append(" (id, clientId) VALUES (");            sb.append(xmlDocumentId); sb.append(", ");            sb.append("'"); sb.append(clientId); sb.append("'");            sb.append(")");            String s = sb.toString();            log.debug("insert(doc)   >\n"+s+"\n<");            log.debug("clientId >"+clientId+"<");            // 'isReady' is automatically set to 'false'            st.addBatch(s);            insert(st, xmlDocumentId, -1, doc.getRootElement(), 0);                // -1 means no parent element            st.executeBatch();            st.close();            st = getConnection().createStatement();            sb = new StringBuffer();            sb.append("UPDATE ");            sb.append(DOCUMENT);            sb.append(" SET isReady = 1");            st.execute(sb.toString());            //log.debug("<<< <<< document inserted");            return xmlDocumentId;        }        catch (java.sql.SQLException se)        {            throw new XdbcException                ("Failed to insert document", se);        }        finally        {            try            {                releaseConnection();                st.close();            }            catch (Exception e)            {                // forget it            }        }    }    protected void insert         (java.sql.Statement st,          long documentId,          long parentElementId,         org.jdom.Element elt,         long order)    throws         java.sql.SQLException    {        long id = -1;        if (parentElementId < 0)            //            // if the element is the root element of a document,            // its id the document id            // (it saves a column in the xdocument table)            //            id = documentId;        else            id = generateUniqueId();        StringBuffer sb = null;        String s = null;        Object onlyTextChild = getOnlyTextChild(elt);        //        // add element to element table        sb = new StringBuffer();        sb.append("INSERT INTO ");        sb.append(ELEMENT);        sb.append(" (id, documentId, eTagName, eOrder");        if (parentElementId > 0)         {            sb.append(", parentElementId");        }        if (onlyTextChild != null)        {            sb.append(", eText");            if (onlyTextChild instanceof org.jdom.CDATA)            {                sb.append(", eIsCdata");            }        }        sb.append(") VALUES (");        sb.append(id); sb.append(", ");        sb.append(documentId); sb.append(", ");        sb.append("'"); sb.append(elt.getName()); sb.append("', ");        sb.append(order);        if (parentElementId > 0)        {            sb.append(", ");            sb.append(parentElementId);        }        if (onlyTextChild != null)        {            if (onlyTextChild instanceof org.jdom.Text)            {                sb.append(", ");                String text = ((org.jdom.Text)onlyTextChild).getTextTrim();                text = SqlUtils.prepareString(text);                sb.append(text);            }            else            {                sb.append(", ");                String text = ((org.jdom.CDATA)onlyTextChild).getTextTrim();                text = SqlUtils.prepareString(text);                sb.append(text);                sb.append(", ");                sb.append("1"); // eIsCdata            }        }        sb.append(")");        s = sb.toString();        //log.debug("element >\n"+s+"\n<");        st.addBatch(s);        //        // add attributes                java.util.Iterator it = elt.getAttributes().iterator();        while (it.hasNext())        {            org.jdom.Attribute att = (org.jdom.Attribute)it.next();            insert(st, documentId, id, att.getName(), att.getValue());        }        //        // add children element                if (onlyTextChild != null) return;                long cOrder = 0;                it = elt.getContent().iterator();        while (it.hasNext())        {            Object o = it.next();            if (o instanceof org.jdom.Element)            {                org.jdom.Element se = (org.jdom.Element)o;                insert(st, documentId, id, se, cOrder);                cOrder = cOrder + 1;            }            else if (o instanceof org.jdom.Text)            {                org.jdom.Text stx = (org.jdom.Text)o;                insert(st, documentId, id, stx, cOrder);                cOrder = cOrder + 1;            }            else if (o instanceof org.jdom.CDATA)            {                org.jdom.CDATA cdt = (org.jdom.CDATA)o;                insert(st, documentId, id, cdt, cOrder);                cOrder = cOrder + 1;            }            else            {                log.info                    ("skipped jdom content instance of class '"+                     o.getClass().getName()+"'");            }        }    }    private Object getOnlyTextChild (org.jdom.Element elt)    {        java.util.List content = elt.getContent();        if (content.size() != 1) return null;        Object child = content.get(0);        if (child instanceof org.jdom.Text ||            child instanceof org.jdom.CDATA)        {            return child;        }        return null;    }    protected void insert         (java.sql.Statement st,          long documentId,          long parentElementId,         org.jdom.Text text,         long order)    throws         java.sql.SQLException    {        long id = generateUniqueId();        String sText  = SqlUtils.prepareString(text.getTextTrim());        StringBuffer sb = new StringBuffer();        sb.append("INSERT INTO ");        sb.append(ELEMENT);        sb.append(" (id, documentId, eText, eOrder, parentElementId");        sb.append(") VALUES (");        sb.append(id); sb.append(", ");        sb.append(documentId); sb.append(", ");        sb.append(sText); sb.append(", ");        sb.append(order); sb.append(", ");        sb.append(parentElementId);        sb.append(")");        String s = sb.toString();        //log.debug("inserting text element >\n"+s+"\n<");        st.addBatch(s);    }    protected void insert         (java.sql.Statement st,          long documentId,          long parentElementId,         org.jdom.CDATA cdt,         long order)    throws         java.sql.SQLException    {        long id = generateUniqueId();        StringBuffer sb = new StringBuffer();        sb.append("INSERT INTO ");        sb.append(ELEMENT);        sb.append(" (id, documentId, eText, eOrder, eIsCdata, parentElementId");        sb.append(") VALUES (");        sb.append(id); sb.append(", ");        sb.append(documentId); sb.append(", ");        sb.append("'"); sb.append(cdt.getTextTrim()); sb.append("', ");        sb.append(order); sb.append(", ");        sb.append("1, "); // eIsCdata        sb.append(parentElementId);        sb.append(")");        String s = sb.toString();        //log.debug("inserting cdata element >\n"+s+"\n<");        st.addBatch(s);    }    protected void insert         (java.sql.Statement st,          long documentId,          long elementId,         String attributeName,          String attributeValue)    throws         java.sql.SQLException    {        StringBuffer sb = new StringBuffer();        sb.append("INSERT INTO ");        sb.append(ATTRIBUTE);        sb.append(" (documentId, elementId, attName, attValue");        sb.append(") VALUES (");        sb.append(documentId); sb.append(", ");        sb.append(elementId); sb.append(", ");        sb.append(SqlUtils.prepareString(attributeName));         sb.append(", ");        sb.append(SqlUtils.prepareString(attributeValue));        sb.append(")");        String s = sb.toString();        //log.debug("attribute >\n"+s+"\n<");        st.addBatch(s);    }        protected java.util.List simpleFind (String query)        throws XdbcException    {        java.sql.Statement st = null;        java.sql.ResultSet rs = null;        try        {            st = getConnection().createStatement();            rs = st.executeQuery(query);            java.util.List result = new java.util.ArrayList();            while (rs.next())                result.add(new Long(rs.getLong(1)));            return result;        }        catch (java.sql.SQLException se)        {            throw new XdbcException                ("Failed to find in db", se);        }        finally        {            try            {                releaseConnection();                rs.close();                st.close();            }            catch (Exception e)            {                // forget it            }        }    }    protected java.sql.Connection getConnection ()        throws java.sql.SQLException    {        if (this.connection != null) return this.connection;        return this.dataSource.getConnection();    }    protected void releaseConnection ()    {        if (this.dataSource != null)            this.dataSource.releaseConnection();    }    protected java.util.List find (java.util.List documentIds)        throws XdbcException    {        if (documentIds == null || documentIds.size() < 1)        {            log.debug("No documentIds, returning empty list");            return new java.util.ArrayList(0);        }        java.sql.Statement st = null;        java.sql.ResultSet rs = null;        try        {            st = getConnection().createStatement();            log.debug("documentIds.size() = "+documentIds.size());            //            // prepare XmlObjectMaps            // and            // WHERE clause            StringBuffer sb = new StringBuffer();            sb.append(" WHERE ");            java.util.Map documentMap =                 new java.util.HashMap(documentIds.size());            //log.debug("built documentMap");            java.util.Iterator it = documentIds.iterator();            while (it.hasNext())            {                Long documentId = (Long)it.next();                //                // XmlObjectMap                XmlObjectMap map = new XmlObjectMap();                documentMap.put(documentId, map);                //                // WHERE clause                sb.append("documentId=");                sb.append(documentId);                if (it.hasNext()) sb.append(" OR ");            }            String whereClause = sb.toString();            //log.debug("whereClause >\n"+whereClause+"\n<");            //            // fetch elements            sb = new StringBuffer();            sb.append("SELECT ");            sb.append("documentId, id, parentElementId, eTagName, eText, eOrder, eIsCdata");            sb.append(" FROM ");            sb.append(ELEMENT);            sb.append(whereClause);            sb.append(" ORDER BY documentId, parentElementId, eOrder");            String s = sb.toString();            //log.debug("fetching elements >\n"+s+"\n<");            rs = st.executeQuery(s);            while(rs.next())            {                XmlObjectMap map =                     (XmlObjectMap)documentMap.get(new Long(rs.getLong(1)));                map.put(XmlObject.buildElement(rs));            }            rs.close();            //            // fetch attributes            sb = new StringBuffer();            sb.append("SELECT documentId, elementId, attName, attValue FROM ");            sb.append(ATTRIBUTE);            sb.append(whereClause);            sb.append(" ORDER BY documentId");            s = sb.toString();            //log.debug("fetching attributes >\n"+s+"\n<");            rs = st.executeQuery(s);            while(rs.next())            {                XmlObjectMap map =                     (XmlObjectMap)documentMap.get(new Long(rs.getLong(1)));                map.put(XmlObject.buildAttribute(rs));            }            rs.close();            //            // return documents            java.util.List result = new java.util.ArrayList(documentIds.size());            it = documentIds.iterator();            while (it.hasNext())            {                XmlObjectMap map =                     (XmlObjectMap)documentMap.get((Long)it.next());                result.add(map.buildDocument());            }            return result;        }        catch (java.sql.SQLException se)        {            throw new XdbcException                ("Failed to fetch documents from db", se);        }        finally        {            try            {                releaseConnection();                st.close();            }            catch (Exception e)            {                // forget it            }        }    }    //    // STATIC METHOD    public static Session createSession        (final ApplicationContext context,         final java.util.Map serviceParams)    throws        ServiceException    {        final OwfeDataSource ds =             SqlUtils.lookupDataSource(context, serviceParams);        int idPrefix = 10;        String sIdPrefix = (String)serviceParams            .get(UniqueIdGenerator.P_ID_PREFIX);        if (sIdPrefix != null)            idPrefix = Integer.parseInt(sIdPrefix);        Session session = null;        try        {            session = new openwfe.org.xdbc.SessionImpl();            session.init(ds, idPrefix);        }        catch (XdbcException xe)        {            throw new ServiceException                ("Failed to set up xdbcSession", xe);        }        return session;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -