001/*
002 * (C) Copyright 2006-2018 Nuxeo (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Thomas Roger <troger@nuxeo.com>
018 */
019package org.nuxeo.ecm.activity;
020
021import java.io.Serializable;
022import java.util.ArrayList;
023import java.util.List;
024
025import org.apache.commons.lang3.StringUtils;
026import org.nuxeo.ecm.core.api.DocumentModel;
027import org.nuxeo.ecm.core.api.NuxeoPrincipal;
028import org.nuxeo.ecm.core.api.PropertyException;
029
030/**
031 * Helper class to deal with activity objects.
032 *
033 * @author <a href="mailto:troger@nuxeo.com">Thomas Roger</a>
034 * @since 5.5
035 */
036public class ActivityHelper {
037
038    public static final String SEPARATOR = ":";
039
040    public static final String USER_PREFIX = "user" + SEPARATOR;
041
042    public static final String DOC_PREFIX = "doc" + SEPARATOR;
043
044    public static final String ACTIVITY_PREFIX = "activity" + SEPARATOR;
045
046    private ActivityHelper() {
047        // helper class
048    }
049
050    public static boolean isUser(String activityObject) {
051        return activityObject != null && activityObject.startsWith(USER_PREFIX);
052    }
053
054    public static boolean isDocument(String activityObject) {
055        return activityObject != null && activityObject.startsWith(DOC_PREFIX);
056    }
057
058    public static boolean isActivity(String activityObject) {
059        return activityObject != null && activityObject.startsWith(ACTIVITY_PREFIX);
060    }
061
062    public static String getUsername(String activityObject) {
063        if (!isUser(activityObject)) {
064            throw new IllegalArgumentException(activityObject + " is not a user activity object");
065        }
066        return activityObject.replaceAll(USER_PREFIX, "");
067    }
068
069    public static List<String> getUsernames(List<String> activityObjects) {
070        List<String> usernames = new ArrayList<String>();
071        for (String activityObject : activityObjects) {
072            usernames.add(getUsername(activityObject));
073        }
074        return usernames;
075    }
076
077    public static String getDocumentId(String activityObject) {
078        if (isDocument(activityObject)) {
079            String[] v = activityObject.split(":");
080            return v[2];
081        }
082        return "";
083    }
084
085    public static String getRepositoryName(String activityObject) {
086        if (isDocument(activityObject)) {
087            String[] v = activityObject.split(":");
088            return v[1];
089        }
090        return "";
091    }
092
093    public static String getActivityId(String activityObject) {
094        if (isActivity(activityObject)) {
095            String[] v = activityObject.split(":");
096            return v[1];
097        }
098        return "";
099    }
100
101    public static String createDocumentActivityObject(DocumentModel doc) {
102        return createDocumentActivityObject(doc.getRepositoryName(), doc.getId());
103    }
104
105    public static String createDocumentActivityObject(String repositoryName, String docId) {
106        return DOC_PREFIX + repositoryName + SEPARATOR + docId;
107    }
108
109    public static String createUserActivityObject(NuxeoPrincipal principal) {
110        return createUserActivityObject(principal.getName());
111    }
112
113    public static String createUserActivityObject(String username) {
114        return USER_PREFIX + username;
115    }
116
117    public static String createActivityObject(Activity activity) {
118        return createActivityObject(activity.getId());
119    }
120
121    public static String createActivityObject(Serializable activityId) {
122        return ACTIVITY_PREFIX + activityId;
123    }
124
125    public static String generateDisplayName(NuxeoPrincipal principal) {
126        if (!StringUtils.isBlank(principal.getFirstName()) || !StringUtils.isBlank(principal.getLastName())) {
127            return principal.getFirstName() + " " + principal.getLastName();
128        }
129        return principal.getName();
130    }
131
132    public static String getDocumentTitle(DocumentModel doc) {
133        try {
134            return doc.getTitle();
135        } catch (PropertyException e) {
136            return doc.getId();
137        }
138    }
139
140}