Author: dkatayev
Date: 2009-08-28 03:09:44 -0400 (Fri, 28 Aug 2009)
New Revision: 26
Added:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBConnectionFactory.java
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
Log:
EXOJCR-2 Sources migration to JBoss SVN
Added:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBConnectionFactory.java
===================================================================
---
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBConnectionFactory.java
(rev 0)
+++
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBConnectionFactory.java 2009-08-28
07:09:44 UTC (rev 26)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2003-2007 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.services.jcr.impl.storage.jdbc.db;
+
+import java.io.File;
+import java.sql.SQLException;
+
+import javax.jcr.RepositoryException;
+import javax.sql.DataSource;
+
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
+import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
+
+/**
+ * Created by The eXo Platform SAS
+ *
+ * 26.08.2009
+ *
+ * @author <a href="mailto:dezder@bk.ru">Denis Grebenyuk</a>
+ * @version $Id:$
+ */
+public class HSQLDBConnectionFactory extends GenericConnectionFactory {
+
+ /**
+ * HSQLDBConnectionFactory constructor.
+ *
+ * @param dataSource
+ * - DataSource
+ * @param containerName
+ * - Container name (see configuration)
+ * @param multiDb
+ * - multidatabase state flag
+ * @param valueStorageProvider
+ * - external Value Storages provider
+ * @param maxBufferSize
+ * - Maximum buffer size (see configuration)
+ * @param swapDirectory
+ * - Swap directory (see configuration)
+ * @param swapCleaner
+ * - Swap cleaner (internal FileCleaner).
+ */
+ public HSQLDBConnectionFactory(DataSource dataSource,
+ String containerName,
+ boolean multiDb,
+ ValueStoragePluginProvider valueStorageProvider,
+ int maxBufferSize,
+ File swapDirectory,
+ FileCleaner swapCleaner) {
+
+ super(dataSource,
+ containerName,
+ multiDb,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+ }
+
+ /**
+ * HSQLDBConnectionFactory constructor.
+ *
+ *@param dataSource
+ * - DataSource
+ * @param dbDriver
+ * - JDBC Driver
+ * @param dbUrl
+ * - JDBC URL
+ * @param dbUserName
+ * - database username
+ * @param dbPassword
+ * - database user password
+ * @param containerName
+ * - Container name (see configuration)
+ * @param multiDb
+ * - multidatabase state flag
+ * @param valueStorageProvider
+ * - external Value Storages provider
+ * @param maxBufferSize
+ * - Maximum buffer size (see configuration)
+ * @param swapDirectory
+ * - Swap directory (see configuration)
+ * @param swapCleaner
+ * - Swap cleaner (internal FileCleaner).
+ * @throws RepositoryException
+ * if error eccurs
+ */
+ public HSQLDBConnectionFactory(String dbDriver,
+ String dbUrl,
+ String dbUserName,
+ String dbPassword,
+ String containerName,
+ boolean multiDb,
+ ValueStoragePluginProvider valueStorageProvider,
+ int maxBufferSize,
+ File swapDirectory,
+ FileCleaner swapCleaner) throws RepositoryException {
+
+ super(dbDriver,
+ dbUrl,
+ dbUserName,
+ dbPassword,
+ containerName,
+ multiDb,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public WorkspaceStorageConnection openConnection(boolean readOnly) throws
RepositoryException {
+ try {
+
+ if (multiDb) {
+ return new HSQLDBMultiDbJDBCConnection(getJdbcConnection(readOnly),
+ readOnly,
+ containerName,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+ }
+
+ return new HSQLDBSingleDbJDBCConnection(getJdbcConnection(readOnly),
+ readOnly,
+ containerName,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+
+ } catch (SQLException e) {
+ throw new RepositoryException(e);
+ }
+ }
+}
Property changes on:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBConnectionFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
(rev 0)
+++
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java 2009-08-28
07:09:44 UTC (rev 26)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2003-2007 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.services.jcr.impl.storage.jdbc.db;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
+
+/**
+ * Created by The eXo Platform SAS
+ *
+ * 26.08.2009
+ *
+ * @author <a href="mailto:dezder@bk.ru">Denis Grebenyuk</a>
+ * @version $Id:$
+ */
+public class HSQLDBMultiDbJDBCConnection extends MultiDbJDBCConnection {
+
+ /**
+ * HSQLDB Multidatabase JDBC Connection constructor.
+ *
+ * @param dbConnection
+ * JDBC connection, shoudl be opened before
+ * @param readOnly
+ * boolean if true the dbConnection was marked as READ-ONLY.
+ * @param containerName
+ * Workspace Storage Container name (see configuration)
+ * @param valueStorageProvider
+ * External Value Storages provider
+ * @param maxBufferSize
+ * Maximum buffer size (see configuration)
+ * @param swapDirectory
+ * Swap directory File (see configuration)
+ * @param swapCleaner
+ * Swap cleaner (internal FileCleaner).
+ * @throws SQLException
+ *
+ * @see org.exoplatform.services.jcr.impl.util.io.FileCleaner
+ */
+ public HSQLDBMultiDbJDBCConnection(Connection dbConnection,
+ boolean readOnly,
+ String containerName,
+ ValueStoragePluginProvider valueStorageProvider,
+ int maxBufferSize,
+ File swapDirectory,
+ FileCleaner swapCleaner) throws SQLException {
+ super(dbConnection,
+ readOnly,
+ containerName,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void prepareQueries() throws SQLException {
+
+ super.prepareQueries();
+ FIND_PROPERTY_BY_NAME = "select V.DATA"
+ + " from JCR_MITEM I, JCR_MVALUE V"
+ + " where I.PARENT_ID=? and I.I_CLASS=2 and I.NAME=? and I.ID=V.PROPERTY_ID
order by V.ORDER_NUM";
+ FIND_NODES_BY_PARENTID = "select * from JCR_MITEM" + " where
PARENT_ID=? and I_CLASS=1"
+ + " order by N_ORDER_NUM";
+ FIND_PROPERTIES_BY_PARENTID = "select * from JCR_MITEM" + " where
PARENT_ID=? and I_CLASS=2"
+ + " order by ID";
+ }
+}
Property changes on:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
(rev 0)
+++
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java 2009-08-28
07:09:44 UTC (rev 26)
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2003-2007 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not,
see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.services.jcr.impl.storage.jdbc.db;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
+
+/**
+ * Created by The eXo Platform SAS
+ *
+ * 26.08.2009
+ *
+ * @author <a href="mailto:dezder@bk.ru">Denis Grebenyuk</a>
+ * @version $Id:$
+ */
+public class HSQLDBSingleDbJDBCConnection extends SingleDbJDBCConnection {
+
+ /**
+ * HSQLDB Singledatabase JDBC Connection constructor.
+ *
+ * @param dbConnection
+ * JDBC connection, shoudl be opened before
+ * @param readOnly
+ * boolean if true the dbConnection was marked as READ-ONLY.
+ * @param containerName
+ * Workspace Storage Container name (see configuration)
+ * @param valueStorageProvider
+ * External Value Storages provider
+ * @param maxBufferSize
+ * Maximum buffer size (see configuration)
+ * @param swapDirectory
+ * Swap directory File (see configuration)
+ * @param swapCleaner
+ * Swap cleaner (internal FileCleaner).
+ * @throws SQLException
+ *
+ * @see org.exoplatform.services.jcr.impl.util.io.FileCleaner
+ */
+ public HSQLDBSingleDbJDBCConnection(Connection dbConnection,
+ boolean readOnly,
+ String containerName,
+ ValueStoragePluginProvider valueStorageProvider,
+ int maxBufferSize,
+ File swapDirectory,
+ FileCleaner swapCleaner) throws SQLException {
+ super(dbConnection,
+ readOnly,
+ containerName,
+ valueStorageProvider,
+ maxBufferSize,
+ swapDirectory,
+ swapCleaner);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected final void prepareQueries() throws SQLException {
+
+ super.prepareQueries();
+
+ FIND_ITEM_BY_NAME = "select * from JCR_SITEM"
+ + " where PARENT_ID=? and CONTAINER_NAME=? and NAME=? and I_INDEX=? order by
I_CLASS, VERSION DESC";
+ FIND_PROPERTY_BY_NAME = "select V.DATA"
+ + " from JCR_SITEM I, JCR_SVALUE V"
+ + " where I.PARENT_ID=? and I.I_CLASS=2 and I.CONTAINER_NAME=? and I.NAME=?
and I.ID=V.PROPERTY_ID order by V.ORDER_NUM";
+ FIND_NODES_BY_PARENTID = "select * from JCR_SITEM"
+ + " where PARENT_ID=? and I_CLASS=1 and CONTAINER_NAME=?" + "
order by N_ORDER_NUM";
+ FIND_PROPERTIES_BY_PARENTID = "select * from JCR_SITEM"
+ + " where PARENT_ID=? and I_CLASS=2 and CONTAINER_NAME=?" + "
order by ID";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected ResultSet findItemByName(String parentId, String name, int index) throws
SQLException {
+ if (findItemByName == null)
+ findItemByName = dbConnection.prepareStatement(FIND_ITEM_BY_NAME);
+ else
+ findItemByName.clearParameters();
+
+ findItemByName.setString(1, parentId);
+ findItemByName.setString(2, containerName);
+ findItemByName.setString(3, name);
+ findItemByName.setInt(4, index);
+ return findItemByName.executeQuery();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected ResultSet findPropertyByName(String parentCid, String name) throws
SQLException {
+ if (findPropertyByName == null)
+ findPropertyByName = dbConnection.prepareStatement(FIND_PROPERTY_BY_NAME);
+ else
+ findPropertyByName.clearParameters();
+
+ findPropertyByName.setString(1, parentCid);
+ findPropertyByName.setString(2, containerName);
+ findPropertyByName.setString(3, name);
+ return findPropertyByName.executeQuery();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected ResultSet findChildNodesByParentIdentifier(String parentCid) throws
SQLException {
+ if (findNodesByParentId == null)
+ findNodesByParentId = dbConnection.prepareStatement(FIND_NODES_BY_PARENTID);
+ else
+ findNodesByParentId.clearParameters();
+
+ findNodesByParentId.setString(1, parentCid);
+ findNodesByParentId.setString(2, containerName);
+ return findNodesByParentId.executeQuery();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected ResultSet findChildPropertiesByParentIdentifier(String parentCid) throws
SQLException {
+ if (findPropertiesByParentId == null)
+ findPropertiesByParentId =
dbConnection.prepareStatement(FIND_PROPERTIES_BY_PARENTID);
+ else
+ findPropertiesByParentId.clearParameters();
+
+ findPropertiesByParentId.setString(1, parentCid);
+ findPropertiesByParentId.setString(2, containerName);
+ return findPropertiesByParentId.executeQuery();
+ }
+}
Property changes on:
jcr/trunk/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain