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 <[email protected]> 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:[email protected]">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}