001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl-2.1.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Thomas Roger <troger@nuxeo.com> 016 */ 017 018package org.nuxeo.ecm.activity; 019 020import java.io.Serializable; 021import java.security.Principal; 022import java.util.ArrayList; 023import java.util.List; 024 025import org.apache.commons.lang.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(Principal 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(Principal principal) { 126 if (principal instanceof NuxeoPrincipal) { 127 NuxeoPrincipal nuxeoPrincipal = (NuxeoPrincipal) principal; 128 if (!StringUtils.isBlank(nuxeoPrincipal.getFirstName()) 129 || !StringUtils.isBlank(nuxeoPrincipal.getLastName())) { 130 return nuxeoPrincipal.getFirstName() + " " + nuxeoPrincipal.getLastName(); 131 } 132 } 133 return principal.getName(); 134 } 135 136 public static String getDocumentTitle(DocumentModel doc) { 137 try { 138 return doc.getTitle(); 139 } catch (PropertyException e) { 140 return doc.getId(); 141 } 142 } 143 144}