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

📄 jdbcdescriptorsstore.java

📁 jetspeed源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

            statement = null;
            Enumeration children = object.enumerateChildren();
            while (children.hasMoreElements())
            {
                if (statement == null)
                {
                    statement = connection.prepareStatement
                        ("insert into children values(?, ?)");
                }
                statement.setString(1, object.getUri());
                statement.setString(2, (String)children.nextElement());
                statement.execute();
            }
            closeStatement(statement);

            // Updating inbound links
            /*
            s = "delete from links where linkto='" + object.getUri() + "'";
            statement.execute(s);
            Enumeration links = object.enumerateLinks();
            while (children.hasMoreElements()) {
                s = "insert into links values('"
                    + (String) links.nextElement() + "', '"
                    + object.getUri() + "')";
                statement.execute(s);
            }
            */

            // Updating links
            statement = connection.prepareStatement
                ("delete from links where link= ?");
            statement.setString(1, object.getUri());
            statement.execute();
            closeStatement(statement);

            if (object instanceof LinkNode)
            {
                statement = connection.prepareStatement
                    ("insert into links values(?,?)");
                statement.setString(1, object.getUri());
                statement.setString(2, ((LinkNode) object).getLinkedUri());
                statement.execute();
                closeStatement(statement);
            }
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }
    }


    /**
     * Create a new object.
     *
     * @param object ObjectNode
     * @param uri Uri of the object we want to create
     * @exception ServiceAccessException Error accessing the Service
     * @exception ObjectAlreadyExistsException An object already exists
     * at this Uri
     */
    public void createObject(Uri uri, ObjectNode object)
        throws ServiceAccessException, ObjectAlreadyExistsException
    {

        PreparedStatement statement = null;

        try
        {

            String className = object.getClass().getName();

            statement = connection.prepareStatement
                ("select * from objects where uri= ?");
            statement.setString(1, uri.toString());

            ResultSet res = statement.executeQuery();

            // Parsing result set

            if (res.next())
            {
                throw new ObjectAlreadyExistsException(uri.toString());
            }

            closeStatement(statement);

            statement = connection.prepareStatement
                ("insert into objects values(?,?)");
            statement.setString(1, uri.toString());
            statement.setString(2, className );

            statement.execute();
            closeStatement(statement);

            statement = null;
            // Inserting children
            Enumeration children = object.enumerateChildren();
            while (children.hasMoreElements())
            {
                if (statement == null)
                {
                    statement = connection.prepareStatement
                        ("insert into children values(?,?)");
                }
                statement.setString(1, uri.toString());
                statement.setString(2, (String) children.nextElement());
                statement.execute();
            }
            closeStatement(statement);

            // Updating inbound links
            /*
            Enumeration links = object.enumerateLinks();
            while (children.hasMoreElements()) {
                s = "insert into links values('"
                    + (String) links.nextElement() + "', '"
                    + object.getUri() + "')";
                statement.execute(s);
            }
            */

            // If the object is a link, also store the link information
            if (object instanceof LinkNode)
            {
                statement = connection.prepareStatement
                    ("insert into links values(?,?)");
                statement.setString(1, uri.toString());
                statement.setString(2, ((LinkNode) object).getLinkedUri());
                statement.execute();
                closeStatement(statement);
            }
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }

    }


    /**
     * Remove an object.
     *
     * @param object Object to remove
     * @exception ServiceAccessException Error accessing the Service
     * @exception ObjectNotFoundException The object to remove was not found
     */
    public void removeObject(Uri uri, ObjectNode object)
        throws ServiceAccessException, ObjectNotFoundException
    {

        PreparedStatement statement = null;

        try
        {
            // Removing object
            statement = connection.prepareStatement
                ("delete from objects where uri= ?");
            statement.setString(1,object.getUri());
            statement.execute();
            closeStatement(statement);

            // Removing children
            statement = connection.prepareStatement
                ("delete from children where uri=?");
            statement.setString(1, object.getUri());
            statement.execute();
            closeStatement(statement);

            // Removing inbound links
            /*
            s = "delete from links where linkto='" + object.getUri() + "'";
            statement.execute(s);
            */

            // Removing links
            statement = connection.prepareStatement
                ("delete from links where link= ?");
            statement.setString(1, object.getUri());
            statement.execute();
            closeStatement(statement);
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
    }


    /**
     * Grant a new permission.
     *
     * @param permission Permission we want to create
     * @exception ServiceAccessException Error accessing the Service
     */
    public void grantPermission(Uri uri, NodePermission permission)
        throws ServiceAccessException
    {

        PreparedStatement statement = null;

        try
        {
            int inheritable = 0;
            if (permission.isInheritable())
            {
                inheritable = 1;
            }

            int negative = 0;
            if (permission.isNegative())
            {
                negative = 1;
            }

            NodeRevisionNumber revisionNumber = permission.getRevisionNumber();
            String revisionNumberStr =
                (revisionNumber == null) ? null : revisionNumber.toString();

            statement = connection.prepareStatement
                ("insert into permissions values(?,?,?,?,?,?)");
            statement.setString(1, permission.getObjectUri());
            statement.setString(2, revisionNumberStr);
            statement.setString(3, permission.getSubjectUri());
            statement.setString(4, permission.getActionUri());
            statement.setInt(5, inheritable);
            statement.setInt(6, negative);
            statement.execute();
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }
    }


    /**
     * Revoke a permission.
     *
     * @param permission Permission we want to create
     * @exception ServiceAccessException Error accessing the Service
     */
    public void revokePermission(Uri uri, NodePermission permission)
        throws ServiceAccessException
    {

        PreparedStatement statement = null;

        try
        {
            NodeRevisionNumber revisionNumber = permission.getRevisionNumber();

            if(revisionNumber != null)
            {
                statement = connection.prepareStatement
                    ("delete from permissions where object= ? and subject = ? and \"ACTION\" = ?  and revisionnumber = ? ");
                statement.setString(4, revisionNumber.toString());
            }
            else
            {
                statement = connection.prepareStatement
                    ("delete from permissions where object = ? and subject = ? and \"ACTION\" = ? and revisionnumber is NULL");
            }

            statement.setString(1, permission.getObjectUri());
            statement.setString(2, permission.getSubjectUri());
            statement.setString(3, permission.getActionUri());

            statement.execute();
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }
    }


    /**
     * Revoke all the permissions on an object.
     *
     * @param permission Permission we want to create
     * @exception ServiceAccessException Error accessing the Service
     */
    public void revokePermissions(Uri uri)
        throws ServiceAccessException
    {

        PreparedStatement statement = null;

        try
        {
            statement = connection.prepareStatement
                ("delete from permissions where object= ?");
            statement.setString(1, uri.toString());
            statement.execute();
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }
    }


    /**
     * Enumerate permissions on an object.
     *
     * @param permission Permission we want to create
     * @exception ServiceAccessException Error accessing the Service
     */
    public Enumeration enumeratePermissions(Uri uri)
        throws ServiceAccessException
    {

        Vector permissionVector = new Vector();
        PreparedStatement statement = null;

        try
        {
            statement = connection.prepareStatement
                ("select * from permissions where object= ?");
            statement.setString(1, uri.toString());
            ResultSet res = statement.executeQuery();

            while (res.next())
            {
                String object   = res.getString(PERMISSIONS_OBJECT);
                String revision = res.getString(PERMISSIONS_REVISION_NUMBER);
                String subject  = res.getString(PERMISSIONS_SUBJECT);
                String action   = res.getString(PERMISSIONS_ACTION);

                boolean inheritable = false;
                if (res.getInt(PERMISSIONS_INHERITABLE) == 1)
                {
                    inheritable = true;
                }
                boolean negative = false;
                if (res.getInt(PERMISSIONS_NEGATIVE) == 1)
                {
                    negative = true;
                }
                NodePermission permission =
                    new NodePermission(object,revision,subject,
                                       action,inheritable,negative);
                permissionVector.addElement(permission);
            }
        }
        catch (SQLException e)
        {
            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
            throw new ServiceAccessException(this, e);
        }
        finally
        {
            closeStatement(statement);
        }

        return permissionVector.elements();
    }


⌨️ 快捷键说明

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