diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml
index e64407be4a..64ae6e2c2c 100644
--- a/config/alfresco/bootstrap-context.xml
+++ b/config/alfresco/bootstrap-context.xml
@@ -82,6 +82,7 @@
classpath:alfresco/dbscripts/create/3.2/${db.script.dialect}/AlfrescoPostCreate-3.2-AuditTables.sql
classpath:alfresco/dbscripts/create/3.2/${db.script.dialect}/AlfrescoPostCreate-3.2-AvmTables.sql
classpath:alfresco/dbscripts/create/3.2/${db.script.dialect}/AlfrescoPostCreate-3.2-Indexes.sql
+ classpath:alfresco/dbscripts/create/3.2/${db.script.dialect}/AlfrescoPostCreate-3.2-JBPM-Extra.sql
diff --git a/config/alfresco/dbscripts/create/3.2/org.hibernate.dialect.Dialect/AlfrescoPostCreate-3.2-JBPM-Extra.sql b/config/alfresco/dbscripts/create/3.2/org.hibernate.dialect.Dialect/AlfrescoPostCreate-3.2-JBPM-Extra.sql
new file mode 100755
index 0000000000..f6cf0e7b5f
--- /dev/null
+++ b/config/alfresco/dbscripts/create/3.2/org.hibernate.dialect.Dialect/AlfrescoPostCreate-3.2-JBPM-Extra.sql
@@ -0,0 +1,22 @@
+--
+-- Title: Fix jbpm tables
+-- Database: Generic
+-- Since: V3.2 schema 2013
+-- Author: Pavel Yurkevich
+--
+-- Please contact support@alfresco.com if you need assistance with the upgrade.
+--
+-- This patch is only required to fix the 'configuration_' column in JBPM on DB2.
+--
+
+--
+-- Record script finish
+--
+DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.2-JBPM-Extra';
+INSERT INTO alf_applied_patch
+ (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
+ VALUES
+ (
+ 'patch.db-V3.2-JBPM-Extra', 'Manually executed script upgrade V3.2 fix problems in jbpm tables.',
+ 0, 2012, -1, 2013, null, 'UNKOWN', ${TRUE}, ${TRUE}, 'Script completed'
+ );
\ No newline at end of file
diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/content-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/content-common-SqlMap.xml
index 0e45398cce..aef6f01daa 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/content-common-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/content-common-SqlMap.xml
@@ -65,18 +65,26 @@
+
+
+
+
+
+
+
+
insert into alf_mimetype (version, mimetype_str)
- values (#version#, lower(#mimetype#))
+ values (#version#, #mimetype#)
insert into alf_encoding (version, encoding_str)
- values (#version#, lower(#encoding#))
+ values (#version#, #encoding#)
@@ -86,7 +94,7 @@
insert into alf_content_data (version, content_url_id, content_mimetype_id, content_encoding_id, content_locale_id)
- values (#version#, #contentUrlId#, #mimetypeId#, #encodingId#, #localeId#)
+ values (?, ?, ?, ?, ?)
@@ -100,7 +108,7 @@
from
alf_mimetype
where
- mimetype_str = lower(#mimetype#)
+ mimetype_str = #mimetype#
@@ -120,7 +128,7 @@
from
alf_encoding
where
- encoding_str = lower(#encoding#)
+ encoding_str = #encoding#
@@ -150,7 +158,7 @@
from
alf_content_url
where
- content_url_short = lower(#contentUrlShort#) and
+ content_url_short = #contentUrlShort# and
content_url_crc = #contentUrlCrc#
@@ -162,7 +170,7 @@
alf_content_url cu
left outer join alf_content_data cd on (cd.content_url_id = cu.id)
where
- content_url_short = lower(#contentUrlShort#) and
+ content_url_short = #contentUrlShort# and
content_url_crc = #contentUrlCrc# and
cd.id is null
@@ -226,7 +234,7 @@
- insert into alf_content_clean (content_url) values (lower(#contentUrl#))
+ insert into alf_content_clean (content_url) values (#contentUrl#)
@@ -243,7 +251,7 @@
from
alf_content_clean
where
- content_url = lower(#contentUrl#)
+ content_url = #contentUrl#
diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml
index 54cf12f7d9..9df990ae3d 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml
@@ -52,12 +52,12 @@
insert into alf_lock_resource (version, qname_ns_id, qname_localname)
- values (#version#, #qnameNamespaceId#, lower(#qnameLocalName#))
+ values (#version#, #qnameNamespaceId#, #qnameLocalName#)
insert into alf_lock (version, shared_resource_id, excl_resource_id, lock_token, start_time, expiry_time)
- values (#version#, #sharedResourceId#, #exclusiveResourceId#, lower(#lockToken#), #startTime#, #expiryTime#)
+ values (#version#, #sharedResourceId#, #exclusiveResourceId#, #lockToken#, #startTime#, #expiryTime#)
@@ -72,7 +72,7 @@
alf_lock_resource
where
qname_ns_id = #qnameNamespaceId# and
- qname_localname = lower(#qnameLocalName#)
+ qname_localname = #qnameLocalName#
@@ -117,7 +117,7 @@
alf_lock
set
version = #version#,
- lock_token = lower(#lockToken#),
+ lock_token = #lockToken#,
start_time = #startTime#,
expiry_time = #expiryTime#
where
@@ -131,7 +131,7 @@
alf_lock
set
version = version + 1,
- lock_token = lower(?),
+ lock_token = ?,
start_time = ?,
expiry_time = ?
where
diff --git a/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/content-insert-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/content-insert-SqlMap.xml
index 1ad6358e56..f95b056c4b 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/content-insert-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/content-insert-SqlMap.xml
@@ -27,7 +27,7 @@
-
+
KEY_COLUMN:GENERATED_KEY
diff --git a/source/java/org/alfresco/repo/domain/contentclean/ibatis/ContentCleanDAOImpl.java b/source/java/org/alfresco/repo/domain/contentclean/ibatis/ContentCleanDAOImpl.java
index b3cb933453..44c9d1be62 100644
--- a/source/java/org/alfresco/repo/domain/contentclean/ibatis/ContentCleanDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/contentclean/ibatis/ContentCleanDAOImpl.java
@@ -1,254 +1,254 @@
-/*
- * Copyright (C) 2005-2009 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing"
- */
-package org.alfresco.repo.domain.contentclean.ibatis;
-
-import java.sql.SQLException;
-
-import org.alfresco.error.AlfrescoRuntimeException;
-import org.alfresco.repo.domain.contentclean.ContentCleanDAO;
-import org.alfresco.repo.domain.contentclean.ContentCleanEntity;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.orm.ibatis.SqlMapClientTemplate;
-
-import com.ibatis.sqlmap.client.SqlMapClient;
-import com.ibatis.sqlmap.client.event.RowHandler;
-
-/**
- * iBatis-specific implementation of the Content Cleaner DAO.
- *
- * @author Derek Hulley
- * @since 3.2
- */
-public class ContentCleanDAOImpl implements ContentCleanDAO
-{
- private static Log logger = LogFactory.getLog(ContentCleanDAOImpl.class);
-
- private static final int DEFAULT_BATCH_SIZE = 50;
-
- private static final String INSERT_CONTENT_CLEAN = "alfresco.content.insert_ContentCleanUrl";
- private static final String SELECT_CONTENT_CLEAN_URLS = "alfresco.content.select_ContentCleanUrls";
- private static final String DELETE_CONTENT_CLEAN_BY_URL = "alfresco.content.delete_ContentCleanUrl";
- private static final String DELETE_CONTENT_CLEAN = "alfresco.content.delete_ContentCleanUrls";
-
- private SqlMapClientTemplate template;
-
- public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
- {
- this.template = sqlMapClientTemplate;
- }
-
- /**
- * {@inheritDoc}
- */
- public ContentUrlBatchProcessor getUrlInserter()
- {
- final SqlMapClient sqlMapClient = template.getSqlMapClient();
- ContentUrlBatchProcessor processor = new ContentUrlBatchProcessor()
- {
- private int count = 0;
- private int total = 0;
-
- public void start()
- {
- try
- {
- sqlMapClient.startBatch();
- count = 0;
- }
- catch (SQLException e)
- {
- // Batches not supported, so don't do batching
- count = -1;
- }
- }
- public void processContentUrl(String contentUrl)
- {
- ContentCleanEntity contentCleanEntity = new ContentCleanEntity();
- contentCleanEntity.setContentUrl(contentUrl);
- template.insert(INSERT_CONTENT_CLEAN, contentCleanEntity);
- // Write the batch
- executeBatch();
- total++;
- }
- public void end()
- {
- // Write the batch
- executeBatch();
- if (logger.isDebugEnabled())
- {
- logger.debug(" Inserted " + total + " content URLs (FINISHED)");
- }
- }
- private void executeBatch()
- {
- // Are we batching?
- if (count > -1)
- {
- // Write the batch, if required
- if (++count >= DEFAULT_BATCH_SIZE)
- {
- try
- {
- sqlMapClient.executeBatch();
- sqlMapClient.startBatch();
- }
- catch (SQLException e)
- {
- throw new AlfrescoRuntimeException("Failed to execute batch", e);
- }
- count = 0;
- }
- }
- if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
- {
- logger.debug(" Inserted " + total + " content URLs");
- }
- }
- };
- // Done
- return processor;
- }
-
- /**
- * {@inheritDoc}
- */
- public ContentUrlBatchProcessor getUrlRemover()
- {
- final SqlMapClient sqlMapClient = template.getSqlMapClient();
- ContentUrlBatchProcessor processor = new ContentUrlBatchProcessor()
- {
- private int count = 0;
- private int total = 0;
-
- public void start()
- {
- try
- {
- sqlMapClient.startBatch();
- count = 0;
- }
- catch (SQLException e)
- {
- // Batches not supported, so don't do batching
- count = -1;
- }
- }
- public void processContentUrl(String contentUrl)
- {
- ContentCleanEntity contentCleanEntity = new ContentCleanEntity();
- contentCleanEntity.setContentUrl(contentUrl);
- template.delete(DELETE_CONTENT_CLEAN_BY_URL, contentCleanEntity);
- // Write the batch
- executeBatch();
- total++;
- }
- public void end()
- {
- // Write the batch
- executeBatch();
- if (logger.isDebugEnabled())
- {
- logger.debug(" Removed " + total + " content URLs (FINISHED)");
- }
- }
- private void executeBatch()
- {
- // Are we batching?
- if (count > -1)
- {
- // Write the batch, if required
- if (++count >= DEFAULT_BATCH_SIZE)
- {
- try
- {
- sqlMapClient.executeBatch();
- sqlMapClient.startBatch();
- }
- catch (SQLException e)
- {
- throw new AlfrescoRuntimeException("Failed to execute batch", e);
- }
- count = 0;
- }
- }
- if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
- {
- logger.debug(" Removed " + total + " content URLs");
- }
- }
- };
- // Done
- return processor;
- }
-
- /**
- * {@inheritDoc}
- */
- public void listAllUrls(ContentUrlBatchProcessor batchProcessor)
- {
- ListAllRowHandler rowHandler = new ListAllRowHandler(batchProcessor);
-
- batchProcessor.start();
- template.queryWithRowHandler(SELECT_CONTENT_CLEAN_URLS, rowHandler);
- batchProcessor.end();
- if (logger.isDebugEnabled())
- {
- logger.debug(" Listed " + rowHandler.total + " content URLs");
- }
- }
-
- /**
- * Row handler for listing all content clean URLs
- * @author Derek Hulley
- * @since 3.2
- */
- private static class ListAllRowHandler implements RowHandler
- {
- private final ContentUrlBatchProcessor batchProcessor;
- private int total = 0;
- private ListAllRowHandler(ContentUrlBatchProcessor batchProcessor)
- {
- this.batchProcessor = batchProcessor;
- }
- public void handleRow(Object valueObject)
- {
- batchProcessor.processContentUrl((String)valueObject);
- total++;
- if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
- {
- logger.debug(" Listed " + total + " content URLs");
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void cleanUp()
- {
- template.delete(DELETE_CONTENT_CLEAN);
- }
-}
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.contentclean.ibatis;
+
+import java.sql.SQLException;
+
+import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.repo.domain.contentclean.ContentCleanDAO;
+import org.alfresco.repo.domain.contentclean.ContentCleanEntity;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.orm.ibatis.SqlMapClientTemplate;
+
+import com.ibatis.sqlmap.client.SqlMapClient;
+import com.ibatis.sqlmap.client.event.RowHandler;
+
+/**
+ * iBatis-specific implementation of the Content Cleaner DAO.
+ *
+ * @author Derek Hulley
+ * @since 3.2
+ */
+public class ContentCleanDAOImpl implements ContentCleanDAO
+{
+ private static Log logger = LogFactory.getLog(ContentCleanDAOImpl.class);
+
+ private static final int DEFAULT_BATCH_SIZE = 50;
+
+ private static final String INSERT_CONTENT_CLEAN = "alfresco.content.insert_ContentCleanUrl";
+ private static final String SELECT_CONTENT_CLEAN_URLS = "alfresco.content.select_ContentCleanUrls";
+ private static final String DELETE_CONTENT_CLEAN_BY_URL = "alfresco.content.delete_ContentCleanUrl";
+ private static final String DELETE_CONTENT_CLEAN = "alfresco.content.delete_ContentCleanUrls";
+
+ private SqlMapClientTemplate template;
+
+ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
+ {
+ this.template = sqlMapClientTemplate;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ContentUrlBatchProcessor getUrlInserter()
+ {
+ final SqlMapClient sqlMapClient = template.getSqlMapClient();
+ ContentUrlBatchProcessor processor = new ContentUrlBatchProcessor()
+ {
+ private int count = 0;
+ private int total = 0;
+
+ public void start()
+ {
+ try
+ {
+ sqlMapClient.startBatch();
+ count = 0;
+ }
+ catch (SQLException e)
+ {
+ // Batches not supported, so don't do batching
+ count = -1;
+ }
+ }
+ public void processContentUrl(String contentUrl)
+ {
+ ContentCleanEntity contentCleanEntity = new ContentCleanEntity();
+ contentCleanEntity.setContentUrl(contentUrl == null ? null : contentUrl.toLowerCase());
+ template.insert(INSERT_CONTENT_CLEAN, contentCleanEntity);
+ // Write the batch
+ executeBatch();
+ total++;
+ }
+ public void end()
+ {
+ // Write the batch
+ executeBatch();
+ if (logger.isDebugEnabled())
+ {
+ logger.debug(" Inserted " + total + " content URLs (FINISHED)");
+ }
+ }
+ private void executeBatch()
+ {
+ // Are we batching?
+ if (count > -1)
+ {
+ // Write the batch, if required
+ if (++count >= DEFAULT_BATCH_SIZE)
+ {
+ try
+ {
+ sqlMapClient.executeBatch();
+ sqlMapClient.startBatch();
+ }
+ catch (SQLException e)
+ {
+ throw new AlfrescoRuntimeException("Failed to execute batch", e);
+ }
+ count = 0;
+ }
+ }
+ if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
+ {
+ logger.debug(" Inserted " + total + " content URLs");
+ }
+ }
+ };
+ // Done
+ return processor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ContentUrlBatchProcessor getUrlRemover()
+ {
+ final SqlMapClient sqlMapClient = template.getSqlMapClient();
+ ContentUrlBatchProcessor processor = new ContentUrlBatchProcessor()
+ {
+ private int count = 0;
+ private int total = 0;
+
+ public void start()
+ {
+ try
+ {
+ sqlMapClient.startBatch();
+ count = 0;
+ }
+ catch (SQLException e)
+ {
+ // Batches not supported, so don't do batching
+ count = -1;
+ }
+ }
+ public void processContentUrl(String contentUrl)
+ {
+ ContentCleanEntity contentCleanEntity = new ContentCleanEntity();
+ contentCleanEntity.setContentUrl(contentUrl);
+ template.delete(DELETE_CONTENT_CLEAN_BY_URL, contentCleanEntity);
+ // Write the batch
+ executeBatch();
+ total++;
+ }
+ public void end()
+ {
+ // Write the batch
+ executeBatch();
+ if (logger.isDebugEnabled())
+ {
+ logger.debug(" Removed " + total + " content URLs (FINISHED)");
+ }
+ }
+ private void executeBatch()
+ {
+ // Are we batching?
+ if (count > -1)
+ {
+ // Write the batch, if required
+ if (++count >= DEFAULT_BATCH_SIZE)
+ {
+ try
+ {
+ sqlMapClient.executeBatch();
+ sqlMapClient.startBatch();
+ }
+ catch (SQLException e)
+ {
+ throw new AlfrescoRuntimeException("Failed to execute batch", e);
+ }
+ count = 0;
+ }
+ }
+ if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
+ {
+ logger.debug(" Removed " + total + " content URLs");
+ }
+ }
+ };
+ // Done
+ return processor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void listAllUrls(ContentUrlBatchProcessor batchProcessor)
+ {
+ ListAllRowHandler rowHandler = new ListAllRowHandler(batchProcessor);
+
+ batchProcessor.start();
+ template.queryWithRowHandler(SELECT_CONTENT_CLEAN_URLS, rowHandler);
+ batchProcessor.end();
+ if (logger.isDebugEnabled())
+ {
+ logger.debug(" Listed " + rowHandler.total + " content URLs");
+ }
+ }
+
+ /**
+ * Row handler for listing all content clean URLs
+ * @author Derek Hulley
+ * @since 3.2
+ */
+ private static class ListAllRowHandler implements RowHandler
+ {
+ private final ContentUrlBatchProcessor batchProcessor;
+ private int total = 0;
+ private ListAllRowHandler(ContentUrlBatchProcessor batchProcessor)
+ {
+ this.batchProcessor = batchProcessor;
+ }
+ public void handleRow(Object valueObject)
+ {
+ batchProcessor.processContentUrl((String)valueObject);
+ total++;
+ if (logger.isDebugEnabled() && (total == 0 || (total % 1000 == 0) ))
+ {
+ logger.debug(" Listed " + total + " content URLs");
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void cleanUp()
+ {
+ template.delete(DELETE_CONTENT_CLEAN);
+ }
+}
diff --git a/source/java/org/alfresco/repo/domain/contentdata/ibatis/ContentDataDAOImpl.java b/source/java/org/alfresco/repo/domain/contentdata/ibatis/ContentDataDAOImpl.java
index 0c19d21063..b1c2928a96 100644
--- a/source/java/org/alfresco/repo/domain/contentdata/ibatis/ContentDataDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/contentdata/ibatis/ContentDataDAOImpl.java
@@ -1,202 +1,210 @@
-/*
- * Copyright (C) 2005-2009 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing"
- */
-package org.alfresco.repo.domain.contentdata.ibatis;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.alfresco.repo.domain.contentdata.AbstractContentDataDAOImpl;
-import org.alfresco.repo.domain.contentdata.ContentDataEntity;
-import org.alfresco.repo.domain.contentdata.ContentUrlEntity;
-import org.springframework.orm.ibatis.SqlMapClientTemplate;
-
-import com.ibatis.sqlmap.client.event.RowHandler;
-
-/**
- * iBatis-specific implementation of the ContentData DAO.
- *
- * @author Derek Hulley
- * @since 3.2
- */
-public class ContentDataDAOImpl extends AbstractContentDataDAOImpl
-{
- private static final String SELECT_CONTENT_URL_BY_ID = "alfresco.content.select_ContentUrlById";
- private static final String SELECT_CONTENT_URL_BY_KEY = "alfresco.content.select_ContentUrlByKey";
- private static final String SELECT_CONTENT_URL_BY_KEY_UNREFERENCED = "alfresco.content.select_ContentUrlByKeyUnreferenced";
- private static final String SELECT_CONTENT_URLS = "alfresco.content.select_ContentUrls";
- private static final String SELECT_CONTENT_DATA_BY_ID = "alfresco.content.select_ContentDataById";
- private static final String SELECT_CONTENT_DATA_BY_NODE_AND_QNAME = "alfresco.content.select_ContentDataByNodeAndQName";
- private static final String INSERT_CONTENT_URL = "alfresco.content.insert_ContentUrl";
- private static final String INSERT_CONTENT_DATA = "alfresco.content.insert_ContentData";
- private static final String DELETE_CONTENT_DATA = "alfresco.content.delete_ContentData";
- private static final String DELETE_CONTENT_URL = "alfresco.content.delete_ContentUrl";
-
- private SqlMapClientTemplate template;
-
- public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
- {
- this.template = sqlMapClientTemplate;
- }
-
- @Override
- protected ContentUrlEntity createContentUrlEntity(String contentUrl, long size)
- {
- ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
- contentUrlEntity.setVersion(ContentUrlEntity.CONST_LONG_ZERO);
- contentUrlEntity.setContentUrl(contentUrl);
- contentUrlEntity.setSize(size);
- /* Long id = (Long) */ template.insert(INSERT_CONTENT_URL, contentUrlEntity);
- /*contentUrlEntity.setId(id);*/
- // Register the url as new
- registerNewContentUrl(contentUrl);
- // Done
- return contentUrlEntity;
- }
-
- @Override
- protected ContentUrlEntity getContentUrlEntity(Long id)
- {
- ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
- contentUrlEntity.setId(id);
- contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_ID, contentUrlEntity);
- // Done
- return contentUrlEntity;
- }
-
- @Override
- protected ContentUrlEntity getContentUrlEntity(String contentUrl)
- {
- ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
- contentUrlEntity.setContentUrl(contentUrl);
- contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_KEY, contentUrlEntity);
- // Done
- return contentUrlEntity;
- }
-
- @Override
- protected int deleteContentUrlEntity(Long id)
- {
- Map params = new HashMap(11);
- params.put("id", id);
- return template.delete(DELETE_CONTENT_URL, params);
- }
-
- @Override
- protected ContentUrlEntity getContentUrlEntityUnreferenced(String contentUrl)
- {
- ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
- contentUrlEntity.setContentUrl(contentUrl);
- contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_KEY_UNREFERENCED, contentUrlEntity);
- // Done
- return contentUrlEntity;
- }
-
- @Override
- protected ContentDataEntity createContentDataEntity(
- Long contentUrlId,
- Long mimetypeId,
- Long encodingId,
- Long localeId)
- {
- ContentDataEntity contentDataEntity = new ContentDataEntity();
- contentDataEntity.setVersion(ContentDataEntity.CONST_LONG_ZERO);
- contentDataEntity.setContentUrlId(contentUrlId);
- contentDataEntity.setMimetypeId(mimetypeId);
- contentDataEntity.setEncodingId(encodingId);
- contentDataEntity.setLocaleId(localeId);
- template.insert(INSERT_CONTENT_DATA, contentDataEntity);
- // Done
- return contentDataEntity;
- }
-
- @Override
- protected ContentDataEntity getContentDataEntity(Long id)
- {
- Map params = new HashMap(11);
- params.put("id", id);
- ContentDataEntity contentDataEntity = (ContentDataEntity) template.queryForObject(SELECT_CONTENT_DATA_BY_ID, params);
- // Done
- return contentDataEntity;
- }
-
- @Override
- protected int deleteContentDataEntity(Long id)
- {
- Map params = new HashMap(11);
- params.put("id", id);
- return template.delete(DELETE_CONTENT_DATA, params);
- }
-
- public void deleteContentDataForNode(Long nodeId, Set qnameIds)
- {
- /*
- * TODO: use IN clause in parameters
- */
- for (Long qnameId : qnameIds)
- {
- // Get the ContentData that matches (may be multiple due to collection properties)
- Map params = new HashMap(11);
- params.put("nodeId", nodeId);
- params.put("qnameId", qnameId);
- @SuppressWarnings("unchecked")
- List ids = (List) template.queryForList(SELECT_CONTENT_DATA_BY_NODE_AND_QNAME, params);
- // Delete each one
- for (Long id : ids)
- {
- // Get the content urls
- ContentDataEntity contentDataEntity = getContentDataEntity(id);
- // This might be null as there is no constraint ensuring that the node points to a valid ContentData entity
- if (contentDataEntity == null)
- {
- continue;
- }
- // Only check the content URLs if one is present
- String contentUrl = contentDataEntity.getContentUrl();
- // Delete the ContentData entity
- deleteContentData(id);
- // Check if the content URL was orphaned
- if (contentUrl != null)
- {
- // It has been dereferenced and may be orphaned - we'll check later
- registerDereferenceContentUrl(contentUrl);
- }
- }
- }
- }
-
- public void getAllContentUrls(final ContentUrlHandler contentUrlHandler)
- {
- RowHandler rowHandler = new RowHandler()
- {
- public void handleRow(Object valueObject)
- {
- contentUrlHandler.handle((String)valueObject);
- }
- };
- template.queryWithRowHandler(SELECT_CONTENT_URLS, rowHandler);
- }
-}
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.contentdata.ibatis;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.alfresco.repo.domain.contentdata.AbstractContentDataDAOImpl;
+import org.alfresco.repo.domain.contentdata.ContentDataEntity;
+import org.alfresco.repo.domain.contentdata.ContentUrlEntity;
+import org.springframework.orm.ibatis.SqlMapClientTemplate;
+
+import com.ibatis.sqlmap.client.event.RowHandler;
+
+/**
+ * iBatis-specific implementation of the ContentData DAO.
+ *
+ * @author Derek Hulley
+ * @since 3.2
+ */
+public class ContentDataDAOImpl extends AbstractContentDataDAOImpl
+{
+ private static final String SELECT_CONTENT_URL_BY_ID = "alfresco.content.select_ContentUrlById";
+ private static final String SELECT_CONTENT_URL_BY_KEY = "alfresco.content.select_ContentUrlByKey";
+ private static final String SELECT_CONTENT_URL_BY_KEY_UNREFERENCED = "alfresco.content.select_ContentUrlByKeyUnreferenced";
+ private static final String SELECT_CONTENT_URLS = "alfresco.content.select_ContentUrls";
+ private static final String SELECT_CONTENT_DATA_BY_ID = "alfresco.content.select_ContentDataById";
+ private static final String SELECT_CONTENT_DATA_BY_NODE_AND_QNAME = "alfresco.content.select_ContentDataByNodeAndQName";
+ private static final String INSERT_CONTENT_URL = "alfresco.content.insert_ContentUrl";
+ private static final String INSERT_CONTENT_DATA = "alfresco.content.insert_ContentData";
+ private static final String DELETE_CONTENT_DATA = "alfresco.content.delete_ContentData";
+ private static final String DELETE_CONTENT_URL = "alfresco.content.delete_ContentUrl";
+
+ private SqlMapClientTemplate template;
+
+ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
+ {
+ this.template = sqlMapClientTemplate;
+ }
+
+ @Override
+ protected ContentUrlEntity createContentUrlEntity(String contentUrl, long size)
+ {
+ ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
+ contentUrlEntity.setVersion(ContentUrlEntity.CONST_LONG_ZERO);
+ contentUrlEntity.setContentUrl(contentUrl);
+ contentUrlEntity.setSize(size);
+ /* Long id = (Long) */ template.insert(INSERT_CONTENT_URL, contentUrlEntity);
+ /*contentUrlEntity.setId(id);*/
+ // Register the url as new
+ registerNewContentUrl(contentUrl);
+ // Done
+ return contentUrlEntity;
+ }
+
+ @Override
+ protected ContentUrlEntity getContentUrlEntity(Long id)
+ {
+ ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
+ contentUrlEntity.setId(id);
+ contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_ID, contentUrlEntity);
+ // Done
+ return contentUrlEntity;
+ }
+
+ @Override
+ protected ContentUrlEntity getContentUrlEntity(String contentUrl)
+ {
+ ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
+ contentUrlEntity.setContentUrl(contentUrl);
+ if (contentUrlEntity.getContentUrlShort() != null)
+ {
+ contentUrlEntity.setContentUrlShort(contentUrlEntity.getContentUrlShort().toLowerCase());
+ }
+ contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_KEY, contentUrlEntity);
+ // Done
+ return contentUrlEntity;
+ }
+
+ @Override
+ protected int deleteContentUrlEntity(Long id)
+ {
+ Map params = new HashMap(11);
+ params.put("id", id);
+ return template.delete(DELETE_CONTENT_URL, params);
+ }
+
+ @Override
+ protected ContentUrlEntity getContentUrlEntityUnreferenced(String contentUrl)
+ {
+ ContentUrlEntity contentUrlEntity = new ContentUrlEntity();
+ contentUrlEntity.setContentUrl(contentUrl);
+ if (contentUrlEntity.getContentUrlShort() != null)
+ {
+ contentUrlEntity.setContentUrlShort(contentUrlEntity.getContentUrlShort().toLowerCase());
+ }
+ contentUrlEntity = (ContentUrlEntity) template.queryForObject(SELECT_CONTENT_URL_BY_KEY_UNREFERENCED, contentUrlEntity);
+ // Done
+ return contentUrlEntity;
+ }
+
+ @Override
+ protected ContentDataEntity createContentDataEntity(
+ Long contentUrlId,
+ Long mimetypeId,
+ Long encodingId,
+ Long localeId)
+ {
+ ContentDataEntity contentDataEntity = new ContentDataEntity();
+ contentDataEntity.setVersion(ContentDataEntity.CONST_LONG_ZERO);
+ contentDataEntity.setContentUrlId(contentUrlId);
+ contentDataEntity.setMimetypeId(mimetypeId);
+ contentDataEntity.setEncodingId(encodingId);
+ contentDataEntity.setLocaleId(localeId);
+ template.insert(INSERT_CONTENT_DATA, contentDataEntity);
+ // Done
+ return contentDataEntity;
+ }
+
+ @Override
+ protected ContentDataEntity getContentDataEntity(Long id)
+ {
+ Map params = new HashMap(11);
+ params.put("id", id);
+ ContentDataEntity contentDataEntity = (ContentDataEntity) template.queryForObject(SELECT_CONTENT_DATA_BY_ID, params);
+ // Done
+ return contentDataEntity;
+ }
+
+ @Override
+ protected int deleteContentDataEntity(Long id)
+ {
+ Map params = new HashMap(11);
+ params.put("id", id);
+ return template.delete(DELETE_CONTENT_DATA, params);
+ }
+
+ public void deleteContentDataForNode(Long nodeId, Set qnameIds)
+ {
+ /*
+ * TODO: use IN clause in parameters
+ */
+ for (Long qnameId : qnameIds)
+ {
+ // Get the ContentData that matches (may be multiple due to collection properties)
+ Map params = new HashMap(11);
+ params.put("nodeId", nodeId);
+ params.put("qnameId", qnameId);
+ @SuppressWarnings("unchecked")
+ List ids = (List) template.queryForList(SELECT_CONTENT_DATA_BY_NODE_AND_QNAME, params);
+ // Delete each one
+ for (Long id : ids)
+ {
+ // Get the content urls
+ ContentDataEntity contentDataEntity = getContentDataEntity(id);
+ // This might be null as there is no constraint ensuring that the node points to a valid ContentData entity
+ if (contentDataEntity == null)
+ {
+ continue;
+ }
+ // Only check the content URLs if one is present
+ String contentUrl = contentDataEntity.getContentUrl();
+ // Delete the ContentData entity
+ deleteContentData(id);
+ // Check if the content URL was orphaned
+ if (contentUrl != null)
+ {
+ // It has been dereferenced and may be orphaned - we'll check later
+ registerDereferenceContentUrl(contentUrl);
+ }
+ }
+ }
+ }
+
+ public void getAllContentUrls(final ContentUrlHandler contentUrlHandler)
+ {
+ RowHandler rowHandler = new RowHandler()
+ {
+ public void handleRow(Object valueObject)
+ {
+ contentUrlHandler.handle((String)valueObject);
+ }
+ };
+ template.queryWithRowHandler(SELECT_CONTENT_URLS, rowHandler);
+ }
+}
diff --git a/source/java/org/alfresco/repo/domain/encoding/ibatis/EncodingDAOImpl.java b/source/java/org/alfresco/repo/domain/encoding/ibatis/EncodingDAOImpl.java
index 873ed311fd..f37d380d37 100644
--- a/source/java/org/alfresco/repo/domain/encoding/ibatis/EncodingDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/encoding/ibatis/EncodingDAOImpl.java
@@ -1,82 +1,82 @@
-/*
- * Copyright (C) 2005-2009 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing"
- */
-package org.alfresco.repo.domain.encoding.ibatis;
-
-import org.alfresco.repo.domain.encoding.AbstractEncodingDAOImpl;
-import org.alfresco.repo.domain.encoding.EncodingEntity;
-import org.alfresco.repo.domain.mimetype.MimetypeEntity;
-import org.springframework.orm.ibatis.SqlMapClientTemplate;
-
-/**
- * iBatis-specific implementation of the Mimetype DAO.
- *
- * @author Derek Hulley
- * @since 3.2
- */
-public class EncodingDAOImpl extends AbstractEncodingDAOImpl
-{
- private static final String SELECT_ENCODING_BY_ID = "alfresco.content.select_EncodingById";
- private static final String SELECT_ENCODING_BY_KEY = "alfresco.content.select_EncodingByKey";
- private static final String INSERT_ENCODING = "alfresco.content.insert_Encoding";
-
- private SqlMapClientTemplate template;
-
- public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
- {
- this.template = sqlMapClientTemplate;
- }
-
- @Override
- protected EncodingEntity getEncodingEntity(Long id)
- {
- EncodingEntity encodingEntity = new EncodingEntity();
- encodingEntity.setId(id);
- encodingEntity = (EncodingEntity) template.queryForObject(SELECT_ENCODING_BY_ID, encodingEntity);
- // Done
- return encodingEntity;
- }
-
- @Override
- protected EncodingEntity getEncodingEntity(String encoding)
- {
- EncodingEntity encodingEntity = new EncodingEntity();
- encodingEntity.setEncoding(encoding);
- encodingEntity = (EncodingEntity) template.queryForObject(SELECT_ENCODING_BY_KEY, encodingEntity);
- // Could be null
- return encodingEntity;
- }
-
- @Override
- protected EncodingEntity createEncodingEntity(String encoding)
- {
- EncodingEntity encodingEntity = new EncodingEntity();
- encodingEntity.setVersion(MimetypeEntity.CONST_LONG_ZERO);
- encodingEntity.setEncoding(encoding);
- Long id = (Long) template.insert(INSERT_ENCODING, encodingEntity);
- encodingEntity.setId(id);
- // Done
- return encodingEntity;
- }
-}
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.encoding.ibatis;
+
+import org.alfresco.repo.domain.encoding.AbstractEncodingDAOImpl;
+import org.alfresco.repo.domain.encoding.EncodingEntity;
+import org.alfresco.repo.domain.mimetype.MimetypeEntity;
+import org.springframework.orm.ibatis.SqlMapClientTemplate;
+
+/**
+ * iBatis-specific implementation of the Mimetype DAO.
+ *
+ * @author Derek Hulley
+ * @since 3.2
+ */
+public class EncodingDAOImpl extends AbstractEncodingDAOImpl
+{
+ private static final String SELECT_ENCODING_BY_ID = "alfresco.content.select_EncodingById";
+ private static final String SELECT_ENCODING_BY_KEY = "alfresco.content.select_EncodingByKey";
+ private static final String INSERT_ENCODING = "alfresco.content.insert_Encoding";
+
+ private SqlMapClientTemplate template;
+
+ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
+ {
+ this.template = sqlMapClientTemplate;
+ }
+
+ @Override
+ protected EncodingEntity getEncodingEntity(Long id)
+ {
+ EncodingEntity encodingEntity = new EncodingEntity();
+ encodingEntity.setId(id);
+ encodingEntity = (EncodingEntity) template.queryForObject(SELECT_ENCODING_BY_ID, encodingEntity);
+ // Done
+ return encodingEntity;
+ }
+
+ @Override
+ protected EncodingEntity getEncodingEntity(String encoding)
+ {
+ EncodingEntity encodingEntity = new EncodingEntity();
+ encodingEntity.setEncoding(encoding == null ? null : encoding.toLowerCase());
+ encodingEntity = (EncodingEntity) template.queryForObject(SELECT_ENCODING_BY_KEY, encodingEntity);
+ // Could be null
+ return encodingEntity;
+ }
+
+ @Override
+ protected EncodingEntity createEncodingEntity(String encoding)
+ {
+ EncodingEntity encodingEntity = new EncodingEntity();
+ encodingEntity.setVersion(MimetypeEntity.CONST_LONG_ZERO);
+ encodingEntity.setEncoding(encoding == null ? null : encoding.toLowerCase());
+ Long id = (Long) template.insert(INSERT_ENCODING, encodingEntity);
+ encodingEntity.setId(id);
+ // Done
+ return encodingEntity;
+ }
+}
diff --git a/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java b/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java
index 7255387794..bec537421b 100644
--- a/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java
@@ -1,174 +1,174 @@
-/*
- * Copyright (C) 2005-2009 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing"
- */
-package org.alfresco.repo.domain.locks.ibatis;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.alfresco.repo.domain.locks.AbstractLockDAOImpl;
-import org.alfresco.repo.domain.locks.LockEntity;
-import org.alfresco.repo.domain.locks.LockResourceEntity;
-import org.springframework.orm.ibatis.SqlMapClientTemplate;
-
-/**
- * iBatis-specific implementation of the Locks DAO.
- *
- * @author Derek Hulley
- * @since 3.2
- */
-public class LockDAOImpl extends AbstractLockDAOImpl
-{
- private static final String SELECT_LOCKRESOURCE_BY_QNAME = "alfresco.lock.select_LockResourceByQName";
- private static final String SELECT_LOCK_BY_ID = "alfresco.lock.select_LockByID";
- private static final String SELECT_LOCK_BY_KEY = "alfresco.lock.select_LockByKey";
- private static final String SELECT_LOCK_BY_SHARED_IDS = "alfresco.lock.select_LockBySharedIds";
- private static final String INSERT_LOCKRESOURCE = "alfresco.lock.insert_LockResource";
- private static final String INSERT_LOCK = "alfresco.lock.insert_Lock";
- private static final String UPDATE_LOCK = "alfresco.lock.update_Lock";
- private static final String UPDATE_EXCLUSIVE_LOCK = "alfresco.lock.update_ExclusiveLock";
-
- private SqlMapClientTemplate template;
-
- public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
- {
- this.template = sqlMapClientTemplate;
- }
-
- @Override
- protected LockResourceEntity getLockResource(Long qnameNamespaceId, String qnameLocalName)
- {
- LockResourceEntity lockResource = new LockResourceEntity();
- lockResource.setQnameNamespaceId(qnameNamespaceId);
- lockResource.setQnameLocalName(qnameLocalName);
- lockResource = (LockResourceEntity) template.queryForObject(SELECT_LOCKRESOURCE_BY_QNAME, lockResource);
- // Could be null
- return lockResource;
- }
-
- @Override
- protected LockResourceEntity createLockResource(Long qnameNamespaceId, String qnameLocalName)
- {
- LockResourceEntity lockResource = new LockResourceEntity();
- lockResource.setVersion(LockEntity.CONST_LONG_ZERO);
- lockResource.setQnameNamespaceId(qnameNamespaceId);
- lockResource.setQnameLocalName(qnameLocalName);
- Long id = (Long) template.insert(INSERT_LOCKRESOURCE, lockResource);
- lockResource.setId(id);
- // Done
- return lockResource;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected List getLocksBySharedResourceIds(List sharedLockResourceIds)
- {
- List locks = template.queryForList(SELECT_LOCK_BY_SHARED_IDS, sharedLockResourceIds);
- // Done
- return locks;
- }
-
- @Override
- protected LockEntity getLock(Long id)
- {
- LockEntity lock = new LockEntity();
- lock.setId(id);
- lock = (LockEntity) template.queryForObject(SELECT_LOCK_BY_ID, lock);
- // Done
- return lock;
- }
-
- @Override
- protected LockEntity getLock(Long sharedResourceId, Long exclusiveResourceId)
- {
- LockEntity lock = new LockEntity();
- lock.setSharedResourceId(sharedResourceId);
- lock.setExclusiveResourceId(exclusiveResourceId);
- lock = (LockEntity) template.queryForObject(SELECT_LOCK_BY_KEY, lock);
- // Done
- return lock;
- }
-
- @Override
- protected LockEntity createLock(
- Long sharedResourceId,
- Long exclusiveResourceId,
- String lockToken,
- long timeToLive)
- {
- LockEntity lock = new LockEntity();
- lock.setVersion(LockEntity.CONST_LONG_ZERO);
- lock.setSharedResourceId(sharedResourceId);
- lock.setExclusiveResourceId(exclusiveResourceId);
- lock.setLockToken(lockToken);
- long now = System.currentTimeMillis();
- long exp = now + timeToLive;
- lock.setStartTime(now);
- lock.setExpiryTime(exp);
- Long id = (Long) template.insert(INSERT_LOCK, lock);
- lock.setId(id);
- // Done
- return lock;
- }
-
- @Override
- protected LockEntity updateLock(LockEntity lockEntity, String lockToken, long timeToLive)
- {
- LockEntity updateLockEntity = new LockEntity();
- updateLockEntity.setId(lockEntity.getId());
- updateLockEntity.setVersion(lockEntity.getVersion());
- updateLockEntity.incrementVersion(); // Increment the version number
- updateLockEntity.setSharedResourceId(lockEntity.getSharedResourceId());
- updateLockEntity.setExclusiveResourceId(lockEntity.getExclusiveResourceId());
- updateLockEntity.setLockToken(lockToken);
- long now = (timeToLive > 0) ? System.currentTimeMillis() : 0L;
- long exp = (timeToLive > 0) ? (now + timeToLive) : 0L;
- updateLockEntity.setStartTime(new Long(now));
- updateLockEntity.setExpiryTime(new Long(exp));
- template.update(UPDATE_LOCK, updateLockEntity, 1);
- // Done
- return updateLockEntity;
- }
-
- @Override
- protected int updateLocks(
- Long exclusiveLockResourceId,
- String oldLockToken,
- String newLockToken,
- long timeToLive)
- {
- Map params = new HashMap(11);
- params.put("exclusiveLockResourceId", exclusiveLockResourceId);
- params.put("oldLockToken", oldLockToken);
- params.put("newLockToken", newLockToken);
- long now = (timeToLive > 0) ? System.currentTimeMillis() : 0L;
- long exp = (timeToLive > 0) ? (now + timeToLive) : 0L;
- params.put("newStartTime", new Long(now));
- params.put("newExpiryTime", new Long(exp));
- int updateCount = template.update(UPDATE_EXCLUSIVE_LOCK, params);
- // Done
- return updateCount;
- }
-}
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.locks.ibatis;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.repo.domain.locks.AbstractLockDAOImpl;
+import org.alfresco.repo.domain.locks.LockEntity;
+import org.alfresco.repo.domain.locks.LockResourceEntity;
+import org.springframework.orm.ibatis.SqlMapClientTemplate;
+
+/**
+ * iBatis-specific implementation of the Locks DAO.
+ *
+ * @author Derek Hulley
+ * @since 3.2
+ */
+public class LockDAOImpl extends AbstractLockDAOImpl
+{
+ private static final String SELECT_LOCKRESOURCE_BY_QNAME = "alfresco.lock.select_LockResourceByQName";
+ private static final String SELECT_LOCK_BY_ID = "alfresco.lock.select_LockByID";
+ private static final String SELECT_LOCK_BY_KEY = "alfresco.lock.select_LockByKey";
+ private static final String SELECT_LOCK_BY_SHARED_IDS = "alfresco.lock.select_LockBySharedIds";
+ private static final String INSERT_LOCKRESOURCE = "alfresco.lock.insert_LockResource";
+ private static final String INSERT_LOCK = "alfresco.lock.insert_Lock";
+ private static final String UPDATE_LOCK = "alfresco.lock.update_Lock";
+ private static final String UPDATE_EXCLUSIVE_LOCK = "alfresco.lock.update_ExclusiveLock";
+
+ private SqlMapClientTemplate template;
+
+ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
+ {
+ this.template = sqlMapClientTemplate;
+ }
+
+ @Override
+ protected LockResourceEntity getLockResource(Long qnameNamespaceId, String qnameLocalName)
+ {
+ LockResourceEntity lockResource = new LockResourceEntity();
+ lockResource.setQnameNamespaceId(qnameNamespaceId);
+ lockResource.setQnameLocalName(qnameLocalName == null ? null : qnameLocalName.toLowerCase());
+ lockResource = (LockResourceEntity) template.queryForObject(SELECT_LOCKRESOURCE_BY_QNAME, lockResource);
+ // Could be null
+ return lockResource;
+ }
+
+ @Override
+ protected LockResourceEntity createLockResource(Long qnameNamespaceId, String qnameLocalName)
+ {
+ LockResourceEntity lockResource = new LockResourceEntity();
+ lockResource.setVersion(LockEntity.CONST_LONG_ZERO);
+ lockResource.setQnameNamespaceId(qnameNamespaceId);
+ lockResource.setQnameLocalName(qnameLocalName == null ? null : qnameLocalName.toLowerCase());
+ Long id = (Long) template.insert(INSERT_LOCKRESOURCE, lockResource);
+ lockResource.setId(id);
+ // Done
+ return lockResource;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected List getLocksBySharedResourceIds(List sharedLockResourceIds)
+ {
+ List locks = template.queryForList(SELECT_LOCK_BY_SHARED_IDS, sharedLockResourceIds);
+ // Done
+ return locks;
+ }
+
+ @Override
+ protected LockEntity getLock(Long id)
+ {
+ LockEntity lock = new LockEntity();
+ lock.setId(id);
+ lock = (LockEntity) template.queryForObject(SELECT_LOCK_BY_ID, lock);
+ // Done
+ return lock;
+ }
+
+ @Override
+ protected LockEntity getLock(Long sharedResourceId, Long exclusiveResourceId)
+ {
+ LockEntity lock = new LockEntity();
+ lock.setSharedResourceId(sharedResourceId);
+ lock.setExclusiveResourceId(exclusiveResourceId);
+ lock = (LockEntity) template.queryForObject(SELECT_LOCK_BY_KEY, lock);
+ // Done
+ return lock;
+ }
+
+ @Override
+ protected LockEntity createLock(
+ Long sharedResourceId,
+ Long exclusiveResourceId,
+ String lockToken,
+ long timeToLive)
+ {
+ LockEntity lock = new LockEntity();
+ lock.setVersion(LockEntity.CONST_LONG_ZERO);
+ lock.setSharedResourceId(sharedResourceId);
+ lock.setExclusiveResourceId(exclusiveResourceId);
+ lock.setLockToken(lockToken == null ? null : lockToken.toLowerCase());
+ long now = System.currentTimeMillis();
+ long exp = now + timeToLive;
+ lock.setStartTime(now);
+ lock.setExpiryTime(exp);
+ Long id = (Long) template.insert(INSERT_LOCK, lock);
+ lock.setId(id);
+ // Done
+ return lock;
+ }
+
+ @Override
+ protected LockEntity updateLock(LockEntity lockEntity, String lockToken, long timeToLive)
+ {
+ LockEntity updateLockEntity = new LockEntity();
+ updateLockEntity.setId(lockEntity.getId());
+ updateLockEntity.setVersion(lockEntity.getVersion());
+ updateLockEntity.incrementVersion(); // Increment the version number
+ updateLockEntity.setSharedResourceId(lockEntity.getSharedResourceId());
+ updateLockEntity.setExclusiveResourceId(lockEntity.getExclusiveResourceId());
+ updateLockEntity.setLockToken(lockToken == null ? null : lockToken.toLowerCase());
+ long now = (timeToLive > 0) ? System.currentTimeMillis() : 0L;
+ long exp = (timeToLive > 0) ? (now + timeToLive) : 0L;
+ updateLockEntity.setStartTime(new Long(now));
+ updateLockEntity.setExpiryTime(new Long(exp));
+ template.update(UPDATE_LOCK, updateLockEntity, 1);
+ // Done
+ return updateLockEntity;
+ }
+
+ @Override
+ protected int updateLocks(
+ Long exclusiveLockResourceId,
+ String oldLockToken,
+ String newLockToken,
+ long timeToLive)
+ {
+ Map params = new HashMap(11);
+ params.put("exclusiveLockResourceId", exclusiveLockResourceId);
+ params.put("oldLockToken", oldLockToken);
+ params.put("newLockToken", newLockToken == null ? null : newLockToken.toLowerCase());
+ long now = (timeToLive > 0) ? System.currentTimeMillis() : 0L;
+ long exp = (timeToLive > 0) ? (now + timeToLive) : 0L;
+ params.put("newStartTime", new Long(now));
+ params.put("newExpiryTime", new Long(exp));
+ int updateCount = template.update(UPDATE_EXCLUSIVE_LOCK, params);
+ // Done
+ return updateCount;
+ }
+}
diff --git a/source/java/org/alfresco/repo/domain/mimetype/ibatis/MimetypeDAOImpl.java b/source/java/org/alfresco/repo/domain/mimetype/ibatis/MimetypeDAOImpl.java
index 13fc5c0e9c..63dd9d72dd 100644
--- a/source/java/org/alfresco/repo/domain/mimetype/ibatis/MimetypeDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/mimetype/ibatis/MimetypeDAOImpl.java
@@ -1,81 +1,81 @@
-/*
- * Copyright (C) 2005-2009 Alfresco Software Limited.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- * As a special exception to the terms and conditions of version 2.0 of
- * the GPL, you may redistribute this Program in connection with Free/Libre
- * and Open Source Software ("FLOSS") applications as described in Alfresco's
- * FLOSS exception. You should have recieved a copy of the text describing
- * the FLOSS exception, and it is also available here:
- * http://www.alfresco.com/legal/licensing"
- */
-package org.alfresco.repo.domain.mimetype.ibatis;
-
-import org.alfresco.repo.domain.mimetype.AbstractMimetypeDAOImpl;
-import org.alfresco.repo.domain.mimetype.MimetypeEntity;
-import org.springframework.orm.ibatis.SqlMapClientTemplate;
-
-/**
- * iBatis-specific implementation of the Mimetype DAO.
- *
- * @author Derek Hulley
- * @since 3.2
- */
-public class MimetypeDAOImpl extends AbstractMimetypeDAOImpl
-{
- private static final String SELECT_MIMETYPE_BY_ID = "alfresco.content.select_MimetypeById";
- private static final String SELECT_MIMETYPE_BY_KEY = "alfresco.content.select_MimetypeByKey";
- private static final String INSERT_MIMETYPE = "alfresco.content.insert_Mimetype";
-
- private SqlMapClientTemplate template;
-
- public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
- {
- this.template = sqlMapClientTemplate;
- }
-
- @Override
- protected MimetypeEntity getMimetypeEntity(Long id)
- {
- MimetypeEntity mimetypeEntity = new MimetypeEntity();
- mimetypeEntity.setId(id);
- mimetypeEntity = (MimetypeEntity) template.queryForObject(SELECT_MIMETYPE_BY_ID, mimetypeEntity);
- // Done
- return mimetypeEntity;
- }
-
- @Override
- protected MimetypeEntity getMimetypeEntity(String mimetype)
- {
- MimetypeEntity mimetypeEntity = new MimetypeEntity();
- mimetypeEntity.setMimetype(mimetype);
- mimetypeEntity = (MimetypeEntity) template.queryForObject(SELECT_MIMETYPE_BY_KEY, mimetypeEntity);
- // Could be null
- return mimetypeEntity;
- }
-
- @Override
- protected MimetypeEntity createMimetypeEntity(String mimetype)
- {
- MimetypeEntity mimetypeEntity = new MimetypeEntity();
- mimetypeEntity.setVersion(MimetypeEntity.CONST_LONG_ZERO);
- mimetypeEntity.setMimetype(mimetype);
- Long id = (Long) template.insert(INSERT_MIMETYPE, mimetypeEntity);
- mimetypeEntity.setId(id);
- // Done
- return mimetypeEntity;
- }
-}
+/*
+ * Copyright (C) 2005-2009 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.mimetype.ibatis;
+
+import org.alfresco.repo.domain.mimetype.AbstractMimetypeDAOImpl;
+import org.alfresco.repo.domain.mimetype.MimetypeEntity;
+import org.springframework.orm.ibatis.SqlMapClientTemplate;
+
+/**
+ * iBatis-specific implementation of the Mimetype DAO.
+ *
+ * @author Derek Hulley
+ * @since 3.2
+ */
+public class MimetypeDAOImpl extends AbstractMimetypeDAOImpl
+{
+ private static final String SELECT_MIMETYPE_BY_ID = "alfresco.content.select_MimetypeById";
+ private static final String SELECT_MIMETYPE_BY_KEY = "alfresco.content.select_MimetypeByKey";
+ private static final String INSERT_MIMETYPE = "alfresco.content.insert_Mimetype";
+
+ private SqlMapClientTemplate template;
+
+ public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
+ {
+ this.template = sqlMapClientTemplate;
+ }
+
+ @Override
+ protected MimetypeEntity getMimetypeEntity(Long id)
+ {
+ MimetypeEntity mimetypeEntity = new MimetypeEntity();
+ mimetypeEntity.setId(id);
+ mimetypeEntity = (MimetypeEntity) template.queryForObject(SELECT_MIMETYPE_BY_ID, mimetypeEntity);
+ // Done
+ return mimetypeEntity;
+ }
+
+ @Override
+ protected MimetypeEntity getMimetypeEntity(String mimetype)
+ {
+ MimetypeEntity mimetypeEntity = new MimetypeEntity();
+ mimetypeEntity.setMimetype(mimetype == null ? null : mimetype.toLowerCase());
+ mimetypeEntity = (MimetypeEntity) template.queryForObject(SELECT_MIMETYPE_BY_KEY, mimetypeEntity);
+ // Could be null
+ return mimetypeEntity;
+ }
+
+ @Override
+ protected MimetypeEntity createMimetypeEntity(String mimetype)
+ {
+ MimetypeEntity mimetypeEntity = new MimetypeEntity();
+ mimetypeEntity.setVersion(MimetypeEntity.CONST_LONG_ZERO);
+ mimetypeEntity.setMimetype(mimetype == null ? null : mimetype.toLowerCase());
+ Long id = (Long) template.insert(INSERT_MIMETYPE, mimetypeEntity);
+ mimetypeEntity.setId(id);
+ // Done
+ return mimetypeEntity;
+ }
+}