mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
REPO-210 : Review requirement to support isFavorite as an optional top level property.
This commit is contained in:
@@ -130,6 +130,7 @@ import org.alfresco.service.cmr.model.FileExistsException;
|
|||||||
import org.alfresco.service.cmr.model.FileFolderService;
|
import org.alfresco.service.cmr.model.FileFolderService;
|
||||||
import org.alfresco.service.cmr.model.FileInfo;
|
import org.alfresco.service.cmr.model.FileInfo;
|
||||||
import org.alfresco.service.cmr.model.FileNotFoundException;
|
import org.alfresco.service.cmr.model.FileNotFoundException;
|
||||||
|
import org.alfresco.service.cmr.preference.PreferenceService;
|
||||||
import org.alfresco.service.cmr.repository.AssociationExistsException;
|
import org.alfresco.service.cmr.repository.AssociationExistsException;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ContentData;
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
@@ -808,7 +809,15 @@ public class NodesImpl implements Nodes
|
|||||||
String path = parameters.getParameter(PARAM_RELATIVE_PATH);
|
String path = parameters.getParameter(PARAM_RELATIVE_PATH);
|
||||||
NodeRef nodeRef = validateOrLookupNode(nodeId, path);
|
NodeRef nodeRef = validateOrLookupNode(nodeId, path);
|
||||||
|
|
||||||
return getFolderOrDocumentFullInfo(nodeRef, null, null, parameters);
|
Node node = getFolderOrDocumentFullInfo(nodeRef, null, null, parameters);
|
||||||
|
|
||||||
|
// calculate if node is a favorite node for the current user
|
||||||
|
List<Node> currentList = new ArrayList<Node>(1);
|
||||||
|
currentList.add(node);
|
||||||
|
isFavorite(currentList);
|
||||||
|
|
||||||
|
return node;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Node getFolderOrDocumentFullInfo(NodeRef nodeRef, NodeRef parentNodeRef, QName nodeTypeQName, Parameters parameters)
|
private Node getFolderOrDocumentFullInfo(NodeRef nodeRef, NodeRef parentNodeRef, QName nodeTypeQName, Parameters parameters)
|
||||||
@@ -1369,6 +1378,8 @@ public class NodesImpl implements Nodes
|
|||||||
sourceEntity = getFolderOrDocumentFullInfo(parentNodeRef, null, null, null, mapUserInfo);
|
sourceEntity = getFolderOrDocumentFullInfo(parentNodeRef, null, null, null, mapUserInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isFavorite(nodes);
|
||||||
|
|
||||||
return CollectionWithPagingInfo.asPaged(paging, nodes, pagingResults.hasMoreItems(), pagingResults.getTotalResultCount().getFirst(), sourceEntity);
|
return CollectionWithPagingInfo.asPaged(paging, nodes, pagingResults.hasMoreItems(), pagingResults.getTotalResultCount().getFirst(), sourceEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3339,6 +3350,56 @@ public class NodesImpl implements Nodes
|
|||||||
return duplicate;
|
return duplicate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param nodes
|
||||||
|
*/
|
||||||
|
private void isFavorite(List<Node> nodes)
|
||||||
|
{
|
||||||
|
PreferenceService preferenceService = (PreferenceService) sr.getService(ServiceRegistry.PREFERENCE_SERVICE);
|
||||||
|
String currentUserName = AuthenticationUtil.getFullyAuthenticatedUser();
|
||||||
|
Map<String, Serializable> preferences = preferenceService.getPreferences(currentUserName);
|
||||||
|
Set<NodeRef> preferencesSet = new HashSet<>();
|
||||||
|
|
||||||
|
for (Serializable nodesFavorites : preferences.values())
|
||||||
|
{
|
||||||
|
StringTokenizer st = new StringTokenizer((String) nodesFavorites, ",");
|
||||||
|
while (st.hasMoreTokens())
|
||||||
|
{
|
||||||
|
String nodeRefStr = st.nextToken();
|
||||||
|
nodeRefStr = nodeRefStr.trim();
|
||||||
|
|
||||||
|
if (!NodeRef.isNodeRef((String) nodeRefStr))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
NodeRef nodeRef = new NodeRef((String) nodeRefStr);
|
||||||
|
|
||||||
|
if (nodeService.exists(nodeRef))
|
||||||
|
{
|
||||||
|
|
||||||
|
preferencesSet.add(nodeRef);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preferencesSet.isEmpty())
|
||||||
|
{
|
||||||
|
for (Node node : nodes)
|
||||||
|
{
|
||||||
|
if (preferencesSet.contains(node.getNodeRef()))
|
||||||
|
{
|
||||||
|
node.setFavorite(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jamal Kaabi-Mofrad
|
* @author Jamal Kaabi-Mofrad
|
||||||
*/
|
*/
|
||||||
|
@@ -99,6 +99,7 @@ public class Node implements Comparable<Node>
|
|||||||
//optional SearchEntry (only ever returned from a search)
|
//optional SearchEntry (only ever returned from a search)
|
||||||
protected SearchEntry search = null;
|
protected SearchEntry search = null;
|
||||||
protected String location;
|
protected String location;
|
||||||
|
private Boolean favorite;
|
||||||
|
|
||||||
public Node(NodeRef nodeRef, NodeRef parentNodeRef, Map<QName, Serializable> nodeProps, Map<String, UserInfo> mapUserInfo, ServiceRegistry sr)
|
public Node(NodeRef nodeRef, NodeRef parentNodeRef, Map<QName, Serializable> nodeProps, Map<String, UserInfo> mapUserInfo, ServiceRegistry sr)
|
||||||
{
|
{
|
||||||
@@ -332,6 +333,16 @@ public class Node implements Comparable<Node>
|
|||||||
this.isLocked = isLocked;
|
this.isLocked = isLocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getFavorite()
|
||||||
|
{
|
||||||
|
return favorite;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFavorite(Boolean favorite)
|
||||||
|
{
|
||||||
|
this.favorite = favorite;
|
||||||
|
}
|
||||||
|
|
||||||
public List<String> getAllowableOperations()
|
public List<String> getAllowableOperations()
|
||||||
{
|
{
|
||||||
return allowableOperations;
|
return allowableOperations;
|
||||||
|
Reference in New Issue
Block a user