Search in sources :

Example 31 with Pair

use of org.alfresco.util.Pair in project alfresco-remote-api by Alfresco.

the class SitesImpl method getSites.

public CollectionWithPagingInfo<Site> getSites(final Parameters parameters) {
    final BeanPropertiesFilter filter = parameters.getFilter();
    Paging paging = parameters.getPaging();
    PagingRequest pagingRequest = Util.getPagingRequest(paging);
    // pagingRequest.setRequestTotalCountMax(requestTotalCountMax)
    List<Pair<QName, Boolean>> sortProps = new ArrayList<Pair<QName, Boolean>>();
    List<SortColumn> sortCols = parameters.getSorting();
    if ((sortCols != null) && (sortCols.size() > 0)) {
        for (SortColumn sortCol : sortCols) {
            QName sortPropQName = SORT_PARAMS_TO_QNAMES.get(sortCol.column);
            if (sortPropQName == null) {
                throw new InvalidArgumentException("Invalid sort field: " + sortCol.column);
            }
            sortProps.add(new Pair<>(sortPropQName, (sortCol.asc ? Boolean.TRUE : Boolean.FALSE)));
        }
    } else {
        // default sort order
        sortProps.add(new Pair<>(ContentModel.PROP_TITLE, Boolean.TRUE));
    }
    List<FilterProp> filterProps = getFilterPropListOfSites(parameters);
    final PagingResults<SiteInfo> pagingResult = siteService.listSites(filterProps, sortProps, pagingRequest);
    final List<SiteInfo> sites = pagingResult.getPage();
    int totalItems = pagingResult.getTotalResultCount().getFirst();
    final String personId = AuthenticationUtil.getFullyAuthenticatedUser();
    List<Site> page = new AbstractList<Site>() {

        @Override
        public Site get(int index) {
            SiteInfo siteInfo = sites.get(index);
            String role = null;
            if (filter.isAllowed(Site.ROLE)) {
                role = siteService.getMembersRole(siteInfo.getShortName(), personId);
            }
            return new Site(siteInfo, role);
        }

        @Override
        public int size() {
            return sites.size();
        }
    };
    return CollectionWithPagingInfo.asPaged(paging, page, pagingResult.hasMoreItems(), totalItems);
}
Also used : AbstractList(java.util.AbstractList) SiteInfo(org.alfresco.service.cmr.site.SiteInfo) FilterProp(org.alfresco.repo.node.getchildren.FilterProp) QName(org.alfresco.service.namespace.QName) Paging(org.alfresco.rest.framework.resource.parameters.Paging) ArrayList(java.util.ArrayList) FilterPropString(org.alfresco.repo.node.getchildren.FilterPropString) SortColumn(org.alfresco.rest.framework.resource.parameters.SortColumn) BeanPropertiesFilter(org.alfresco.rest.framework.jacksonextensions.BeanPropertiesFilter) PagingRequest(org.alfresco.query.PagingRequest) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) FilterPropBoolean(org.alfresco.repo.node.getchildren.FilterPropBoolean) Pair(org.alfresco.util.Pair)

Example 32 with Pair

use of org.alfresco.util.Pair in project alfresco-remote-api by Alfresco.

the class SitesImpl method getFavouriteSites.

private PagingResults<SiteInfo> getFavouriteSites(String userName, PagingRequest pagingRequest) {
    final Collator collator = Collator.getInstance();
    final Set<SiteInfo> sortedFavouriteSites = new TreeSet<SiteInfo>(new Comparator<SiteInfo>() {

        @Override
        public int compare(SiteInfo o1, SiteInfo o2) {
            return collator.compare(o1.getTitle(), o2.getTitle());
        }
    });
    Map<String, Serializable> prefs = preferenceService.getPreferences(userName, FAVOURITE_SITES_PREFIX);
    for (Entry<String, Serializable> entry : prefs.entrySet()) {
        boolean isFavourite = false;
        Serializable s = entry.getValue();
        if (s instanceof Boolean) {
            isFavourite = (Boolean) s;
        }
        if (isFavourite) {
            String siteShortName = entry.getKey().substring(FAVOURITE_SITES_PREFIX_LENGTH).replace(".favourited", "");
            SiteInfo siteInfo = siteService.getSite(siteShortName);
            if (siteInfo != null) {
                sortedFavouriteSites.add(siteInfo);
            }
        }
    }
    int totalSize = sortedFavouriteSites.size();
    final PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize);
    final List<SiteInfo> page = new ArrayList<SiteInfo>(pageDetails.getPageSize());
    Iterator<SiteInfo> it = sortedFavouriteSites.iterator();
    for (int counter = 0; counter < pageDetails.getEnd() && it.hasNext(); counter++) {
        SiteInfo favouriteSite = it.next();
        if (counter < pageDetails.getSkipCount()) {
            continue;
        }
        if (counter > pageDetails.getEnd() - 1) {
            break;
        }
        page.add(favouriteSite);
    }
    return new PagingResults<SiteInfo>() {

        @Override
        public List<SiteInfo> getPage() {
            return page;
        }

        @Override
        public boolean hasMoreItems() {
            return pageDetails.hasMoreItems();
        }

        @Override
        public Pair<Integer, Integer> getTotalResultCount() {
            Integer total = Integer.valueOf(sortedFavouriteSites.size());
            return new Pair<Integer, Integer>(total, total);
        }

        @Override
        public String getQueryExecutionId() {
            return null;
        }
    };
}
Also used : SiteInfo(org.alfresco.service.cmr.site.SiteInfo) Serializable(java.io.Serializable) PagingResults(org.alfresco.query.PagingResults) ArrayList(java.util.ArrayList) FilterPropString(org.alfresco.repo.node.getchildren.FilterPropString) Collator(java.text.Collator) PageDetails(org.alfresco.query.PageDetails) TreeSet(java.util.TreeSet) FilterPropBoolean(org.alfresco.repo.node.getchildren.FilterPropBoolean) Pair(org.alfresco.util.Pair)

