package org.gcube.portlets.widgets.ckandatapublisherwidget.server; import java.util.ArrayList; import java.util.List; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherService; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.LicensesBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.liferay.portal.service.UserLocalServiceUtil; import eu.trentorise.opendata.jackan.CkanClient; import eu.trentorise.opendata.jackan.model.CkanLicense; /** * Server side of the data publisher. * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ @SuppressWarnings("serial") public class CKANPublisherServicesImpl extends RemoteServiceServlet implements CKanPublisherService{ public static final String HOSTNAME_CKAN = "https://ckan-d-d4s.d4science.org/"; public static final String API_KEY = "803ada7f-2080-493f-8a99-3e593e880d94"; // Logger private static final Logger logger = LoggerFactory.getLogger(CKANPublisherServicesImpl.class); //dev user public static final String defaultUserId = "test.user"; //dev vre private static final String vreID = "/gcube/devsec/devVRE"; /** * when packaging test will fail if the user is not set to test.user * @return . */ public String getDevelopmentUser() { String user = defaultUserId; // user = "costantino.perciante"; return user; } /** * the current ASLSession * @return the session */ private ASLSession getASLSession() { String sessionID = this.getThreadLocalRequest().getSession().getId(); String user = (String) this.getThreadLocalRequest().getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE); if (user == null) { logger.warn("USER IS NULL setting " + defaultUserId + " and Running OUTSIDE PORTAL"); user = getDevelopmentUser(); SessionManager.getInstance().getASLSession(sessionID, user).setScope(vreID); } return SessionManager.getInstance().getASLSession(sessionID, user); } /** * Online or in development mode? * @return true if you're running into the portal, false if in development */ private boolean isWithinPortal() { try { UserLocalServiceUtil.getService(); return true; } catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) { logger.trace("Development Mode ON"); return false; } } @Override public LicensesBean getLicenses() { logger.debug("Request for CKAN licenses"); List result = new ArrayList(); CkanClient cc = new CkanClient(HOSTNAME_CKAN); //retrieve the list of available licenses List licenses = cc.getLicenseList(); for (CkanLicense ckanLicense : licenses) { result.add(ckanLicense.getTitle()); logger.debug("License is " + ckanLicense.getTitle()); } return new LicensesBean(result); } }