NLPHub added logs and correct various problems

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/nlphub@169586 82a268e6-3cf1-43bd-a215-b396298e98cf
master
Giancarlo Panichi 6 years ago
parent d74cc320be
commit 3da3b475f8

@ -31,7 +31,6 @@
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
@ -40,53 +39,45 @@
<version>2.8.2</version>
<scope>compile</scope>
</dependency>
<!-- GCube -->
<!-- <dependency> -->
<!-- <groupId>org.gcube.data.analysis</groupId> -->
<!-- <artifactId>data-miner-manager-cl</artifactId> -->
<!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> -->
<!-- <scope>compile</scope> -->
<!-- </dependency> -->
<!-- GCube -->
<!-- <dependency> -->
<!-- <groupId>org.gcube.data.analysis</groupId> -->
<!-- <artifactId>data-miner-manager-cl</artifactId> -->
<!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> -->
<!-- <scope>compile</scope> -->
<!-- </dependency> -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>common-authorization</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>authorization-client</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-wrapper</artifactId>
<version>[2.1.0-SNAPSHOT,)</version>
<scope>compile</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.resources.discovery</groupId>
<artifactId>discovery-client</artifactId>
<scope>compile</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-configuration-scanner</artifactId>
<version>[1.0.0-SNAPSHOT,)</version>
<scope>compile</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.resources</groupId>
<artifactId>registry-publisher</artifactId>
<version>[1.2.1-SNAPSHOT,3.0.0-SNAPSHOT)</version>
<scope>compile</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope</artifactId>
<scope>compile</scope>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope</artifactId>
<scope>provided</scope>
</dependency>
<!-- Sevlet jars for compilation, provided by Tomcat -->
<dependency>
<groupId>org.apache.tomcat</groupId>
@ -97,7 +88,6 @@
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<scope>compile</scope>
</dependency>
@ -113,13 +103,14 @@
<artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
</dependency>
<!-- JUnit -->
<!-- JUnit TEST -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>nlphub</finalName>

@ -0,0 +1,143 @@
package org.gcube.data.analysis.nlphub;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.gcube.data.analysis.nlphub.session.SessionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Servlet implementation class NLPHub
*/
@WebServlet(asyncSupported = true, name = "DiscoverDataMinerServlet", urlPatterns = { "/discover-dataminer-servlet" })
public class DiscoverDataMinerService extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(DiscoverDataMinerService.class);
/**
* @see HttpServlet#HttpServlet()
*/
public DiscoverDataMinerService() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("Discover DataMinerService");
String token = SessionUtils.getToken(request);
discoverDataMinerService(request, response, token);
}
private void discoverDataMinerService(HttpServletRequest request, HttpServletResponse response, String token)
throws ServletException, IOException {
HttpURLConnection connection = null;
String dataMinerServiceUrl = "";
response.setContentType("text/plain;charset=UTF-8");
try (PrintWriter writer = response.getWriter()) {
try {
String urlInformationSystem = "http://registry.d4science.org/icproxy/gcube/service/ServiceEndpoint/DataAnalysis/DataMiner?";
logger.debug("Request url: " + urlInformationSystem);
urlInformationSystem += "gcube-token=" + token;
URL url = new URL(urlInformationSystem);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
try (BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
dataMinerServiceUrl = readProfileInfo(r);
}
} catch (Exception e) {
logger.error("Discover DataMiner Service error: " + e.getLocalizedMessage(), e);
} finally {
try {
if (connection != null)
connection.disconnect();
} catch (Exception e) {
logger.error("Discover DataMiner Service error: " + e.getLocalizedMessage(), e);
}
}
writer.println(dataMinerServiceUrl);
} catch (Throwable e) {
logger.error("Error discovering DataMiner Service Url: " + e.getLocalizedMessage(), e);
}
}
private String readProfileInfo(BufferedReader r) throws FactoryConfigurationError, XMLStreamException {
String dataMinerServiceUrl = null;
XMLInputFactory xmlInFact = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInFact.createXMLStreamReader(r);
while (reader.hasNext()) {
int eventType = reader.next();
if (eventType == XMLStreamConstants.START_ELEMENT) {
logger.debug("Read Element: " + reader.getLocalName());
if (reader.getLocalName().compareToIgnoreCase("EndPoint") == 0) {
logger.debug("Attribute count:" + reader.getAttributeCount());
for (int i = 0; i < reader.getAttributeCount(); i++) {
logger.debug("Attribute Name: " + reader.getAttributeName(i));
logger.debug("Attribute Value: " + reader.getAttributeValue(i));
if (reader.getAttributeName(i).toString().compareToIgnoreCase("EntryName") == 0
&& reader.getAttributeValue(i).toString()
.compareToIgnoreCase("dataminer-prototypes.d4science.org") == 0) {
dataMinerServiceUrl = reader.getElementText();
dataMinerServiceUrl=dataMinerServiceUrl.trim();
dataMinerServiceUrl = dataMinerServiceUrl.replace("\\n", "").replace("\\r", "");
logger.debug("url lenght: "+dataMinerServiceUrl.length());
logger.debug("DataMiner service url retrieved: " + dataMinerServiceUrl);
return dataMinerServiceUrl;
}
}
}
}
}
return dataMinerServiceUrl;
}
}

