From 480175b22c6a6e38a4a90f49738563197f2d87df Mon Sep 17 00:00:00 2001 From: Boubaker Khanfir Date: Wed, 30 Oct 2024 09:18:55 +0100 Subject: [PATCH] feat: Drop useless Database Artifact - Meeds-io/meeds#2537 This change will drop usage of a useless Database artifact. --- exo.core.component.database/pom.xml | 172 ------- .../exoplatform/services/database/DAO.java | 259 ---------- .../services/database/DBObject.java | 39 -- .../services/database/DBObjectEvent.java | 35 -- .../services/database/DBObjectMapper.java | 37 -- .../services/database/DBObjectPageList.java | 126 ----- .../services/database/DBObjectQuery.java | 304 ------------ .../services/database/DBQueryParameter.java | 148 ------ .../services/database/DBTableManager.java | 89 ---- .../services/database/DatabaseService.java | 66 --- .../services/database/ExoDatasource.java | 227 --------- .../services/database/HibernateService.java | 69 --- .../database/MSSQLServerTableManager.java | 39 -- .../services/database/ObjectQuery.java | 429 ---------------- .../services/database/OracleTableManager.java | 47 -- .../services/database/QueryBuilder.java | 304 ------------ .../services/database/ReflectionMapper.java | 217 --------- .../services/database/ReflectionUtil.java | 95 ---- .../database/StandardSQLTableManager.java | 212 -------- .../services/database/XResources.java | 46 -- .../services/database/annotation/Query.java | 52 -- .../services/database/annotation/Table.java | 35 -- .../database/annotation/TableField.java | 45 -- .../database/creator/DBConnectionInfo.java | 55 --- .../services/database/creator/DBCreator.java | 461 ------------------ .../database/creator/DBCreatorException.java | 51 -- .../impl/HibernateConfigurationImpl.java | 39 -- .../database/impl/HibernateServiceImpl.java | 245 ---------- .../impl/XAPoolTxSupportDatabaseService.java | 113 ----- .../database/jdbc/CreateDBSchemaPlugin.java | 143 ------ .../database/jdbc/DBSchemaCreator.java | 156 ------ .../services/database/table/ExoLongID.java | 75 --- .../services/database/table/IDGenerator.java | 182 ------- .../database/utils/DialectConstants.java | 137 ------ .../database/utils/DialectDetecter.java | 155 ------ .../services/database/utils/JDBCUtils.java | 327 ------------- .../conf/portal/jdbcexo-configuration.db.xml | 56 --- .../portal/jdbcexo-configuration.hsql.xml | 56 --- .../src/main/sql/create.sql | 16 - .../services/database/DBCreatorTest.java | 67 --- .../exoplatform/services/database/Mock.java | 148 ------ .../services/database/TestDAO.java | 60 --- .../services/database/TestDBCreator.java | 181 ------- .../database/TestDatabaseService.java | 120 ----- .../database/TestHibernateService.java | 57 --- .../services/database/TestQueryManager.java | 71 --- .../conf/portal/test-configuration.xml | 134 ----- .../conf/standalone/test-configuration.xml | 140 ------ .../src/test/resources/dbcreator/test.sql | 0 .../src/test/resources/test.policy | 15 - pom.xml | 6 - 51 files changed, 6358 deletions(-) delete mode 100644 exo.core.component.database/pom.xml delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DAO.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObject.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectEvent.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectMapper.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectPageList.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectQuery.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBQueryParameter.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DBTableManager.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/DatabaseService.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/ExoDatasource.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/MSSQLServerTableManager.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/OracleTableManager.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/QueryBuilder.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionMapper.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionUtil.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/StandardSQLTableManager.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/XResources.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Query.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Table.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/TableField.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBConnectionInfo.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreator.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreatorException.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateConfigurationImpl.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/XAPoolTxSupportDatabaseService.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/CreateDBSchemaPlugin.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/DBSchemaCreator.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/table/ExoLongID.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/table/IDGenerator.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectConstants.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectDetecter.java delete mode 100644 exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/JDBCUtils.java delete mode 100644 exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.db.xml delete mode 100644 exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.hsql.xml delete mode 100644 exo.core.component.database/src/main/sql/create.sql delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/DBCreatorTest.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/Mock.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDAO.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDatabaseService.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/TestHibernateService.java delete mode 100644 exo.core.component.database/src/test/java/org/exoplatform/services/database/TestQueryManager.java delete mode 100644 exo.core.component.database/src/test/resources/conf/portal/test-configuration.xml delete mode 100644 exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml delete mode 100644 exo.core.component.database/src/test/resources/dbcreator/test.sql delete mode 100644 exo.core.component.database/src/test/resources/test.policy diff --git a/exo.core.component.database/pom.xml b/exo.core.component.database/pom.xml deleted file mode 100644 index a4cc21240..000000000 --- a/exo.core.component.database/pom.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - 4.0.0 - - - io.meeds.core - core-parent - 7.0.x-meeds-qaui-SNAPSHOT - - - exo.core.component.database - - Meeds:: PLF Core :: Component :: Database Service - Implementation of Database Service of Exoplatform SAS eXo Core' project. - - - 0.18 - - - - - io.meeds.kernel - exo.kernel.component.common - - - io.meeds.kernel - exo.kernel.commons - - - io.meeds.kernel - exo.kernel.container - - - io.meeds.kernel - exo.kernel.component.cache - - - io.meeds.kernel - exo.kernel.commons.test - test - - - javax.resource - javax.resource-api - test - - - org.hsqldb - hsqldb - test - - - com.experlog - xapool - true - - - org.jboss.logging - jboss-logging - - - org.hibernate.orm - hibernate-core - - - org.slf4j - slf4j-api - - - org.jboss.spec.javax.transaction - jboss-transaction-api_1.1_spec - - - org.jboss.logging - jboss-logging - - - org.javassist - javassist - - - - - commons-dbcp - commons-dbcp - runtime - - - xerces - xercesImpl - - - commons-pool - commons-pool - - - - - commons-pool - commons-pool - runtime - - - com.atomikos - transactions-jta - provided - - - org.mockito - mockito-all - - - - - - - - - maven-antrun-plugin - - - prepare-test-policy - process-test-resources - - - Creating Access Policy for tests - - - - - - - - - - - - - - - - - run - - - - - - - diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DAO.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DAO.java deleted file mode 100644 index f45a459f9..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DAO.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.commons.utils.PageList; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.List; - -/** - * Created by The eXo Platform SAS Author : Tuan Nguyen - * tuan08@users.sourceforge.net Apr 4, 2006 - */ -public abstract class DAO -{ - - /** - * Logger. - */ - private static final Log LOG = ExoLogger.getLogger("exo.core.component.database.DAO"); - - protected ExoDatasource eXoDS_; - - protected DBObjectMapper mapper_; - - static int totalQueryTime = 0; - - static int totalBathTime = 0; - - static int totalCloseConnect = 0; - - public DAO(ExoDatasource datasource) - { - eXoDS_ = datasource; - mapper_ = new ReflectionMapper(); - } - - public DAO(ExoDatasource datasource, DBObjectMapper mapper) - { - eXoDS_ = datasource; - mapper_ = mapper; - } - - public ExoDatasource getExoDatasource() - { - return eXoDS_; - } - - abstract public T load(long id) throws Exception; - - abstract public PageList loadAll() throws Exception; - - abstract public void update(T bean) throws Exception; - - abstract public void update(List beans) throws Exception; - - abstract public void save(T bean) throws Exception; - - abstract public void save(List beans) throws Exception; - - abstract public void remove(T bean) throws Exception; - - abstract public T remove(long id) throws Exception; - - abstract public T createInstance() throws Exception; - - protected T loadUnique(String query) throws Exception - { - Connection connection = eXoDS_.getConnection(); - try - { - return loadUnique(connection, query); - } - finally - { - eXoDS_.closeConnection(connection); - } - } - - protected T loadUnique(Connection connection, String query) throws Exception - { - Statement statement = null; - try - { - statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery(query); - if (!resultSet.next()) - { - return null; - } - T bean = createInstance(); - mapper_.mapResultSet(resultSet, bean); - resultSet.close(); - return bean; - } - finally - { - if (statement != null) - statement.close(); - } - } - - protected void loadInstances(String loadQuery, List list) throws Exception - { - Connection connection = eXoDS_.getConnection(); - try - { - loadInstances(connection, loadQuery, list); - } - finally - { - eXoDS_.closeConnection(connection); - } - } - - protected void loadInstances(Connection connection, String loadQuery, List list) throws Exception - { - Statement statement = connection.createStatement(); - ResultSet resultSet = null; - try - { - resultSet = statement.executeQuery(loadQuery); - while (resultSet.next()) - { - T bean = createInstance(); - mapper_.mapResultSet(resultSet, bean); - list.add(bean); - } - } - finally - { - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (Exception e) - { - LOG.debug("Could not close the result set"); - } - } - try - { - statement.close(); - } - catch (Exception e) - { - LOG.debug("Could not close the statement"); - } - } - } - - protected void execute(String query, T bean) throws Exception - { - Connection connection = eXoDS_.getConnection(); - try - { - execute(connection, query, bean); - } - finally - { - eXoDS_.closeConnection(connection); - } - } - - protected void execute(Connection connection, String query, T bean) throws Exception - { - PreparedStatement statement = connection.prepareStatement(query); - if (bean != null) - mapper_.mapUpdate(bean, statement); - statement.executeUpdate(); - eXoDS_.commit(connection); - statement.close(); - } - - public E loadDBField(String query) throws Exception - { - Connection connection = eXoDS_.getConnection(); - try - { - return this. loadDBField(connection, query); - } - finally - { - eXoDS_.closeConnection(connection); - } - } - - @SuppressWarnings("unchecked") - protected E loadDBField(Connection connection, String query) throws Exception - { - Statement statement = connection.createStatement(); - long startGet = System.currentTimeMillis(); - ResultSet resultSet = statement.executeQuery(query); - totalQueryTime += System.currentTimeMillis() - startGet; - if (!resultSet.next()) - return null; - E value = (E)resultSet.getObject(1); - resultSet.close(); - statement.close(); - return value; - } - - protected void execute(String template, List beans) throws Exception - { - Connection connection = eXoDS_.getConnection(); - try - { - execute(connection, template, beans); - } - finally - { - eXoDS_.closeConnection(connection); - } - } - - protected void execute(Connection connection, String template, List beans) throws Exception - { - PreparedStatement statement = connection.prepareStatement(template); - QueryBuilder builder = eXoDS_.getQueryBuilder(); - for (T bean : beans) - { - String query = builder.mapDataToSql(template, mapper_.toParameters(bean)); - statement.addBatch(query); - LOG.info(" addBatch " + query); - } - statement.executeBatch(); - statement.close(); - eXoDS_.commit(connection); - } - - public DBObjectMapper getDBObjectMapper() - { - return mapper_; - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObject.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObject.java deleted file mode 100644 index cbda6af95..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObject.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan.nguyen@exoplatform.com Mar 15, 2007 - */ -abstract public class DBObject -{ - - protected long dbObjectId_ = -1; - - public long getDBObjectId() - { - return dbObjectId_; - } - - public void setDBObjectId(long id) - { - dbObjectId_ = id; - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectEvent.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectEvent.java deleted file mode 100644 index 0a4a6a140..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.listener.Event; - -/** - * Created by The eXo Platform SAS - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Apr 6, 2007 - */ -public class DBObjectEvent, T extends DBObject> extends Event -{ - - public DBObjectEvent(String name, E e, T t) - { - super(name, e, t); - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectMapper.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectMapper.java deleted file mode 100644 index f371fa9fd..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; - -/** - * Created by The eXo Platform SAS - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Mar 29, 2007 - */ -public interface DBObjectMapper -{ - - public void mapUpdate(T bean, PreparedStatement statement) throws Exception; - - public String[][] toParameters(T bean) throws Exception; - - public void mapResultSet(ResultSet res, T bean) throws Exception; - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectPageList.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectPageList.java deleted file mode 100644 index 90ed43c57..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectPageList.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.hibernate.Session; -import org.hibernate.query.Query; - -import org.exoplatform.commons.utils.PageList; - -/** - * @author Tuan Nguyen (tuan08@users.sourceforge.net) - * @since Oct 21, 2004 - * @version $Id: DBObjectPageList.java 5332 2006-04-29 18:32:44Z geaz $ - */ -public class DBObjectPageList extends PageList -{ - - private String findQuery_; - - private String countQuery_; - - private HibernateService service_; - - private Map binding = new HashMap(); - - public DBObjectPageList(HibernateService service, Class objectType) throws Exception - { - super(20); - service_ = service; - findQuery_ = "from o in class " + objectType.getName(); - countQuery_ = "select count(o) from " + objectType.getName() + " o"; - Session session = service_.openSession(); - List l = session.createQuery(countQuery_).list(); - Number count = (Number)l.get(0); - setAvailablePage(count.intValue()); - } - - public DBObjectPageList(HibernateService service, ObjectQuery oq) throws Exception - { - super(20); - service_ = service; - findQuery_ = oq.getHibernateQueryWithBinding(); - countQuery_ = oq.getHibernateCountQueryWithBinding(); - binding = oq.getBindingFields(); - - Session session = service_.openSession(); - - Query countQuery = session.createQuery(countQuery_); - bindFields(countQuery); - - List l = countQuery.list(); - - Number count = (Number)l.get(0); - setAvailablePage(count.intValue()); - } - - public DBObjectPageList(HibernateService service, int pageSize, String query, String countQuery) throws Exception - { - super(pageSize); - service_ = service; - findQuery_ = query; - countQuery_ = countQuery; - Session session = service_.openSession(); - List l = session.createQuery(countQuery_).list(); - Number count = (Number)l.get(0); - setAvailablePage(count.intValue()); - } - - @Override - protected void populateCurrentPage(int page) throws Exception - { - Session session = service_.openSession(); - Query query = session.createQuery(findQuery_); - bindFields(query); - - int from = getFrom(); - query.setFirstResult(from); - query.setMaxResults(getTo() - from); - currentListPage_ = query.list(); - } - - @Override - public List getAll() throws Exception - { - Session session = service_.openSession(); - - Query query = session.createQuery(findQuery_); - bindFields(query); - - return query.list(); - } - - /** - * Bind a value to a named query parameter. - * - * @param query - */ - private void bindFields(Query query) - { - for (Entry entry : binding.entrySet()) - { - query.setParameter(entry.getKey(), entry.getValue()); - } - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectQuery.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectQuery.java deleted file mode 100644 index 9c33c5eed..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBObjectQuery.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.Table; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * @author Tuan Nguyen (tuan08@users.sourceforge.net) - * @since Nov 25, 2004 - * @version $Id: ObjectQuery.java 6006 2006-06-06 10:01:27Z thangvn $ - */ -public class DBObjectQuery -{ - - private static DateTimeFormatter ft_ = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - - private Class type_; - - private String orderBy_; - - private String groupBy_; - - private List parameters_; - - private List selectParameter_; - - public DBObjectQuery(Class type) - { - type_ = type; - parameters_ = new ArrayList(3); - selectParameter_ = new ArrayList(10); - } - - public DBObjectQuery addEQ(String field, Object value) - { - if (value == null) - return this; - parameters_.add(new Parameter(field, " = ", value)); - return this; - } - - public DBObjectQuery addGT(String field, Object value) - { - if (value == null) - return this; - parameters_.add(new Parameter(field, " > ", value)); - return this; - } - - public DBObjectQuery addLT(String field, Object value) - { - if (value == null) - return this; - parameters_.add(new Parameter(field, " < ", value)); - return this; - } - - public DBObjectQuery addLIKE(String field, String value) - { - if (value == null || value.length() < 1) - return this; - parameters_.add(new Parameter(field, " LIKE ", optimizeInputString(value))); - return this; - } - - public DBObjectQuery addSUM(String field) - { - selectParameter_.add(new Parameter("SUM", field)); - return this; - } - - public DBObjectQuery addSelect(String field, String value) - { - selectParameter_.add(new Parameter(field, " AS ", value)); - return this; - } - - public DBObjectQuery addSelect(String... fields) - { - for (String field : fields) - { - selectParameter_.add(new Parameter(field, null, null)); - } - return this; - } - - public DBObjectQuery addSelect(String field) - { - selectParameter_.add(new Parameter(field, null, null)); - return this; - } - - public DBObjectQuery addSelectCount(String type) - { - selectParameter_.add(new Parameter("countselect", type)); - return this; - } - - public DBObjectQuery addSelectMaxMin(String op, String field) - { - selectParameter_.add(new Parameter(op, field)); - return this; - } - - public DBObjectQuery setAscOrderBy(String field) - { - orderBy_ = " ORDER BY " + field + " ASC"; - return this; - } - - public DBObjectQuery setDescOrderBy(String field) - { - orderBy_ = " ORDER BY " + field + " DESC"; - return this; - } - - public DBObjectQuery setGroupBy(String field) - { - groupBy_ = " GROUP BY " + field; - return this; - } - - public String toQuery() - { - return constuctQuery(false); - } - - public String toQueryUseOR() - { - return constuctQuery(true); - } - - private String constuctQuery(boolean useOR) - { - StringBuilder builder = new StringBuilder("SELECT "); - if (selectParameter_.size() > 0) - { - for (int i = 0; i < selectParameter_.size(); i++) - { - if (i > 0) - builder.append(", "); - parameters_.get(i).build(builder); - } - } - else - { - builder.append(" * "); - } - - Table table = type_.getAnnotation(Table.class); - builder.append(" FROM ").append(table.name()); - if (parameters_.size() > 0) - { - builder.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - builder.append(useOR ? " OR " : " AND "); - parameters_.get(i).build(builder); - } - } - if (orderBy_ != null) - builder.append(orderBy_); - return builder.toString(); - } - - public String toCountQuery() - { - return consturctCountQuery(false); - } - - public String toCountQueryUseOR() - { - return consturctCountQuery(true); - } - - private String consturctCountQuery(boolean useOR) - { - StringBuilder builder = new StringBuilder(); - Table table = type_.getAnnotation(Table.class); - builder.append("SELECT COUNT(*) FROM ").append(table.name()); - if (parameters_.size() > 0) - { - builder.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - builder.append(useOR ? " OR " : " AND "); - parameters_.get(i).build(builder); - } - } - return builder.toString(); - } - - /* - * public String getHibernateGroupByQuery() { StringBuilder b = new - * StringBuilder("SELECT ") ; if(selectParameter_.size() > 0){ for(int i = 0; - * i < selectParameter_.size(); i++){ Parameter p = selectParameter_.get(i) ; - * if(p.op_.equals("fieldselect")){ b.append(p.field_) ; }else - * if(p.op_.equals("countselect")){ b.append("COUNT"); if (p.field_ != "" || - * p.field_.length() > 0){ b.append("(").append(p.field_).append(" )"); }else{ - * b.append("(*)"); } }else { - * b.append(p.op_).append("(").append(p.field_).append(") "); } if(i < - * selectParameter_.size() - 1 ) b.append(" , ") ; } } Table table = - * type_.getAnnotation(Table.class) ; b.append(" FROM ").append(table.name()) - * ; if(parameters_.size() > 0) { b.append(" WHERE ") ; for(int i = 0; i < - * parameters_.size(); i ++) { if(i > 0) b.append(" AND ") ; Parameter p = - * parameters_.get(i) ; if(p.value_ instanceof String) { - * b.append(p.field_).append(p.op_).append("'").append(p.value_).append("'") ; - * } else if(p.value_ instanceof Date) { String value = ft_.format((Date) - * p.value_) ; - * b.append(' ').append(p.field_).append(p.op_).append("'").append( - * value).append("'") ; } else if(p.op_.equals("max") || p.op_.equals("min")){ - * b.append(p.op_).append("(").append(p.field_).append(") "); } else{ - * b.append(' ').append(p.field_).append(p.op_).append(p.value_); } } } - * if(groupBy_ != null ) b.append(groupBy_ ); if(orderBy_ != null ) - * b.append(orderBy_ ); return b.toString() ; } - */ - - public String optimizeInputString(String value) - { - value = value.replace('*', '%'); - value = value.replaceAll("'", "'"); - value = value.replaceAll("<", "<"); - value = value.replaceAll(">", ">"); - return value; - } - - public List getParameters() - { - return parameters_; - } - - static public class Parameter - { - - String op_; - - String field_; - - String label_; - - Object value_; - - public Parameter(String field, String op, Object value) - { - op_ = op; - field_ = field; - value_ = value; - } - - public Parameter(String op, String field) - { - op_ = op; - field_ = field; - } - - void build(StringBuilder builder) - { - builder.append(' ').append(field_).append(op_); - if (op_ == null || op_.trim().length() < 1 || value_ == null) - return; - builder.append(' '); - if (CharSequence.class.isInstance(value_)) - { - builder.append('\'').append(value_).append('\''); - } - else if (value_ instanceof Date) - { - LocalDateTime ldt = LocalDateTime.ofInstant(((Date)value_).toInstant(), ZoneId.systemDefault()); - String value = ldt.format(ft_); - builder.append("'").append(value).append("'"); - } - else - { - builder.append(value_); - } - } - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBQueryParameter.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBQueryParameter.java deleted file mode 100644 index 2ac81b6f9..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBQueryParameter.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import java.util.Comparator; - -/** - * Created by The eXo Platform SAS - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Apr 2, 2007 - */ -public class DBQueryParameter -{ - - protected String name; - - protected String value; - - protected Operator operator; - - protected int order = WHERE; - - public final static int SELECT = 1, WHERE = 3, GROUP = 4, HAVING = 5, ORDER = 6; - - protected DBQueryParameter() - { - } - - public DBQueryParameter(String value) - { - this.value = value; - } - - public DBQueryParameter(String name, String value) - { - this.name = name; - this.value = value; - } - - public DBQueryParameter(String name, String value, Operator operator) - { - this.name = name; - this.value = value; - this.operator = operator; - } - - public void build(StringBuilder builder) - { - if (order == WHERE && builder.indexOf(" WHERE ") < 0) - builder.append(" WHERE "); - builder.append(' ').append(name).append(operator.toString()).append(value); - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public Operator getOperator() - { - return operator; - } - - public void setOperator(Operator operator) - { - this.operator = operator; - } - - public String getValue() - { - return value; - } - - public void setValue(String value) - { - this.value = value; - } - - public final static Comparator PARAMETER_SORT = new Comparator() - { - public int compare(DBQueryParameter param1, DBQueryParameter param2) - { - return param1.order - param2.order; - } - }; - - public static class Operator - { - - public final static Operator AND = new Operator(" AND "); - - public final static Operator OR = new Operator(" OR "); - - public final static Operator LESS_THAN = new Operator(" < "); - - public final static Operator LESS_THAN_AND_EQUALS = new Operator(" <= "); - - public final static Operator GREATER_THAN = new Operator(" > "); - - public final static Operator GREATER_THAN_AND_EQUALS = new Operator(" >= "); - - public final static Operator LIKE = new Operator(" LIKE "); - - public final static Operator IN = new Operator(" IN "); - - public final static Operator IS = new Operator(" IS "); - - public final static Operator EQUALS = new Operator(" = "); - - private String value; - - public Operator(String value) - { - this.value = value; - } - - public String toString() - { - return value; - } - - public String getValue() - { - return value; - } - - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBTableManager.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBTableManager.java deleted file mode 100644 index 53e2f3bef..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DBTableManager.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - * The DBTableManager is an interface - * to help the developer to check if a table is existed or not and create/drop a - * table. We can implement more one more DBTableManager according to the - * database type and version. - */ -abstract public class DBTableManager -{ - /** - * This method should: 1. Extract the table information such table name and - * table fields from the class T, the information are annotated in the class T - * 2. Generate the SQL statement and create the table - * - * @param - * @param type - * @param dropIfExist - * @throws Exception - */ - abstract public void createTable(Class type, boolean dropIfExist) throws Exception; - - /** - * This method should: 1. Extract the table information from the class T, the - * information are annotated in the class T 2. Generate the SQL statement and - * drop the table - * - * @param - * @param type - * @throws Exception - */ - abstract public void dropTable(Class type) throws Exception; - - /** - * This method should: 1. Extract the table information from the class T, the - * information are annotated in the class T 2. Check to see if the table is - * existed in the database system - * - * @param - * @param type - * @return - * @throws Exception - */ - abstract public boolean hasTable(Class type) throws Exception; - - /** - * This method should check the database type and version and create a - * corresponded DBTableManager - * - * @param datasource - * @return - */ - final static public DBTableManager createDBTableManager(ExoDatasource datasource) - { - if (datasource.getDatabaseType() == ExoDatasource.HSQL_DB_TYPE) - { - return new StandardSQLTableManager(datasource); - } - else if (ExoDatasource.ORACLE_DB_TYPE == datasource.getDatabaseType()) - { - return new OracleTableManager(datasource); - } - else if (ExoDatasource.SQL_SERVER_TYPE == datasource.getDatabaseType()) - { - return new MSSQLServerTableManager(datasource); - } - return new StandardSQLTableManager(datasource); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DatabaseService.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/DatabaseService.java deleted file mode 100644 index cae0c27cd..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/DatabaseService.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.transaction.TransactionService; - -import java.sql.Connection; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - * This service should provide a single - * interface to access the different datasource. - */ -public interface DatabaseService -{ - - /** - * This method should return the default datasource of the application - * - * @return - * @throws Exception - */ - public ExoDatasource getDatasource() throws Exception; - - /** - * This method should look up the datasouce by the datasource name and return. - * If the datasource is not found then the method should return null - * - * @param dsname - * @return - * @throws Exception - */ - public ExoDatasource getDatasource(String dsname) throws Exception; - - public Connection getConnection() throws Exception; - - public Connection getConnection(String dsName) throws Exception; - - public void closeConnection(Connection conn) throws Exception; - - /** - * This method should return the transaction service - * - * @return - * @throws Exception - */ - public TransactionService getTransactionService() throws Exception; - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ExoDatasource.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/ExoDatasource.java deleted file mode 100644 index 36e60ed85..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ExoDatasource.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.table.IDGenerator; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; - -import javax.sql.DataSource; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - * This class is a wrapper class for the java.sql.Datasource class. - * In additional to the java.sql.Datasourcemethod such getConnection(). - * The ExoDatasource provides 2 other methods: - * DBTableManager getDBTableManager and IDGenerator getIDGenerator() - */ -public class ExoDatasource -{ - - /** - * Logger. - */ - private static final Log LOG = ExoLogger.getLogger("exo.core.component.organization.database.ExoDatasource"); - - final public static int STANDARD_DB_TYPE = 0; - - final public static int HSQL_DB_TYPE = 1; - - final public static int MYSQL_DB_TYPE = 2; - - final public static int DB2_DB_TYPE = 3; - - final public static int DERBY_DB_TYPE = 4; - - final public static int ORACLE_DB_TYPE = 5; - - final public static int SQL_SERVER_TYPE = 6; - - static int totalGetConnect = 0; - - final public static int MSSQL_DB_TYPE = 6; - - final public static int SYSBASE_DB_TYPE = 7; - - final public static int POSTGRES_DB_TYPE = 8; - - private DataSource xaDatasource_; - - private DBTableManager tableManager_; - - private IDGenerator idGenerator_; - - private QueryBuilder queryManager_; - - private String databaseName_; - - private String databaseVersion_; - - private int dbType_ = STANDARD_DB_TYPE; - - Connection conn; - - /** - * The constructor should: - * 1. Keep track of the datasource object - * 2. Create the DBTableManager object base on the datasource information such database type, version - * 3. Create an IDGenerator for the datasource - * - * @param ds - * @throws Exception - */ - public ExoDatasource(final DataSource ds) throws Exception - { - xaDatasource_ = ds; - DatabaseMetaData metaData = ds.getConnection().getMetaData(); - - databaseName_ = metaData.getDatabaseProductName(); - databaseVersion_ = metaData.getDatabaseProductVersion(); - - String dbname = databaseName_.toLowerCase(); - LOG.debug("DB Name: " + dbname); - if (dbname.indexOf("oracle") >= 0) - { - dbType_ = ORACLE_DB_TYPE; - } - else if (dbname.indexOf("hsql") >= 0) - { - dbType_ = HSQL_DB_TYPE; - } - else if (dbname.indexOf("mysql") >= 0) - { - dbType_ = MYSQL_DB_TYPE; - } - else if (dbname.indexOf("derby") >= 0) - { - dbType_ = DERBY_DB_TYPE; - } - else if (dbname.indexOf("db2") >= 0) - { - dbType_ = DB2_DB_TYPE; - } - else if (dbname.indexOf("server") >= 0) - { - dbType_ = SQL_SERVER_TYPE; - } - else - { - dbType_ = STANDARD_DB_TYPE; - } - - tableManager_ = DBTableManager.createDBTableManager(this); - idGenerator_ = new IDGenerator(this); - queryManager_ = new QueryBuilder(dbType_); - } - - /** - * This method should return the real Datasource object - * - * @return - */ - public DataSource getDatasource() - { - return xaDatasource_; - } - - /** - * This method should call the datasource getConnection method and return the - * Connection object. The developer can add some debug code or broadcast an - * event here. - * - * @return - * @throws Exception - */ - public Connection getConnection() throws Exception - { - return xaDatasource_.getConnection(); - } - - /** - * This method should delegate to the method close of the Connection object. - * The developer can add debug or broadcast an event here. - * - * @param conn - * @throws Exception - */ - public void closeConnection(Connection conn) throws Exception - { - conn.close(); - } - - /** - * This method should delegate to the commit() method of the Connection - * object. The developer can add the debug code here - * - * @param conn - * @throws Exception - */ - public void commit(Connection conn) throws Exception - { - conn.setAutoCommit(false); - conn.commit(); - } - - /** - * This method should return the DBTableManager object. The DBTableManager - * object should be initialized in the constructor according to the database - * type and version - * - * @return - */ - public DBTableManager getDBTableManager() - { - return tableManager_; - } - - /** - * This method should return the IDGenerator object, the developer can use the - * id generator to generate an unique long id for an db object - * - * @return - */ - public IDGenerator getIDGenerator() - { - return idGenerator_; - } - - public int getDatabaseType() - { - return dbType_; - } - - public String getDatabaseName() - { - return databaseName_; - } - - public String getDatabaseVersion() - { - return databaseVersion_; - } - - public QueryBuilder getQueryBuilder() - { - return queryManager_; - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java deleted file mode 100644 index bd188a59c..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/HibernateService.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; - -import java.io.Serializable; -import java.util.Collection; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net - * Date: Jun 14, 2003 Time: 1:12:22 PM - */ -public interface HibernateService -{ - public Configuration getHibernateConfiguration(); - - public Session openSession(); - - public Session openNewSession(); - - public void closeSession(Session session); - - /** Close the session that assign to the current thread */ - public void closeSession(); - - SessionFactory getSessionFactory(); - - public Object findOne(Session session, String query, String id) throws Exception; - - public Collection findAll(Session session, String query) throws Exception; - - public Object findExactOne(Session session, String query, String id) throws Exception; - - public Object findOne(Class clazz, java.io.Serializable id) throws Exception; - - public Object findOne(ObjectQuery q) throws Exception; - - public Object create(Object obj) throws Exception; - - public Object update(Object obj) throws Exception; - - public Object save(Object obj) throws Exception; - - public Object remove(Object obj) throws Exception; - - public Object remove(Class clazz, Serializable id) throws Exception; - - public Object remove(Session session, Class clazz, Serializable id) throws Exception; -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/MSSQLServerTableManager.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/MSSQLServerTableManager.java deleted file mode 100644 index 9862b984a..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/MSSQLServerTableManager.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.TableField; - -/** - * Created by The eXo Platform SAS - * Author : Le Bien Thuy lebienthuy@exoplatform.com Apr 4, 2006 - */ -public class MSSQLServerTableManager extends StandardSQLTableManager -{ - - public MSSQLServerTableManager(ExoDatasource datasource) - { - super(datasource); - } - - protected void appendDateField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" DATETIME"); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java deleted file mode 100644 index c2f6bbd4c..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java +++ /dev/null @@ -1,429 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author Tuan Nguyen (tuan08@users.sourceforge.net) - * @since Nov 25, 2004 - * @version $Id: ObjectQuery.java 6006 2006-06-06 10:01:27Z thangvn $ - */ -public class ObjectQuery -{ - - private Class type_; - - private String orderBy_; - - private String groupBy_; - - private List parameters_; - - private List selectParameter_; - - public ObjectQuery(Class type) - { - type_ = type; - parameters_ = new ArrayList(3); - selectParameter_ = new ArrayList(10); - } - - public ObjectQuery addEQ(String field, Object value) - { - if (value != null) - { - parameters_.add(new Parameter(" = ", field, value)); - } - return this; - } - - public ObjectQuery addGT(String field, Object value) - { - if (value != null) - { - parameters_.add(new Parameter(" > ", field, value)); - } - return this; - } - - public ObjectQuery addLT(String field, Object value) - { - if (value != null) - { - parameters_.add(new Parameter(" < ", field, value)); - } - return this; - } - - public ObjectQuery addLIKE(String field, String value) - { - if (value != null && value.length() > 0) - { - parameters_.add(new Parameter(" LIKE ", field, optimizeInputString(value))); - } - return this; - } - - public String optimizeInputString(String value) - { - value = value.replace('*', '%'); - return value; - } - - public ObjectQuery addSUM(String field) - { - selectParameter_.add(new Parameter("SUM", field)); - return this; - } - - public ObjectQuery addSelect(String field) - { - selectParameter_.add(new Parameter("FIELDSELECT", field)); - return this; - } - - public ObjectQuery addSelectCount(String type) - { - selectParameter_.add(new Parameter("COUNTSELECT", type)); - return this; - } - - public ObjectQuery addSelectMaxMin(String op, String field) - { - selectParameter_.add(new Parameter(op, field)); - return this; - } - - public ObjectQuery setGroupBy(String field) - { - groupBy_ = " GROUP BY o." + field; - return this; - } - - public ObjectQuery setAscOrderBy(String field) - { - orderBy_ = " ORDER BY o." + field + " asc"; - return this; - } - - public ObjectQuery setDescOrderBy(String field) - { - orderBy_ = " ORDER BY o." + field + " desc"; - return this; - } - - public String getHibernateQuery() - { - StringBuffer b = new StringBuffer(); - b.append("from o in class ").append(type_.getName()); - if (parameters_.size() > 0) - { - b.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - b.append(" AND "); - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER")) - { - b.append(p.field_).append(p.op_).append("'").append(p.value_).append("'"); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'"); - } - } - else if (p.value_ instanceof Date) - { - SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - String value = ft.format((Date)p.value_); - b.append(" o.").append(p.field_).append(p.op_).append("'").append(value).append("'"); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(p.value_); - } - } - } - if (orderBy_ != null) - b.append(orderBy_); - return b.toString(); - } - - /** - * - * @return - */ - public String getHibernateQueryWithBinding() - { - StringBuffer b = new StringBuffer(); - b.append("from o in class ").append(type_.getName()); - if (parameters_.size() > 0) - { - b.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - b.append(" AND "); - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER")) - { - b.append(p.field_).append(p.op_).append(":").append(p.field_.substring(6, p.field_.length() - 1)) - .append(i); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(":").append(p.field_).append(i); - } - } - else if (p.value_ instanceof Date) - { - b.append(" o.").append(p.field_).append(p.op_).append(":").append(p.field_).append(i); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(p.value_); - } - } - } - - if (orderBy_ != null) - { - b.append(orderBy_); - } - - return b.toString(); - } - - /** - * - * @return - */ - public Map getBindingFields() - { - Map binding = new HashMap(); - - if (parameters_.size() > 0) - { - for (int i = 0; i < parameters_.size(); i++) - { - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER")) - { - binding.put(p.field_.substring(6, p.field_.length() - 1) + i, p.value_); - } - else - { - binding.put(p.field_ + i, p.value_); - } - } - else if (p.value_ instanceof Date) - { - binding.put(p.field_ + i, p.value_); - } - } - } - - return binding; - } - - public String getHibernateGroupByQuery() - { - StringBuffer b = new StringBuffer(); - b.append("select "); - if (selectParameter_.size() > 0) - { - for (int i = 0; i < selectParameter_.size(); i++) - { - Parameter p = selectParameter_.get(i); - if (p.op_.equals("fieldselect")) - { - b.append("o.").append(p.field_); - } - else if (p.op_.equals("countselect")) - { - b.append("COUNT"); - if (!(p.field_.equals("")) || p.field_.length() > 0) - { - b.append("(").append(p.field_).append(" o)"); - } - else - { - b.append("(o)"); - } - } - else - { - b.append(p.op_).append("(").append("o.").append(p.field_).append(") "); - } - if (i < selectParameter_.size() - 1) - b.append(" , "); - } - } - b.append(" from o in class ").append(type_.getName()); - if (parameters_.size() > 0) - { - b.append(" where "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - b.append(" and "); - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'"); - } - else if (p.value_ instanceof Date) - { - SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - String value = ft.format((Date)p.value_); - b.append(" o.").append(p.field_).append(p.op_).append("'").append(value).append("'"); - } - else if (p.op_.equals("MAX") || p.op_.equals("MIN")) - { - b.append(p.op_).append("(").append("o.").append(p.field_).append(") "); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(p.value_); - } - } - } - if (groupBy_ != null) - b.append(groupBy_); - if (orderBy_ != null) - b.append(orderBy_); - return b.toString(); - } - - public String getHibernateCountQuery() - { - StringBuffer b = new StringBuffer(); - b.append("SELECT COUNT(o) FROM o IN CLASS ").append(type_.getName()); - if (parameters_.size() > 0) - { - b.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - b.append(" AND "); - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER")) - { - b.append(p.field_).append(p.op_).append("'").append(p.value_).append("'"); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'"); - } - } - else if (p.value_ instanceof Date) - { - SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - String value = ft.format((Date)p.value_); - b.append(" o.").append(p.field_).append(p.op_).append("'").append(value).append("'"); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(p.value_); - } - } - } - return b.toString(); - } - - /** - * - * @return - */ - public String getHibernateCountQueryWithBinding() - { - StringBuffer b = new StringBuffer(); - b.append("SELECT COUNT(o) FROM o IN CLASS ").append(type_.getName()); - if (parameters_.size() > 0) - { - b.append(" WHERE "); - for (int i = 0; i < parameters_.size(); i++) - { - if (i > 0) - b.append(" AND "); - Parameter p = parameters_.get(i); - if (p.value_ instanceof String) - { - if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER")) - { - b.append(p.field_).append(p.op_).append(":").append(p.field_.substring(6, p.field_.length() - 1)) - .append(i); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(":").append(p.field_).append(i); - } - } - else if (p.value_ instanceof Date) - { - b.append(" o.").append(p.field_).append(p.op_).append(":").append(p.field_).append(i); - } - else - { - b.append(" o.").append(p.field_).append(p.op_).append(p.value_); - } - } - } - return b.toString(); - } - - static class Parameter - { - String op_; - - String field_; - - String label_; - - Object value_; - - Parameter(String op, String field, Object value) - { - op_ = op; - field_ = field; - value_ = value; - } - - Parameter(String op, String field) - { - op_ = op; - field_ = field; - } - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/OracleTableManager.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/OracleTableManager.java deleted file mode 100644 index 8c62a940e..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/OracleTableManager.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.TableField; - -/** - * Created by The eXo Platform SAS - * Author : Le Bien Thuy lebienthuy@exoplatform.com Apr 4, 2006 - */ -public class OracleTableManager extends StandardSQLTableManager -{ - - public OracleTableManager(ExoDatasource datasource) - { - super(datasource); - } - - @Override - protected void appendId(StringBuilder builder) - { - builder.append("ID INT NOT NULL PRIMARY KEY, "); - } - - @Override - protected void appendLongField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" NUMBER"); - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/QueryBuilder.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/QueryBuilder.java deleted file mode 100644 index f527d1e13..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/QueryBuilder.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.Query; -import org.exoplatform.services.database.annotation.Table; -import org.exoplatform.services.database.annotation.TableField; - -import java.lang.reflect.Method; -import java.util.List; - -/** - * Created by The eXo Platform SAS - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Mar 30, 2007 - */ -public class QueryBuilder -{ - - private int databaseType = ExoDatasource.STANDARD_DB_TYPE; - - public QueryBuilder() - { - } - - public QueryBuilder(int dbType) - { - databaseType = dbType; - } - - public String createSelectQuery(Class type, long id) throws Exception - { - Table table = type.getAnnotation(Table.class); - TableField[] fields = table.field(); - - StringBuilder query = new StringBuilder("SELECT "); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - query.append(field.name()); - if (i != fields.length - 1) - query.append(", "); - } - query.append(" FROM ").append(table.name()); - if (id > -1) - query.append(" WHERE ID = ").append(id); - return query.toString(); - } - - public String createUpdateQuery(Class type) throws Exception - { - Table table = type.getAnnotation(Table.class); - TableField[] fields = table.field(); - - StringBuilder query = new StringBuilder("UPDATE ").append(table.name()).append(" SET "); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - query.append(field.name()).append(" = '$").append(field.name()).append('\''); - if (i != fields.length - 1) - query.append(", "); - else - query.append(" WHERE ID = $id"); - } - return query.toString(); - } - - public String createInsertQuery(Class type) throws Exception - { - Table table = type.getAnnotation(Table.class); - TableField[] fields = table.field(); - - StringBuilder query = new StringBuilder("INSERT INTO ").append(table.name()).append("(ID, "); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - query.append(field.name()); - if (i != fields.length - 1) - query.append(", "); - else - query.append(") VALUES($id, "); - } - - for (int i = 0; i < fields.length; i++) - { - query.append("'$").append(fields[i].name()).append('\''); - if (i != fields.length - 1) - query.append(", "); - else - query.append(")"); - } - return query.toString(); - } - - public String createUpdateQuery(Class type, long id) throws Exception - { - Table table = type.getAnnotation(Table.class); - TableField[] fields = table.field(); - - StringBuilder query = new StringBuilder("UPDATE ").append(table.name()).append(" SET "); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - query.append(field.name()).append(" = ?"); - if (i != fields.length - 1) - query.append(", "); - else - query.append(" WHERE ID = ").append(id); - } - - return query.toString(); - } - - public String createInsertQuery(Class clazz, long id) throws Exception - { - Table table = clazz.getAnnotation(Table.class); - TableField[] fields = table.field(); - - StringBuilder query = new StringBuilder("INSERT INTO ").append(table.name()).append("(ID, "); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - query.append(field.name()); - if (i != fields.length - 1) - query.append(", "); - } - query.append(") VALUES(").append(id).append(", "); - - for (int i = 0; i < fields.length; i++) - { - query.append("?"); - if (i != fields.length - 1) - query.append(", "); - else - query.append(")"); - } - return query.toString(); - } - - public String createRemoveQuery(Class type, long id) throws Exception - { - Table table = type.getAnnotation(Table.class); - StringBuilder builder = new StringBuilder("DELETE FROM "); - builder.append(table.name()).append(" WHERE ID = ").append(id).toString(); - return builder.toString(); - } - - public > String getQuery(Class clazz, String name) throws Exception - { - Query query = clazz.getAnnotation(Query.class); - String value = null; - if (query != null && query.name().equals(name)) - value = getQuery(query); - if (value != null) - return value; - List list = ReflectionUtil.getMethod(clazz, name); - for (Method method : list) - { - query = method.getAnnotation(Query.class); - if (query != null && query.name().equals(name)) - value = getQuery(query); - if (value != null) - return value; - } - return null; - } - - private String getQuery(Query query) - { - switch (databaseType) - { - case ExoDatasource.STANDARD_DB_TYPE : - return query.standardSQL(); - case ExoDatasource.HSQL_DB_TYPE : - if (query.hsqlSQL().length() > 0) - return query.hsqlSQL(); - case ExoDatasource.MYSQL_DB_TYPE : - if (query.mysqlSQL().length() > 0) - return query.mysqlSQL(); - case ExoDatasource.MSSQL_DB_TYPE : - if (query.mssqlSQL().length() > 0) - return query.mssqlSQL(); - case ExoDatasource.ORACLE_DB_TYPE : - if (query.oracleSQL().length() > 0) - return query.oracleSQL(); - case ExoDatasource.DB2_DB_TYPE : - if (query.db2SQL().length() > 0) - return query.db2SQL(); - case ExoDatasource.DERBY_DB_TYPE : - if (query.derbySQL().length() > 0) - return query.derbySQL(); - case ExoDatasource.POSTGRES_DB_TYPE : - if (query.postgresSQL().length() > 0) - return query.postgresSQL(); - case ExoDatasource.SYSBASE_DB_TYPE : - if (query.sysbaseSQL().length() > 0) - return query.sysbaseSQL(); - default : - return query.standardSQL(); - } - } - - public String mapDataToSql(String template, String[][] parameters) throws Exception - { - StringBuilder builder = new StringBuilder(); - int i = 0; - int start = 0; - while (i < template.length()) - { - if (template.charAt(i) != '$') - { - i++; - continue; - } - - if (i > 0 && template.charAt(i - 1) == '\\') - { - builder.append(template.subSequence(start, i - 1)); - start = i; - i++; - continue; - } - - if (i == template.length() - 1) - break; - - int j = i + 1; - while (j < template.length()) - { - if (Character.isWhitespace(template.charAt(j))) - break; - if (template.charAt(j) == '\'' && template.charAt(j - 1) != '\\') - break; - if (template.charAt(j) == ',' && template.charAt(j - 1) != '\\') - break; - j++; - } - String name = template.substring(i + 1, j); - start = replace(template, builder, parameters, name, start, i); - i++; - } - if (start > 0 && start < template.length()) - { - builder.append(template.subSequence(start, template.length())); - } - if (builder.length() < 1) - return template.toString(); - return builder.toString(); - } - - private int replace(String template, StringBuilder builder, String[][] parameters, String name, int start, - int current) throws Exception - { - for (int k = 0; k < parameters.length; k++) - { - if (!parameters[k][0].equals(name)) - continue; - builder.append(template.subSequence(start, current)).append(parameters[k][1]); - return current + 1 + name.length(); - } - return start; - } - - public String encode(CharSequence seq) - { - if (seq.length() < 1) - return seq.toString(); - StringBuilder builder = new StringBuilder(); - int i = 0; - int start = 0; - while (i < seq.length()) - { - if (seq.charAt(i) == '\'') - { - builder.append(seq.subSequence(start, i)).append("''"); - start = i + 1; - } - i++; - } - if (start > 0 && start < seq.length()) - { - builder.append(seq.subSequence(start, seq.length())); - } - if (builder.length() < 1) - return seq.toString(); - return builder.toString(); - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionMapper.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionMapper.java deleted file mode 100644 index f78517efa..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionMapper.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.Table; -import org.exoplatform.services.database.annotation.TableField; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.LineNumberReader; -import java.io.Reader; -import java.lang.reflect.Field; -import java.sql.Blob; -import java.sql.Clob; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.Types; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * Created by The eXo Platform SAS - * Author: Nhu Dinh Thuan nhudinhthuan@exoplatform.com Apr 2, 2007 - */ -public class ReflectionMapper implements DBObjectMapper -{ - - public String[][] toParameters(T bean) throws Exception - { - Map map = new HashMap(); - getParameters(bean, bean.getClass(), map); - - String[][] parameters = new String[map.size()][2]; - Iterator iter = map.keySet().iterator(); - int i = 0; - while (iter.hasNext()) - { - parameters[i][0] = iter.next(); - parameters[i][1] = map.get(parameters[i][0]); - i++; - } - return parameters; - } - - private void getParameters(Object bean, Class clazz, Map map) throws Exception - { - Field[] fields = clazz.getDeclaredFields(); - for (int i = 0; i < fields.length; i++) - { - Object value = ReflectionUtil.getValue(bean, fields[i]); - if (value == null) - value = new String(); - if (value instanceof Calendar) - { - value = new java.sql.Date(((Calendar)value).getTimeInMillis()); - } - else if (value instanceof Date) - { - value = new java.sql.Date(((Date)value).getTime()); - } - map.put(fields[i].getName(), value.toString()); - } - if (clazz == DBObject.class) - return; - Class superClazz = clazz.getSuperclass(); - getParameters(superClazz.cast(bean), superClazz, map); - } - - public void mapResultSet(ResultSet resultSet, T bean) throws Exception - { - Class clazz = bean.getClass(); - Table table = clazz.getAnnotation(Table.class); - TableField[] tableFields = table.field(); - - ResultSetMetaData rsmd = resultSet.getMetaData(); - int numberOfColumns = rsmd.getColumnCount(); - for (int i = 1; i <= numberOfColumns; i++) - { - String name = rsmd.getColumnName(i); - TableField tableField = searchTableField(tableFields, name); - if (tableField == null) - continue; - String fieldName = tableField.field().length() == 0 ? tableField.name() : tableField.field(); - Field field = getField(clazz, fieldName); - if (field == null) - continue; - ReflectionUtil.setValue(bean, field, getValue(rsmd.getColumnType(i), resultSet, name)); - } - } - - public void mapUpdate(T bean, PreparedStatement statement) throws Exception - { - Class clazz = bean.getClass(); - Table table = clazz.getAnnotation(Table.class); - TableField[] tableFields = table.field(); - - int i = 1; - for (TableField tableField : tableFields) - { - String fieldName = tableField.field().length() == 0 ? tableField.name() : tableField.field(); - Field field = getField(clazz, fieldName); - if (field == null) - continue; - statement.setObject(i, ReflectionUtil.getValue(bean, field)); - i++; - } - } - - private Field getField(Class clazz, String name) throws Exception - { - Field field = clazz.getDeclaredField(name); - if (field != null) - return field; - if (clazz == DBObject.class) - return null; - return getField(clazz.getSuperclass(), name); - } - - private Object getValue(int type, ResultSet resultSet, String name) throws Exception - { - switch (type) - { - case Types.CLOB : - return loadClob(resultSet, name); - case Types.BLOB : - return loadBlob(resultSet, name); - case Types.BINARY : - return loadBinary(resultSet, name); - default : - return resultSet.getObject(name.toUpperCase()); - } - } - - private synchronized byte[] loadBinary(ResultSet resultSet, String name) throws Exception - { - InputStream input = resultSet.getBinaryStream(name); - if (input == null) - return null; - ByteArrayOutputStream output = loadInputStream(input); - return output.toByteArray(); - } - - private synchronized byte[] loadBlob(ResultSet resultSet, String name) throws Exception - { - Blob clob = resultSet.getBlob(name); - if (clob == null) - return null; - ByteArrayOutputStream output = loadInputStream(clob.getBinaryStream()); - return output.toByteArray(); - } - - private synchronized String loadClob(ResultSet resultSet, String name) throws Exception - { - Clob clob = resultSet.getClob(name); - if (clob == null) - return null; - Reader input = clob.getCharacterStream(); - if (input == null) - return null; - LineNumberReader lineReader = new LineNumberReader(input); - StringBuilder builder = new StringBuilder(); - String line; - while ((line = lineReader.readLine()) != null) - { - builder.append(line); - } - return builder.toString(); - } - - private ByteArrayOutputStream loadInputStream(InputStream input) throws Exception - { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - byte[] data = new byte[1024]; - int available = -1; - while ((available = input.read(data)) > -1) - { - output.write(data, 0, available); - } - return output; - } - - private TableField searchTableField(TableField[] tableFields, String name) - { - for (TableField tableField : tableFields) - { - if (tableField.name().equals(name) && tableField.field().length() > 0) - return tableField; - } - for (TableField field : tableFields) - { - if (field.name().equals(name) && field.field().length() < 1) - return field; - } - return null; - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionUtil.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionUtil.java deleted file mode 100644 index 5b4c8a44c..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/ReflectionUtil.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by The eXo Platform SAS - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Mar 29, 2007 - */ -public class ReflectionUtil -{ - - private static final Log LOG = ExoLogger.getLogger("exo.core.component.database.ReflectionUtil"); - - public final static void setValue(Object bean, Field field, Object value) throws Exception - { - Class clazz = bean.getClass(); - Method method = getMethod("set", field, clazz); - if (method != null) - method.invoke(bean, new Object[]{value}); - method = getMethod("put", field, clazz); - if (method != null) - method.invoke(bean, new Object[]{value}); - field.setAccessible(true); - field.set(bean, value); - } - - public final static Object getValue(Object bean, Field field) throws Exception - { - Class clazz = bean.getClass(); - Method method = getMethod("get", field, clazz); - if (method != null) - return method.invoke(bean, new Object[]{}); - method = getMethod("is", field, clazz); - if (method != null) - return method.invoke(bean, new Object[]{}); - field.setAccessible(true); - return field.get(bean); - } - - public final static Method getMethod(String prefix, Field field, Class clazz) throws Exception - { - StringBuilder name = new StringBuilder(field.getName()); - name.setCharAt(0, Character.toUpperCase(name.charAt(0))); - name.insert(0, prefix); - try - { - Method method = clazz.getDeclaredMethod(name.toString(), new Class[]{}); - return method; - } - catch (Exception e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - return null; - } - - public final static List getMethod(Class clazz, String name) throws Exception - { - Method[] methods = clazz.getDeclaredMethods(); - List list = new ArrayList(); - for (Method method : methods) - { - if (method.getName().equals(name)) - list.add(method); - } - return list; - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/StandardSQLTableManager.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/StandardSQLTableManager.java deleted file mode 100644 index 1f4360ce7..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/StandardSQLTableManager.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.Table; -import org.exoplatform.services.database.annotation.TableField; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - */ -public class StandardSQLTableManager extends DBTableManager -{ - - /** - * Logger. - */ - private static final Log LOG = ExoLogger - .getLogger("exo.core.component.organization.database.StandardSQLTableManager"); - - private ExoDatasource exoDatasource; - - public StandardSQLTableManager(ExoDatasource datasource) - { - exoDatasource = datasource; - } - - public void createTable(Class type, boolean dropIfExist) throws Exception - { - Table table = type.getAnnotation(Table.class); - if (table == null) - { - throw new Exception("Cannot find the annotation for class " + type.getClass().getName()); - } - StringBuilder builder = new StringBuilder(1000); - builder.append("CREATE TABLE ").append(table.name()).append(" ("); - appendId(builder); - TableField[] fields = table.field(); - for (int i = 0; i < fields.length; i++) - { - TableField field = fields[i]; - String fieldType = field.type(); - if ("string".equals(fieldType)) - { - appendStringField(field, builder); - } - else if ("int".equals(fieldType)) - { - appendIntegerField(field, builder); - } - else if ("long".equals(fieldType)) - { - appendLongField(field, builder); - } - else if ("float".equals(fieldType)) - { - appendFloatField(field, builder); - } - else if ("double".equals(fieldType)) - { - appendDoubleField(field, builder); - } - else if ("boolean".equals(fieldType)) - { - appendBooleanField(field, builder); - } - else if ("date".equals(fieldType)) - { - appendDateField(field, builder); - } - else if ("binary".equals(fieldType)) - { - appendBinaryField(field, builder); - } - if (i != fields.length - 1) - builder.append(", "); - } - builder.append(")"); - - // print out the sql string - Connection conn = exoDatasource.getConnection(); - conn.setAutoCommit(false); - Statement statement = conn.createStatement(); - LOG.debug("QUERY: \n " + builder + "\n"); - if (dropIfExist && hasTable(type)) - statement.execute("DROP TABLE IF EXISTS " + table.name()); - statement.execute(builder.toString()); - statement.close(); - conn.commit(); - exoDatasource.closeConnection(conn); - } - - public void dropTable(Class type) throws Exception - { - Table table = type.getAnnotation(Table.class); - if (table == null) - { - throw new Exception("Can not find the annotation for class " + type.getClass().getName()); - } - Connection conn = exoDatasource.getConnection(); - Statement s = conn.createStatement(); - s.execute("DROP TABLE " + table.name()); - s.close(); - conn.commit(); - exoDatasource.closeConnection(conn); - } - - public boolean hasTable(Class type) throws Exception - { - Table table = type.getAnnotation(Table.class); - if (table == null) - { - throw new Exception("Can not find the annotation for class " + type.getClass().getName()); - } - Connection connection = exoDatasource.getConnection(); - Statement statement = connection.createStatement(); - try - { - if (statement.execute("SELECT 1 FROM " + table.name()) == true) - return true; - } - catch (SQLException ex) - { - return false; - } - finally - { - statement.close(); - exoDatasource.closeConnection(connection); - } - return false; - } - - protected void appendId(StringBuilder builder) - { - builder.append("ID BIGINT NOT NULL PRIMARY KEY, "); - } - - protected void appendStringField(TableField field, StringBuilder builder) throws Exception - { - if (field.length() < 1) - { - throw new Exception("You forget to specify the length for field " + field.name() + " , type " + field.type()); - } - builder.append(field.name()).append(" ").append("VARCHAR(" + field.length() + ")"); - if (!field.nullable()) - builder.append(" NOT NULL "); - } - - protected void appendIntegerField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" INTEGER"); - } - - protected void appendLongField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" BIGINT"); - } - - protected void appendFloatField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" REAL"); - } - - protected void appendDoubleField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" DOUBLE"); - } - - protected void appendBooleanField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" BIT"); - } - - protected void appendDateField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" DATE"); - } - - protected void appendDateTimeField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" DATETIME"); - } - - protected void appendBinaryField(TableField field, StringBuilder builder) - { - builder.append(field.name()).append(" VARBINARY"); - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/XResources.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/XResources.java deleted file mode 100644 index 5c5da9588..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/XResources.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import java.util.HashMap; - -/** - * @author Tuan Nguyen (tuan08@users.sourceforge.net) - * @since Oct 22, 2004 - * @version $Id: XResources.java 5332 2006-04-29 18:32:44Z geaz $ - */ -public class XResources extends HashMap -{ - - public Object getResource(Class cl) - { - return get(cl); - } - - public XResources addResource(Class cl, Object resource) - { - put(cl, resource); - return this; - } - - public Object removeResource(Class cl) - { - return remove(cl); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Query.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Query.java deleted file mode 100644 index c5ff23c44..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Query.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Created by The eXo Platform SAS Author : Nhu Dinh Thuan - * nhudinhthuan@exoplatform.com Mar 30, 2007 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.METHOD}) -public @interface Query { - String name(); - - String standardSQL(); - - String mysqlSQL() default ""; - - String mssqlSQL() default ""; - - String oracleSQL() default ""; - - String postgresSQL() default ""; - - String hsqlSQL() default ""; - - String derbySQL() default ""; - - String sysbaseSQL() default ""; - - String db2SQL() default ""; -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Table.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Table.java deleted file mode 100644 index 667164041..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/Table.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Jul 5, 2006 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE}) -public @interface Table { - String name(); - - TableField[] field(); -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/TableField.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/TableField.java deleted file mode 100644 index ab0ae931f..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/annotation/TableField.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Author : Nhu Dinh Thuan nhudinhthuan@exoplatform.com Jul 5, 2006 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE}) -public @interface TableField { - String name(); - - String field() default ""; - - String type(); - - int length() default -1; - - boolean unique() default false; - - boolean nullable() default true; - - String defaultValue() default ""; -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBConnectionInfo.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBConnectionInfo.java deleted file mode 100644 index b7fb814f0..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBConnectionInfo.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.creator; - -import java.util.Map; - -/** - * Class contains needed database connection information. - * - * @author Anatoliy Bazko - * @version $Id$ - */ -public class DBConnectionInfo -{ - private final Map connectionProperties; - - private final String dbName; - - /** - * DBConnectionInfo constructor. - * @param connectionProperties - * connection properties - */ - public DBConnectionInfo(String dbName, Map connectionProperties) - { - this.dbName = dbName; - this.connectionProperties = connectionProperties; - } - - public Map getProperties() - { - return connectionProperties; - } - - public String getDBName() - { - return dbName; - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreator.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreator.java deleted file mode 100644 index d6c3aaf42..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreator.java +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.creator; - -import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.IOUtil; -import org.exoplatform.container.configuration.ConfigurationException; -import org.exoplatform.container.configuration.ConfigurationManager; -import org.exoplatform.container.xml.InitParams; -import org.exoplatform.container.xml.PropertiesParam; -import org.exoplatform.container.xml.Property; -import org.exoplatform.services.database.utils.DialectConstants; -import org.exoplatform.services.database.utils.DialectDetecter; -import org.exoplatform.services.database.utils.JDBCUtils; - -import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -/** - * @author Anatoliy Bazko - * @version $Id$ - */ -public class DBCreator -{ - - private final static String CONNECTION_PROPERTIES = "db-connection"; - - private final static String DRIVER_NAME = "driverClassName"; - - private final static String SERVER_URL = "url"; - - private final static String USERNAME = "username"; - - private final static String PASSWORD = "password"; - - private final static String DB_CREATION_PROPERTIES = "db-creation"; - - private final static String DB_SCRIPT_PATH = "scriptPath"; - - private final static String DB_USERNAME = "username"; - - private final static String DB_PASSWORD = "password"; - - /** - * Database template. - */ - public static final String DATABASE_TEMPLATE = "${database}"; - - /** - * User name template. - */ - public static final String USERNAME_TEMPLATE = "${username}"; - - /** - * Password template. - */ - public static final String PASSWORD_TEMPLATE = "${password}"; - - /** - * Server url. - */ - protected final String serverUrl; - - /** - * Connection properties. - */ - protected final Map connectionProperties; - - /** - * DDL script database creation. - */ - protected final String dbScript; - - /** - * User name for new database. - */ - protected final String dbUserName; - - /** - * User's password. - */ - protected final String dbPassword; - - /** - * DBCreator constructor. - * - * @param serverUrl Server URL - * @param connectionProperties Connection properties - * @param scriptPath Script path - * @param dbUserName DB username - * @param dbPassword DB password - * @param cm configuration manager instance - */ - public DBCreator(String serverUrl, Map connectionProperties, String scriptPath, String dbUserName, - String dbPassword, ConfigurationManager cm) throws ConfigurationException - { - this.serverUrl = serverUrl; - this.connectionProperties = connectionProperties; - this.dbUserName = dbUserName; - this.dbPassword = dbPassword; - this.dbScript = readScript(scriptPath, cm); - } - - /** - * DBCreator constructor. - * - * @param params - * Initializations parameters - * @param cm - * configuration manager instance - */ - public DBCreator(InitParams params, ConfigurationManager cm) throws ConfigurationException - { - if (params == null) - { - throw new ConfigurationException("Initializations parameters expected"); - } - - PropertiesParam prop = params.getPropertiesParam(CONNECTION_PROPERTIES); - - if (prop != null) - { - if (prop.getProperty(DRIVER_NAME) == null) - { - throw new ConfigurationException("driverClassName expected in db-connection properties section"); - } - - serverUrl = prop.getProperty(SERVER_URL); - if (serverUrl == null) - { - throw new ConfigurationException("url expected in db-connection properties section"); - } - - if (prop.getProperty(USERNAME) == null) - { - throw new ConfigurationException("username expected in db-connection properties section"); - } - - if (prop.getProperty(PASSWORD) == null) - { - throw new ConfigurationException("password expected in db-connection properties section"); - } - - // Store all connection properties into single map - Iterator pit = prop.getPropertyIterator(); - connectionProperties = new HashMap(); - while (pit.hasNext()) - { - Property p = pit.next(); - if (!p.getName().equalsIgnoreCase(SERVER_URL)) - { - connectionProperties.put(p.getName(), p.getValue()); - } - } - } - else - { - throw new ConfigurationException("db-connection properties expected in initializations parameters"); - } - - prop = params.getPropertiesParam(DB_CREATION_PROPERTIES); - if (prop != null) - { - String scriptPath = prop.getProperty(DB_SCRIPT_PATH); - if (scriptPath != null) - { - this.dbScript = readScript(scriptPath, cm); - } - else - { - throw new ConfigurationException("scriptPath expected in db-creation properties section"); - } - - this.dbUserName = prop.getProperty(DB_USERNAME); - if (dbUserName == null) - { - throw new ConfigurationException("username expected in db-creation properties section"); - } - - this.dbPassword = prop.getProperty(DB_PASSWORD); - if (dbPassword == null) - { - throw new ConfigurationException("password expected in db-creation properties section"); - } - } - else - { - throw new ConfigurationException("db-creation properties expected in initializations parameters"); - } - } - - /** - * Execute DDL script for new database creation. Database name are passed as parameter, - * user name and password are passed via configuration. In script database name, user name - * and password defined via templates as ${database}, ${username} and ${password} respectively. - * At execution time method replaces templates by real values. - * - * @param dbName - * new database name - * @throws DBCreatorException - * if any error occurs - */ - public DBConnectionInfo createDatabase(final String dbName) throws DBCreatorException - { - Connection conn = openConnection(); - try - { - String dialect = DialectDetecter.detect(conn.getMetaData()); - - if (dialect.equalsIgnoreCase(DialectConstants.DB_DIALECT_MSSQL) - || dialect.equalsIgnoreCase(DialectConstants.DB_DIALECT_SYBASE)) - { - executeInAutoCommitMode(conn, dbName); - } - else - { - executeInBatchMode(conn, dbName); - } - - return constructDBConnectionInfo(dbName, dialect); - } - catch (SQLException e) - { - throw new DBCreatorException("Can't execute SQL script : " + JDBCUtils.getFullMessage(e), e); - } - finally - { - try - { - conn.close(); - } - catch (SQLException e) - { - throw new DBCreatorException("Can't close connection", e); - } - } - } - - /** - * Get database connection info. - * - * @param dbName - * new database name - * @throws DBCreatorException - * if any error occurs or database is not available - */ - public DBConnectionInfo getDBConnectionInfo(String dbName) throws DBCreatorException - { - Connection conn = openConnection(); - try - { - return constructDBConnectionInfo(dbName, DialectDetecter.detect(conn.getMetaData())); - } - catch (SQLException e) - { - throw new DBCreatorException("Can not get database connection information", e); - } - finally - { - try - { - conn.close(); - } - catch (SQLException e) - { - throw new DBCreatorException("Can't close connection", e); - } - } - } - - /** - * Executes DDL script in generic batch mode. - * - * @param conn - * connection to server - * @param dbName - * database name - * @throws SQLException - * if any errors occurs - */ - private void executeInBatchMode(Connection conn, String dbName) throws SQLException - { - Statement statement = conn.createStatement(); - for (String scr : dbScript.split(";")) - { - scr = scr.replace(DATABASE_TEMPLATE, dbName); - scr = scr.replace(USERNAME_TEMPLATE, dbUserName); - scr = scr.replace(PASSWORD_TEMPLATE, dbPassword); - - String s = JDBCUtils.cleanWhitespaces(scr.trim()); - if (s.length() > 0) - { - statement.addBatch(s); - } - } - statement.executeBatch(); - } - - /** - * Construct database url connection depending on specific database. - * - * @param dbName - * database name - * @param dialect - * dialect - * @param serverUrl - * url to DB server - * @param connectionProperties - * connection properties - * @return DBConnectionInfo - */ - private DBConnectionInfo constructDBConnectionInfo(String dbName, String dialect) - { - StringBuilder dbUrl = new StringBuilder(serverUrl); - - if (dialect.equalsIgnoreCase(DialectConstants.DB_DIALECT_MSSQL)) - { - dbUrl.append(serverUrl.endsWith(";") ? "" : ";"); - dbUrl.append("databaseName="); - dbUrl.append(dbName); - dbUrl.append(";"); - } - else if (dialect.equalsIgnoreCase(DialectConstants.DB_DIALECT_ORACLE) - || dialect.equalsIgnoreCase(DialectConstants.DB_DIALECT_ORACLEOCI)) - { - // do nothing - } - else - { - dbUrl.append(serverUrl.endsWith("/") ? "" : "/"); - dbUrl.append(dbName); - } - - // clone connection properties - Map connProperties = new HashMap(); - - for (Entry entry : connectionProperties.entrySet()) - { - connProperties.put(entry.getKey(), entry.getValue()); - } - - // add url to database - connProperties.put(SERVER_URL, dbUrl.toString()); - - return new DBConnectionInfo(dbName, connProperties); - } - - /** - * Executes DDL script with autocommit mode set true. Actually need for MSSQL and Sybase database servers. - * After execution "create database" command newly created database not available for "use" command and - * therefore you can't create user inside. - * - * @param conn - * connection to server - * @param dbName - * database name - * @throws SQLException - * if any errors occurs - */ - private void executeInAutoCommitMode(Connection conn, String dbName) throws SQLException - { - conn.setAutoCommit(true); - for (String scr : dbScript.split(";")) - { - scr = scr.replace(DATABASE_TEMPLATE, dbName); - scr = scr.replace(USERNAME_TEMPLATE, dbUserName); - scr = scr.replace(PASSWORD_TEMPLATE, dbPassword); - - String s = JDBCUtils.cleanWhitespaces(scr.trim()); - if (s.length() > 0) - { - conn.createStatement().executeUpdate(s); - } - } - } - - /** - * Read script resource. - * - * @param scriptPath - * path to the script - * @param cm - * the configuration manager will help to find script in jars - * @return - * script content - * @throws ConfigurationException - * if script not found - */ - private String readScript(String scriptPath, ConfigurationManager cm) throws ConfigurationException - { - try - { - return IOUtil.getStreamContentAsString(cm.getInputStream(scriptPath)); - } - catch (Exception e) - { - try - { - return IOUtil.getFileContentAsString(scriptPath); - } - catch (IOException ioe) - { - throw new ConfigurationException("Can't read script at " + scriptPath, e); - } - } - } - - /** - * Open connection to the DB. - * - * @param connectionProperties - * connection properties - * @return connection - * @throws DBCreatorException - * if can't establish connection to DB - */ - private Connection openConnection() throws DBCreatorException - { - Connection conn = null; - try - { - ClassLoading.forName(connectionProperties.get(DRIVER_NAME), this); - - conn = DriverManager.getConnection(serverUrl, connectionProperties.get(USERNAME), - connectionProperties.get(PASSWORD)); - - return conn; - } - catch (SQLException e) - { - throw new DBCreatorException("Can't establish the JDBC connection to database " + serverUrl, e); - } - catch (ClassNotFoundException e) - { - throw new DBCreatorException("Can't load the JDBC driver " + connectionProperties.get(DRIVER_NAME), e); - } - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreatorException.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreatorException.java deleted file mode 100644 index ab4484ed3..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/creator/DBCreatorException.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.creator; - -/** - * @author Anatoliy Bazko - * @version $Id$ - */ -public class DBCreatorException extends Exception -{ - - /** - * DBCreationException constructor. - */ - public DBCreatorException(Throwable e) - { - super(e); - } - - /** - * DBCreationException constructor. - */ - public DBCreatorException(String message, Throwable e) - { - super(message, e); - } - - /** - * DBCreationException constructor. - */ - public DBCreatorException(String message) - { - super(message); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateConfigurationImpl.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateConfigurationImpl.java deleted file mode 100644 index c1a8284b3..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateConfigurationImpl.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.impl; - -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; -import org.hibernate.service.ServiceRegistry; - -/** - * Created by The eXo Platform SAS . - * - * @author Gennady Azarenkov - * @version $Id: HibernateConfigurationImpl.java 5332 2006-04-29 18:32:44Z geaz - * $ Hibernate's Configuration. One per 'properties-param' entry in - * container configuration - */ -public class HibernateConfigurationImpl extends Configuration { - public SessionFactory buildSessionFactory() { - ServiceRegistry servReg = getStandardServiceRegistryBuilder().applySettings(getProperties()) - .build(); - return super.buildSessionFactory(servReg); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java deleted file mode 100644 index 073f7b8e9..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/HibernateServiceImpl.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.impl; - -import java.io.Serializable; -import java.security.PrivilegedAction; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.hibernate.HibernateException; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; - -import org.exoplatform.commons.exception.ObjectNotFoundException; -import org.exoplatform.container.ExoContainer; -import org.exoplatform.container.component.ComponentRequestLifecycle; -import org.exoplatform.container.xml.InitParams; -import org.exoplatform.container.xml.PropertiesParam; -import org.exoplatform.container.xml.Property; -import org.exoplatform.services.database.HibernateService; -import org.exoplatform.services.database.ObjectQuery; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -/** - * Created by The eXo Platform SAS . - * - * @author Tuan Nguyen tuan08@users.sourceforge.net Date: Jun 14, 2003 - * @author dhodnett $Id: HibernateServiceImpl.java,v 1.3 2004/10/30 02:27:52 - * tuan08 Exp $ - */ -public class HibernateServiceImpl implements HibernateService, ComponentRequestLifecycle { - - public static final String AUTO_DIALECT = "AUTO"; - - private ThreadLocal threadLocal_; - - private static final Log LOG = ExoLogger.getLogger("exo.core.component.database.HibernateServiceImpl"); - - private HibernateConfigurationImpl conf_; - - private SessionFactory sessionFactory_; - - public HibernateServiceImpl(InitParams initParams) { - threadLocal_ = new ThreadLocal(); - PropertiesParam param = initParams.getPropertiesParam("hibernate.properties"); - conf_ = new HibernateConfigurationImpl(); - Iterator properties = param.getPropertyIterator(); - while (properties.hasNext()) { - Property p = (Property) properties.next(); - conf_.setProperty(p.getName(), p.getValue()); - } - - // Replace the potential "java.io.tmpdir" variable in the connection URL - String connectionURL = conf_.getProperty("hibernate.connection.url"); - if (connectionURL != null) { - connectionURL = - connectionURL.replace("${java.io.tmpdir}", System.getProperty("java.io.tmpdir")); - conf_.setProperty("hibernate.connection.url", connectionURL); - } - } - - public Configuration getHibernateConfiguration() { - return conf_; - } - - /** - * @return the SessionFactory - */ - public SessionFactory getSessionFactory() { - if (sessionFactory_ == null) { - sessionFactory_ = conf_.buildSessionFactory(); - } - - return sessionFactory_; - } - - public Session openSession() { - Session currentSession = threadLocal_.get(); - if (currentSession == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("open new hibernate session in openSession()"); - } - currentSession = getSessionFactory().openSession(); - threadLocal_.set(currentSession); - } - return currentSession; - } - - public Session openNewSession() { - Session currentSession = threadLocal_.get(); - if (currentSession != null) { - closeSession(currentSession); - } - currentSession = getSessionFactory().openSession(); - threadLocal_.set(currentSession); - return currentSession; - } - - public void closeSession(Session session) { - if (session == null) { - return; - } - try { - session.close(); - if (LOG.isDebugEnabled()) { - LOG.debug("close hibernate session in openSession(Session session)"); - } - } catch (HibernateException t) { - LOG.error("Error closing hibernate session : " + t.getMessage(), t); - } - threadLocal_.set(null); - } - - final public void closeSession() { - Session s = threadLocal_.get(); - if (s != null) { - s.close(); - } - threadLocal_.set(null); - } - - public Object findExactOne(Session session, String query, String id) throws Exception { - Object res = session.createQuery(query).setParameter("id", id).uniqueResult(); - if (res == null) { - throw new ObjectNotFoundException("Cannot find the object with id: " + id); - } - return res; - } - - public Object findOne(Session session, String query, String id) throws Exception { - List l = session.createQuery(query).setParameter("id", id).list(); - if (l.size() == 0) { - return null; - } else if (l.size() > 1) { - throw new Exception("Expect only one object but found" + l.size()); - } else { - return l.get(0); - } - } - - public Collection findAll(Session session, String query) throws Exception { - List l = session.createQuery(query).list(); - if (l.size() == 0) { - return null; - } else { - return l; - } - } - - @SuppressWarnings("rawtypes") - public Object findOne(Class clazz, Serializable id) throws Exception { - Session session = openSession(); - Object obj = session.get(clazz, id); - return obj; - } - - public Object findOne(ObjectQuery q) throws Exception { - Session session = openSession(); - List l = session.createQuery(q.getHibernateQuery()).list(); - if (l.size() == 0) { - return null; - } else if (l.size() > 1) { - throw new Exception("Expect only one object but found" + l.size()); - } else { - return l.get(0); - } - } - - public Object create(Object obj) throws Exception { - Session session = openSession(); - session.save(obj); - session.flush(); - return obj; - } - - public Object update(Object obj) throws Exception { - Session session = openSession(); - session.update(obj); - session.flush(); - return obj; - } - - public Object save(Object obj) throws Exception { - Session session = openSession(); - session.merge(obj); - session.flush(); - return obj; - } - - public Object remove(Object obj) throws Exception { - Session session = openSession(); - session.delete(obj); - session.flush(); - return obj; - } - - @SuppressWarnings("rawtypes") - public Object remove(Class clazz, Serializable id) throws Exception { - Session session = openSession(); - Object obj = session.get(clazz, id); - session.delete(obj); - session.flush(); - return obj; - } - - @SuppressWarnings("rawtypes") - public Object remove(Session session, Class clazz, Serializable id) throws Exception { - Object obj = session.get(clazz, id); - session.delete(obj); - return obj; - } - - public void startRequest(ExoContainer container) { - - } - - public void endRequest(ExoContainer container) { - closeSession(); - } - - @Override - public boolean isStarted(ExoContainer container) { - Session s = threadLocal_.get(); - return s != null && s.isOpen(); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/XAPoolTxSupportDatabaseService.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/XAPoolTxSupportDatabaseService.java deleted file mode 100644 index 9be06cf3e..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/impl/XAPoolTxSupportDatabaseService.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.impl; - -import org.enhydra.jdbc.pool.StandardXAPoolDataSource; -import org.enhydra.jdbc.standard.StandardXADataSource; -import org.exoplatform.container.xml.InitParams; -import org.exoplatform.container.xml.PropertiesParam; -import org.exoplatform.services.database.DatabaseService; -import org.exoplatform.services.database.ExoDatasource; -import org.exoplatform.services.transaction.TransactionService; - -import java.sql.Connection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.sql.DataSource; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - */ -public class XAPoolTxSupportDatabaseService implements DatabaseService -{ - private HashMap datasources_; - - private ExoDatasource defaultDS_; - - private TransactionService txService_; - - public XAPoolTxSupportDatabaseService(InitParams params, TransactionService txService) throws Exception - { - datasources_ = new HashMap(5); - txService_ = txService; - Iterator i = params.getPropertiesParamIterator(); - while (i.hasNext()) - { - PropertiesParam param = (PropertiesParam)i.next(); - String name = param.getName(); - ExoDatasource ds = new ExoDatasource(createDatasource(param.getProperties())); - datasources_.put(name, ds); - if (defaultDS_ == null) - defaultDS_ = ds; - } - } - - public ExoDatasource getDatasource() throws Exception - { - return defaultDS_; - } - - public ExoDatasource getDatasource(String dsName) throws Exception - { - return datasources_.get(dsName); - } - - public Connection getConnection() throws Exception - { - return defaultDS_.getConnection(); - } - - public Connection getConnection(String dsName) throws Exception - { - ExoDatasource ds = datasources_.get(dsName); - return ds.getConnection(); - } - - public void closeConnection(Connection conn) throws Exception - { - defaultDS_.closeConnection(conn); - } - - public TransactionService getTransactionService() throws Exception - { - return txService_; - } - - private DataSource createDatasource(Map props) throws Exception - { - StandardXADataSource ds = new StandardXADataSource(); - - ds.setDriverName(props.get("connection.driver")); - ds.setUrl(props.get("connection.url")); - ds.setUser(props.get("connection.login")); - ds.setPassword(props.get("connection.password")); - ds.setTransactionManager(txService_.getTransactionManager()); - - StandardXAPoolDataSource pool = new StandardXAPoolDataSource(3); - pool.setMinSize(Integer.parseInt(props.get("connection.min-size"))); - pool.setMaxSize(Integer.parseInt(props.get("connection.max-size"))); - pool.setUser(props.get("connection.login")); - pool.setPassword(props.get("connection.password")); - pool.setDataSource(ds); - return pool; - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/CreateDBSchemaPlugin.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/CreateDBSchemaPlugin.java deleted file mode 100644 index 2e0de838c..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/CreateDBSchemaPlugin.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.jdbc; - -import org.exoplatform.container.component.BaseComponentPlugin; -import org.exoplatform.container.configuration.ConfigurationException; -import org.exoplatform.container.xml.InitParams; -import org.exoplatform.container.xml.ValueParam; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -/** - * Created by The eXo Platform SAS . - * - * @author Gennady - * Azarenkov - * @version $Id: CreateDBSchemaPlugin.java 8017 2006-08-16 15:12:00Z peterit $ - */ -public class CreateDBSchemaPlugin extends BaseComponentPlugin -{ - - protected static final Log LOG = ExoLogger.getLogger("exo.core.component.database.CreateDBSchemaPlugin"); - - private String dataSource; - - private String script; - - public CreateDBSchemaPlugin(InitParams params) throws ConfigurationException - { - ValueParam dsParam = params.getValueParam("data-source"); - ValueParam scriptFileParam = params.getValueParam("script-file"); - ValueParam scriptParam = params.getValueParam("script"); - - if (dsParam == null) - return; - dataSource = dsParam.getValue(); - if (scriptParam != null) - { - script = scriptParam.getValue(); - return; - } - // ClassLoader cl = this.getClass().getClassLoader(); - // //Thread.currentThread().getContextClassLoader(); - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - InputStream is = cl.getResourceAsStream(scriptFileParam.getValue()); - - if (is == null) - is = ClassLoader.getSystemResourceAsStream(scriptFileParam.getValue()); - - if (is == null) - { - try - { - LOG.warn("Db script not found as system resource... Trying to search as file by path: " - + scriptFileParam.getValue()); - is = new FileInputStream(scriptFileParam.getValue()); - LOG.info("Db script found as file by path: " + scriptFileParam.getValue()); - } - catch (IOException e) - { - LOG.warn("Db script not found as file by path: " + scriptFileParam.getValue() + ". " + e.getMessage()); - } - } - - if (is == null) - { - try - { - LOG.warn("Db script not found as system resource... Trying to search as file by url: " - + scriptFileParam.getValue()); - is = new URL(scriptFileParam.getValue()).openStream(); - LOG.info("Db script found as file by url: " + scriptFileParam.getValue()); - } - catch (IOException e) - { - LOG.warn("Db script not found as file by url: " + scriptFileParam.getValue() + ". " + e.getMessage()); - } - } - - if (is == null) - { - throw new ConfigurationException("Could not open input stream for db script " - + cl.getResource(scriptFileParam.getValue())); - } - - try - { - byte[] buf = new byte[is.available()]; - is.read(buf); - script = new String(buf); - } - catch (IOException e) - { - LOG.error(e.getLocalizedMessage(), e); - } - finally - { - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } - } - - public String getDataSource() - { - return dataSource; - } - - public String getScript() - { - return script; - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/DBSchemaCreator.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/DBSchemaCreator.java deleted file mode 100644 index 811106058..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/jdbc/DBSchemaCreator.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.jdbc; - -import org.exoplatform.container.component.ComponentPlugin; -import org.exoplatform.services.database.utils.JDBCUtils; -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; -import org.exoplatform.services.naming.InitialContextInitializer; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.sql.DataSource; - -/** - * Created by The eXo Platform SAS . - * - * @author Gennady Azarenkov - * @version $Id: DBSchemaCreator.java 13053 2007-03-01 06:44:00Z tuan08 $ - */ - -public class DBSchemaCreator -{ - static private String SQL_ALREADYEXISTS = ".*((already exist)|(duplicate key)| (already used)|(ORA-00955))+.*"; - - private final Pattern pattern; - - private static final Log LOG = ExoLogger.getLogger("exo.core.component.database.DBSchemaCreator"); - - private List createDBSchemaPlugins = new ArrayList(); - - public DBSchemaCreator(InitialContextInitializer contextInit) - { - pattern = Pattern.compile(SQL_ALREADYEXISTS, Pattern.CASE_INSENSITIVE); - } - - // for testing only - private DBSchemaCreator(String dsName, String script) throws SQLException, NamingException - { - pattern = Pattern.compile(SQL_ALREADYEXISTS, Pattern.CASE_INSENSITIVE); - createTables(dsName, script); - } - - public void createTables(String dsName, String script) throws NamingException, SQLException - { - InitialContext context = new InitialContext(); - DataSource ds = (DataSource)context.lookup(dsName); - Connection conn = ds.getConnection(); - String sql = ""; - try - { - String[] scripts = JDBCUtils.splitWithSQLDelimiter(script); - - for (String scr : scripts) - { - String s = JDBCUtils.cleanWhitespaces(scr.trim()); - - if (s.length() < 1) - continue; - sql = s; - if (LOG.isDebugEnabled()) - LOG.debug("Execute script: \n[" + sql + "]"); - - try - { - conn.setAutoCommit(false); - conn.createStatement().executeUpdate(sql); - conn.commit(); - } - catch (SQLException e) - { - conn.rollback(); - // already exists check - Matcher aeMatcher = pattern.matcher(e.getMessage().trim()); - if (!aeMatcher.matches()) - throw e; - if (LOG.isDebugEnabled()) - LOG.debug(e.getMessage()); - } - - } - LOG.info("DB schema of DataSource: '" + dsName + "' created succesfully. context " + context); - } - catch (SQLException e) - { - LOG.error("Could not create db schema of DataSource: '" + dsName + "'. Reason: " + e.getMessage() + "; " - + JDBCUtils.getFullMessage(e) + ". Last command: " + sql, e); - } - finally - { - conn.close(); - } - - } - - public void addPlugin(ComponentPlugin plugin) - { - if (plugin instanceof CreateDBSchemaPlugin) - { - CreateDBSchemaPlugin csplugin = (CreateDBSchemaPlugin)plugin; - try - { - createTables(csplugin.getDataSource(), csplugin.getScript()); - createDBSchemaPlugins.add(csplugin); - } - catch (NamingException e) - { - LOG.error(e.getLocalizedMessage(), e); - } - catch (SQLException e) - { - LOG.error(e.getLocalizedMessage(), e); - } - } - } - - public ComponentPlugin removePlugin(String name) - { - return null; - } - - public Collection getPlugins() - { - return createDBSchemaPlugins; - } - - // for testing - public static DBSchemaCreator initialize(String dsName, String script) throws SQLException, NamingException - { - return new DBSchemaCreator(dsName, script); - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/ExoLongID.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/ExoLongID.java deleted file mode 100644 index ee6a8b1a6..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/ExoLongID.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.table; - -import org.exoplatform.services.database.DBObject; -import org.exoplatform.services.database.annotation.Table; -import org.exoplatform.services.database.annotation.TableField; - -/** - * Created by The eXo Platform SAS Mar 16, 2007 - */ -@Table(name = "EXO_LONG_ID", field = { - @TableField(name = "EXO_NAME", type = "string", length = 500, unique = true, nullable = false), - @TableField(name = "EXO_START", type = "long")}) -public class ExoLongID extends DBObject -{ - - final static public long BLOCK_SIZE = 3; - - private String name; - - private long currentBlockId; - - public ExoLongID() - { - } - - public ExoLongID(String name, long start) - { - this.name = name; - this.currentBlockId = start; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public long getCurrentBlockId() - { - return currentBlockId; - } - - public void setCurrentBlockId(long start) - { - this.currentBlockId = start; - } - - public void setNextBlock() - { - this.currentBlockId = this.currentBlockId + BLOCK_SIZE; - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/IDGenerator.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/IDGenerator.java deleted file mode 100644 index 9aabfcdce..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/table/IDGenerator.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.table; - -import org.exoplatform.commons.utils.PageList; -import org.exoplatform.services.database.DAO; -import org.exoplatform.services.database.DBObject; -import org.exoplatform.services.database.DBObjectMapper; -import org.exoplatform.services.database.DBTableManager; -import org.exoplatform.services.database.ExoDatasource; -import org.exoplatform.services.database.annotation.Table; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.HashMap; -import java.util.List; - -/** - * Created by The eXo Platform SAS - * Author : Tuan Nguyen tuan08@users.sourceforge.net Apr 4, 2006 - */ -public class IDGenerator extends DAO -{ - - private HashMap idTrackers_; - - public IDGenerator(ExoDatasource datasource) throws Exception - { - super(datasource, new ExoLongIDMapper()); - idTrackers_ = new HashMap(); - - DBTableManager tableManager = datasource.getDBTableManager(); - if (tableManager.hasTable(ExoLongID.class)) - return; - tableManager.createTable(ExoLongID.class, true); - } - - public ExoLongID loadObjectByName(String name) throws Exception - { - Table table = ExoLongID.class.getAnnotation(Table.class); - StringBuilder builder = new StringBuilder("SELECT EXO_NAME, EXO_START FROM "); - builder.append(table.name()).append(" WHERE EXO_NAME = '").append(name).append('\''); - return loadUnique(builder.toString()); - } - - public long generateLongId(T bean) throws Exception - { - return generateLongId(bean.getClass()); - } - - // Lazy loading - synchronized public long generateLongId(Class type) throws Exception - { - IDTracker idTracker = idTrackers_.get(type); - - if (idTracker == null) - { - ExoLongID instanceID = loadObjectByName(type.getName()); - long currentId = 0; - - if (instanceID == null) - { - instanceID = new ExoLongID(type.getName(), ExoLongID.BLOCK_SIZE); - save(instanceID); - } - else - { - currentId = instanceID.getCurrentBlockId(); - instanceID.setNextBlock(); - update(instanceID); - } - idTracker = new IDTracker(instanceID, currentId); - idTrackers_.put(type, idTracker); - } - - // System.out.println("+++>>" + load(1)) ; - - long generatedId = ++idTracker.currentId; - if (generatedId > idTracker.blockTracker.getCurrentBlockId() + ExoLongID.BLOCK_SIZE) - { - idTracker.blockTracker.setNextBlock(); - update(idTracker.blockTracker); - } - return generatedId; - } - - public void restartTracker() - { - idTrackers_.clear(); - } // for testing - - static private class IDTracker - { - - private ExoLongID blockTracker; - - private long currentId; - - private IDTracker(ExoLongID dbobject, long id) - { - blockTracker = dbobject; - currentId = id; - } - } - - static public class ExoLongIDMapper implements DBObjectMapper - { - - public String[][] toParameters(ExoLongID bean) throws Exception - { - return null; - } - - public void mapUpdate(ExoLongID bean, PreparedStatement pstm) throws Exception - { - pstm.setString(1, bean.getName()); - pstm.setLong(2, bean.getCurrentBlockId()); - } - - public void mapResultSet(ResultSet res, ExoLongID bean) throws Exception - { - bean.setName(res.getString(1)); - bean.setCurrentBlockId(res.getLong(2)); - } - } - - public ExoLongID createInstance() throws Exception - { - return new ExoLongID(); - } - - public ExoLongID load(long id) throws Exception - { - return null; - } - - public PageList loadAll() throws Exception - { - return null; - } - - public ExoLongID remove(long id) throws Exception - { - return null; - } - - public void remove(ExoLongID bean) throws Exception - { - } - - public void save(ExoLongID bean) throws Exception - { - } - - public void save(List beans) throws Exception - { - } - - public void update(ExoLongID bean) throws Exception - { - } - - public void update(List beans) throws Exception - { - } -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectConstants.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectConstants.java deleted file mode 100644 index 4340d9728..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectConstants.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2012 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.utils; - -/** - * @author Anatoliy Bazko - * @version $Id: DialectConstants.java 34360 2009-07-22 23:58:59Z tolusha $ - */ -public class DialectConstants -{ - /** - * DB_DIALECT_AUTO. - */ - public final static String DB_DIALECT_AUTO = "AUTO"; - - /** - * DB_DIALECT_GENERIC. - */ - public final static String DB_DIALECT_GENERIC = "GENERIC"; - - /** - * DB_DIALECT_ORACLE. - */ - public final static String DB_DIALECT_ORACLE = "ORACLE"; - - /** - * DB_DIALECT_ORACLEOCI. - */ - public final static String DB_DIALECT_ORACLEOCI = "ORACLE-OCI"; - - /** - * DB_DIALECT_PGSQL. - */ - public final static String DB_DIALECT_PGSQL = "PGSQL"; - - /** - * DB_DIALECT_PGSQL_SCS. - */ - public final static String DB_DIALECT_PGSQL_SCS = "PGSQL-SCS"; - - /** - * DB_DIALECT_MYSQL. - */ - public final static String DB_DIALECT_MYSQL = "MYSQL"; - - /** - * DB_DIALECT_MYSQL_UTF8. - */ - public final static String DB_DIALECT_MYSQL_UTF8 = "MYSQL-UTF8"; - - /** - * DB_DIALECT_MYSQL_NDB. - */ - public final static String DB_DIALECT_MYSQL_NDB = "MYSQL-NDB"; - - /** - * DB_DIALECT_MYSQL_NDB_UTF8. - */ - public final static String DB_DIALECT_MYSQL_NDB_UTF8 = "MYSQL-NDB-UTF8"; - - /** - * DB_DIALECT_MYSQL_MYISAM. - */ - public final static String DB_DIALECT_MYSQL_MYISAM = "MYSQL-MyISAM"; - - /** - * DB_DIALECT_MYSQL_MYISAM_UTF8. - */ - public final static String DB_DIALECT_MYSQL_MYISAM_UTF8 = "MYSQL-MyISAM-UTF8"; - - /** - * DB_DIALECT_HSQLDB. - */ - public final static String DB_DIALECT_HSQLDB = "HSQLDB"; - - /** - * DB_DIALECT_DB2. - */ - public final static String DB_DIALECT_DB2 = "DB2"; - - - /** - * DB_DIALECT_DB2V8. - */ - public final static String DB_DIALECT_DB2V8 = "DB2V8"; - - /** - * DB_DIALECT_MSSQL. - */ - public final static String DB_DIALECT_MSSQL = "MSSQL"; - - /** - * DB_DIALECT_SYBASE. - */ - public final static String DB_DIALECT_SYBASE = "SYBASE"; - - /** - * DB_DIALECT_DERBY. - */ - public final static String DB_DIALECT_DERBY = "DERBY"; - - /** - * DB_DIALECT_INGRES. - */ - public final static String DB_DIALECT_INGRES = "INGRES"; - - /** - * DB_DIALECT_H2. - */ - public final static String DB_DIALECT_H2 = "H2"; - - /** - * DB_DIALECTS. - */ - public final static String[] DB_DIALECTS = {DB_DIALECT_GENERIC, DB_DIALECT_ORACLE, DB_DIALECT_ORACLEOCI, - DB_DIALECT_PGSQL, DB_DIALECT_PGSQL_SCS, DB_DIALECT_MYSQL, DB_DIALECT_MYSQL_NDB, DB_DIALECT_MYSQL_NDB_UTF8, - DB_DIALECT_HSQLDB, DB_DIALECT_DB2, DB_DIALECT_DB2V8, DB_DIALECT_MSSQL, DB_DIALECT_SYBASE, - DB_DIALECT_DERBY, DB_DIALECT_MYSQL_UTF8, DB_DIALECT_INGRES, DB_DIALECT_H2, DB_DIALECT_MYSQL_MYISAM, - DB_DIALECT_MYSQL_MYISAM_UTF8}; - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectDetecter.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectDetecter.java deleted file mode 100644 index d005fc642..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/DialectDetecter.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.utils; - -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.sql.DatabaseMetaData; -import java.sql.SQLException; - -/** - * JDBC dialect detecter based on database metadata and vendor product name. - * - * @author Peter Nedonosko - * @version $Id:DialectDetecter.java 1111 2010-01-01 00:00:01Z pnedonosko $ - */ -public class DialectDetecter -{ - - /** - * Logger. - */ - private final static Log LOG = ExoLogger.getLogger("exo.core.component.database.DialectDetecter"); - - /** - * Detect databse dialect using JDBC metadata. Based on code of - * http://svn.jboss.org/repos/hibernate/core/trunk/core/src/main/java/org/hibernate/ - * dialect/resolver/StandardDialectResolver.java - * - * @param metaData {@link DatabaseMetaData} - * @return String - * @throws SQLException if error occurs - */ - public static String detect(final DatabaseMetaData metaData) throws SQLException - { - final String databaseName = metaData.getDatabaseProductName(); - - if ("HSQL Database Engine".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_HSQLDB; - } - - if ("H2".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_H2; - } - - if ("MySQL".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_MYSQL; - } - - if ("PostgreSQL".equals(databaseName)) - { - int majorVersion = metaData.getDatabaseMajorVersion(); - int minorVersion = metaData.getDatabaseMinorVersion(); - - return (majorVersion > 9 || (majorVersion == 9 && minorVersion >= 1)) ? DialectConstants.DB_DIALECT_PGSQL_SCS - : DialectConstants.DB_DIALECT_PGSQL; - } - - if ("EnterpriseDB".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_PGSQL_SCS; - } - - if ("Apache Derby".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_DERBY; - } - - if ("ingres".equalsIgnoreCase(databaseName)) - { - return DialectConstants.DB_DIALECT_INGRES; - } - - if (databaseName.startsWith("Microsoft SQL Server")) - { - return DialectConstants.DB_DIALECT_MSSQL; - } - - if ("Sybase SQL Server".equals(databaseName) || "Adaptive Server Enterprise".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_SYBASE; - } - - if (databaseName.startsWith("Adaptive Server Anywhere")) - { - return DialectConstants.DB_DIALECT_SYBASE; - } - - if (databaseName.startsWith("DB2/")) - { - return detectDB2Dialect(metaData); - } - - if ("Oracle".equals(databaseName)) - { - return DialectConstants.DB_DIALECT_ORACLE; - } - - return DialectConstants.DB_DIALECT_GENERIC; - } - - /** - * Detects DB2 dialect. - */ - private static String detectDB2Dialect(final DatabaseMetaData metaData) throws SQLException - { - if (LOG.isDebugEnabled()) - { - LOG.debug("DB Major version = " + metaData.getDatabaseMajorVersion() + ", DB Minor version = " - + metaData.getDatabaseMinorVersion() + ", DB Product version = " + metaData.getDatabaseProductVersion()); - } - - int majorVersion = metaData.getDatabaseMajorVersion(); - if (majorVersion < 9) - { - if (LOG.isDebugEnabled()) - { - LOG.debug("The dialect " + DialectConstants.DB_DIALECT_DB2V8 - + " will be used as the major version is lower than 9."); - } - - return DialectConstants.DB_DIALECT_DB2V8; - } - else - { - if (LOG.isDebugEnabled()) - { - LOG.debug("The dialect " + DialectConstants.DB_DIALECT_DB2 - + " will be used as the major version is greater or equal to 9"); - } - - return DialectConstants.DB_DIALECT_DB2; - } - } - -} diff --git a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/JDBCUtils.java b/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/JDBCUtils.java deleted file mode 100644 index acc54b134..000000000 --- a/exo.core.component.database/src/main/java/org/exoplatform/services/database/utils/JDBCUtils.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright (C) 2011 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database.utils; - -import org.exoplatform.services.log.ExoLogger; -import org.exoplatform.services.log.Log; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import javax.sql.DataSource; - -/** - * This class provides JDBC tools - * - * @author Nicolas Filotto - * @version $Id$ - */ -/** - * @author Anatoliy Bazko - * @version $Id: JDBCUtils.java 34360 2009-07-22 23:58:59Z tolusha $ - * - */ -public class JDBCUtils -{ - private static final Log LOG = ExoLogger.getLogger("exo.core.component.database.JDBCUtils"); - - /** - * Default SQL delimiter. - */ - public static final String SQL_DELIMITER = ";"; - - /** - * SQL delimiter comment prefix. - */ - public static final String SQL_DELIMITER_COMMENT_PREFIX = "/*$DELIMITER:"; - - public static final String SQL_DELIMITER_COMMENT_SUFFIX = "*/"; - - private JDBCUtils() - { - } - - /** - * Indicates whether or not a given table exists - * - * @param tableName - * the name of the table to check - * @param con - * the connection to use - * @return true if it exists, false otherwise - */ - public static boolean tableExists(String tableName, Connection con) - { - Statement stmt = null; - ResultSet trs = null; - try - { - String dialect = DialectDetecter.detect(con.getMetaData()); - String query; - if (dialect.startsWith(DialectConstants.DB_DIALECT_MYSQL) || dialect.startsWith(DialectConstants.DB_DIALECT_PGSQL)) - { - query = "SELECT count(*) from (SELECT 1 FROM " + tableName + " LIMIT 1) T"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_ORACLE)) - { - query = "SELECT count(*) from (SELECT 1 FROM " + tableName + " WHERE ROWNUM = 1) T"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_DB2) || dialect.startsWith(DialectConstants.DB_DIALECT_DERBY) - || dialect.startsWith(DialectConstants.DB_DIALECT_INGRES)) - { - query = "SELECT count(*) from (SELECT 1 FROM " + tableName + " FETCH FIRST 1 ROWS ONLY) T"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_MSSQL)) - { - query = "SELECT count(*) from (SELECT TOP (1) 1 as C FROM " + tableName + ") T"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_SYBASE)) - { - query = "SELECT count(*) from (SELECT TOP 1 1 FROM " + tableName + ") T"; - } - else - { - query = "SELECT count(*) FROM " + tableName; - } - stmt = con.createStatement(); - trs = stmt.executeQuery(query); - return trs.next(); - } - catch (SQLException e) - { - if (LOG.isDebugEnabled()) - { - LOG.debug("SQLException occurs while checking the table " + tableName, e); - } - return false; - } - finally - { - freeResources(trs, stmt, null); - } - } - - /** - * Retrieves the full message from SQLException. - * - * @param exception - * SQLException which will be parsed - */ - public static String getFullMessage(SQLException exception) - { - StringBuilder errorTrace = new StringBuilder(exception.getMessage()); - - SQLException next = exception; - while (next != null) - { - errorTrace.append("; "); - errorTrace.append(next.getMessage()); - - next = next.getNextException(); - } - - Throwable cause = exception.getCause(); - - return errorTrace + (cause != null ? " (Cause: " + cause.getMessage() + ")" : ""); - } - - /** - * Replace whitespace characters with space character. - */ - public static String cleanWhitespaces(String string) - { - if (string != null) - { - char[] cc = string.toCharArray(); - for (int ci = cc.length - 1; ci > 0; ci--) - { - if (Character.isWhitespace(cc[ci])) - { - cc[ci] = ' '; - } - } - return new String(cc); - } - return string; - } - - /** - * Split string resource with SQL Delimiter. Delimiter can be taken from resource - * at the begining of the first line. It surrounded with {@link #SQL_DELIMITER_COMMENT_PREFIX} - * and {@link #SQL_DELIMITER_COMMENT_SUFFIX}. Otherwise the default delimiter will - * be used {@link #SQL_DELIMITER}. - */ - public static String[] splitWithSQLDelimiter(String resource) - { - if (resource.startsWith(SQL_DELIMITER_COMMENT_PREFIX)) - { - try - { - String scripts = resource.substring(SQL_DELIMITER_COMMENT_PREFIX.length()); - - int endOfDelimIndex = scripts.indexOf(SQL_DELIMITER_COMMENT_SUFFIX); - String delim = scripts.substring(0, endOfDelimIndex).trim(); - - scripts = scripts.substring(endOfDelimIndex + 2).trim(); - return scripts.split(delim); - } - catch (IndexOutOfBoundsException e) - { - LOG.warn("Error of parse SQL-script file. Invalid DELIMITER configuration. Valid format is '" - + SQL_DELIMITER_COMMENT_PREFIX + "XXX*/' at begin of the SQL-script file, where XXX - DELIMITER string." - + " Spaces will be trimed. ", e); - LOG.info("Using DELIMITER:[" + SQL_DELIMITER + "]"); - - return resource.split(SQL_DELIMITER); - } - } - else - { - return resource.split(SQL_DELIMITER); - } - } - - /** - * Returns appropriate blob type field for specific database. - */ - public static String getAppropriateBlobType(DataSource dataSource) throws SQLException - { - String dialect = resolveDialect(dataSource); - - if (dialect.startsWith(DialectConstants.DB_DIALECT_HSQLDB)) - { - return "VARBINARY(65535)"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_MYSQL)) - { - return "LONGBLOB"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_PGSQL)) - { - return "bytea"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_MSSQL)) - { - return "VARBINARY(MAX)"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_SYBASE)) - { - return "IMAGE"; - } - else if (dialect.startsWith(DialectConstants.DB_DIALECT_INGRES)) - { - return "long byte"; - } - - return "BLOB"; - } - - /** - * Returns appropriate timestamp type field for specific database. - */ - public static String getAppropriateTimestamp(DataSource dataSource) throws SQLException - { - String dialect = resolveDialect(dataSource); - - if (dialect.startsWith(DialectConstants.DB_DIALECT_ORACLE)) - { - return "NUMBER(19, 0)"; - } - - return "BIGINT"; - } - - /** - * Returns appropriate char type field for specific database. - */ - public static String getAppropriateCharType(DataSource dataSource) throws SQLException - { - String dialect = resolveDialect(dataSource); - - if (dialect.startsWith(DialectConstants.DB_DIALECT_ORACLE)) - { - // Oracle suggests the use VARCHAR2 instead of VARCHAR while declaring data type. - return "VARCHAR2(512)"; - } - - return "VARCHAR(512)"; - } - - /** - * Returns dialect one of dialect {@link DialectConstants} based on {@link DataSource} name. - */ - public static String resolveDialect(final DataSource dataSource) throws SQLException - { - Connection jdbcConn = dataSource.getConnection(); - - try - { - return DialectDetecter.detect(jdbcConn.getMetaData()); - } - finally - { - freeResources(null, null, jdbcConn); - } - } - - /** - * Closes database related resources. - */ - public static void freeResources(ResultSet resultSet, Statement statement, Connection conn) - { - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - LOG.error(e.getMessage(), e); - } - } - - if (statement != null) - { - try - { - statement.close(); - } - catch (SQLException e) - { - LOG.error(e.getMessage(), e); - } - } - - if (conn != null) - { - try - { - conn.close(); - } - catch (SQLException e) - { - LOG.error(e.getMessage(), e); - } - } - } - -} diff --git a/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.db.xml b/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.db.xml deleted file mode 100644 index b578c0ea1..000000000 --- a/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.db.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - org.exoplatform.services.naming.InitialContextInitializer - - bind.datasource - addPlugin - org.exoplatform.services.naming.BindReferencePlugin - - - bind-name - jdbcexo - - - class-name - javax.sql.DataSource - - - factory - org.apache.commons.dbcp.BasicDataSourceFactory - - - ref-addresses - ref-addresses - - - - - - - - - - diff --git a/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.hsql.xml b/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.hsql.xml deleted file mode 100644 index 95e989a44..000000000 --- a/exo.core.component.database/src/main/resources/conf/portal/jdbcexo-configuration.hsql.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - org.exoplatform.services.naming.InitialContextInitializer - - bind.datasource - addPlugin - org.exoplatform.services.naming.BindReferencePlugin - - - bind-name - jdbexo - - - class-name - javax.sql.DataSource - - - factory - org.apache.commons.dbcp.BasicDataSourceFactory - - - ref-addresses - ref-addresses - - - - - - - - - - diff --git a/exo.core.component.database/src/main/sql/create.sql b/exo.core.component.database/src/main/sql/create.sql deleted file mode 100644 index 03335a6fb..000000000 --- a/exo.core.component.database/src/main/sql/create.sql +++ /dev/null @@ -1,16 +0,0 @@ ---table name for mysql on linux is case sensitive -create table hibernate_unique_key ( - next_hi BIGINT - ); -INSERT INTO hibernate_unique_key(next_hi) VALUES ( 100 ); -/* -create table RESOURCE_BUNDLE_DATA ( - id VARCHAR(128) NOT NULL, - name VARCHAR(128) NOT NULL, - language VARCHAR(25), - country VARCHAR(25), - variant VARCHAR(25), - resourceType VARCHAR(128) NOT NULL, - data TEXT NOT NULL, - PRIMARY KEY (id)); -*/ diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/DBCreatorTest.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/DBCreatorTest.java deleted file mode 100644 index 98a8af237..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/DBCreatorTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -import org.exoplatform.container.PortalContainer; -import org.exoplatform.services.database.jdbc.CreateDBSchemaPlugin; -import org.exoplatform.services.database.jdbc.DBSchemaCreator; - -import java.util.List; - -/** - * Created by The eXo Platform SAS . - * - * @author Gennady Azarenkov - * @version $Id: DBCreatorTest.java 5569 2006-05-17 12:48:47Z lautarul $ - */ -public class DBCreatorTest extends TestCase -{ - - // private StandaloneContainer container; - private DBSchemaCreator dbcreator; - - public void setUp() throws Exception - { - // >>>>> to avoid two top-level container exception - // StandaloneContainer.setConfigurationPath("src/main/java/conf/standalone/test-configuration.xml"); - // container = StandaloneContainer.getInstance(); - PortalContainer container = PortalContainer.getInstance(); - dbcreator = (DBSchemaCreator)container.getComponentInstanceOfType(DBSchemaCreator.class); - } - - public void testConf() throws Exception - { - // DBSchemaCreator dbcreator = (DBSchemaCreator) container.getComponentInstanceOfType(DBSchemaCreator.class); - List plugins = (List)dbcreator.getPlugins(); - assertFalse(plugins.isEmpty()); - - assertTrue(plugins.get(0) instanceof CreateDBSchemaPlugin); - CreateDBSchemaPlugin plugin = (CreateDBSchemaPlugin)plugins.get(0); - - assertNotNull(plugin.getDataSource()); - assertNotNull(plugin.getScript()); - } - - public void tearDown() throws Exception - { - // container.stop(); - } -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/Mock.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/Mock.java deleted file mode 100644 index 73694d8c6..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/Mock.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import org.exoplatform.services.database.annotation.Table; -import org.exoplatform.services.database.annotation.TableField; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.Calendar; -import java.util.HashMap; - -/** - * Created by The eXo Platform SAS Author : Tuan Nguyen - * tuan.nguyen@exoplatform.com Mar 16, 2007 - */ -@Table(name = "MockTable", field = { - @TableField(name = "name", type = "string", length = 500, unique = true, nullable = false), - @TableField(name = "status", type = "int", defaultValue = "0"), @TableField(name = "start", type = "date"), - @TableField(name = "pass", type = "boolean", defaultValue = "false")}) -public class Mock extends DBObject -{ - - private String name; - - private int status; - - private Calendar start = Calendar.getInstance(); - - private boolean pass = false; - - public Mock() - { - } - - public Mock(String name, int status) - { - this.name = name; - this.status = status; - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public boolean isPass() - { - return pass; - } - - public void setPass(boolean pass) - { - this.pass = pass; - } - - public Calendar getStart() - { - return start; - } - - public void setStart(Calendar start) - { - this.start = start; - } - - public int getStatus() - { - return status; - } - - public void setStatus(int status) - { - this.status = status; - } - - static public class MockMapper implements DBObjectMapper - { - - public String[][] toParameters(Mock bean) throws Exception - { - java.sql.Date date = new java.sql.Date(bean.getStart().getTimeInMillis()); - return new String[][]{{"id", String.valueOf(bean.getDBObjectId())}, {"name", bean.getName()}, - {"status", String.valueOf(bean.getStatus())}, {"start", date.toString()}, - {"pass", String.valueOf(bean.isPass())}}; - } - - public void mapResultSet(ResultSet res, Mock bean) throws Exception - { - bean.setName(res.getString("name")); - bean.setPass(res.getBoolean("pass")); - Calendar calendar = Calendar.getInstance(); - res.getDate("start", calendar); - bean.setStart(calendar); - bean.setStatus(res.getInt("status")); - } - - public void mapUpdate(Mock bean, PreparedStatement statement) throws Exception - { - statement.setString(1, bean.getName()); - statement.setInt(2, bean.getStatus()); - statement.setDate(3, new java.sql.Date(bean.getStart().getTimeInMillis())); - statement.setBoolean(4, bean.isPass()); - } - } - - /** - * Query( name = "GetUserByUserName" oracle = - * "select * from user where username= N'?' and fname = $fname" + - * ".............................................................." + - * ".............................................................." , - * standard="......................................................." , ) - */ - public void getUserByName(String s) - { - HashMap values = new HashMap(); - values.put("username", s); - values.put("fname", s); - // Object[] params = { - // {"username", "value"}, - // {"username", "value"}, - // {"username", "value"} - // } - // String query = createQuery("GetUserByUserName", params) ; - } - -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDAO.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDAO.java deleted file mode 100644 index cc8a8dc85..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDAO.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -import org.exoplatform.services.listener.ListenerService; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by The eXo Platform SAS Author : Tuan Nguyen - * tuan.nguyen@exoplatform.com Mar 27, 2007 - */ -public class TestDAO extends TestCase -{ - - public void testDummy() - { - // empty, to doesn't fail during the tests - } - - private String printQueryResult(DatabaseService service) throws Exception - { - Connection conn = service.getConnection(); - Statement statement = conn.createStatement(); - String output = "\nQuery result: \n"; - ResultSet rs = statement.executeQuery("SELECT * FROM ExoLongId"); - while (rs.next()) - { - output += rs.getString(1) + "\n" + rs.getString(2) + "\n" + rs.getString(3) + "====\n"; - } - - return output; - } - - private void queries(DatabaseService service) throws Exception - { - } -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java deleted file mode 100644 index 6da600463..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -import org.exoplatform.container.PortalContainer; -import org.exoplatform.container.configuration.ConfigurationManager; -import org.exoplatform.services.database.creator.DBConnectionInfo; -import org.exoplatform.services.database.creator.DBCreator; -import org.exoplatform.services.naming.InitialContextInitializer; - -import java.sql.Connection; -import java.util.HashMap; -import java.util.Map; - -import javax.sql.DataSource; - -/** - * @author Anatoliy Bazko - * @version $Id$ - */ -public class TestDBCreator extends TestCase -{ - - protected DBCreator dbCreator; - - private InitialContextInitializer initContext; - - private PortalContainer container; - - @Override - public void setUp() throws Exception - { - container = PortalContainer.getInstance(); - dbCreator = (DBCreator)container.getComponentInstanceOfType(DBCreator.class); - initContext = (InitialContextInitializer)container.getComponentInstanceOfType(InitialContextInitializer.class); - } - - public void testDBCreate() throws Exception - { - assertNotNull(dbCreator); - - DBConnectionInfo dbInfo = dbCreator.createDatabase("testdb"); - DBConnectionInfo dbInfo1 = dbCreator.getDBConnectionInfo("testdb"); - - Map connProps = dbInfo.getProperties(); - Map connProps1 = dbInfo1.getProperties(); - - assertEquals(connProps.get("driverClassName"), connProps1.get("driverClassName")); - assertEquals(connProps.get("username"), connProps1.get("username")); - assertEquals(connProps.get("url"), connProps1.get("url")); - assertEquals(connProps.get("password"), connProps1.get("password")); - - Map refAddr = dbInfo.getProperties(); - - initContext.getInitialContextBinder().bind("testjdbcjcr", "javax.sql.DataSource", - "org.apache.commons.dbcp.BasicDataSourceFactory", null, - refAddr); - - DataSource ds = (DataSource)initContext.getInitialContext().lookup("testjdbcjcr"); - assertNotNull(ds); - - Connection conn = ds.getConnection(); - assertNotNull(conn); - } - - public void testDBCreateWithSpecificProperties() throws Exception - { - assertNotNull(dbCreator); - - String serverUrl = "jdbc:hsqldb:file:target/temp/data/dbcreator_test"; - Map connectionProperties = new HashMap(); - connectionProperties.put("driverClassName", "org.hsqldb.jdbcDriver"); - connectionProperties.put("username", "sa"); - connectionProperties.put("password", ""); - - ConfigurationManager cm = (ConfigurationManager)container.getComponentInstanceOfType(ConfigurationManager.class); - DBCreator dbCreator = - new DBCreator(serverUrl, connectionProperties, "classpath:/dbcreator/test.sql", "sa", "", cm); - - DBConnectionInfo dbInfo = dbCreator.createDatabase("testdb"); - DBConnectionInfo dbInfo1 = dbCreator.getDBConnectionInfo("testdb"); - - Map connProps = dbInfo.getProperties(); - Map connProps1 = dbInfo1.getProperties(); - - assertEquals(connProps.get("driverClassName"), connProps1.get("driverClassName")); - assertEquals(connProps.get("username"), connProps1.get("username")); - assertEquals(connProps.get("url"), connProps1.get("url")); - assertEquals(connProps.get("password"), connProps1.get("password")); - - Map refAddr = dbInfo.getProperties(); - - initContext.getInitialContextBinder().bind("testjdbcjcr2", "javax.sql.DataSource", - "org.apache.commons.dbcp.BasicDataSourceFactory", null, - refAddr); - - DataSource ds = (DataSource)initContext.getInitialContext().lookup("testjdbcjcr2"); - assertNotNull(ds); - - Connection conn = ds.getConnection(); - assertNotNull(conn); - } - - public void testDBCreateMultiThread() throws Exception - { - DBCreateThread[] queue = new DBCreateThread[100]; - - for (int i = 0; i < queue.length; i++) - { - queue[i] = new DBCreateThread(i); - queue[i].start(); - } - - for (int i = 0; i < queue.length; i++) - { - queue[i].join(); - } - - for (int i = 0; i < queue.length; i++) - { - DataSource ds = (DataSource)initContext.getInitialContext().lookup("testjdbcjcr_" + i); - assertNotNull(ds); - - Connection conn = ds.getConnection(); - assertNotNull(conn); - } - - } - - class DBCreateThread extends Thread - { - - private final int threadNumber; - - DBCreateThread(int threadNumber) - { - this.threadNumber = threadNumber; - } - - /** - * {@inheritDoc} - */ - @Override - public void run() - { - try - { - DBConnectionInfo dbInfo = dbCreator.createDatabase("testdb_" + threadNumber); - - Map refAddr = dbInfo.getProperties(); - - initContext.getInitialContextBinder().bind("testjdbcjcr_" + threadNumber, "javax.sql.DataSource", - "org.apache.commons.dbcp.BasicDataSourceFactory", null, refAddr); - } - catch (Exception e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDatabaseService.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDatabaseService.java deleted file mode 100644 index 766efbd0c..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDatabaseService.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -import org.exoplatform.container.PortalContainer; -import org.exoplatform.services.database.impl.XAPoolTxSupportDatabaseService; -import org.exoplatform.services.database.table.ExoLongID; -import org.exoplatform.services.database.table.IDGenerator; -import org.exoplatform.services.transaction.TransactionService; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; - -import javax.transaction.UserTransaction; - -/** - * Thu, May 15, 2003 @ - * @author Tuan Nguyen - * @version $Id: TestDatabaseService.java 5332 2006-04-29 18:32:44Z geaz $ - * @since 0.0 - * @email tuan08@yahoo.com - */ -public class TestDatabaseService extends TestCase -{ - - public void testDatabaseService() throws Exception - { - PortalContainer pcontainer = PortalContainer.getInstance(); - DatabaseService service = - (DatabaseService)pcontainer.getComponentInstanceOfType(XAPoolTxSupportDatabaseService.class); - assertNotNull(service); - assertConfiguration(service); - assertDBTableManager(service); - assertIDGenerator(service); - } - - private void assertConfiguration(DatabaseService service) throws Exception - { - TransactionService txservice = service.getTransactionService(); - assertTrue(service != null); - UserTransaction utx = txservice.getUserTransaction(); - Connection conn = service.getConnection(); - Statement s = null; - utx.begin(); - try - { - s = conn.createStatement(); - s.addBatch("create table test (name varchar(25), data varchar(25))"); - s.addBatch("insert into test values('name1', 'value1')"); - s.executeBatch(); - s.close(); - /* - * Call conn.commit() will cause an exception since the connection is now - * part of a global transaction. You should call utx.commit() here - */ - conn.commit(); - utx.commit(); - } - catch (Exception ex) - { - utx.rollback(); - } - // tm.rollback() ; - service.closeConnection(conn); - conn = service.getConnection(); - s = conn.createStatement(); - ResultSet rs = s.executeQuery("select name from test"); - if (rs.next()) - { - fail("Should not have any data in the test table"); - } - } - - private void assertDBTableManager(DatabaseService service) throws Exception - { - ExoDatasource datasource = service.getDatasource(); - DBTableManager dbManager = datasource.getDBTableManager(); - assertEquals(dbManager.hasTable(Mock.class), false); - dbManager.createTable(Mock.class, true); - - assertEquals(dbManager.hasTable(Mock.class), true); - dbManager.dropTable(Mock.class); - - assertEquals(dbManager.hasTable(Mock.class), false); - } - - private void assertIDGenerator(DatabaseService service) throws Exception - { - ExoDatasource datasource = service.getDatasource(); - IDGenerator idGenerator = new IDGenerator(datasource); - - for (int i = 0; i < 10; i++) - { - idGenerator.generateLongId(ExoLongID.class); - } - - idGenerator.restartTracker(); - idGenerator.generateLongId(ExoLongID.class); - } - -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestHibernateService.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestHibernateService.java deleted file mode 100644 index 6b70fdd09..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestHibernateService.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -import org.exoplatform.container.PortalContainer; - -/** - * Thu, May 15, 2003 @ - * @author Tuan Nguyen - * @version $Id: TestDatabaseService.java 5332 2006-04-29 18:32:44Z geaz $ - * @since 0.0 - * @email tuan08@yahoo.com - */ -public class TestHibernateService extends TestCase -{ - HibernateService hservice_; - - public TestHibernateService(String name) - { - super(name); - } - - public void setUp() throws Exception - { - PortalContainer pcontainer = PortalContainer.getInstance(); - hservice_ = (HibernateService)pcontainer.getComponentInstanceOfType(HibernateService.class); - } - - public void testDabaseService() throws Exception - { - // assertTrue("Expect hibernate service instance" , hservice_ != null) ; - assertTrue("Expect database service instance", hservice_ != null); - } - - protected String getDescription() - { - return "Test Database Service"; - } -} diff --git a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestQueryManager.java b/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestQueryManager.java deleted file mode 100644 index ee3151410..000000000 --- a/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestQueryManager.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2009 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.exoplatform.services.database; - -import junit.framework.TestCase; - -/** - * Created by The eXo Platform SAS Author : Nhu Dinh Thuan - * nhudinhthuan@exoplatform.com Mar 30, 2007 - */ -public class TestQueryManager extends TestCase -{ - - QueryBuilder manager_; - - public TestQueryManager(String name) - { - super(name); - } - - public void setUp() throws Exception - { - manager_ = new QueryBuilder(); - } - - public void testPaser() throws Exception - { - String template = "select name from $table where id = $id and name like '&yahoo'"; - String[][] parameters = {{"table", "student"}, {"id", "12345"}}; - String pamameterSql = manager_.mapDataToSql(template, parameters); - } - - static public class Student - { - - String name, value; - - public Student(String n, String v) - { - name = n; - value = v; - } - - public String getName() - { - return name; - } - - public void setValue(String value) - { - this.value = value; - } - } - -} diff --git a/exo.core.component.database/src/test/resources/conf/portal/test-configuration.xml b/exo.core.component.database/src/test/resources/conf/portal/test-configuration.xml deleted file mode 100644 index 7221e1d3f..000000000 --- a/exo.core.component.database/src/test/resources/conf/portal/test-configuration.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - org.exoplatform.services.cache.CacheService - cache:type=CacheService - org.exoplatform.services.cache.impl.CacheServiceImpl - - - cache.config.default - The default cache configuration - - - default - - - 300 - - - 300 - - - false - - - org.exoplatform.services.cache.concurrent.ConcurrentFIFOExoCache - - - - - - - - org.exoplatform.services.database.DatabaseService - org.exoplatform.services.database.impl.XAPoolTxSupportDatabaseService - support the transaction db connection pool implementation - - - connection.config - Connection configuration - - - - - - - - - - - - org.exoplatform.services.transaction.TransactionService - org.exoplatform.services.transaction.impl.atomikos.TransactionsEssentialsTransactionService - - - timeout - 5 - - - - - - org.exoplatform.services.database.HibernateService - org.exoplatform.services.database.impl.HibernateServiceImpl - - - hibernate.properties - Default Hibernate Service - - - - - - - - - - - - - - - - - - - jcr.datasource - org.exoplatform.services.database.impl.HibernateServiceImpl - - - hibernate.properties - JCR Workspace datasource - - - - - - - - - - - - - - - - - - - - classpath:/conf/standalone/test-configuration.xml - diff --git a/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml b/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml deleted file mode 100644 index 8eb12fa15..000000000 --- a/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - org.exoplatform.services.log.LogConfigurationInitializer - org.exoplatform.services.log.LogConfigurationInitializer - - - logger - org.exoplatform.services.log.impl.BufferedLog4JLogger - - - configurator - org.exoplatform.services.log.impl.SimpleExoLogConfigurator - - - - - - org.exoplatform.services.database.jdbc.DBSchemaCreator - org.exoplatform.services.database.jdbc.DBSchemaCreator - - - create.dbschema - addPlugin - org.exoplatform.services.database.jdbc.CreateDBSchemaPlugin - - - data-source - jdbcjcr - - - script - - - - - - - - - - - org.exoplatform.services.database.creator.DBCreator - org.exoplatform.services.database.creator.DBCreator - - - db-connection - database connection properties - - - - - - - db-creation - database creation properties - - - - - - - - - org.exoplatform.services.naming.InitialContextInitializer - org.exoplatform.services.naming.InitialContextInitializer - - - bind.datasource - addPlugin - org.exoplatform.services.naming.BindReferencePlugin - - - bind-name - jdbcjcr - - - class-name - javax.sql.DataSource - - - factory - org.apache.commons.dbcp.BasicDataSourceFactory - - - ref-addresses - ref-addresses - - - - - - - - - - - default-properties - Default initial context properties - - - - - - - diff --git a/exo.core.component.database/src/test/resources/dbcreator/test.sql b/exo.core.component.database/src/test/resources/dbcreator/test.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/exo.core.component.database/src/test/resources/test.policy b/exo.core.component.database/src/test/resources/test.policy deleted file mode 100644 index f8801c31f..000000000 --- a/exo.core.component.database/src/test/resources/test.policy +++ /dev/null @@ -1,15 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ -}; - - - - - diff --git a/pom.xml b/pom.xml index ea1f01804..7a8cdcf5b 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,6 @@ exo.core.component.security.core - exo.core.component.database exo.core.component.script.groovy exo.core.component.organization.api exo.core.component.xml-processing @@ -76,11 +75,6 @@ source-release zip - - io.meeds.core - exo.core.component.database - ${project.version} - io.meeds.core exo.core.component.organization.api