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.security.Principal; 023import java.util.ArrayList; 024import java.util.List; 025 026import org.apache.commons.lang3.StringUtils; 027import org.nuxeo.ecm.core.api.DocumentModel; 028import org.nuxeo.ecm.core.api.NuxeoPrincipal; 029import org.nuxeo.ecm.core.api.PropertyException; 030 031/** 032 * Helper class to deal with activity objects. 033 * 034 * @author <a href="mailto:troger@nuxeo.com">Thomas Roger</a> 035 * @since 5.5 036 */ 037public class ActivityHelper { 038 039 public static final String SEPARATOR = ":"; 040 041 public static final String USER_PREFIX = "user" + SEPARATOR; 042 043 public static final String DOC_PREFIX = "doc" + SEPARATOR; 044 045 public static final String ACTIVITY_PREFIX = "activity" + SEPARATOR; 046 047 private ActivityHelper() { 048 // helper class 049 } 050 051 public static boolean isUser(String activityObject) { 052 return activityObject != null && activityObject.startsWith(USER_PREFIX); 053 } 054 055 public static boolean isDocument(String activityObject) { 056 return activityObject != null && activityObject.startsWith(DOC_PREFIX); 057 } 058 059 public static boolean isActivity(String activityObject) { 060 return activityObject != null && activityObject.startsWith(ACTIVITY_PREFIX); 061 } 062 063 public static String getUsername(String activityObject) { 064 if (!isUser(activityObject)) { 065 throw new IllegalArgumentException(activityObject + " is not a user activity object"); 066 } 067 return activityObject.replaceAll(USER_PREFIX, ""); 068 } 069 070 public static List<String> getUsernames(List<String> activityObjects) { 071 List<String> usernames = new ArrayList<String>(); 072 for (String activityObject : activityObjects) { 073 usernames.add(getUsername(activityObject)); 074 } 075 return usernames; 076 } 077 078 public static String getDocumentId(String activityObject) { 079 if (isDocument(activityObject)) { 080 String[] v = activityObject.split(":"); 081 return v[2]; 082 } 083 return ""; 084 } 085 086 public static String getRepositoryName(String activityObject) { 087 if (isDocument(activityObject)) { 088 String[] v = activityObject.split(":"); 089 return v[1]; 090 } 091 return ""; 092 } 093 094 public static String getActivityId(String activityObject) { 095 if (isActivity(activityObject)) { 096 String[] v = activityObject.split(":"); 097 return v[1]; 098 } 099 return ""; 100 } 101 102 public static String createDocumentActivityObject(DocumentModel doc) { 103 return createDocumentActivityObject(doc.getRepositoryName(), doc.getId()); 104 } 105 106 public static String createDocumentActivityObject(String repositoryName, String docId) { 107 return DOC_PREFIX + repositoryName + SEPARATOR + docId; 108 } 109 110 public static String createUserActivityObject(Principal principal) { 111 return createUserActivityObject(principal.getName()); 112 } 113 114 public static String createUserActivityObject(String username) { 115 return USER_PREFIX + username; 116 } 117 118 public static String createActivityObject(Activity activity) { 119 return createActivityObject(activity.getId()); 120 } 121 122 public static String createActivityObject(Serializable activityId) { 123 return ACTIVITY_PREFIX + activityId; 124 } 125 126 public static String generateDisplayName(Principal principal) { 127 if (principal instanceof NuxeoPrincipal) { 128 NuxeoPrincipal nuxeoPrincipal = (NuxeoPrincipal) principal; 129 if (!StringUtils.isBlank(nuxeoPrincipal.getFirstName()) 130 || !StringUtils.isBlank(nuxeoPrincipal.getLastName())) { 131 return nuxeoPrincipal.getFirstName() + " " + nuxeoPrincipal.getLastName(); 132 } 133 } 134 return principal.getName(); 135 } 136 137 public static String getDocumentTitle(DocumentModel doc) { 138 try { 139 return doc.getTitle(); 140 } catch (PropertyException e) { 141 return doc.getId(); 142 } 143 } 144 145}