Merged V3.0 to HEAD (Derby fixes)

11315: Fixed ETHREEOH-283: Query for User Usages fixed for 3.0 schema
   11421: Fix "ORA-00911: invalid character" (on second startup when using Oracle)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@11828 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-11-10 13:17:03 +00:00
parent 277a814c2a
commit 9451780b51
5 changed files with 58 additions and 27 deletions

View File

@@ -654,20 +654,20 @@
assoc.target.id = :targetId assoc.target.id = :targetId
</query> </query>
<query name="node.GetNodesWithPropertyValuesByStringAndStore"> <sql-query name="node.GetNodesWithPropertyValuesByStringAndStore">
select <return alias="n" class="org.alfresco.repo.domain.hibernate.NodeImpl"/>
node, SELECT
node.typeQName {n.*}
from FROM
org.alfresco.repo.domain.hibernate.NodeImpl as node alf_node n
join node.store as store JOIN alf_store s on s.id = n.store_id
join node.properties prop JOIN alf_node_properties p ON n.id = p.node_id
where WHERE
store.protocol = :protocol and s.protocol = :storeProtocol AND
store.identifier = :identifier and s.identifier = :storeIdentifier AND
index(prop) = :propKey and p.qname_id = :propQNameID AND
prop.stringValue = :propStringValue p.string_value = :propStringValue
</query> </sql-query>
<query name="node.GetNodesWithPropertyValuesByActualType"> <query name="node.GetNodesWithPropertyValuesByActualType">
select select

View File

@@ -460,6 +460,17 @@
]]> ]]>
</query> </query>
<sql-query name="person.getAllPeople">
SELECT
{n.*}
FROM
alf_node n
JOIN alf_node_properties p ON n.id = p.node_id
WHERE
p.qname_id = :qnameId AND
n.node_deleted = :False"
</sql-query>
<!-- <!--
<query name="permission.GetAccessControlEntriesForAuthority"> <query name="permission.GetAccessControlEntriesForAuthority">

View File

@@ -530,7 +530,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
try try
{ {
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery(
"select min(applied_to_schema) from alf_applied_patch where applied_to_schema > -1;"); "select min(applied_to_schema) from alf_applied_patch where applied_to_schema > -1");
if (!rs.next()) if (!rs.next())
{ {
// Nothing in the table // Nothing in the table

View File

@@ -26,7 +26,6 @@ package org.alfresco.repo.node.db;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@@ -37,8 +36,6 @@ import javax.transaction.UserTransaction;
import org.alfresco.i18n.I18NUtil; import org.alfresco.i18n.I18NUtil;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.domain.ChildAssoc;
import org.alfresco.repo.domain.Node;
import org.alfresco.repo.node.BaseNodeServiceTest; import org.alfresco.repo.node.BaseNodeServiceTest;
import org.alfresco.repo.node.StoreArchiveMap; import org.alfresco.repo.node.StoreArchiveMap;
import org.alfresco.repo.node.db.NodeDaoService.NodePropertyHandler; import org.alfresco.repo.node.db.NodeDaoService.NodePropertyHandler;
@@ -55,6 +52,7 @@ import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
import org.apache.commons.lang.mutable.MutableInt;
/** /**
* @see org.alfresco.repo.node.db.DbNodeServiceImpl * @see org.alfresco.repo.node.db.DbNodeServiceImpl
@@ -463,4 +461,31 @@ public class DbNodeServiceImplTest extends BaseNodeServiceTest
// Run cleanup // Run cleanup
ns.cleanup(); ns.cleanup();
} }
/**
* Adds a property to a node and checks that it can be found using the low-level DB query
*/
public void testGetPropertyValuesByPropertyAndValue() throws Throwable
{
String findMeValue = "FIND ME";
nodeService.setProperty(rootNodeRef, PROP_QNAME_STRING_PROP_SINGLE, findMeValue);
final MutableInt count = new MutableInt(0);
// Add a property to the root node and check
NodePropertyHandler handler = new NodePropertyHandler()
{
public void handle(NodeRef nodeRef, QName nodeTypeQName, QName propertyQName, Serializable value)
{
if (nodeTypeQName.equals(ContentModel.TYPE_STOREROOT))
{
count.setValue(1);
}
}
};
nodeDaoService.getPropertyValuesByPropertyAndValue(
rootNodeRef.getStoreRef(),
PROP_QNAME_STRING_PROP_SINGLE,
findMeValue,
handler);
assertTrue("Set value not found.", count.intValue() == 1);
}
} }

View File

@@ -2678,11 +2678,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return; return;
} }
final Long propQNameEntityId = propQNameEntity.getId(); final Long propQNameEntityId = propQNameEntity.getId();
final Long defaultLocaleEntityId = localeDAO.getDefaultLocalePair().getFirst();
final PropertyMapKey propKey = new PropertyMapKey();
propKey.setQnameId(propQNameEntityId);
propKey.setLocaleId(defaultLocaleEntityId);
propKey.setListIndex(0);
// Run the query // Run the query
HibernateCallback callback = new HibernateCallback() HibernateCallback callback = new HibernateCallback()
{ {
@@ -2690,9 +2685,9 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{ {
Query query = session Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODES_WITH_PROPERTY_VALUES_BY_STRING_AND_STORE) .getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODES_WITH_PROPERTY_VALUES_BY_STRING_AND_STORE)
.setString("protocol", storeRef.getProtocol()) .setString("storeProtocol", storeRef.getProtocol())
.setString("identifier", storeRef.getIdentifier()) .setString("storeIdentifier", storeRef.getIdentifier())
.setParameter("propKey", propKey) .setParameter("propQNameID", propQNameEntityId)
.setString("propStringValue", value) .setString("propStringValue", value)
; ;
DirtySessionMethodInterceptor.setQueryFlushMode(session, query); DirtySessionMethodInterceptor.setQueryFlushMode(session, query);
@@ -2706,7 +2701,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{ {
Node node = (Node) results.get(0); Node node = (Node) results.get(0);
NodeRef nodeRef = node.getNodeRef(); NodeRef nodeRef = node.getNodeRef();
QNameEntity nodeTypeQNameEntity = (QNameEntity) results.get(1); QNameEntity nodeTypeQNameEntity = node.getTypeQName();
QName nodeTypeQName = nodeTypeQNameEntity.getQName(); QName nodeTypeQName = nodeTypeQNameEntity.getQName();
handler.handle(nodeRef, nodeTypeQName, propertyQName, value); handler.handle(nodeRef, nodeTypeQName, propertyQName, value);
// Flush if required // Flush if required