Massimiliano Assante 6 years ago
parent 73a9b4ad38
commit 22c499d771

@ -54,6 +54,10 @@
<version>[2.4.1-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.common.portal</groupId>
<artifactId>portal-manager</artifactId>

@ -12,25 +12,30 @@
* details.
*/
package org.gcube.portlets.user;
package org.gcube.portlets.user.cataloguebadge;
import java.text.DecimalFormat;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
import org.gcube.datacatalogue.ckanutillibrary.server.ApplicationProfileScopePerUrlReader;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueFactory;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueImpl;
import org.gcube.datacatalogue.ckanutillibrary.shared.LandingPages;
import org.gcube.datacatalogue.ckanutillibrary.shared.Statistics;
import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ReleaseInfo;
import com.liferay.portal.model.Group;
import com.liferay.portal.service.GroupLocalServiceUtil;
@ -39,59 +44,83 @@ import com.liferay.portal.util.PortalUtil;
@Controller
@RequestMapping("VIEW")
public class PortletViewController {
private static Log _log = LogFactoryUtil.getLog(PortletViewController.class);
private DataCatalogueFactory factory = DataCatalogueFactory.getFactory();
private static final long K = 1000;
private static final long M = K * K;
private static final long G = M * K;
private static GroupManager gm = new LiferayGroupManager();
@RenderMapping
public String question(RenderRequest request,RenderResponse response, Model model) {
model.addAttribute("releaseInfo", ReleaseInfo.getReleaseInfo());
try {
HttpServletRequest httpServletRequest = PortalUtil.getHttpServletRequest(request);
long groupId = PortalUtil.getScopeGroupId(request);
PortalContext pContext = PortalContext.getConfiguration();
String context = pContext.getCurrentScope(""+groupId);
String catalogueURL = getCatalougeFriendlyURL(GroupLocalServiceUtil.getGroup(groupId));
DataCatalogueImpl utils = factory.getUtilsPerScope(context);
DataCatalogueImpl utils = null;
if (gm.isRootVO(groupId)) {
String gatewaySiteURL = pContext.getGatewayURL(httpServletRequest);
if (!gatewaySiteURL.startsWith("https"))
gatewaySiteURL = gatewaySiteURL.replaceAll("http:", "https:");
String siteLandingPage = pContext.getSiteLandingPagePath(httpServletRequest);
String clientURL = gatewaySiteURL+siteLandingPage;
System.out.println(clientURL);
try {
String appPerScopeURL = ApplicationProfileScopePerUrlReader.getScopePerUrl(clientURL);
_log.info("Catalogue for this Gateway is in this scope: " + appPerScopeURL);
utils = factory.getUtilsPerScope(appPerScopeURL);
} catch (Exception e) {
_log.warn("Returning default catalogue for the context, could not find the catologue for this Gateway: " + clientURL);
utils = factory.getUtilsPerScope(context);
}
}
else {
utils = factory.getUtilsPerScope(context);
}
Statistics stats = utils.getStatistics();
model.addAttribute("itemsNo", convertToStringRepresentation(stats.getNumItems()));
model.addAttribute("groupsNo", stats.getNumGroups());
model.addAttribute("organisationsNo", stats.getNumOrganizations());
model.addAttribute("typesNo", stats.getNumTypes());
model.addAttribute("catalogueURL", catalogueURL);
} catch (Exception e) {
e.printStackTrace();
e.printStackTrace();
}
return "Catalogue-badge-portlet/view";
}
public static String convertToStringRepresentation(final long value){
final long[] dividers = new long[] { G, M, K, 1 };
final String[] units = new String[] {"Giga", "M", "K", ""};
if(value < 1)
throw new IllegalArgumentException("Invalid file size: " + value);
String result = null;
for(int i = 0; i < dividers.length; i++){
final long divider = dividers[i];
if(value >= divider){
result = format(value, divider, units[i]);
break;
}
}
return result;
final long[] dividers = new long[] { G, M, K, 1 };
final String[] units = new String[] {"Giga", "M", "K", ""};
if(value < 1)
throw new IllegalArgumentException("Invalid file size: " + value);
String result = null;
for(int i = 0; i < dividers.length; i++){
final long divider = dividers[i];
if(value >= divider){
result = format(value, divider, units[i]);
break;
}
}
return result;
}
private static String format(final long value,
final long divider,
final String unit){
final double result =
divider > 1 ? (double) value / (double) divider : (double) value;
return new DecimalFormat("#,##0.#").format(result) + " " + unit;
final long divider,
final String unit){
final double result =
divider > 1 ? (double) value / (double) divider : (double) value;
return new DecimalFormat("#,##0.#").format(result) + " " + unit;
}
/**
* @param currentGroup
* @return Returns the friendly u r l of this group.
@ -103,4 +132,6 @@ public class PortletViewController {
.append(GCubePortalConstants.CATALOGUE_FRIENDLY_URL);
return sb.toString();
}
}

@ -2,7 +2,7 @@
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.2.0//EN" "http://www.liferay.com/dtd/liferay-display_6_2_0.dtd">
<display>
<category name="category.sample">
<category name="gCube Applications">
<portlet id="Catalogue-badge-portlet" />
</category>
</display>

@ -1,9 +1,9 @@
name=Catalogue-badge-portlet
module-group-id=liferay
module-incremental-version=1
module-incremental-version=2
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=LGPL
page-url=http://www.gcube-system.org
author=M. Assante
licenses=EUPL

@ -15,8 +15,8 @@
</supports>
<portlet-info>
<title>Catalogue</title>
<short-title>Catalogue-badge-portlet</short-title>
<keywords>Catalogue-badge-portlet</keywords>
<short-title>Catalogue</short-title>
<keywords>Catalogue</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>

@ -6,5 +6,5 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
>
<context:component-scan base-package="org.gcube.portlets.user.**" />
<context:component-scan base-package="org.gcube.portlets.user.cataloguebadge.**" />
</beans>
Loading…
Cancel
Save