@Override public OrganizationalChart getOrganizationChart(String baseOu, OrganizationalChartType type) { List<OrganizationalPerson> ouMembers = null; List<OrganizationalUnit> units = null; // beginning node of the search String rootOu = (StringUtil.isDefined(baseOu)) ? baseOu : config.getRoot(); // Parent definition = top of the chart String[] ous = rootOu.split(","); String[] firstOu = ous[0].split("="); OrganizationalUnit root = new OrganizationalUnit(firstOu[1], rootOu); if (StringUtil.isDefined(baseOu)) { root.setParentName("Racine"); root.setParentOu(config.getRoot()); } // get members ouMembers = getOUMembers(rootOu, type); root.setHasMembers(!ouMembers.isEmpty()); // get sub organization units if (type == OrganizationalChartType.TYPE_UNITCHART) { units = getSubOrganizationUnits(rootOu); } boolean silverpeasUserLinkable = StringUtil.isDefined(config.getDomainId()); OrganizationalChart chart = null; switch (type) { case TYPE_UNITCHART: chart = new OrganizationalChart(root, units, ouMembers, silverpeasUserLinkable); break; default: Set<PersonCategory> categories = getCategories(ouMembers); chart = new OrganizationalChart(root, ouMembers, categories, silverpeasUserLinkable); break; } return chart; }