/** * Gets all the root user groups in Silverpeas. * * @param ddManager the manager of domain drivers in use in Silverpeas. * @return an array of root user groups. * @throws AdminException if an error occurs while getting the root groups. */ public Group[] getAllRootGroups(DomainDriverManager ddManager) throws AdminException { try { ddManager.getOrganizationSchema(); GroupRow[] rows = ddManager.getOrganization().group.getAllRootGroups(); Group[] rootGroups; if (rows != null) { rootGroups = new Group[rows.length]; for (int i = 0; i < rows.length; i++) { rootGroups[i] = groupRow2Group(rows[i]); setDirectUsersOfGroup(ddManager, rootGroups[i]); } } else { rootGroups = new Group[0]; } return rootGroups; } catch (Exception e) { throw new AdminException( "GroupManager.getAllRootGroupIds", SilverpeasException.ERROR, "admin.EX_ERR_GET_ALL_ROOT_GROUP_IDS", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get Silverpeas admin organization * * @param ddManager * @return an array of AdminGroupInst containing the organization * @throws AdminException */ public AdminGroupInst[] getAdminOrganization(DomainDriverManager ddManager) throws AdminException { try { ddManager.getOrganizationSchema(); String[] asGroupIds = this.getAllGroupIds(ddManager); Group[] aGroup = new Group[asGroupIds.length]; for (int nI = 0; nI < asGroupIds.length; nI++) { aGroup[nI] = this.getGroup(ddManager, asGroupIds[nI]); } // Search the root groups ArrayList<Integer> alRoot = new ArrayList<Integer>(); for (int nI = 0; nI < aGroup.length; nI++) { if (aGroup[nI].getSuperGroupId() == null) { alRoot.add(nI); } } AdminGroupInst[] aAdminGroupInst = new AdminGroupInst[alRoot.size()]; for (int nI = 0; nI < alRoot.size(); nI++) { aAdminGroupInst[nI] = new AdminGroupInst(); aAdminGroupInst[nI].setGroup(aGroup[alRoot.get(nI)]); aAdminGroupInst[nI].setChildrenAdminGroupInst( this.getChildrenGroupInst(ddManager, aAdminGroupInst[nI].getGroup().getId(), aGroup)); } return aAdminGroupInst; } catch (Exception e) { throw new AdminException( "GroupManager.getAdminOrganization", SilverpeasException.ERROR, "admin.EX_ERR_GET_ADMIN_ORGANIZATION", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * /** Check if the given group exists * * @param ddManager * @param sName * @return true if a group with the given name * @throws AdminException */ public boolean isGroupExist(DomainDriverManager ddManager, String sName) throws AdminException { try { ddManager.getOrganizationSchema(); // build GroupRow to search GroupRow searchedGroup = new GroupRow(); searchedGroup.specificId = null; searchedGroup.name = sName; searchedGroup.description = null; // search for group GroupRow[] group = ddManager.getOrganization().group.getAllMatchingGroups(searchedGroup); return (group.length > 0); } catch (Exception e) { throw new AdminException( "GroupManager.isGroupExist", SilverpeasException.ERROR, "admin.EX_ERR_IS_GROUP_EXIST", "group name: '" + sName + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param groupId * @return Group[] */ @Override public Group[] getGroups(String groupId) throws Exception { Group[] groups = null; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the user information GroupRow gr = getOrganization().group.getGroup(idAsInt(groupId)); if (gr == null) { throw new AdminException( "DomainDriverManager.getGroups", SilverpeasException.ERROR, "admin.EX_ERR_GROUP_NOT_FOUND", "group Id: '" + groupId + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(gr.domainId); // Get Groups of Group from specific domain groups = domainDriver.getGroups(gr.specificId); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getGroups", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS", "father group Id: '" + groupId + "'", e); } finally { releaseOrganizationSchema(); } return groups; }
/** * Get group information with the given id from Silverpeas * * @param ddManager * @param sGroupId * @return * @throws AdminException */ public Group getGroup(DomainDriverManager ddManager, String sGroupId) throws AdminException { try { ddManager.getOrganizationSchema(); GroupRow gr = ddManager.getOrganization().group.getGroup(idAsInt(sGroupId)); Group group = new Group(); if (gr != null) { group.setId(idAsString(gr.id)); group.setSpecificId(gr.specificId); group.setDomainId(idAsString(gr.domainId)); group.setSuperGroupId(idAsString(gr.superGroupId)); group.setName(gr.name); group.setDescription(gr.description); group.setRule(gr.rule); } // Get the selected users for this group setDirectUsersOfGroup(ddManager, group); return group; } catch (Exception e) { throw new AdminException( "GroupManager.getGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group Id: '" + sGroupId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get group information with the given group name * * @param ddManager * @param sGroupName * @param sDomainFatherId * @return * @throws AdminException */ public Group getGroupByNameInDomain( DomainDriverManager ddManager, String sGroupName, String sDomainFatherId) throws AdminException { try { ddManager.getOrganizationSchema(); Group group = ddManager.getGroupByNameInDomain(sGroupName, sDomainFatherId); if (group != null) { String specificId = group.getSpecificId(); GroupRow gr = ddManager .getOrganization() .group .getGroupBySpecificId(idAsInt(sDomainFatherId), specificId); if (gr != null) { group.setId(idAsString(gr.id)); // Get the selected users for this group setDirectUsersOfGroup(ddManager, group); } else { return null; } } return group; } catch (Exception e) { throw new AdminException( "GroupManager.getGroupByNameInDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group Name: '" + sGroupName + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Delete the group with the given Id The delete is apply recursively to the sub-groups * * @param ddManager * @param group * @param onlyInSilverpeas * @return * @throws AdminException */ public String deleteGroupById( DomainDriverManager ddManager, Group group, boolean onlyInSilverpeas) throws AdminException { try { ddManager.getOrganizationSchema(); if (group.getDomainId() != null && !onlyInSilverpeas) { ddManager.deleteGroup(group.getId()); } // Delete the group node from Silverpeas ddManager.getOrganization().group.removeGroup(idAsInt(group.getId())); // Delete index of group information ddManager.unindexGroup(group.getId()); return group.getId(); } catch (Exception e) { SynchroReport.error( "GroupManager.deleteGroupById()", "problème lors de la suppression du groupe " + group.getName() + " - " + e.getMessage(), null); throw new AdminException( "GroupManager.deleteGroupById", SilverpeasException.ERROR, "admin.EX_ERR_DELETE_GROUP", "group Id: '" + group.getId() + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param ddManager * @param sDomainId * @return * @throws AdminException */ public Group[] getRootGroupsOfDomain(DomainDriverManager ddManager, String sDomainId) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); // Get groups of domain from Silverpeas database GroupRow[] grs = ddManager.getOrganization().group.getAllRootGroupsOfDomain(idAsInt(sDomainId)); // Convert GroupRow objects in Group Object Group[] groups = new Group[grs.length]; for (int nI = 0; nI < grs.length; nI++) { groups[nI] = groupRow2Group(grs[nI]); // Get the selected users for this group setDirectUsersOfGroup(ddManager, groups[nI]); } return groups; } catch (Exception e) { throw new AdminException( "GroupManager.getRootGroupsOfDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", "domain Id: '" + sDomainId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Delete given user from Silverpeas * * @param userId user Id * @throws Exception */ @Override public void deleteUser(String userId) throws Exception { try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the user information UserRow ur = getOrganization().user.getUser(idAsInt(userId)); if (ur == null) { throw new AdminException( "DomainDriverManager.deleteUser", SilverpeasException.ERROR, "admin.EX_ERR_USER_NOT_FOUND", "user Id: '" + userId + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(ur.domainId); // Get User detail from specific domain domainDriver.deleteUser(ur.specificId); // Delete index to given user unindexUser(userId); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.deleteUser", SilverpeasException.ERROR, "admin.EX_ERR_DELETE_USER", "user Id: '" + userId + "'", e); } finally { releaseOrganizationSchema(); } }
/** Start a new transaction */ @Override public void startTransaction(boolean bAutoCommit) { try { getOrganizationSchema(); inTransaction = !bAutoCommit; } catch (AdminException ex) { throw new UtilException("DomainDriverManager", "startTransaction", ex); } }
@Override public UserFull getUserFull(String userId) throws Exception { UserFull uf = null; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the user information UserRow ur = getOrganization().user.getUser(idAsInt(userId)); if (ur == null) { throw new AdminException( "DomainDriverManager.getUser", SilverpeasException.ERROR, "admin.EX_ERR_USER_NOT_FOUND", "user Id: '" + userId + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(ur.domainId); // Get User detail from specific domain try { uf = domainDriver.getUserFull(ur.specificId); } catch (AdminException e) { SilverTrace.error( "admin", "DomainDriverManager.getUser", "admin.MSG_ERR_GET_USER", "user Id: '" + userId + "', domain Id: '" + ur.domainId + "'", e); uf = new UserFull(domainDriver); uf.setLogin(ur.login); uf.setFirstName(ur.firstName); uf.setLastName(ur.lastName); uf.seteMail(ur.eMail); } // Fill silverpeas info of user details uf.setLogin(ur.login); uf.setId(userId); uf.setSpecificId(ur.specificId); uf.setDomainId(idAsString(ur.domainId)); uf.setAccessLevel(ur.accessLevel); uf.setLoginQuestion(ur.loginQuestion); uf.setLoginAnswer(ur.loginAnswer); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getUser", SilverpeasException.ERROR, "admin.EX_ERR_GET_USER", "user Id: '" + userId + "', domain Id: '" + userId + "'", e); } finally { releaseOrganizationSchema(); } return uf; }
public GroupRow[] getAllGroupOfDomain(String domainId) throws Exception { try { getOrganizationSchema(); return getOrganization().group.getAllGroupsOfDomain(Integer.parseInt(domainId)); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getGroupIdsOfDomain", SilverpeasException.ERROR, "admin.admin.MSG_ERR_GET_ALL_GROUPS", "domainId = " + domainId, e); } finally { releaseOrganizationSchema(); } }
public String[] getUserIdsOfDomain(String domainId) throws Exception { getOrganizationSchema(); try { return getOrganization().user.getUserIdsOfDomain(Integer.parseInt(domainId)); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getUser", SilverpeasException.ERROR, "admin.EX_ERR_GET_USERS", "domainId = " + domainId, e); } finally { releaseOrganizationSchema(); } }
/** * Remove a user from a group * * @param ddManager * @param sUserId * @param sGroupId * @throws AdminException */ public void removeUserFromGroup(DomainDriverManager ddManager, String sUserId, String sGroupId) throws AdminException { try { ddManager.getOrganizationSchema(); ddManager.getOrganization().group.removeUserFromGroup(idAsInt(sUserId), idAsInt(sGroupId)); } catch (Exception e) { throw new AdminException( "GroupManager.removeUserFromGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_USER_GROUPS", "User Id: '" + sUserId + "' GroupId = '" + sGroupId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get the Silverpeas group id of group qualified by given specific Id and domain id * * @param ddManager * @param sSpecificId * @param sDomainId * @return * @throws AdminException */ public String getGroupIdBySpecificIdAndDomainId( DomainDriverManager ddManager, String sSpecificId, String sDomainId) throws AdminException { try { ddManager.getOrganizationSchema(); GroupRow gr = ddManager.getOrganization().group.getGroupBySpecificId(idAsInt(sDomainId), sSpecificId); return idAsString(gr.id); } catch (Exception e) { throw new AdminException( "GroupManager.getGroupIdBySpecificIdAndDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group specific Id: '" + sSpecificId + "', domain Id: '" + sDomainId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get the all the root groups id available in Silverpeas * * @param ddManager * @return * @throws AdminException */ public String[] getAllRootGroupIds(DomainDriverManager ddManager) throws AdminException { try { ddManager.getOrganizationSchema(); String[] asGroupIds = ddManager.getOrganization().group.getAllRootGroupIds(); if (asGroupIds != null) { return asGroupIds; } return ArrayUtil.EMPTY_STRING_ARRAY; } catch (Exception e) { throw new AdminException( "GroupManager.getAllRootGroupIds", SilverpeasException.ERROR, "admin.EX_ERR_GET_ALL_ROOT_GROUP_IDS", e); } finally { ddManager.releaseOrganizationSchema(); } }
public String[] searchGroupsIds( DomainDriverManager ddManager, boolean isRootGroup, String componentId, String[] aProfileId, Group modelGroup) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); GroupRow model = group2GroupRow(modelGroup); // The Ids could be equal to -1 !!!! Put it to -2 if null if (!StringUtil.isDefined(modelGroup.getId())) { model.id = -2; } if (!StringUtil.isDefined(modelGroup.getDomainId())) { model.domainId = -2; } if (!StringUtil.isDefined(modelGroup.getSuperGroupId())) { model.superGroupId = -2; } int[] aRoleId = null; if (aProfileId != null) { aRoleId = new int[aProfileId.length]; for (int i = 0; i < aProfileId.length; i++) { aRoleId[i] = idAsInt(aProfileId[i]); } } // Get groups return ddManager .getOrganization() .group .searchGroupsIds(isRootGroup, idAsInt(componentId), aRoleId, model); } catch (Exception e) { throw new AdminException( "GroupManager.searchGroupsIdsInGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get the groups of domain * * @param ddManager * @param sDomainId * @return * @throws AdminException */ public Group[] getGroupsOfDomain(DomainDriverManager ddManager, String sDomainId) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); SynchroReport.info( "GroupManager.getGroupsOfDomain()", "Recherche des groupes du domaine LDAP dans la base...", null); // Get groups of domain from Silverpeas database GroupRow[] grs = ddManager.getOrganization().group.getAllGroupsOfDomain(idAsInt(sDomainId)); // Convert GroupRow objects in Group Object Group[] groups = new Group[grs.length]; for (int nI = 0; nI < grs.length; nI++) { groups[nI] = groupRow2Group(grs[nI]); SynchroReport.debug( "GroupManager.getGroupsOfDomain()", "Groupe trouvé no : " + Integer.toString(nI) + ", specificID : " + groups[nI].getSpecificId() + ", desc. : " + groups[nI].getDescription(), null); } SynchroReport.info( "GroupManager.getGroupsOfDomain()", "Récupération de " + grs.length + " groupes du domaine LDAP dans la base", null); return groups; } catch (Exception e) { throw new AdminException( "GroupManager.getGroupsOfDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", "domain Id: '" + sDomainId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Get the all the direct sub groups id of a given group * * @param ddManager * @param superGroupId * @return * @throws AdminException */ public String[] getAllSubGroupIds(DomainDriverManager ddManager, String superGroupId) throws AdminException { try { ddManager.getOrganizationSchema(); String[] asGroupIds = ddManager.getOrganization().group.getDirectSubGroupIds(idAsInt(superGroupId)); if (asGroupIds != null) { return asGroupIds; } return ArrayUtil.EMPTY_STRING_ARRAY; } catch (Exception e) { throw new AdminException( "GroupManager.getAllSubGroupIds", SilverpeasException.ERROR, "admin.EX_ERR_GET_CHILDREN_GROUP_IDS", "father group Id: '" + superGroupId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param ddManager * @return * @throws AdminException */ public Group[] getSynchronizedGroups(DomainDriverManager ddManager) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); // Get groups of domain from Silverpeas database GroupRow[] grs = ddManager.getOrganization().group.getSynchronizedGroups(); // Convert GroupRow objects in Group Object Group[] groups = new Group[grs.length]; for (int nI = 0; nI < grs.length; nI++) { groups[nI] = groupRow2Group(grs[nI]); } return groups; } catch (Exception e) { throw new AdminException( "GroupManager.getRootGroupsOfDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * return group with given group name in domain * * @param groupName * @return Group */ public Group getGroupByNameInDomain(String groupName, String domainId) throws Exception { try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(idAsInt(domainId)); // Get the group information without id and userId[] return domainDriver.getGroupByName(groupName); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getGroupByNameInDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group Name: '" + groupName + "'", e); } finally { releaseOrganizationSchema(); } }
/** * @param domainId * @return * @throws Exception */ public Group[] getAllRootGroups(String domainId) throws Exception { Group[] groups = null; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(idAsInt(domainId)); // Get Group from specific domain groups = domainDriver.getAllRootGroups(); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getAllRootGroups", SilverpeasException.ERROR, "admin.EX_ERR_GET_ALL_ROOT_GROUPS", "domain Id: '" + domainId + "'", e); } finally { releaseOrganizationSchema(); } return groups; }
/** @return Domain[] */ public Domain[] getAllDomains() throws AdminException { Domain[] valret = null; int i; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the domain information DomainRow[] drs = getOrganization().domain.getAllDomains(); if ((drs == null) || (drs.length <= 0)) { throw new AdminException( "DomainDriverManager.getAllDomains", SilverpeasException.ERROR, "admin.EX_ERR_NO_DOMAIN_FOUND"); } valret = new Domain[drs.length]; for (i = 0; i < drs.length; i++) { valret[i] = new Domain(); valret[i].setId(java.lang.Integer.toString(drs[i].id)); valret[i].setName(drs[i].name); valret[i].setDescription(drs[i].description); valret[i].setDriverClassName(drs[i].className); valret[i].setPropFileName(drs[i].propFileName); valret[i].setAuthenticationServer(drs[i].authenticationServer); valret[i].setTheTimeStamp(drs[i].theTimeStamp); } } catch (AdminPersistenceException e) { throw new AdminException( "DomainDriverManager.getAllDomains", SilverpeasException.ERROR, "admin.EX_ERR_GET_ALL_DOMAINS", e); } finally { releaseOrganizationSchema(); } return valret; }
/** * Get the direct groups id containing a user * * @param ddManager * @param sUserId * @return * @throws AdminException */ public String[] getDirectGroupsOfUser(DomainDriverManager ddManager, String sUserId) throws AdminException { try { ddManager.getOrganizationSchema(); GroupRow[] grs = ddManager.getOrganization().group.getDirectGroupsOfUser(idAsInt(sUserId)); // Convert GroupRow objects in Group Object String[] groups = new String[grs.length]; for (int nI = 0; nI < grs.length; nI++) { groups[nI] = idAsString(grs[nI].id); } return groups; } catch (Exception e) { throw new AdminException( "GroupManager.getDirectGroupsOfUser", SilverpeasException.ERROR, "admin.EX_ERR_GET_USER_GROUPS", "User Id: '" + sUserId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param domainId * @return String */ public Domain getDomain(String domainId) throws Exception { Domain valret = null; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the domain information DomainRow dr = getOrganization().domain.getDomain(idAsInt(domainId)); if (dr == null) { throw new AdminException( "DomainDriverManager.getDomain", SilverpeasException.ERROR, "admin.EX_ERR_DOMAIN_NOT_FOUND", "domain Id: '" + domainId + "'"); } valret = new Domain(); valret.setId(Integer.toString(dr.id)); valret.setName(dr.name); valret.setDescription(dr.description); valret.setDriverClassName(dr.className); valret.setPropFileName(dr.propFileName); valret.setAuthenticationServer(dr.authenticationServer); valret.setTheTimeStamp(dr.theTimeStamp); valret.setSilverpeasServerURL(dr.silverpeasServerURL); } catch (AdminPersistenceException e) { throw new AdminException( "DomainDriverManager.getDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_DOMAIN", "domain id: '" + domainId + "'", e); } finally { releaseOrganizationSchema(); } return valret; }
/** * Get the path from root to a given group * * @param ddManager * @param groupId * @return * @throws AdminException */ public List<String> getPathToGroup(DomainDriverManager ddManager, String groupId) throws AdminException { try { ddManager.getOrganizationSchema(); List<String> path = new ArrayList<String>(); GroupRow superGroup = ddManager.getOrganization().group.getSuperGroup(idAsInt(groupId)); while (superGroup != null) { path.add(0, idAsString(superGroup.id)); superGroup = ddManager.getOrganization().group.getSuperGroup(superGroup.id); } return path; } catch (Exception e) { throw new AdminException( "GroupManager.getPathToGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_PATH_TO_GROUP", "groupId = " + groupId, e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param ddManager * @param sDomainId * @return * @throws AdminException */ public String[] getRootGroupIdsOfDomain(DomainDriverManager ddManager, String sDomainId) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); // Get groups of domain from Silverpeas database String[] groupIds = ddManager.getOrganization().group.getAllRootGroupIdsOfDomain(idAsInt(sDomainId)); if (groupIds != null) { return groupIds; } return ArrayUtil.EMPTY_STRING_ARRAY; } catch (Exception e) { throw new AdminException( "GroupManager.getRootGroupIdsOfDomain", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", "domain Id: '" + sDomainId + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * @param groupId * @throws Exception */ @Override public void deleteGroup(String groupId) throws Exception { try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the group information GroupRow gr = getOrganization().group.getGroup(idAsInt(groupId)); if (gr == null) { throw new AdminException( "DomainDriverManager.deleteGroup", SilverpeasException.ERROR, "admin.EX_ERR_GROUP_NOT_FOUND", "group Id: '" + groupId + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(gr.domainId); // Get Group detail from specific domain domainDriver.deleteGroup(gr.specificId); // Delete index to given group unindexGroup(groupId); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.deleteGroup", SilverpeasException.ERROR, "admin.EX_ERR_DELETE_GROUP", "group Id: '" + groupId + "'", e); } finally { releaseOrganizationSchema(); } }
/** * @param ddManager * @param modelGroup * @param isAnd * @return * @throws AdminException */ public Group[] searchGroups(DomainDriverManager ddManager, Group modelGroup, boolean isAnd) throws AdminException { try { // Get organization ddManager.getOrganizationSchema(); GroupRow model = group2GroupRow(modelGroup); // The Ids could be equal to -1 !!!! Put it to -2 if null if (!StringUtil.isDefined((modelGroup.getId()))) { model.id = -2; } if (!StringUtil.isDefined(modelGroup.getDomainId())) { model.domainId = -2; } if (!StringUtil.isDefined(modelGroup.getSuperGroupId())) { model.superGroupId = -2; } // Get groups GroupRow[] grs = ddManager.getOrganization().group.searchGroups(model, isAnd); // Convert GroupRow objects in Group Object Group[] groups = new Group[grs.length]; for (int nI = 0; nI < grs.length; nI++) { groups[nI] = groupRow2Group(grs[nI]); // Get the selected users for this group setDirectUsersOfGroup(ddManager, groups[nI]); } return groups; } catch (Exception e) { throw new AdminException( "GroupManager.searchGroups", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUPS_OF_DOMAIN", e); } finally { ddManager.releaseOrganizationSchema(); } }
/** * Update the given group * * @param ddManager * @param group * @param onlyInSilverpeas * @return * @throws AdminException */ public String updateGroup(DomainDriverManager ddManager, Group group, boolean onlyInSilverpeas) throws AdminException { ArrayList<String> alRemUsers = new ArrayList<String>(); ArrayList<String> alAddUsers = new ArrayList<String>(); if (group == null || !StringUtil.isDefined(group.getName()) || !StringUtil.isDefined(group.getId())) { if (group != null) { SynchroReport.error( "GroupManager.updateGroup()", "Problème lors de maj du groupe " + group.getSpecificId() + " dans la base, ce groupe n'a pas de nom", null); } return ""; } try { ddManager.getOrganizationSchema(); if (group.getDomainId() != null && !onlyInSilverpeas) { ddManager.updateGroup(group); } // Get the group id String sGroupId = group.getId(); String strInfoSycnhro; if (group.getSuperGroupId() != null) { strInfoSycnhro = "Maj du groupe " + group.getName() + " (père=" + getGroup(ddManager, group.getSuperGroupId()).getSpecificId() + ") dans la base (table ST_Group)..."; } else { strInfoSycnhro = "Maj du groupe " + group.getName() + " (groupe racine) dans la base (table ST_Group)..."; } SynchroReport.info("GroupManager.updateGroup()", strInfoSycnhro, null); // Update the group node GroupRow gr = group2GroupRow(group); ddManager.getOrganization().group.updateGroup(gr); // index group information ddManager.indexGroup(gr); // Update the users if necessary SynchroReport.info( "GroupManager.updateGroup()", "Maj éventuelle des relations du groupe " + group.getName() + " avec les utilisateurs qui y sont directement inclus (tables ST_Group_User_Rel)", null); String[] asOldUsersId = ddManager.getOrganization().user.getDirectUserIdsOfGroup(idAsInt(sGroupId)); // Compute the remove users list String[] asNewUsersId = group.getUserIds(); for (String anAsOldUsersId : asOldUsersId) { boolean bFound = false; for (String anAsNewUsersId : asNewUsersId) { if (anAsOldUsersId.equals(anAsNewUsersId)) { bFound = true; } } if (!bFound) { alRemUsers.add(anAsOldUsersId); } } // Compute the add users list for (String anAsNewUsersId : asNewUsersId) { boolean bFound = false; for (String anAsOldUsersId : asOldUsersId) { if (anAsNewUsersId.equals(anAsOldUsersId)) { bFound = true; } } if (!bFound) { alAddUsers.add(anAsNewUsersId); } } // Remove the users that are not in this group anymore for (String alRemUser : alRemUsers) { ddManager .getOrganization() .group .removeUserFromGroup(idAsInt(alRemUser), idAsInt(sGroupId)); } // Add the new users of the group for (String alAddUser : alAddUsers) { ddManager.getOrganization().group.addUserInGroup(idAsInt(alAddUser), idAsInt(sGroupId)); } SynchroReport.info( "GroupManager.updateGroup()", "Groupe : " + group.getName() + ", ajout de " + alAddUsers.size() + " nouveaux utilisateurs, suppression de " + alRemUsers.size() + " utilisateurs", null); return sGroupId; } catch (Exception e) { SynchroReport.error( "GroupManager.updateGroup()", "problème lors de la maj du groupe " + group.getName() + " - " + e.getMessage(), null); throw new AdminException( "GroupManager.updateGroup", SilverpeasException.ERROR, "admin.EX_ERR_UPDATE_GROUP", "group Id: '" + group.getId() + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }