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