mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Removed all references to Site from publishing REST API. Replaced publishing-events-query.post with publishing-events-for-node.get.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29301 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -19,9 +19,16 @@
|
||||
|
||||
package org.alfresco.repo.node;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@@ -130,4 +137,38 @@ public abstract class NodeUtils
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<NodeRef> sortByCreationDate(NodeService nodeService,Collection<NodeRef> nodes)
|
||||
{
|
||||
ArrayList<NodeRef> sorted = new ArrayList<NodeRef>(nodes);
|
||||
Collections.sort(sorted, getNodeCreationDateComparator(nodeService));
|
||||
return sorted;
|
||||
}
|
||||
|
||||
public Comparator<NodeRef> getNodeCreationDateComparator(final NodeService nodeService)
|
||||
{
|
||||
return new Comparator<NodeRef>()
|
||||
{
|
||||
private Map<NodeRef, Long> dates = new HashMap<NodeRef, Long>();
|
||||
|
||||
public int compare(NodeRef o1, NodeRef o2)
|
||||
{
|
||||
long date1 = getDate(o1);
|
||||
long date2 = getDate(o1);
|
||||
return (int)(date1 - date2);
|
||||
}
|
||||
|
||||
private long getDate(NodeRef node)
|
||||
{
|
||||
Long date = dates.get(node);
|
||||
if(date == null)
|
||||
{
|
||||
Date dateObj = (Date) nodeService.getProperty(node, ContentModel.PROP_CREATED);
|
||||
date = dateObj == null ? -1 : dateObj.getTime();
|
||||
dates.put(node, date);
|
||||
}
|
||||
return date;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@
|
||||
package org.alfresco.repo.publishing;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.publishing.NodePublishStatus;
|
||||
@@ -65,6 +66,26 @@ public class PublishServiceImpl implements PublishingService
|
||||
return publishingEventHelper.getPublishingEvent(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public List<PublishingEvent> getEventsForPublishedNode(NodeRef publishedNode)
|
||||
{
|
||||
NodeRef queueNode = rootObject.getPublishingQueue().getNodeRef();
|
||||
List<NodeRef> eventNodes = publishingEventHelper.getEventNodesForPublishedNode(queueNode, publishedNode);
|
||||
return publishingEventHelper.getPublishingEvents(eventNodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public List<PublishingEvent> getEventsForUnpublishedNode(NodeRef unpublishedNode)
|
||||
{
|
||||
NodeRef queueNode = rootObject.getPublishingQueue().getNodeRef();
|
||||
List<NodeRef> eventNodes = publishingEventHelper.getEventNodesForUnpublishedNode(queueNode, unpublishedNode);
|
||||
return publishingEventHelper.getPublishingEvents(eventNodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@@ -77,7 +98,7 @@ public class PublishServiceImpl implements PublishingService
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public PublishingQueue getPublishingQueue(String siteId)
|
||||
public PublishingQueue getPublishingQueue()
|
||||
{
|
||||
return rootObject.getPublishingQueue();
|
||||
}
|
||||
|
@@ -307,16 +307,63 @@ public class PublishingEventHelper
|
||||
*/
|
||||
public List<NodeRef> getEventNodesForPublishedNodes(final NodeRef queue, Collection<NodeRef> publishedNodes)
|
||||
{
|
||||
Function<NodeRef, Collection<NodeRef>> transformer = new Function<NodeRef, Collection<NodeRef>>()
|
||||
return getEventNodesForNodeProperty(queue, PROP_PUBLISHING_EVENT_NODES_TO_PUBLISH, publishedNodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link List} of the {@link NodeRef}s representing PublishingEvents that were scheduled to unpublish at least one of the specified <code>unpublishedNodes</code>.
|
||||
* @param queue
|
||||
* @param unpublishedNodes
|
||||
* @return
|
||||
*/
|
||||
public List<NodeRef> getEventNodesForUnpublishedNodes(final NodeRef queue, Collection<NodeRef> unpublishedNodes)
|
||||
{
|
||||
return getEventNodesForNodeProperty(queue, PROP_PUBLISHING_EVENT_NODES_TO_PUBLISH, unpublishedNodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link List} of the {@link NodeRef}s representing PublishingEvents that were scheduled to publish the specified <code>publishedNode</code>.
|
||||
* @param queue
|
||||
* @param publishedNode
|
||||
* @return
|
||||
*/
|
||||
public List<NodeRef> getEventNodesForPublishedNode(final NodeRef queue, NodeRef publishedNode)
|
||||
{
|
||||
Function<NodeRef, List<NodeRef>> transformer = eventNodeForNodePropertyFinder(queue, PROP_PUBLISHING_EVENT_NODES_TO_PUBLISH);
|
||||
return transformer.apply(publishedNode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link List} of the {@link NodeRef}s representing PublishingEvents that were scheduled to unpublish the specified <code>unpublishedNode</code>.
|
||||
* @param queue
|
||||
* @param unpublishedNode
|
||||
* @return
|
||||
*/
|
||||
public List<NodeRef> getEventNodesForUnpublishedNode(final NodeRef queue, NodeRef unpublishedNode)
|
||||
{
|
||||
Function<NodeRef, List<NodeRef>> transformer = eventNodeForNodePropertyFinder(queue, PROP_PUBLISHING_EVENT_NODES_TO_UNPUBLISH);
|
||||
return transformer.apply(unpublishedNode);
|
||||
}
|
||||
|
||||
private List<NodeRef> getEventNodesForNodeProperty(final NodeRef queue, final QName propertyKey, Collection<NodeRef> publishedNodes)
|
||||
{
|
||||
Function<NodeRef, List<NodeRef>> transformer = eventNodeForNodePropertyFinder(queue, propertyKey);
|
||||
return transformFlat(publishedNodes, transformer);
|
||||
}
|
||||
|
||||
private Function<NodeRef, List<NodeRef>> eventNodeForNodePropertyFinder(final NodeRef queue,
|
||||
final QName propertyKey)
|
||||
{
|
||||
return new Function<NodeRef, List<NodeRef>>()
|
||||
{
|
||||
public Collection<NodeRef> apply(NodeRef publishedNode)
|
||||
public List<NodeRef> apply(NodeRef publishedNode)
|
||||
{
|
||||
List<ChildAssociationRef> assocs = nodeService.getChildAssocsByPropertyValue(queue, PROP_PUBLISHING_EVENT_NODES_TO_PUBLISH, publishedNode.toString());
|
||||
String nodeString = publishedNode.toString();
|
||||
List<ChildAssociationRef> assocs =
|
||||
nodeService.getChildAssocsByPropertyValue(queue, propertyKey, nodeString);
|
||||
return transform(assocs, NodeUtils.toChildRef());
|
||||
}
|
||||
};
|
||||
List<NodeRef> nodes = transformFlat(publishedNodes, transformer);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public List<PublishingEvent> findPublishingEvents(NodeRef queue, PublishingEventFilter filter)
|
||||
|
@@ -183,4 +183,22 @@ public class PublishingEventImpl implements PublishingEvent
|
||||
return new MutablePublishingEventImpl(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(PublishingEvent event)
|
||||
{
|
||||
if(event == null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
Date eventTime = event.getCreatedTime();
|
||||
if(eventTime == null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return (int)(createdTime.getTime() - eventTime.getTime());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -84,7 +84,7 @@ public class PublishingIntegratedTest extends BaseSpringTest
|
||||
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
||||
}
|
||||
|
||||
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
||||
PublishingQueue liveQueue = publishingService.getPublishingQueue();
|
||||
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
||||
publishingPackage.addNodesToPublish(nodes);
|
||||
|
||||
@@ -117,7 +117,7 @@ public class PublishingIntegratedTest extends BaseSpringTest
|
||||
nodes.add(nodeService.createNode(channel.getNodeRef(), ContentModel.ASSOC_CONTAINS, QName.createQName(
|
||||
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
||||
}
|
||||
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
||||
PublishingQueue liveQueue = publishingService.getPublishingQueue();
|
||||
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
||||
publishingPackage.addNodesToPublish(nodes);
|
||||
|
||||
|
@@ -25,9 +25,9 @@ import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Brian
|
||||
*
|
||||
* @author Nick Smith
|
||||
*/
|
||||
public interface PublishingEvent
|
||||
public interface PublishingEvent extends Comparable<PublishingEvent>
|
||||
{
|
||||
enum Status {SCHEDULED, IN_PROGRESS, CANCEL_REQUESTED, COMPLETED, FAILED}
|
||||
|
||||
|
@@ -21,7 +21,6 @@ package org.alfresco.service.cmr.publishing;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
@@ -47,18 +46,4 @@ public interface PublishingQueue
|
||||
* @return The identifier of the newly scheduled event
|
||||
*/
|
||||
String scheduleNewEvent(PublishingPackage publishingPackage, String channelId, Calendar schedule, String comment, StatusUpdate statusUpdate);
|
||||
|
||||
/**
|
||||
* Retrieve a list of publishing events associated with this publishing environment, filtering them using the
|
||||
* supplied PublishingEventFilter object (optional - may be <code>null</code>)
|
||||
* @param filter The filter that is to be applied to the publishing events on this environment
|
||||
* @return A list of PublishingEvent objects representing the publishing events that matched the supplied filter on this publishing environment
|
||||
*/
|
||||
List<PublishingEvent> getPublishingEvents(PublishingEventFilter filter);
|
||||
|
||||
/**
|
||||
* A factory method that creates a {@link PublishingEventFilter} object.
|
||||
* @return a new {@link PublishingEventFilter}.
|
||||
*/
|
||||
PublishingEventFilter createPublishingEventFilter();
|
||||
}
|
||||
|
@@ -19,6 +19,7 @@
|
||||
package org.alfresco.service.cmr.publishing;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@@ -26,7 +27,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
public interface PublishingService
|
||||
{
|
||||
|
||||
/**
|
||||
* Retrieve the publishing event that has the specified identifier
|
||||
*
|
||||
@@ -37,6 +37,20 @@ public interface PublishingService
|
||||
*/
|
||||
PublishingEvent getPublishingEvent(String id);
|
||||
|
||||
/**
|
||||
* Retrieve a list of publishing events for which the specified <code>node</code> was published.
|
||||
* @param publishedNode The node that was published.
|
||||
* @return A list of {@link PublishingEvent}s.
|
||||
*/
|
||||
List<PublishingEvent> getEventsForPublishedNode(NodeRef publishedNode);
|
||||
|
||||
/**
|
||||
* Retrieve a list of publishing events for which the specified <code>node</code> was unpublished.
|
||||
* @param unpublishedNode The node that was unpublished.
|
||||
* @return A list of {@link PublishingEvent}s.
|
||||
*/
|
||||
List<PublishingEvent> getEventsForUnpublishedNode(NodeRef unpublishedNode);
|
||||
|
||||
/**
|
||||
* Request that the specified publishing event be cancelled. This call will
|
||||
* cancel the identified publishing event immediately if it hasn't been
|
||||
@@ -51,7 +65,7 @@ public interface PublishingService
|
||||
* Retrieve the publishing queue associated with this publishing environment
|
||||
* @return A PublishingQueue object corresponding tho this environment's publishing queue
|
||||
*/
|
||||
PublishingQueue getPublishingQueue(String siteId);
|
||||
PublishingQueue getPublishingQueue();
|
||||
|
||||
/**
|
||||
* Discover the publishing status of each of the specified nodes
|
||||
|
Reference in New Issue
Block a user