REPO-210 : Review requirement to support isFavorite as an optional top level property.

This commit is contained in:
Andreea Nechifor
2018-02-19 16:27:25 +02:00
parent 89c8149ee0
commit a7e0eb35db
2 changed files with 73 additions and 1 deletions

View File

@@ -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
*/ */

View File

@@ -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;