mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Added NodeDaoService.getNodePropertiesRaw(Long nodeId)
- Allow low-level retrieval of the persisted node properties - Unmarshalling of cm:auditable properties included git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15042 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -32,6 +32,8 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.alfresco.repo.domain.ChildAssoc;
|
import org.alfresco.repo.domain.ChildAssoc;
|
||||||
import org.alfresco.repo.domain.NodeAssoc;
|
import org.alfresco.repo.domain.NodeAssoc;
|
||||||
|
import org.alfresco.repo.domain.NodePropertyValue;
|
||||||
|
import org.alfresco.repo.domain.PropertyMapKey;
|
||||||
import org.alfresco.repo.domain.Transaction;
|
import org.alfresco.repo.domain.Transaction;
|
||||||
import org.alfresco.repo.domain.hibernate.DirtySessionAnnotation;
|
import org.alfresco.repo.domain.hibernate.DirtySessionAnnotation;
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
@@ -135,6 +137,17 @@ public interface NodeDaoService
|
|||||||
|
|
||||||
@DirtySessionAnnotation(markDirty=false)
|
@DirtySessionAnnotation(markDirty=false)
|
||||||
public Serializable getNodeProperty(Long nodeId, QName propertyQName);
|
public Serializable getNodeProperty(Long nodeId, QName propertyQName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param nodeId the node's ID
|
||||||
|
* @return Returns a copy of the low-level properties including auditable properties
|
||||||
|
* @throws ObjectNotFoundException if the node ID is invalid
|
||||||
|
*
|
||||||
|
* @see #getNodePair(NodeRef)
|
||||||
|
*/
|
||||||
|
@DirtySessionAnnotation(markDirty=false)
|
||||||
|
public Map<PropertyMapKey, NodePropertyValue> getNodePropertiesRaw(Long nodeId);
|
||||||
|
|
||||||
@DirtySessionAnnotation(markDirty=false)
|
@DirtySessionAnnotation(markDirty=false)
|
||||||
public Map<QName, Serializable> getNodeProperties(Long nodeId);
|
public Map<QName, Serializable> getNodeProperties(Long nodeId);
|
||||||
|
@@ -1306,12 +1306,52 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
|
|||||||
{
|
{
|
||||||
Long nodeTypeQNameId = qnameDAO.getOrCreateQName(nodeTypeQName).getFirst();
|
Long nodeTypeQNameId = qnameDAO.getOrCreateQName(nodeTypeQName).getFirst();
|
||||||
if (!nodeTypeQNameId.equals(node.getTypeQNameId()))
|
if (!nodeTypeQNameId.equals(node.getTypeQNameId()))
|
||||||
{
|
{
|
||||||
node.setTypeQNameId(nodeTypeQNameId);
|
node.setTypeQNameId(nodeTypeQNameId);
|
||||||
// We will need to record the change
|
// We will need to record the change
|
||||||
recordNodeUpdate(node);
|
recordNodeUpdate(node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<PropertyMapKey, NodePropertyValue> getNodePropertiesRaw(Long nodeId)
|
||||||
|
{
|
||||||
|
Node node = getNodeNotNull(nodeId);
|
||||||
|
Map<PropertyMapKey, NodePropertyValue> props = node.getProperties();
|
||||||
|
// Copy this for adding
|
||||||
|
props = new HashMap<PropertyMapKey, NodePropertyValue>(props);
|
||||||
|
// Add the auditable properties
|
||||||
|
if (hasNodeAspect(node, ContentModel.ASPECT_AUDITABLE))
|
||||||
|
{
|
||||||
|
AuditableProperties auditable = node.getAuditableProperties();
|
||||||
|
Map<QName, Serializable> auditableProperties = auditable.getAuditableProperties();
|
||||||
|
for (Map.Entry<QName, Serializable> entry : auditableProperties.entrySet())
|
||||||
|
{
|
||||||
|
// Get default locale for the key
|
||||||
|
Pair<Long, Locale> defaultLocalePair = localeDAO.getDefaultLocalePair();
|
||||||
|
if (defaultLocalePair == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QName auditablePropertyQName = entry.getKey();
|
||||||
|
Pair<Long, QName> auditablePropertyQNamePair = qnameDAO.getQName(auditablePropertyQName);
|
||||||
|
if (auditablePropertyQNamePair == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Serializable auditablePropertyValue = entry.getValue();
|
||||||
|
NodePropertyValue npv = new NodePropertyValue(auditablePropertyQName, auditablePropertyValue);
|
||||||
|
PropertyMapKey npk = new PropertyMapKey();
|
||||||
|
npk.setQnameId(auditablePropertyQNamePair.getFirst());
|
||||||
|
npk.setListIndex(HibernateNodeDaoServiceImpl.IDX_NO_COLLECTION);
|
||||||
|
npk.setLocaleId(defaultLocalePair.getFirst());
|
||||||
|
// Add this property to the map
|
||||||
|
props.put(npk, npv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Done
|
||||||
|
return props;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Serializable getNodeProperty(Long nodeId, QName propertyQName)
|
public Serializable getNodeProperty(Long nodeId, QName propertyQName)
|
||||||
|
Reference in New Issue
Block a user