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

View File

@@ -460,6 +460,17 @@
]]>
</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">

View File

@@ -530,7 +530,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
try
{
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())
{
// Nothing in the table

View File

@@ -26,7 +26,6 @@ package org.alfresco.repo.node.db;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@@ -37,8 +36,6 @@ import javax.transaction.UserTransaction;
import org.alfresco.i18n.I18NUtil;
import org.alfresco.model.ContentModel;
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.StoreArchiveMap;
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.transaction.TransactionService;
import org.alfresco.util.Pair;
import org.apache.commons.lang.mutable.MutableInt;
/**
* @see org.alfresco.repo.node.db.DbNodeServiceImpl
@@ -463,4 +461,31 @@ public class DbNodeServiceImplTest extends BaseNodeServiceTest
// Run 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;
}
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
HibernateCallback callback = new HibernateCallback()
{
@@ -2690,9 +2685,9 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODES_WITH_PROPERTY_VALUES_BY_STRING_AND_STORE)
.setString("protocol", storeRef.getProtocol())
.setString("identifier", storeRef.getIdentifier())
.setParameter("propKey", propKey)
.setString("storeProtocol", storeRef.getProtocol())
.setString("storeIdentifier", storeRef.getIdentifier())
.setParameter("propQNameID", propQNameEntityId)
.setString("propStringValue", value)
;
DirtySessionMethodInterceptor.setQueryFlushMode(session, query);
@@ -2706,7 +2701,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Node node = (Node) results.get(0);
NodeRef nodeRef = node.getNodeRef();
QNameEntity nodeTypeQNameEntity = (QNameEntity) results.get(1);
QNameEntity nodeTypeQNameEntity = node.getTypeQName();
QName nodeTypeQName = nodeTypeQNameEntity.getQName();
handler.handle(nodeRef, nodeTypeQName, propertyQName, value);
// Flush if required