@ -6,6 +6,7 @@ import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@ -32,7 +33,7 @@ import org.xml.sax.InputSource;
public class NLPHub extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(NLPHub.class);
/**
* @see HttpServlet#HttpServlet()
*/
@ -68,22 +69,27 @@ public class NLPHub extends HttpServlet {
} else {
runAlgorithms(request, response, token);
}
logger.debug("NLPHub work done");
}
private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token)
throws ServletException, IOException {
try {
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String algId = request.getParameter("algId");
logger.debug("NLPHub getAlgorithmInfo: [DataMiner="+dataMiner+", algorithmID="+algId+"]");
HttpURLConnection connection = null;
BufferedReader r = null;
String algAbsrtact = "";
PrintWriter writer = response.getWriter();
response.setContentType("application/json;charset=UTF-8");
try {
String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL + "&gcube-token="
String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL+"&lang=en-US&Identifier=" + algId;
logger.debug("Request url: "+finalUrl);
finalUrl+="&gcube-token="
+ token;
finalUrl += "&lang=en-US&Identifier=" + algId;
URL url = new URL(finalUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
@ -106,7 +112,7 @@ public class NLPHub extends HttpServlet {
writer.close();
} catch (Exception e) {
logger.error(e.getLocalizedMessage(),e);
logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
writer.println(new JsonManager().getErrorJsonResponse("" + e.getLocalizedMessage()));
writer.close();
} finally {
@ -116,12 +122,12 @@ public class NLPHub extends HttpServlet {
if (connection != null)
connection.disconnect();
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
}
}
} catch (Exception e) {
logger.error(e.getLocalizedMessage(),e);
logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
}
}
@ -129,19 +135,27 @@ public class NLPHub extends HttpServlet {
throws ServletException, IOException {
try {
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String[] algs = request.getParameter("algs").split(",");
String plink=request.getParameter("plink");
String annotations=request.getParameter("annotations");
logger.debug("NLPHub getAlgorithmInfo: [DataMiner="+dataMiner+", plink="+plink+
", annotations="+annotations+", algorithms="+Arrays.toString(algs)+"]");
for (int i = 0; i < algs.length; i++) {
algs[i] = algs[i].trim();
}
RunnerCommander commander = new RunnerCommander(dataMiner, algs, request.getParameter("plink"),
request.getParameter("annotations"), token, response);
RunnerCommander commander = new RunnerCommander(dataMiner, algs,plink ,
annotations, token, response);
commander.setSleepTime(100);
commander.setMaxWaitingTime(90 * 1000);
commander.startProcess();
} catch (Exception e) {
logger.error(e.getLocalizedMessage(),e);
logger.error("NLPHub runAlgorithms: "+e.getLocalizedMessage(), e);
}
}

@ -0,0 +1,82 @@
package org.gcube.data.analysis.nlphub;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.data.analysis.nlphub.session.SessionUtils;
import org.gcube.data.analysis.nlphub.shared.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Servlet implementation class NLPHub
*/
@WebServlet(asyncSupported = true, name = "NLPInit", urlPatterns = { "/nlpinit-servlet" })
public class NLPInit extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(NLPInit.class);
public NLPInit() {
super();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("NLPInit");
String token = SessionUtils.getToken(request);
String res = request.getParameter(Constants.REQUEST);
RequestType r=RequestType.getRequestTypeFromString(res);
if(r==null){
throw new ServletException("Invalid request: "+res);
}
switch(r){
case DataminerService:
dataminerServiceDiscover(request, response, token);
break;
default:
throw new ServletException("Invalid request: "+res);
}
}
private void dataminerServiceDiscover(HttpServletRequest request, HttpServletResponse response,String token) throws ServletException {
/*
PrintWriter writer = response.getWriter();
response.setContentType("text/plain;charset=UTF-8");
response
String result = null;
result = request.getSession().getId();
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
} finally {
writer.println(result);
writer.close();
}*/
}
}

@ -74,6 +74,11 @@ public class NLPUploader extends HttpServlet {
private void handleFreeText(HttpServletRequest request, HttpServletResponse response, String token,
WorkspaceManager ws) throws ServletException, IOException {
String freeText = request.getParameter("freetext");
String langParameter=request.getParameter("getlang");
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
freeText = NlpUtils.replaceDirtyCharacters(freeText);
byte[] content = freeText.getBytes("UTF-8");
@ -86,11 +91,11 @@ public class NLPUploader extends HttpServlet {
return;
}
String link = ws.getPublicLink(fileName, token);
if (request.getParameter("getlang") != null) {
if (langParameter != null) {
String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content));
logger.info(sentence);
try {
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response);
NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
} catch (NlpHubException ex) {
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
}
@ -107,6 +112,9 @@ public class NLPUploader extends HttpServlet {
int contentLength = request.getContentLength();
Part filePart = request.getPart("mytxtfile");
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String fileName = getFileName(filePart);
@ -147,7 +155,7 @@ public class NLPUploader extends HttpServlet {
String sentence = NlpUtils.getLanguageRecognizerDigest(stringContent);
logger.info(sentence);
try {
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response);
NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
} catch (NlpHubException ex) {
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
}

@ -0,0 +1,34 @@
package org.gcube.data.analysis.nlphub;
public enum RequestType {
DataminerService("DataminerService");
private final String id;
private RequestType(final String id) {
this.id = id;
}
public static RequestType getRequestTypeFromString(String res){
if(res==null||res.isEmpty()){
return null;
}
for(RequestType r:RequestType.values()){
if(r.id.compareToIgnoreCase(res)==0){
return r;
}
}
return null;
}
@Override
public String toString() {
return id;
}
}

@ -49,9 +49,9 @@ public class NLpLanguageRecognizer {
try {
if (dataMiner == null)
dataMiner = Constants.DEFAULT_DATAMINER_URL;
else
dataMiner = "http://" + dataMiner;
String urlService = dataMiner + "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0";
//else
// dataMiner = "http://" + dataMiner;
String urlService = dataMiner + "?request=Execute&service=WPS&Version=1.0.0";
urlService += "&gcube-token=" + token;
urlService += "&lang=en-US";
urlService += "&Identifier=" + RECOGNIZER_ID;

@ -12,7 +12,6 @@ import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilderFactory;
import org.gcube.data.analysis.nlphub.legacy.AsyncHttpRequest;
import org.gcube.data.analysis.nlphub.legacy.NerOutput;
import org.gcube.data.analysis.nlphub.shared.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -22,52 +21,64 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class NlpAsyncNerRunner extends AsyncHttpRequest {
private static final Logger logger = LoggerFactory.getLogger(NerOutput.class);
public static final String WPS_EXECUTE_URL = "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0";
public static final String WPS_DESCRIBE_PROCESS_URL = "/wps/WebProcessingService?request=DescribeProcess&service=WPS&Version=1.0.0";
private String identifier, token, httpMethod, annotations, publicLink, dataMiner;
private static final Logger logger = LoggerFactory.getLogger(NlpAsyncNerRunner.class);
public static final String WPS_EXECUTE_URL = "?request=Execute&service=WPS&Version=1.0.0";
public static final String WPS_DESCRIBE_PROCESS_URL = "?request=DescribeProcess&service=WPS&Version=1.0.0";
public static final String DATAMINER_DEFAULT="http://dataminer-prototypes.d4science.org/wps/WebProcessingService";
// private String identifier, token, httpMethod, annotations, publicLink,
// dataMiner;
private String identifier;
private RunnerCommander commander;
public NlpAsyncNerRunner(String dataMiner, String identifier, String token, String publicLink, String annotations,
String language, RunnerCommander commander) {
super();
this.identifier = identifier;
this.token = token;
this.httpMethod = "GET";
this.annotations = annotations;
this.publicLink = publicLink;
this.commander = commander;
this.commander=commander;
this.identifier=identifier;
String httpMethod = "GET";
if (dataMiner == null)
this.dataMiner = Constants.DEFAULT_DATAMINER_URL;
else
this.dataMiner = "http://" + dataMiner;
ArrayList<NlpParameter> params = buildParameterString();
String serviceUrl = this.dataMiner + WPS_EXECUTE_URL + "&gcube-token=" + token + "&lang=en-US&Identifier="
+ identifier;
serviceUrl += "&" + setUrl(params);
super.setBaseUrl(serviceUrl);
dataMiner = Constants.DEFAULT_DATAMINER_URL;
// else
// this.dataMiner = "http://" + dataMiner;
logger.debug("NlpAsyncNerRunner: [identifier=" + identifier + ", httpMethod=" + httpMethod + ", annotations="
+ annotations + ", publicLink=" + publicLink + ", dataminer=" + dataMiner + "]");
ArrayList<NlpParameter> params = buildParameterString(dataMiner, identifier, publicLink, annotations, token);
StringBuilder serviceUrl = new StringBuilder();
serviceUrl.append(dataMiner);
serviceUrl.append(WPS_EXECUTE_URL);
serviceUrl.append("&lang=en-US&Identifier=");
serviceUrl.append(identifier);
serviceUrl.append("&");
serviceUrl.append(setParams(params));
serviceUrl.append("&gcube-token=" + token);
logger.debug("NlpAsyncNerRunner: [serviceUrl=" + serviceUrl + ", method=" + httpMethod + "]");
super.setBaseUrl(serviceUrl.toString());
super.setMethod(httpMethod);
}
public NlpAsyncNerRunner(String baseUrl, String method) {
/*public NlpAsyncNerRunner(String baseUrl, String method) {
super(baseUrl, method, null);
}
}*/
/*
public String getIdentifier() {
return identifier;
}
public String getToken() {
return token;
}
public String getHttpMethod() {
return httpMethod;
}
}*/
private String setUrl(ArrayList<NlpParameter> parameters) {
private String setParams(ArrayList<NlpParameter> parameters) {
String url = "DataInputs=";
for (NlpParameter p : parameters) {
try {
@ -76,22 +87,33 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
logger.error(ex.getLocalizedMessage());
}
}
logger.debug("");
return url;
}
private ArrayList<NlpParameter> buildParameterString() {
private ArrayList<NlpParameter> buildParameterString(String dataMiner, String identifier, String publicLink,
String annotations, String token) {
ArrayList<NlpParameter> parameters = new ArrayList<>();
HttpURLConnection connection = null;
BufferedReader r = null;
try {
String finalUrl = dataMiner + WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" + token;
finalUrl += "&lang=en-US&Identifier=" + identifier;
URL url = new URL(finalUrl);
StringBuilder serviceUrl = new StringBuilder();
serviceUrl.append(dataMiner);
serviceUrl.append(WPS_DESCRIBE_PROCESS_URL);
serviceUrl.append("&lang=en-US&Identifier=");
serviceUrl.append(identifier);
logger.debug("BuildParameterString request URL: " + serviceUrl);
serviceUrl.append("&gcube-token=");
serviceUrl.append(token);
URL url = new URL(serviceUrl.toString());
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
connection.setRequestMethod("GET");
r = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r));
doc.getDocumentElement().normalize();
@ -125,7 +147,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
}
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
logger.error("NlpAsyncNerRunner buildParameterString: " + e.getLocalizedMessage(), e);
} finally {
try {
if (r != null)
@ -146,7 +168,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
@Override
public void asyncHttpRequestCallback() {
elapsedTime = System.currentTimeMillis() - elapsedTime;
logger.info("ID: " + identifier.substring(identifier.lastIndexOf(".") + 1) + " elapsed time: " + elapsedTime);
logger.debug("ID: " + identifier.substring(identifier.lastIndexOf(".") + 1) + " elapsed time: " + elapsedTime);
String result = super.getResult();
String theLink = "";
try {

@ -24,7 +24,7 @@ public class RunnerCommander extends Thread {
private long maxWaitingTime = 5l * 60l * 1000l;
private boolean complete = false;
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token) {
/*public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token) {
this.identifiers = identifiers;
this.annotationList = annotationList;
this.link = link;
@ -33,7 +33,7 @@ public class RunnerCommander extends Thread {
this.sleepTime = 500l;
this.dataMiner = dataMiner;
outResultList = new ArrayList<String>();
}
}*/
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token,
HttpServletResponse response) {

@ -1,5 +1,6 @@
package org.gcube.data.analysis.nlphub.session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.gcube.data.analysis.nlphub.shared.Constants;
@ -8,15 +9,38 @@ import org.slf4j.LoggerFactory;
public class SessionUtils {
private static final Logger logger = LoggerFactory.getLogger(SessionUtils.class);
public static String getToken(HttpServletRequest request) {
public static String getToken(HttpServletRequest request) throws ServletException {
String token = request.getParameter(Constants.TOKEN_PARAMETER);
logger.debug("Token in request: "+token);
if(token == null || token.isEmpty()){
logger.error("Token in request is null");
logger.debug("Token in request: " + token);
if (token == null || token.isEmpty()) {
logger.debug("Token is null");
throw new ServletException("Token is null");
}
return token;
}
/*
private static void checkToken(String token) throws Exception {
if (token == null || token.isEmpty()) {
logger.error("Token is null");
throw new Exception("Token is null");
} else {
AuthorizationEntry entry;
entry = authorizationService().get(token);
ClientInfo clientInfo = entry.getClientInfo();
if (clientInfo == null) {
logger.error("User not found.");
throw new Exception("Authorization failed!");
} else {
logger.debug("User: " + clientInfo.getId());
String context = entry.getContext();
logger.debug("Context: " + context);
}
}
}*/
}

@ -7,18 +7,20 @@ public class Constants {
public static final String DEFAULT_USER = "giancarlo.panichi";
public static final String DEFAULT_SCOPE = "/gcube/devNext/NextNext";
public static final String DEFAULT_DATAMINER_URL = "http://dataminer-prototypes.d4science.org";
public static final String DEFAULT_DATAMINER_URL = "http://dataminer-prototypes.d4science.org/wps/WebProcessingService";
public static final String TOKEN_PARAMETER = "gcube-token";
public static final String DEFAULT_DESCRIPTION = "NlpHub upload";
//public static String PUBLIC_TOKEN = "f57441ac-b361-4c2d-992a-40db034f1b8c-843339462";
public static final String MIME_TEXT = "text/plain";
public static final String CONTENT_TYPE = "Content-Type";
public static final String UNAVAILABLE = "unavailable";
public static final String ERROR_ID = "ERROR";
public static final String INPUT_FILE_PARAMETER = "input";
public static final String REQUEST = "Request";

@ -60,8 +60,8 @@ public class WorkspaceManager {
return link;
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
throw new NlpHubException(e.getLocalizedMessage(), e);
logger.error("Error in WorkspaceManager for getPublicLink: "+e.getLocalizedMessage(), e);
throw new NlpHubException("Error in WorkspaceManager for getPublicLink: "+e.getLocalizedMessage(), e);
}
}

@ -1,83 +0,0 @@
<configuration scan="true" debug="false">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/ghn.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/ghn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="ACCOUNT_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/accounting.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/accounting.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="ACCESS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/access.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/access.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="NLP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/nlphub.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/nlphub.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="org.gcube.data.publishing" level="ERROR">
<appender-ref ref="ACCOUNT_FILE" />
</logger>
<logger name="org.gcube.documentstore" level="ERROR">
<appender-ref ref="ACCOUNT_FILE" />
</logger>
<logger name="org.gcube.smartgears.handlers.application.request" level="INFO">
<appender-ref ref="ACCESS_FILE" />
</logger>
<logger name="org.gcube" level="WARN" />
<logger name="org.gcube.smartgears" level="WARN" />
<logger name="org.gcube.common.events" level="WARN" />
<logger name="org.gcube.data.analysis.nlphub" level="DEBUG">
<appender-ref ref="NLP_FILE" />
</logger>
<root level="WARN">
<appender-ref ref="FILE" />
</root>
</configuration>

@ -1,36 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0">
<display-name>NLPHub</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>NLPServlet</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPServlet</servlet-name>
<url-pattern>/nlphub-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>NLPUploader</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPUploader</servlet-name>
<url-pattern>/nlphub-uploader-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>NLPMapper</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPMapper</servlet-name>
<url-pattern>/nlphub-mapper-servlet</url-pattern>
</servlet-mapping>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="true" version="3.0">
<display-name>NLPHub</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>NLPServlet</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPServlet</servlet-name>
<url-pattern>/nlphub-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>NLPUploader</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPUploader</servlet-name>
<url-pattern>/nlphub-uploader-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>NLPMapper</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NLPMapper</servlet-name>
<url-pattern>/nlphub-mapper-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DiscoverDataMinerServlet</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.DiscoverDataMinerService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DiscoverDataMinerServlet</servlet-name>
<url-pattern>/discover-dataminer-servlet</url-pattern>
</servlet-mapping>
</web-app>

@ -27,7 +27,7 @@
String requestToken=request.getParameter(Constants.TOKEN_PARAMETER);
if( requestToken == null||requestToken.isEmpty()) {
%>
var gCubeToken = "";
var gCubeToken = "fea75a5a-d84c-495f-b0ca-09cdd95bacce-843339462";
<% } else { %>
var gCubeToken = <%=requestToken%>

@ -27,11 +27,57 @@ $(document).ready(function() {
console.log('HREF: '+appLocation);
appRoot=contextPath;
console.log('appRoot: '+ appRoot );
evaluateRequest();
});
evaluateRequest = function(){
$(".popup-text").hide();
disableExecuteButton();
showAnnotationsList();
checkAuth();
}
checkAuth = function(){
if(gCubeToken ===undefined || gCubeToken==null){
alert("Unexpected error token is null!\n.");
return null;
}
dataMinerClusterInfo();
checkInputLink();
});
}
dataMinerClusterInfo = function(){
if(gCubeToken ===undefined || gCubeToken==null){
alert("Unexpected error token is null!\n.");
return null;
}
var discoverDataMinerServiceUrl=appRoot+"/discover-dataminer-servlet?gcube-token="+gCubeToken;
$.ajax({
url : discoverDataMinerServiceUrl,
type : "GET",
async : true,
success : function(data) {
var dataminerHost=data;
console.log("Retrieved dataMinerServiceUrl: "+dataminerHost);
dataMiner=dataminerHost;
//alert("DataMiner Host: "+dataminerHost);
return;
},
error : function(request, error) {
alert("Unexpected error reading from link: '" + discoverDataMinerServiceUrl
+ "'\nStatus: " + request.status + "\nError: "
+ error + "\n.");
hideProgress();
initApplication();
}
});
}
checkInputLink = function() {
if (inputFile != "") {
@ -45,7 +91,7 @@ checkInputLink = function() {
var uploaderUrl = appRoot
+ "/nlphub-uploader-servlet?getlang=on&freetext="
+ encodeURIComponent(freeText) + "&dataminer="
+ encodeURIComponent(dataMiner);
+ dataMiner; //encodeURIComponent(dataMiner);
if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken;
@ -90,8 +136,8 @@ initApplication = function() {
contentType : "text/plain; charset=utf-8",
success : function(data, stato) {
$("#ner-result-container").hide();
var lineTokens = manageCsvData(data);
getAlgorithms(lineTokens);
var algorithmsEnable = manageCsvData(data);
getAlgorithms(algorithmsEnable);
buildLanguageSelection();
buildLanguageList();
buildAnnotations();
@ -111,7 +157,8 @@ initApplication = function() {
disableExecuteButton();
var uploaderUrl = appRoot
+ "/nlphub-uploader-servlet?dataminer="
+ encodeURIComponent(dataMiner);
//+ encodeURIComponent(dataMiner);
+ dataMiner;
if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken;
@ -272,8 +319,9 @@ setEventListeners = function() {
+ "/nlphub-uploader-servlet?freetext="
+ encodeURIComponent(freeText)
+ "&dataminer="
+ encodeURIComponent(dataMiner);
//+ encodeURIComponent(dataMiner);
+dataMiner;
if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken;
@ -327,8 +375,11 @@ enableAjaxFileUpload = function() {
$(".ajax-file-upload").attr("enabled", "true");
$(".ajax-file-upload").css("background", pageGreen);
try {
document.getElementById("ajax-file-upload-id").removeEventListener(
var fUploadElement=document.getElementById("ajax-file-upload-id");
if(fUploadElement!=null){
fUploadElement.removeEventListener(
"click", listenAjaxFileUpload);
}
} catch (err) {
console.log(err.message);
}
@ -428,8 +479,8 @@ manageCsvData = function(data) {
lineTokens.push(tokens);
var description = tokens[1].toUpperCase().trim();
if (description == "CLOUD COMPUTING")
dataMiner = tokens[2];
/*if (description == "CLOUD COMPUTING")
dataMiner = tokens[2];*/
tokens = [];
}
@ -605,7 +656,7 @@ runAlgorithm = function() {
algList = algList.substring(0, algList.length - 1);
var parameters = "annotations=" + annList;
parameters += "&dataminer=" + encodeURIComponent(dataMiner);
parameters += "&dataminer=" +dataMiner; //+ encodeURIComponent(dataMiner);
parameters += "&lang=" + $("#language-select").val();
parameters += "&plink=" + encodeURIComponent(publicLink);
parameters += "&algs=" + algList;
@ -821,11 +872,15 @@ getAlgInformation = function(alg) {
alert("Invalid algorithm identifier.");
return;
}
console.log("getAlgorithm from dataMiner: "+dataMiner);
var parameters = "getInfo=on";
parameters += "&dataminer=" + encodeURIComponent(dataMiner);
parameters += "&dataminer=" + dataMiner; //encodeURIComponent(dataMiner);
parameters += "&algId=" + algId;
console.log("parameters: "+parameters);
var nlphubUrl = appRoot + "/nlphub-servlet?" + parameters;
if (gCubeToken.length > 0)
nlphubUrl += "&gcube-token=" + gCubeToken;

@ -0,0 +1,88 @@
package nlphub;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.gcube.data.analysis.nlphub.shared.Constants;
import org.junit.Assert;
import org.junit.Test;
public class DiscoverDataMinerServiceTest {
private static final Logger logger = LoggerFactory.getLogger(DiscoverDataMinerServiceTest.class);
@Test
public void discover() {
if (Constants.TEST_ENABLE) {
try {
String dataMinerServiceUrl = null;
String urlInformationSystem = "http://registry.d4science.org/icproxy/gcube/service/ServiceEndpoint/DataAnalysis/DataMiner?";
logger.debug("Request url: " + urlInformationSystem);
urlInformationSystem += "gcube-token=" + "f57441ac-b361-4c2d-992a-40db034f1b8c-843339462";
URL url = new URL(urlInformationSystem);
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
try (BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
dataMinerServiceUrl = readProfileInfo(r);
}
logger.debug("DataMinerServiceUrl: " + dataMinerServiceUrl);
Assert.assertTrue(true);
} catch (Throwable e) {
logger.error("Error retrieving DataMinerServiceUrl: "+e.getLocalizedMessage(),e);
Assert.fail("Error retrieving DataMinerServiceUrl: "+e.getLocalizedMessage());
}
} else {
Assert.assertTrue(true);
}
}
private String readProfileInfo(BufferedReader r) throws FactoryConfigurationError, XMLStreamException {
String dataMinerServiceUrl = null;
XMLInputFactory xmlInFact = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInFact.createXMLStreamReader(r);
while (reader.hasNext()) {
int eventType = reader.next();
if (eventType == XMLStreamConstants.START_ELEMENT) {
logger.debug("Read Element: " + reader.getLocalName());
if (reader.getLocalName().compareToIgnoreCase("EndPoint") == 0) {
logger.debug("Attribute count:" + reader.getAttributeCount());
for (int i = 0; i < reader.getAttributeCount(); i++) {
logger.debug("Attribute Name: " + reader.getAttributeName(i));
logger.debug("Attribute Value: " + reader.getAttributeValue(i));
if (reader.getAttributeName(i).toString().compareToIgnoreCase("EntryName") == 0
&& reader.getAttributeValue(i).toString()
.compareToIgnoreCase("dataminer-prototypes.d4science.org") == 0) {
dataMinerServiceUrl = reader.getElementText();
dataMinerServiceUrl = dataMinerServiceUrl.replace("\\n", "").replace("\\r", "");
logger.debug("DataMiner service url retrieved: " + dataMinerServiceUrl);
return dataMinerServiceUrl;
}
}
}
}
}
return dataMinerServiceUrl;
}
}
Loading…
Cancel
Save