/*
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.services.cms.drives.impl;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.services.cms.drives.ManageDriveService;
import org.exoplatform.services.jcr.RepositoryService;
import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator;
import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.GroupEventListener;
/**
* Created by The eXo Platform SARL
* Author : Dang Van Minh
* minh.dang@exoplatform.com
* Nov 23, 2007 3:09:45 PM
*/
public class NewGroupListener extends GroupEventListener {
private ManageDriveService driveService_ ;
private RepositoryService jcrService_;
private InitParams initParams_ ;
private String groupsPath_ ;
final static private String GROUPS_PATH = "groupsPath";
/**
*
* @param jcrService
* @param driveService
* @param nodeHierarchyCreatorService
* @param params
* @throws Exception
*/
public NewGroupListener(RepositoryService jcrService,
ManageDriveService driveService,
NodeHierarchyCreator nodeHierarchyCreatorService,
InitParams params) throws Exception {
jcrService_ = jcrService ;
driveService_ = driveService ;
initParams_ = params ;
groupsPath_ = nodeHierarchyCreatorService.getJcrPath(GROUPS_PATH) ;
}
@SuppressWarnings({"unused", "hiding", "null"})
public void preSave(Group group, boolean isNew) throws Exception {
String groupId = group.getId() ;
String name = group.getId().replace("/", ".");
String workspace = initParams_.getValueParam("workspace").getValue();
String permissions = "*:".concat(groupId);
String extpermissions = initParams_.getValueParam("permissions").getValue();
if(extpermissions != null || extpermissions.length() >0) {
permissions.concat(",").concat(extpermissions);
}
String homePath = groupsPath_ + groupId ;
String views = initParams_.getValueParam("views").getValue();
String icon = initParams_.getValueParam("icon").getValue();
boolean viewPreferences = Boolean.parseBoolean(initParams_.getValueParam("viewPreferences").getValue());
boolean viewNonDocument = Boolean.parseBoolean(initParams_.getValueParam("viewNonDocument").getValue());
boolean viewSideBar = Boolean.parseBoolean(initParams_.getValueParam("viewSideBar").getValue());
boolean showHiddenNode = Boolean.parseBoolean(initParams_.getValueParam("showHiddenNode").getValue());
String allowCreateFolder = initParams_.getValueParam("allowCreateFolder").getValue();
String allowNodeTypesOnTree = initParams_.getValueParam("allowNodeTypesOnTree").getValue();
driveService_.addDrive(name, workspace, permissions, homePath, views, icon, viewPreferences,
viewNonDocument, viewSideBar, showHiddenNode, allowCreateFolder, allowNodeTypesOnTree);
}
public void preDelete(Group group) throws Exception {
driveService_.removeDrive(group.getId().replace("/", "."));
}
}