This commit is contained in:
Fabio Sinibaldi 2018-07-09 12:30:56 +00:00
parent 206d987dfd
commit a0b4265079
1 changed files with 105 additions and 62 deletions

View File

@ -20,6 +20,8 @@ import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.gcube.vomanagement.usermanagement.model.GCubeGroup;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.gcube.vomanagement.usermanagement.model.VirtualGroup;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
@ -28,60 +30,34 @@ import com.liferay.portal.model.VirtualHost;
import com.liferay.portal.service.LayoutSetLocalServiceUtil;
import com.liferay.portal.service.VirtualHostLocalServiceUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class PortalContextTreeProvider implements ContextTreeProvider {
private static GroupManager groupsManager;
@AllArgsConstructor
@Getter
private class VRECategory{
private long categoryID;
private String name;
private String description;
}
@AllArgsConstructor
@Getter
private class VRE implements Comparable<VRE>{
private String name;
private String description;
private long id;
private String url;
private String scope;
@Override
public int compareTo(VRE vre) {
return this.getName().compareTo(vre.getName());
}
}
private static Logger log = LoggerFactory.getLogger(PortalContextTreeProvider.class);
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;
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
LinkedHashMap<VRECategory,ArrayList<VRE>> gatewayTree=getPortalSitesMappedToVRE(request);
LinkedList<ScopeDescriptor> rootChildren=new LinkedList<>();
LinkedHashMap<VRECategory,ArrayList<VRE>> gatewayTree=getPortalSitesMappedToVRE(request);
LinkedList<ScopeDescriptor> rootChildren=new LinkedList<>();
for(Entry<VRECategory,ArrayList<VRE>> entry:gatewayTree.entrySet()) {
ScopeDescriptor rootChild=new ScopeDescriptor(entry.getKey().name, entry.getKey().categoryID+"");
for(VRE vre:entry.getValue())
rootChild.getChildren().add(new ScopeDescriptor(vre.name, vre.scope));
}
Group rootGroup=getSiteFromServletRequest(request);
ScopeDescriptor root=new ScopeDescriptor(rootGroup.getDescriptiveName(),rootGroup.getGroupId()+"");
root.setChildren(rootChildren);
@ -90,17 +66,17 @@ public class PortalContextTreeProvider implements ContextTreeProvider {
return root;
}
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;
}
// 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;
// }
@ -158,21 +134,21 @@ public class PortalContextTreeProvider implements ContextTreeProvider {
for (VRECategory vre : toReturn.keySet()) {
if (vre.getName().compareTo(vreGroup.getName())==0) {
ArrayList<VRE> toUpdate = toReturn.get(vre);
// UserBelonging belongs = UserBelonging.NOT_BELONGING;
// VRE toAdd = new VRE(vreID,vreName, vreDescription, vreLogoURL, groupName, friendlyURL, belongs, getVREMembershipType(vreSite.getMembershipType()));
// UserBelonging belongs = UserBelonging.NOT_BELONGING;
// VRE toAdd = new VRE(vreID,vreName, vreDescription, vreLogoURL, groupName, friendlyURL, belongs, getVREMembershipType(vreSite.getMembershipType()));
VRE toAdd= new VRE(vreName,vreDescription,vreID,friendlyURL,infraScope);
// 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);
// }
// 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);
}
}
@ -212,4 +188,71 @@ public class PortalContextTreeProvider implements ContextTreeProvider {
}
return null;
}
private class VRECategory{
private long categoryID;
private String name;
private String description;
public VRECategory(long categoryID, String name, String description) {
super();
this.categoryID = categoryID;
this.name = name;
this.description = description;
}
public long getCategoryID() {
return categoryID;
}
public String getDescription() {
return description;
}
public String getName() {
return name;
}
}
private class VRE implements Comparable<VRE>{
private String name;
private String description;
private long id;
private String url;
private String scope;
public VRE(String name, String description, long id, String url, String scope) {
super();
this.name = name;
this.description = description;
this.id = id;
this.url = url;
this.scope = scope;
}
public String getDescription() {
return description;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public String getScope() {
return scope;
}
public String getUrl() {
return url;
}
@Override
public int compareTo(VRE vre) {
return this.getName().compareTo(vre.getName());
}
}
}