/** * 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(); } }
/** Fetch the current group row from a resultSet. */ protected Group fetchGroup(ResultSet rs) throws SQLException { Group g = new Group(); g.setSpecificId(Integer.toString(rs.getInt(1))); g.setSuperGroupId(Integer.toString(rs.getInt(2))); if (rs.wasNull()) g.setSuperGroupId(null); g.setName(rs.getString(3)); g.setDescription(rs.getString(4)); return g; }
/** Convert GroupRow to Group */ private Group groupRow2Group(GroupRow gr) { 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); } return group; }
/** * return group with given id (contains list of user ids for this group) * * @param groupId * @return Group */ @Override public Group getGroup(String groupId) throws Exception { Group group = 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.getGroup", 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 group = domainDriver.getGroup(gr.specificId); // Fill silverpeas info of group details group.setId(groupId); group.setSpecificId(gr.specificId); group.setDomainId(idAsString(gr.domainId)); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group Id: '" + groupId + "'", e); } finally { releaseOrganizationSchema(); } return group; }
/** * Add the given group in Silverpeas * * @param ddManager * @param group * @param onlyInSilverpeas * @return * @throws AdminException */ public String addGroup(DomainDriverManager ddManager, Group group, boolean onlyInSilverpeas) throws AdminException { if (group == null || !StringUtil.isDefined(group.getName())) { if (group != null) { SynchroReport.error( "GroupManager.addGroup()", "Problème lors de l'ajout du groupe " + group.getSpecificId() + " dans la base, ce groupe n'a pas de nom", null); } return ""; } try { ddManager.getOrganizationSchema(); // Create group in specific domain (if onlyInSilverpeas is not true) // if domainId=-1 then group is a silverpeas organization if (!onlyInSilverpeas) { String specificId; if (group.getDomainId() != null) { specificId = ddManager.createGroup(group); group.setSpecificId(specificId); } } // Create the group node in Silverpeas GroupRow gr = group2GroupRow(group); if (gr.superGroupId != -1) { SynchroReport.info( "GroupManager.addGroup()", "Ajout du groupe " + group.getName() + " (père=" + getGroup(ddManager, group.getSuperGroupId()).getSpecificId() + ") dans la table ST_Group", null); } else { // pas de père SynchroReport.info( "GroupManager.addGroup()", "Ajout du groupe " + group.getName() + " (groupe racine) dans la table ST_Group...", null); } ddManager.getOrganization().group.createGroup(gr); String sGroupId = idAsString(gr.id); // index group information ddManager.indexGroup(gr); // Create the links group_user in Silverpeas SynchroReport.info( "GroupManager.addGroup()", "Inclusion des utilisateurs directement associés au groupe " + group.getName() + " (table ST_Group_User_Rel)", null); String[] asUserIds = group.getUserIds(); int nUserAdded = 0; for (String asUserId : asUserIds) { if (StringUtil.isDefined(asUserId)) { ddManager.getOrganization().group.addUserInGroup(idAsInt(asUserId), idAsInt(sGroupId)); nUserAdded++; } } SynchroReport.info( "GroupManager.addGroup()", nUserAdded + " utilisateurs ajoutés au groupe " + group.getName() + " dans la base", null); return sGroupId; } catch (Exception e) { SynchroReport.error( "GroupManager.addGroup()", "problème lors de l'ajout du groupe " + group.getName() + " - " + e.getMessage(), null); throw new AdminException( "GroupManager.addGroup", SilverpeasException.ERROR, "admin.EX_ERR_ADD_GROUP", "group name: '" + group.getName() + "'", e); } finally { ddManager.releaseOrganizationSchema(); } }