mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8d790ed1cb | ||
|
87c7bd2877 | ||
|
9125f889b0 | ||
|
2fb74d2691 | ||
|
d671162dae | ||
|
bfaa629da7 | ||
|
719d73a558 | ||
|
a2aa867f3f | ||
|
8d745c536a | ||
|
b0f4c21ae3 | ||
|
72494e34fa | ||
|
792b7024ea | ||
|
40a1371f0d | ||
|
c22c47e63f | ||
|
232299d42d | ||
|
aca7969849 | ||
|
4ab2bbd3d6 | ||
|
f68f02372d | ||
|
9b0eedc8c1 | ||
|
f164dedcee | ||
|
9cdaa0a265 | ||
|
ef034e596b | ||
|
1251081a69 |
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-amps</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-parent</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-automation-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-parent</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-repo-parent</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-repo-parent</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-amps</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -9,6 +9,6 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
</project>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<organization>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
14
pom.xml
14
pom.xml
@@ -2,7 +2,7 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>Alfresco Community Repo Parent</name>
|
||||
|
||||
@@ -51,14 +51,14 @@
|
||||
<dependency.alfresco-server-root.version>7.0.1</dependency.alfresco-server-root.version>
|
||||
<dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version>
|
||||
<dependency.activiti.version>5.23.0</dependency.activiti.version>
|
||||
<dependency.alfresco-transform-core.version>5.2.2-A.4</dependency.alfresco-transform-core.version>
|
||||
<dependency.alfresco-transform-service.version>4.2.2-A.2</dependency.alfresco-transform-service.version>
|
||||
<dependency.alfresco-transform-core.version>5.2.2</dependency.alfresco-transform-core.version>
|
||||
<dependency.alfresco-transform-service.version>4.2.2</dependency.alfresco-transform-service.version>
|
||||
<dependency.alfresco-greenmail.version>7.0</dependency.alfresco-greenmail.version>
|
||||
<dependency.acs-event-model.version>0.0.33</dependency.acs-event-model.version>
|
||||
|
||||
<dependency.aspectj.version>1.9.22.1</dependency.aspectj.version>
|
||||
<dependency.spring.version>6.2.8</dependency.spring.version>
|
||||
<dependency.spring-security.version>6.3.9</dependency.spring-security.version>
|
||||
<dependency.spring.version>6.2.11</dependency.spring.version>
|
||||
<dependency.spring-security.version>6.4.11</dependency.spring-security.version>
|
||||
<dependency.antlr.version>3.5.3</dependency.antlr.version>
|
||||
<dependency.jackson.version>2.17.2</dependency.jackson.version>
|
||||
<dependency.cxf.version>4.1.2</dependency.cxf.version>
|
||||
@@ -113,7 +113,7 @@
|
||||
<dependency.jakarta-json-path.version>2.9.0</dependency.jakarta-json-path.version>
|
||||
<dependency.json-smart.version>2.5.2</dependency.json-smart.version>
|
||||
<alfresco.googledrive.version>4.1.0</alfresco.googledrive.version>
|
||||
<alfresco.aos-module.version>3.3.0</alfresco.aos-module.version>
|
||||
<alfresco.aos-module.version>3.4.0-A.1</alfresco.aos-module.version>
|
||||
<alfresco.api-explorer.version>23.4.0</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share -->
|
||||
|
||||
<alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version>
|
||||
@@ -154,7 +154,7 @@
|
||||
<connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
|
||||
<developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
|
||||
<url>https://github.com/Alfresco/alfresco-community-repo</url>
|
||||
<tag>23.6.0.22</tag>
|
||||
<tag>23.6.0.29</tag>
|
||||
</scm>
|
||||
|
||||
<distributionManagement>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -40,7 +40,6 @@
|
||||
"items":
|
||||
[
|
||||
<#list results as row>
|
||||
<#if row.item.hasPermission("Read")>
|
||||
{
|
||||
"type": "${row.item.typeShort}",
|
||||
"parentType": "${row.item.parentTypeShort!""}",
|
||||
@@ -76,7 +75,6 @@
|
||||
"nodeRef": "${row.item.nodeRef}"<#if row.selectable?exists>,
|
||||
"selectable" : ${row.selectable?string}</#if>
|
||||
}<#if row_has_next>,</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
]
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>23.6.0.22</version>
|
||||
<version>23.6.0.29</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2025 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -23,105 +23,102 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.domain.node;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Class holding properties associated with the <b>sys:referenceable</b> aspect.
|
||||
* This aspect is common enough to warrant direct inclusion on the <b>Node</b> entity.
|
||||
*
|
||||
* @author Derek Hulley
|
||||
* @since 3.4
|
||||
*/
|
||||
public class ReferenceablePropertiesEntity
|
||||
{
|
||||
private static final Set<QName> REFERENCEABLE_PROP_QNAMES;
|
||||
static
|
||||
{
|
||||
REFERENCEABLE_PROP_QNAMES = new HashSet<QName>(8);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_STORE_PROTOCOL);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_STORE_IDENTIFIER);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_NODE_UUID);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_NODE_DBID);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns <tt>true</tt> if the property belongs to the <b>sys:referenceable</b> aspect
|
||||
*/
|
||||
public static boolean isReferenceableProperty(QName qname)
|
||||
{
|
||||
return REFERENCEABLE_PROP_QNAMES.contains(qname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties
|
||||
*/
|
||||
public static void removeReferenceableProperties(Node node, Map<QName, Serializable> properties)
|
||||
{
|
||||
properties.keySet().removeAll(REFERENCEABLE_PROP_QNAMES);
|
||||
String name = DefaultTypeConverter.INSTANCE.convert(String.class, properties.get(ContentModel.PROP_NAME));
|
||||
if (name != null && name.equals(node.getUuid()))
|
||||
{
|
||||
// The cm:name matches the UUID, so drop it
|
||||
properties.remove(ContentModel.PROP_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties
|
||||
*/
|
||||
public static void removeReferenceableProperties(Set<QName> propertyQNames)
|
||||
{
|
||||
propertyQNames.removeAll(REFERENCEABLE_PROP_QNAMES);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties.
|
||||
*/
|
||||
public static void addReferenceableProperties(Node node, Map<QName, Serializable> properties)
|
||||
{
|
||||
Long nodeId = node.getId();
|
||||
NodeRef nodeRef = node.getNodeRef();
|
||||
properties.put(ContentModel.PROP_STORE_PROTOCOL, nodeRef.getStoreRef().getProtocol());
|
||||
properties.put(ContentModel.PROP_STORE_IDENTIFIER, nodeRef.getStoreRef().getIdentifier());
|
||||
properties.put(ContentModel.PROP_NODE_UUID, nodeRef.getId());
|
||||
properties.put(ContentModel.PROP_NODE_DBID, nodeId);
|
||||
// add the ID as the name, if required
|
||||
String name = DefaultTypeConverter.INSTANCE.convert(String.class, properties.get(ContentModel.PROP_NAME));
|
||||
if (name == null)
|
||||
{
|
||||
properties.put(ContentModel.PROP_NAME, nodeRef.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public static Serializable getReferenceableProperty(Node node, QName qname)
|
||||
{
|
||||
NodeRef nodeRef = node.getNodeRef();
|
||||
if (qname.equals(ContentModel.PROP_STORE_PROTOCOL))
|
||||
{
|
||||
return nodeRef.getStoreRef().getProtocol();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_STORE_IDENTIFIER))
|
||||
{
|
||||
return nodeRef.getStoreRef().getIdentifier();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_NODE_UUID))
|
||||
{
|
||||
return nodeRef.getId();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_NODE_DBID))
|
||||
{
|
||||
return node.getId();
|
||||
}
|
||||
throw new IllegalArgumentException("Not sys:referenceable property: " + qname);
|
||||
}
|
||||
}
|
||||
package org.alfresco.repo.domain.node;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Class holding properties associated with the <b>sys:referenceable</b> aspect. This aspect is common enough to warrant direct inclusion on the <b>Node</b> entity.
|
||||
*
|
||||
* @author Derek Hulley
|
||||
* @since 3.4
|
||||
*/
|
||||
public class ReferenceablePropertiesEntity
|
||||
{
|
||||
private static final Set<QName> REFERENCEABLE_PROP_QNAMES;
|
||||
static
|
||||
{
|
||||
REFERENCEABLE_PROP_QNAMES = new HashSet<QName>(8);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_STORE_PROTOCOL);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_STORE_IDENTIFIER);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_NODE_UUID);
|
||||
REFERENCEABLE_PROP_QNAMES.add(ContentModel.PROP_NODE_DBID);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns <tt>true</tt> if the property belongs to the <b>sys:referenceable</b> aspect
|
||||
*/
|
||||
public static boolean isReferenceableProperty(QName qname)
|
||||
{
|
||||
return REFERENCEABLE_PROP_QNAMES.contains(qname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties
|
||||
*/
|
||||
public static void removeReferenceableProperties(Node node, Map<QName, Serializable> properties)
|
||||
{
|
||||
properties.keySet().removeAll(REFERENCEABLE_PROP_QNAMES);
|
||||
String name = DefaultTypeConverter.INSTANCE.convert(String.class, properties.get(ContentModel.PROP_NAME));
|
||||
if (name != null && name.equals(node.getUuid()))
|
||||
{
|
||||
// The cm:name matches the UUID, so drop it
|
||||
properties.remove(ContentModel.PROP_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties
|
||||
*/
|
||||
public static void removeReferenceableProperties(Set<QName> propertyQNames)
|
||||
{
|
||||
propertyQNames.removeAll(REFERENCEABLE_PROP_QNAMES);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds all {@link ContentModel#ASPECT_REFERENCEABLE referencable} properties.
|
||||
*/
|
||||
public static void addReferenceableProperties(Long nodeId, NodeRef nodeRef, Map<QName, Serializable> properties)
|
||||
{
|
||||
properties.put(ContentModel.PROP_STORE_PROTOCOL, nodeRef.getStoreRef().getProtocol());
|
||||
properties.put(ContentModel.PROP_STORE_IDENTIFIER, nodeRef.getStoreRef().getIdentifier());
|
||||
properties.put(ContentModel.PROP_NODE_UUID, nodeRef.getId());
|
||||
properties.put(ContentModel.PROP_NODE_DBID, nodeId);
|
||||
// add the ID as the name, if required
|
||||
String name = DefaultTypeConverter.INSTANCE.convert(String.class, properties.get(ContentModel.PROP_NAME));
|
||||
if (name == null)
|
||||
{
|
||||
properties.put(ContentModel.PROP_NAME, nodeRef.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public static Serializable getReferenceableProperty(Node node, QName qname)
|
||||
{
|
||||
NodeRef nodeRef = node.getNodeRef();
|
||||
if (qname.equals(ContentModel.PROP_STORE_PROTOCOL))
|
||||
{
|
||||
return nodeRef.getStoreRef().getProtocol();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_STORE_IDENTIFIER))
|
||||
{
|
||||
return nodeRef.getStoreRef().getIdentifier();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_NODE_UUID))
|
||||
{
|
||||
return nodeRef.getId();
|
||||
}
|
||||
else if (qname.equals(ContentModel.PROP_NODE_DBID))
|
||||
{
|
||||
return node.getId();
|
||||
}
|
||||
throw new IllegalArgumentException("Not sys:referenceable property: " + qname);
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2023 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2025 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -39,8 +39,10 @@ import org.alfresco.service.namespace.QName;
|
||||
/**
|
||||
* Encapsulates events occurred in a single transaction.
|
||||
*
|
||||
* @param <REF> entity (e.g. node, child association, peer association) reference type
|
||||
* @param <RES> entity resource type
|
||||
* @param <REF>
|
||||
* entity (e.g. node, child association, peer association) reference type
|
||||
* @param <RES>
|
||||
* entity resource type
|
||||
*/
|
||||
public abstract class EventConsolidator<REF extends EntityRef, RES extends Resource>
|
||||
{
|
||||
@@ -90,23 +92,31 @@ public abstract class EventConsolidator<REF extends EntityRef, RES extends Resou
|
||||
/**
|
||||
* Builds and returns the {@link RepoEvent} instance.
|
||||
*
|
||||
* @param eventInfo the object holding the event information
|
||||
* @param eventInfo
|
||||
* the object holding the event information
|
||||
* @return the {@link RepoEvent} instance
|
||||
*/
|
||||
public RepoEvent<DataAttributes<RES>> getRepoEvent(EventInfo eventInfo)
|
||||
{
|
||||
final RepoEvent.Builder<DataAttributes<RES>> builder = RepoEvent.builder();
|
||||
|
||||
configureRepoEventBuilder(builder, eventInfo);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
protected void configureRepoEventBuilder(RepoEvent.Builder<DataAttributes<RES>> builder, EventInfo eventInfo)
|
||||
{
|
||||
EventType eventType = getDerivedEvent();
|
||||
|
||||
DataAttributes<RES> eventData = buildEventData(eventInfo, resource, eventType);
|
||||
|
||||
return RepoEvent.<DataAttributes<RES>>builder()
|
||||
.setId(eventInfo.getId())
|
||||
.setSource(eventInfo.getSource())
|
||||
.setTime(eventInfo.getTimestamp())
|
||||
.setType(eventType.getType())
|
||||
.setData(eventData)
|
||||
.setDataschema(EventJSONSchema.getSchemaV1(eventType))
|
||||
.build();
|
||||
builder.setId(eventInfo.getId())
|
||||
.setSource(eventInfo.getSource())
|
||||
.setTime(eventInfo.getTimestamp())
|
||||
.setType(eventType.getType())
|
||||
.setData(eventData)
|
||||
.setDataschema(EventJSONSchema.getSchemaV1(eventType));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,9 +124,9 @@ public abstract class EventConsolidator<REF extends EntityRef, RES extends Resou
|
||||
*/
|
||||
protected DataAttributes<RES> buildEventData(EventInfo eventInfo, RES resource, EventType eventType)
|
||||
{
|
||||
return EventData.<RES>builder()
|
||||
.setEventGroupId(eventInfo.getTxnId())
|
||||
.setResource(resource)
|
||||
.build();
|
||||
return EventData.<RES> builder()
|
||||
.setEventGroupId(eventInfo.getTxnId())
|
||||
.setResource(resource)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2025 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -23,239 +23,290 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.node.getchildren;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.repo.domain.node.NodeEntity;
|
||||
import org.alfresco.repo.domain.node.NodePropertyEntity;
|
||||
|
||||
/**
|
||||
* Filterable/Sortable Node Entity
|
||||
*
|
||||
* Can be optionally filtered/sorted by (up to) three properties - note: sort properties are applied in order
|
||||
*
|
||||
* @author jan
|
||||
* @since 4.0
|
||||
*/
|
||||
public class FilterSortNodeEntity
|
||||
{
|
||||
private Long id; // node id
|
||||
|
||||
private NodeEntity node;
|
||||
private NodePropertyEntity prop1;
|
||||
private NodePropertyEntity prop2;
|
||||
private NodePropertyEntity prop3;
|
||||
|
||||
// Supplemental query-related parameters
|
||||
private Long parentNodeId;
|
||||
private Long prop1qnameId;
|
||||
private Long prop2qnameId;
|
||||
private Long prop3qnameId;
|
||||
private List<Long> childNodeTypeQNameIds;
|
||||
private Set<Long> assocTypeQNameIds;
|
||||
private String pattern;
|
||||
private Long namePropertyQNameId;
|
||||
private boolean auditableProps;
|
||||
private boolean nodeType;
|
||||
|
||||
private Boolean isPrimary;
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public FilterSortNodeEntity()
|
||||
{
|
||||
auditableProps = false;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getPattern()
|
||||
{
|
||||
return pattern;
|
||||
}
|
||||
|
||||
protected String escape(String s, char escapeChar)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int idx = -1;
|
||||
int offset = 0;
|
||||
do
|
||||
{
|
||||
idx = s.indexOf(escapeChar, offset);
|
||||
if(idx != -1)
|
||||
{
|
||||
sb.append(s.substring(offset, idx));
|
||||
sb.append("\\");
|
||||
sb.append(escapeChar);
|
||||
offset = idx + 1;
|
||||
}
|
||||
}
|
||||
while(idx != -1);
|
||||
sb.append(s.substring(offset));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void setPattern(String pattern)
|
||||
{
|
||||
if(pattern != null)
|
||||
{
|
||||
// escape the '%' character with '\' (standard SQL escape character)
|
||||
pattern = escape(pattern, '%');
|
||||
// replace the wildcard character '*' with the one used in database queries i.e. '%'
|
||||
this.pattern = pattern.replace('*', '%');
|
||||
}
|
||||
}
|
||||
|
||||
public void setAssocTypeQNameIds(Set<Long> assocTypeQNameIds)
|
||||
{
|
||||
this.assocTypeQNameIds = assocTypeQNameIds;
|
||||
}
|
||||
|
||||
public Set<Long> getAssocTypeQNameIds()
|
||||
{
|
||||
return assocTypeQNameIds;
|
||||
}
|
||||
|
||||
public Long getNamePropertyQNameId()
|
||||
{
|
||||
return namePropertyQNameId;
|
||||
}
|
||||
|
||||
public void setNamePropertyQNameId(Long namePropertyQNameId)
|
||||
{
|
||||
this.namePropertyQNameId = namePropertyQNameId;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp1()
|
||||
{
|
||||
return prop1;
|
||||
}
|
||||
|
||||
public void setProp1(NodePropertyEntity prop1)
|
||||
{
|
||||
this.prop1 = prop1;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp2()
|
||||
{
|
||||
return prop2;
|
||||
}
|
||||
|
||||
public void setProp2(NodePropertyEntity prop2)
|
||||
{
|
||||
this.prop2 = prop2;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp3()
|
||||
{
|
||||
return prop3;
|
||||
}
|
||||
|
||||
public void setProp3(NodePropertyEntity prop3)
|
||||
{
|
||||
this.prop3 = prop3;
|
||||
}
|
||||
|
||||
public NodeEntity getNode()
|
||||
{
|
||||
return node;
|
||||
}
|
||||
|
||||
public void setNode(NodeEntity childNode)
|
||||
{
|
||||
this.node = childNode;
|
||||
}
|
||||
|
||||
// Supplemental query-related parameters
|
||||
|
||||
public Long getParentNodeId()
|
||||
{
|
||||
return parentNodeId;
|
||||
}
|
||||
|
||||
public void setParentNodeId(Long parentNodeId)
|
||||
{
|
||||
this.parentNodeId = parentNodeId;
|
||||
}
|
||||
|
||||
public Long getProp1qnameId()
|
||||
{
|
||||
return prop1qnameId;
|
||||
}
|
||||
|
||||
public void setProp1qnameId(Long prop1qnameId)
|
||||
{
|
||||
this.prop1qnameId = prop1qnameId;
|
||||
}
|
||||
|
||||
public Long getProp2qnameId()
|
||||
{
|
||||
return prop2qnameId;
|
||||
}
|
||||
|
||||
public void setProp2qnameId(Long prop2qnameId)
|
||||
{
|
||||
this.prop2qnameId = prop2qnameId;
|
||||
}
|
||||
|
||||
public Long getProp3qnameId()
|
||||
{
|
||||
return prop3qnameId;
|
||||
}
|
||||
|
||||
public void setProp3qnameId(Long prop3qnameId)
|
||||
{
|
||||
this.prop3qnameId = prop3qnameId;
|
||||
}
|
||||
|
||||
public List<Long> getChildNodeTypeQNameIds()
|
||||
{
|
||||
return childNodeTypeQNameIds;
|
||||
}
|
||||
|
||||
public void setChildNodeTypeQNameIds(List<Long> childNodeTypeQNameIds)
|
||||
{
|
||||
this.childNodeTypeQNameIds = childNodeTypeQNameIds;
|
||||
}
|
||||
|
||||
public boolean isAuditableProps()
|
||||
{
|
||||
return auditableProps;
|
||||
}
|
||||
|
||||
public void setAuditableProps(boolean auditableProps)
|
||||
{
|
||||
this.auditableProps = auditableProps;
|
||||
}
|
||||
|
||||
public boolean isNodeType()
|
||||
{
|
||||
return nodeType;
|
||||
}
|
||||
|
||||
public void setNodeType(boolean nodeType)
|
||||
{
|
||||
this.nodeType = nodeType;
|
||||
}
|
||||
|
||||
public Boolean isPrimary()
|
||||
{
|
||||
return isPrimary;
|
||||
}
|
||||
|
||||
public void setIsPrimary(Boolean isPrimary)
|
||||
{
|
||||
this.isPrimary = isPrimary;
|
||||
}
|
||||
}
|
||||
package org.alfresco.repo.node.getchildren;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.repo.domain.node.AuditablePropertiesEntity;
|
||||
import org.alfresco.repo.domain.node.NodePropertyEntity;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
|
||||
/**
|
||||
* Filterable/Sortable Node Entity
|
||||
*
|
||||
* Can be optionally filtered/sorted by (up to) three properties - note: sort properties are applied in order
|
||||
*
|
||||
* @author jan
|
||||
* @since 4.0
|
||||
*/
|
||||
public class FilterSortNodeEntity
|
||||
{
|
||||
private Long id; // node id
|
||||
private String nodeUuid;
|
||||
private Long typeQNameId;
|
||||
|
||||
private AuditablePropertiesEntity auditablePropertiesEntity;
|
||||
private NodePropertyEntity prop1;
|
||||
private NodePropertyEntity prop2;
|
||||
private NodePropertyEntity prop3;
|
||||
|
||||
private String storeProtocol;
|
||||
private String storeIdentifier;
|
||||
|
||||
// Supplemental query-related parameters
|
||||
private Long parentNodeId;
|
||||
private Long prop1qnameId;
|
||||
private Long prop2qnameId;
|
||||
private Long prop3qnameId;
|
||||
private List<Long> childNodeTypeQNameIds;
|
||||
private Set<Long> assocTypeQNameIds;
|
||||
private String pattern;
|
||||
private Long namePropertyQNameId;
|
||||
private boolean auditableProps;
|
||||
private boolean nodeType;
|
||||
|
||||
private Boolean isPrimary;
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
public FilterSortNodeEntity()
|
||||
{
|
||||
auditableProps = false;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getNodeUuid()
|
||||
{
|
||||
return nodeUuid;
|
||||
}
|
||||
|
||||
public void setNodeUuid(String nodeUuid)
|
||||
{
|
||||
this.nodeUuid = nodeUuid;
|
||||
}
|
||||
|
||||
public Long getTypeQNameId()
|
||||
{
|
||||
return typeQNameId;
|
||||
}
|
||||
|
||||
public void setTypeQNameId(Long typeQNameId)
|
||||
{
|
||||
this.typeQNameId = typeQNameId;
|
||||
}
|
||||
|
||||
public String getPattern()
|
||||
{
|
||||
return pattern;
|
||||
}
|
||||
|
||||
protected String escape(String s, char escapeChar)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int idx = -1;
|
||||
int offset = 0;
|
||||
do
|
||||
{
|
||||
idx = s.indexOf(escapeChar, offset);
|
||||
if (idx != -1)
|
||||
{
|
||||
sb.append(s.substring(offset, idx));
|
||||
sb.append("\\");
|
||||
sb.append(escapeChar);
|
||||
offset = idx + 1;
|
||||
}
|
||||
} while (idx != -1);
|
||||
sb.append(s.substring(offset));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void setPattern(String pattern)
|
||||
{
|
||||
if (pattern != null)
|
||||
{
|
||||
// escape the '%' character with '\' (standard SQL escape character)
|
||||
pattern = escape(pattern, '%');
|
||||
// replace the wildcard character '*' with the one used in database queries i.e. '%'
|
||||
this.pattern = pattern.replace('*', '%');
|
||||
}
|
||||
}
|
||||
|
||||
public void setAssocTypeQNameIds(Set<Long> assocTypeQNameIds)
|
||||
{
|
||||
this.assocTypeQNameIds = assocTypeQNameIds;
|
||||
}
|
||||
|
||||
public Set<Long> getAssocTypeQNameIds()
|
||||
{
|
||||
return assocTypeQNameIds;
|
||||
}
|
||||
|
||||
public Long getNamePropertyQNameId()
|
||||
{
|
||||
return namePropertyQNameId;
|
||||
}
|
||||
|
||||
public void setNamePropertyQNameId(Long namePropertyQNameId)
|
||||
{
|
||||
this.namePropertyQNameId = namePropertyQNameId;
|
||||
}
|
||||
|
||||
public AuditablePropertiesEntity getAuditablePropertiesEntity()
|
||||
{
|
||||
return auditablePropertiesEntity;
|
||||
}
|
||||
|
||||
public void setAuditablePropertiesEntity(AuditablePropertiesEntity auditablePropertiesEntity)
|
||||
{
|
||||
this.auditablePropertiesEntity = auditablePropertiesEntity;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp1()
|
||||
{
|
||||
return prop1;
|
||||
}
|
||||
|
||||
public void setProp1(NodePropertyEntity prop1)
|
||||
{
|
||||
this.prop1 = prop1;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp2()
|
||||
{
|
||||
return prop2;
|
||||
}
|
||||
|
||||
public void setProp2(NodePropertyEntity prop2)
|
||||
{
|
||||
this.prop2 = prop2;
|
||||
}
|
||||
|
||||
public NodePropertyEntity getProp3()
|
||||
{
|
||||
return prop3;
|
||||
}
|
||||
|
||||
public void setProp3(NodePropertyEntity prop3)
|
||||
{
|
||||
this.prop3 = prop3;
|
||||
}
|
||||
|
||||
public String getStoreProtocol()
|
||||
{
|
||||
return storeProtocol;
|
||||
}
|
||||
|
||||
public void setStoreProtocol(String storeProtocol)
|
||||
{
|
||||
this.storeProtocol = storeProtocol;
|
||||
}
|
||||
|
||||
public String getStoreIdentifier()
|
||||
{
|
||||
return storeIdentifier;
|
||||
}
|
||||
|
||||
public void setStoreIdentifier(String storeIdentifier)
|
||||
{
|
||||
this.storeIdentifier = storeIdentifier;
|
||||
}
|
||||
|
||||
// Supplemental query-related parameters
|
||||
|
||||
public Long getParentNodeId()
|
||||
{
|
||||
return parentNodeId;
|
||||
}
|
||||
|
||||
public void setParentNodeId(Long parentNodeId)
|
||||
{
|
||||
this.parentNodeId = parentNodeId;
|
||||
}
|
||||
|
||||
public Long getProp1qnameId()
|
||||
{
|
||||
return prop1qnameId;
|
||||
}
|
||||
|
||||
public void setProp1qnameId(Long prop1qnameId)
|
||||
{
|
||||
this.prop1qnameId = prop1qnameId;
|
||||
}
|
||||
|
||||
public Long getProp2qnameId()
|
||||
{
|
||||
return prop2qnameId;
|
||||
}
|
||||
|
||||
public void setProp2qnameId(Long prop2qnameId)
|
||||
{
|
||||
this.prop2qnameId = prop2qnameId;
|
||||
}
|
||||
|
||||
public Long getProp3qnameId()
|
||||
{
|
||||
return prop3qnameId;
|
||||
}
|
||||
|
||||
public void setProp3qnameId(Long prop3qnameId)
|
||||
{
|
||||
this.prop3qnameId = prop3qnameId;
|
||||
}
|
||||
|
||||
public List<Long> getChildNodeTypeQNameIds()
|
||||
{
|
||||
return childNodeTypeQNameIds;
|
||||
}
|
||||
|
||||
public void setChildNodeTypeQNameIds(List<Long> childNodeTypeQNameIds)
|
||||
{
|
||||
this.childNodeTypeQNameIds = childNodeTypeQNameIds;
|
||||
}
|
||||
|
||||
public boolean isAuditableProps()
|
||||
{
|
||||
return auditableProps;
|
||||
}
|
||||
|
||||
public void setAuditableProps(boolean auditableProps)
|
||||
{
|
||||
this.auditableProps = auditableProps;
|
||||
}
|
||||
|
||||
public boolean isNodeType()
|
||||
{
|
||||
return nodeType;
|
||||
}
|
||||
|
||||
public void setNodeType(boolean nodeType)
|
||||
{
|
||||
this.nodeType = nodeType;
|
||||
}
|
||||
|
||||
public Boolean isPrimary()
|
||||
{
|
||||
return isPrimary;
|
||||
}
|
||||
|
||||
public void setIsPrimary(Boolean isPrimary)
|
||||
{
|
||||
this.isPrimary = isPrimary;
|
||||
}
|
||||
|
||||
public NodeRef createNodeRef()
|
||||
{
|
||||
return new NodeRef(new StoreRef(storeProtocol, storeIdentifier), nodeUuid);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -133,7 +133,15 @@
|
||||
<resultMap id="result_FilterSortNode" type="FilterSortNode">
|
||||
|
||||
<id property="id" column="id" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||
|
||||
<result property="nodeUuid" column="uuid" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="typeQNameId" column="type_qname_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||
|
||||
<result property="auditablePropertiesEntity.auditCreator" column="audit_creator" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="auditablePropertiesEntity.auditCreated" column="audit_created" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="auditablePropertiesEntity.auditModifier" column="audit_modifier" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="auditablePropertiesEntity.auditModified" column="audit_modified" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="auditablePropertiesEntity.auditAccessed" column="audit_accessed" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
|
||||
<result property="prop1.nodeId" column="prop1_node_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||
<result property="prop1.key.qnameId" column="prop1_qname_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||
<result property="prop1.key.localeId" column="prop1_locale_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||
@@ -169,8 +177,9 @@
|
||||
<result property="prop3.value.floatValue" column="prop3_float_value" jdbcType="FLOAT" javaType="java.lang.Float"/>
|
||||
<result property="prop3.value.doubleValue" column="prop3_double_value" jdbcType="FLOAT" javaType="java.lang.Double"/>
|
||||
<result property="prop3.value.stringValue" column="prop3_string_value" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
|
||||
<association property="node" resultMap="alfresco.node.result_Node"/>
|
||||
|
||||
<result property="storeProtocol" column="protocol" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
<result property="storeIdentifier" column="identifier" jdbcType="VARCHAR" javaType="java.lang.String"/>
|
||||
|
||||
</resultMap>
|
||||
|
||||
@@ -972,8 +981,8 @@
|
||||
</select>
|
||||
|
||||
<!-- GetChildren - with explicit prop filtering and/or sorting -->
|
||||
<select id="select_GetChildrenCannedQueryWithProps" parameterType="FilterSortNode" resultMap="result_FilterSortNode">
|
||||
select
|
||||
<select id="select_GetChildrenCannedQueryWithProps" parameterType="FilterSortNode" resultMap="result_FilterSortNode" flushCache="true">
|
||||
select distinct
|
||||
childNode.id as id,
|
||||
childNode.version as version,
|
||||
childStore.id as store_id,
|
||||
@@ -989,7 +998,7 @@
|
||||
childNode.audit_created as audit_created,
|
||||
childNode.audit_modifier as audit_modifier,
|
||||
childNode.audit_modified as audit_modified,
|
||||
childNode.audit_accessed as audit_accessed
|
||||
childNode.audit_accessed as audit_accessed
|
||||
<if test="prop1qnameId != null">
|
||||
, prop1.node_id as prop1_node_id,
|
||||
prop1.qname_id as prop1_qname_id,
|
||||
@@ -1067,9 +1076,6 @@
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="prop1qnameId == null and auditableProps == false">
|
||||
<include refid="alfresco.node.select_ChildAssoc_OrderBy"/>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- GetChildren - with no explicit sorting (or prop filtering) - note: still filtered by child type (and optionally primary or secondary) -->
|
||||
|
Reference in New Issue
Block a user