package org.nuxeo.labs.operations.usermanagement; import org.apache.commons.lang.StringUtils; import org.nuxeo.ecm.automation.core.Constants; import org.nuxeo.ecm.automation.core.annotations.Context; import org.nuxeo.ecm.automation.core.annotations.Operation; import org.nuxeo.ecm.automation.core.annotations.OperationMethod; import org.nuxeo.ecm.automation.core.annotations.Param; import org.nuxeo.ecm.core.api.CoreSession; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.platform.usermanager.UserManager; @Operation( id= CreateOrUpdateGroupOp.ID, category= Constants.CAT_USERS_GROUPS, label="Create or Update Group", description="Create or Update Group") public class CreateOrUpdateGroupOp { public static final String ID = "CreateOrUpdateGroup"; @Context protected CoreSession session; @Context protected UserManager userManager; @Param(name = "groupname") protected String groupname; @Param(name = "grouplabel") protected String grouplabel; @Param(name = "tenantId", required = false) protected String tenantId; @OperationMethod public DocumentModel run() { boolean isUpdate = true; DocumentModel groupDoc = userManager.getGroupModel(getActualGroupName()); if (groupDoc==null) { groupDoc = userManager.getBareGroupModel(); groupDoc.setPropertyValue("group:groupname",groupname); isUpdate = false; } groupDoc.setPropertyValue("group:grouplabel",grouplabel); if (StringUtils.isNotBlank(tenantId)) { groupDoc.setPropertyValue("group:tenantId", tenantId); } if (!isUpdate) { return userManager.createGroup(groupDoc); } else { userManager.updateGroup(groupDoc); return userManager.getGroupModel(getActualGroupName()); } } protected String getActualGroupName() { if (StringUtils.isNotBlank(tenantId)) { return "tenant_"+tenantId+"_"+groupname; } else { return groupname; } } }