package org.gcube.portlets.user.accountingdashboard.server.accounting; import org.gcube.data.access.accounting.summary.access.impl.ContextTreeProvider; import org.gcube.data.access.accounting.summary.access.model.ScopeDescriptor; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault; import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.model.GCubeGroup; import lombok.extern.slf4j.Slf4j; @Slf4j public class PortalContextTreeProvider implements ContextTreeProvider { private static GroupManager groupsManager; static { groupsManager = new LiferayGroupManager(); } @Override public ScopeDescriptor getTree(Object context) throws Exception { // if(context == null) throw new Exception("Unable to get tree, Request // is null."); // if(!(context instanceof HttpServletRequest)) throw new // Exception("Invalid request object : "+context); // HttpServletRequest request=(HttpServletRequest) context; // PARSE TREE GCubeGroup rootGroupVO = groupsManager.getRootVO(); return asScopeDescriptor(rootGroupVO); } private ScopeDescriptor asScopeDescriptor(GCubeGroup group) throws UserManagementSystemException, GroupRetrievalFault { ScopeDescriptor toReturn = new ScopeDescriptor(group.getGroupName(), groupsManager.getInfrastructureScope(group.getGroupId())); if (group.getChildren() != null && !group.getChildren().isEmpty()) { for (GCubeGroup child : group.getChildren()) { toReturn.getChildren().add(asScopeDescriptor(child)); } } return toReturn; } // // // /** // * // * @return the Virtual groups with their VREs in the order estabilished in // the LR Control Panel // * @throws SystemException // * @throws PortalException // */ // private LinkedHashMap> // getPortalSitesMappedToVRE(HttpServletRequest request) throws Exception { // // Group site=getSiteFromServletRequest(request); // // ScopeDescriptor root=new // ScopeDescriptor(site.getDescriptiveName(),site.getUuid()); // // LinkedList groups=new LinkedList<>(); // // long currentSiteGroupId = site.getGroupId(); // //// List currentSiteVGroups = // groupsManager.getVirtualGroups(currentSiteGroupId); //// //// for (VirtualGroup vg : currentSiteVGroups) { //// ScopeDescriptor groupDescriptor=new ScopeDescriptor(vg.getName(),); //// VRECategory cat = new VRECategory(1L, vg.getName(), // vg.getDescription()); //// toReturn.put(cat, toCreate); //// } // // GCubeGroup rootGroupVO = groupsManager.getRootVO(); //// //// try { //// log.debug("root: " + rootGroupVO.getGroupName() ); //// } catch (NullPointerException e) { //// log.error("Cannot find root organziation, please check // gcube-data.properties file in $CATALINA_HOME/conf folder, unless your // installing the Bundle"); //// return toReturn; //// } //// PortalContext pContext = PortalContext.getConfiguration(); //// //// List currUserGroups = new ArrayList(); //// GCubeUser currUser = pContext.getCurrentUser(request); //// if (currUser != null) { //// currUserGroups = groupsManager.listGroupsByUser(currUser.getUserId()); //// } // // //for each root sub organizations (VO) // for (GCubeGroup vOrg : rootGroupVO.getChildren()) { // for (GCubeGroup vreSite : vOrg.getChildren()) { // long vreID = vreSite.getGroupId(); // String vreName = vreSite.getGroupName(); // String vreDescription = vreSite.getDescription(); // // String groupName = // groupsManager.getInfrastructureScope(vreSite.getGroupId()); // // List vreGroups = groupsManager.getVirtualGroups(vreID); // for (VirtualGroup vreGroup : vreGroups) { // for (VRECategory vre : toReturn.keySet()) { // if (vre.getName().compareTo(vreGroup.getName())==0) { // ArrayList toUpdate = toReturn.get(vre); // UserBelonging belongs = UserBelonging.NOT_BELONGING; // VRE toAdd = new VRE(vreID,vreName, vreDescription, vreLogoURL, groupName, // friendlyURL, belongs, getVREMembershipType(vreSite.getMembershipType())); //// if (GroupLocalServiceUtil.getGroup(vreID).getPublicLayoutsPageCount() > // 0) { //// String publicURL = PREFIX_PUBLIC_URL+vreSite.getFriendlyURL(); //// toAdd.setPublicURL(publicURL); //// } //// if (currUser != null) { //// //check if the user belongs to it //// if (currUserGroups.contains(vreSite)) { //// toAdd.setUserBelonging(UserBelonging.BELONGING); //// } //// else if (checkPending(currUser.getUsername(), vreSite.getGroupId())) //// toAdd.setUserBelonging(UserBelonging.PENDING); //// } // toUpdate.add(toAdd); // } // } // } // } // } // // //sort the vres in the groups // for (VRECategory cat : toReturn.keySet()) { // ArrayList toSort = toReturn.get(cat); // Collections.sort(toSort); // } // return toReturn; // } // // // // // // private Group getSiteFromServletRequest(final HttpServletRequest request) // throws PortalException, SystemException { // String serverName = request.getServerName(); // log.debug("currentHost is " + serverName); // Group site = null; // List vHosts = VirtualHostLocalServiceUtil.getVirtualHosts(0, // VirtualHostLocalServiceUtil.getVirtualHostsCount()); // for (VirtualHost virtualHost : vHosts) { // log.debug("Found " + virtualHost.getHostname()); // if (virtualHost.getHostname().compareTo("localhost") != 0 && // virtualHost.getLayoutSetId() != 0 && // virtualHost.getHostname().compareTo(serverName) == 0) { // long layoutSetId = virtualHost.getLayoutSetId(); // site = LayoutSetLocalServiceUtil.getLayoutSet(layoutSetId).getGroup(); // log.debug("Found match! Your site is " + site.getName()); // return site; // } // } // return null; // } }