Example 33 with Pair

use of org.alfresco.util.Pair in project alfresco-remote-api by Alfresco.

the class TagsImpl method getTags.

public CollectionWithPagingInfo<Tag> getTags(String nodeId, Parameters params) {
    NodeRef nodeRef = validateTag(nodeId);
    PagingResults<Pair<NodeRef, String>> results = taggingService.getTags(nodeRef, Util.getPagingRequest(params.getPaging()));
    Integer totalItems = results.getTotalResultCount().getFirst();
    List<Pair<NodeRef, String>> page = results.getPage();
    List<Tag> tags = new ArrayList<Tag>(page.size());
    for (Pair<NodeRef, String> pair : page) {
        tags.add(new Tag(pair.getFirst(), pair.getSecond()));
    }
    return CollectionWithPagingInfo.asPaged(params.getPaging(), tags, results.hasMoreItems(), (totalItems == null ? null : totalItems.intValue()));
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) ArrayList(java.util.ArrayList) Tag(org.alfresco.rest.api.model.Tag) Pair(org.alfresco.util.Pair)

Example 34 with Pair

use of org.alfresco.util.Pair in project alfresco-remote-api by Alfresco.

the class TagsImpl method addTags.

public List<Tag> addTags(String nodeId, final List<Tag> tags) {
    NodeRef nodeRef = nodes.validateNode(nodeId);
    if (!typeConstraint.matches(nodeRef)) {
        throw new UnsupportedResourceOperationException("Cannot tag this node");
    }
    List<String> tagValues = new AbstractList<String>() {

        @Override
        public String get(int arg0) {
            String tag = tags.get(arg0).getTag();
            return tag;
        }

        @Override
        public int size() {
            return tags.size();
        }
    };
    try {
        List<Pair<String, NodeRef>> tagNodeRefs = taggingService.addTags(nodeRef, tagValues);
        List<Tag> ret = new ArrayList<Tag>(tags.size());
        for (Pair<String, NodeRef> pair : tagNodeRefs) {
            ret.add(new Tag(pair.getSecond(), pair.getFirst()));
        }
        return ret;
    } catch (IllegalArgumentException e) {
        throw new InvalidArgumentException(e.getMessage());
    }
}
Also used : AbstractList(java.util.AbstractList) UnsupportedResourceOperationException(org.alfresco.rest.framework.core.exceptions.UnsupportedResourceOperationException) ArrayList(java.util.ArrayList) NodeRef(org.alfresco.service.cmr.repository.NodeRef) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) Tag(org.alfresco.rest.api.model.Tag) Pair(org.alfresco.util.Pair)

Example 35 with Pair

use of org.alfresco.util.Pair in project alfresco-remote-api by Alfresco.

the class Util method wrapPagingResults.

public static <T> PagingResults<T> wrapPagingResults(Paging paging, Collection<T> result) {
    if (paging == null) {
        throw new InvalidArgumentException("paging object can't be null.");
    }
    if (result == null) {
        result = Collections.emptyList();
    }
    PagingRequest pagingRequest = getPagingRequest(paging);
    final int totalSize = result.size();
    final PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize);
    final List<T> page = new ArrayList<>(pageDetails.getPageSize());
    Iterator<T> it = result.iterator();
    for (int counter = 0, end = pageDetails.getEnd(); counter < end && it.hasNext(); counter++) {
        T element = it.next();
        if (counter < pageDetails.getSkipCount()) {
            continue;
        }
        if (counter > end - 1) {
            break;
        }
        page.add(element);
    }
    return new PagingResults<T>() {

        @Override
        public List<T> getPage() {
            return page;
        }

        @Override
        public boolean hasMoreItems() {
            return pageDetails.hasMoreItems();
        }

        @Override
        public Pair<Integer, Integer> getTotalResultCount() {
            Integer total = totalSize;
            return new Pair<>(total, total);
        }

        @Override
        public String getQueryExecutionId() {
            return null;
        }
    };
}
Also used : InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) PagingResults(org.alfresco.query.PagingResults) ArrayList(java.util.ArrayList) PagingRequest(org.alfresco.query.PagingRequest) CannedQueryPageDetails(org.alfresco.query.CannedQueryPageDetails) PageDetails(org.alfresco.query.PageDetails) Pair(org.alfresco.util.Pair)

Aggregations

Pair (org.alfresco.util.Pair)61 ArrayList (java.util.ArrayList)34 NodeRef (org.alfresco.service.cmr.repository.NodeRef)23 QName (org.alfresco.service.namespace.QName)22 HashMap (java.util.HashMap)16 PagingRequest (org.alfresco.query.PagingRequest)13 Paging (org.alfresco.rest.framework.resource.parameters.Paging)12 List (java.util.List)11 Serializable (java.io.Serializable)10 HashSet (java.util.HashSet)9 InvalidArgumentException (org.alfresco.rest.framework.core.exceptions.InvalidArgumentException)9 Set (java.util.Set)8 Map (java.util.Map)7 EntityNotFoundException (org.alfresco.rest.framework.core.exceptions.EntityNotFoundException)7 SiteInfo (org.alfresco.service.cmr.site.SiteInfo)7 AbstractList (java.util.AbstractList)6 Arrays (java.util.Arrays)6 Collections (java.util.Collections)6 PagingResults (org.alfresco.query.PagingResults)6 Node (org.alfresco.rest.api.model.Node)6