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
This commit is contained in:
parent
d74cc320be
commit
3da3b475f8
51
pom.xml
51
pom.xml
|
@ -31,7 +31,6 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.googlecode.json-simple</groupId>
|
<groupId>com.googlecode.json-simple</groupId>
|
||||||
<artifactId>json-simple</artifactId>
|
<artifactId>json-simple</artifactId>
|
||||||
<version>1.1</version>
|
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -40,53 +39,45 @@
|
||||||
<version>2.8.2</version>
|
<version>2.8.2</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- GCube -->
|
<!-- GCube -->
|
||||||
<!-- <dependency> -->
|
<!-- <dependency> -->
|
||||||
<!-- <groupId>org.gcube.data.analysis</groupId> -->
|
<!-- <groupId>org.gcube.data.analysis</groupId> -->
|
||||||
<!-- <artifactId>data-miner-manager-cl</artifactId> -->
|
<!-- <artifactId>data-miner-manager-cl</artifactId> -->
|
||||||
<!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> -->
|
<!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> -->
|
||||||
<!-- <scope>compile</scope> -->
|
<!-- <scope>compile</scope> -->
|
||||||
<!-- </dependency> -->
|
<!-- </dependency> -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.common</groupId>
|
<groupId>org.gcube.common</groupId>
|
||||||
<artifactId>common-authorization</artifactId>
|
<artifactId>common-authorization</artifactId>
|
||||||
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
<scope>provided</scope>
|
||||||
<scope>compile</scope>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.common</groupId>
|
<groupId>org.gcube.common</groupId>
|
||||||
<artifactId>authorization-client</artifactId>
|
<artifactId>authorization-client</artifactId>
|
||||||
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
<scope>provided</scope>
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.gcube.contentmanagement</groupId>
|
|
||||||
<artifactId>storage-manager-wrapper</artifactId>
|
|
||||||
<version>[2.1.0-SNAPSHOT,)</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.resources.discovery</groupId>
|
<groupId>org.gcube.resources.discovery</groupId>
|
||||||
<artifactId>discovery-client</artifactId>
|
<artifactId>discovery-client</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-configuration-scanner</artifactId>
|
<artifactId>common-configuration-scanner</artifactId>
|
||||||
<version>[1.0.0-SNAPSHOT,)</version>
|
<scope>provided</scope>
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.resources</groupId>
|
<groupId>org.gcube.resources</groupId>
|
||||||
<artifactId>registry-publisher</artifactId>
|
<artifactId>registry-publisher</artifactId>
|
||||||
<version>[1.2.1-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
<scope>provided</scope>
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-scope</artifactId>
|
<artifactId>common-scope</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Sevlet jars for compilation, provided by Tomcat -->
|
<!-- Sevlet jars for compilation, provided by Tomcat -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.tomcat</groupId>
|
<groupId>org.apache.tomcat</groupId>
|
||||||
|
@ -97,7 +88,6 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-lang</groupId>
|
<groupId>commons-lang</groupId>
|
||||||
<artifactId>commons-lang</artifactId>
|
<artifactId>commons-lang</artifactId>
|
||||||
<version>2.6</version>
|
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
@ -113,13 +103,14 @@
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- JUnit -->
|
<!-- JUnit TEST -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>3.8.1</version>
|
<version>4.8.1</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<finalName>nlphub</finalName>
|
<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.io.PrintWriter;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.annotation.WebServlet;
|
import javax.servlet.annotation.WebServlet;
|
||||||
|
@ -32,7 +33,7 @@ import org.xml.sax.InputSource;
|
||||||
public class NLPHub extends HttpServlet {
|
public class NLPHub extends HttpServlet {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final Logger logger = LoggerFactory.getLogger(NLPHub.class);
|
private static final Logger logger = LoggerFactory.getLogger(NLPHub.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see HttpServlet#HttpServlet()
|
* @see HttpServlet#HttpServlet()
|
||||||
*/
|
*/
|
||||||
|
@ -68,22 +69,27 @@ public class NLPHub extends HttpServlet {
|
||||||
} else {
|
} else {
|
||||||
runAlgorithms(request, response, token);
|
runAlgorithms(request, response, token);
|
||||||
}
|
}
|
||||||
|
logger.debug("NLPHub work done");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token)
|
private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
try {
|
try {
|
||||||
String dataMiner = request.getParameter("dataminer");
|
String dataMiner = request.getParameter("dataminer");
|
||||||
|
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
|
||||||
|
|
||||||
String algId = request.getParameter("algId");
|
String algId = request.getParameter("algId");
|
||||||
|
logger.debug("NLPHub getAlgorithmInfo: [DataMiner="+dataMiner+", algorithmID="+algId+"]");
|
||||||
HttpURLConnection connection = null;
|
HttpURLConnection connection = null;
|
||||||
BufferedReader r = null;
|
BufferedReader r = null;
|
||||||
String algAbsrtact = "";
|
String algAbsrtact = "";
|
||||||
PrintWriter writer = response.getWriter();
|
PrintWriter writer = response.getWriter();
|
||||||
response.setContentType("application/json;charset=UTF-8");
|
response.setContentType("application/json;charset=UTF-8");
|
||||||
try {
|
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;
|
+ token;
|
||||||
finalUrl += "&lang=en-US&Identifier=" + algId;
|
|
||||||
URL url = new URL(finalUrl);
|
URL url = new URL(finalUrl);
|
||||||
connection = (HttpURLConnection) url.openConnection();
|
connection = (HttpURLConnection) url.openConnection();
|
||||||
connection.setDoInput(true);
|
connection.setDoInput(true);
|
||||||
|
@ -106,7 +112,7 @@ public class NLPHub extends HttpServlet {
|
||||||
writer.close();
|
writer.close();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} 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.println(new JsonManager().getErrorJsonResponse("" + e.getLocalizedMessage()));
|
||||||
writer.close();
|
writer.close();
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -116,12 +122,12 @@ public class NLPHub extends HttpServlet {
|
||||||
if (connection != null)
|
if (connection != null)
|
||||||
connection.disconnect();
|
connection.disconnect();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getLocalizedMessage());
|
logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception 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 {
|
throws ServletException, IOException {
|
||||||
try {
|
try {
|
||||||
String dataMiner = request.getParameter("dataminer");
|
String dataMiner = request.getParameter("dataminer");
|
||||||
|
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
|
||||||
|
|
||||||
String[] algs = request.getParameter("algs").split(",");
|
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++) {
|
for (int i = 0; i < algs.length; i++) {
|
||||||
algs[i] = algs[i].trim();
|
algs[i] = algs[i].trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
RunnerCommander commander = new RunnerCommander(dataMiner, algs, request.getParameter("plink"),
|
RunnerCommander commander = new RunnerCommander(dataMiner, algs,plink ,
|
||||||
request.getParameter("annotations"), token, response);
|
annotations, token, response);
|
||||||
commander.setSleepTime(100);
|
commander.setSleepTime(100);
|
||||||
commander.setMaxWaitingTime(90 * 1000);
|
commander.setMaxWaitingTime(90 * 1000);
|
||||||
commander.startProcess();
|
commander.startProcess();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} 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,
|
private void handleFreeText(HttpServletRequest request, HttpServletResponse response, String token,
|
||||||
WorkspaceManager ws) throws ServletException, IOException {
|
WorkspaceManager ws) throws ServletException, IOException {
|
||||||
String freeText = request.getParameter("freetext");
|
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);
|
freeText = NlpUtils.replaceDirtyCharacters(freeText);
|
||||||
|
|
||||||
byte[] content = freeText.getBytes("UTF-8");
|
byte[] content = freeText.getBytes("UTF-8");
|
||||||
|
@ -86,11 +91,11 @@ public class NLPUploader extends HttpServlet {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String link = ws.getPublicLink(fileName, token);
|
String link = ws.getPublicLink(fileName, token);
|
||||||
if (request.getParameter("getlang") != null) {
|
if (langParameter != null) {
|
||||||
String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content));
|
String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content));
|
||||||
logger.info(sentence);
|
logger.info(sentence);
|
||||||
try {
|
try {
|
||||||
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response);
|
NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
|
||||||
} catch (NlpHubException ex) {
|
} catch (NlpHubException ex) {
|
||||||
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
|
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
|
||||||
}
|
}
|
||||||
|
@ -107,6 +112,9 @@ public class NLPUploader extends HttpServlet {
|
||||||
int contentLength = request.getContentLength();
|
int contentLength = request.getContentLength();
|
||||||
|
|
||||||
Part filePart = request.getPart("mytxtfile");
|
Part filePart = request.getPart("mytxtfile");
|
||||||
|
String dataMiner = request.getParameter("dataminer");
|
||||||
|
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
|
||||||
|
|
||||||
|
|
||||||
String fileName = getFileName(filePart);
|
String fileName = getFileName(filePart);
|
||||||
|
|
||||||
|
@ -147,7 +155,7 @@ public class NLPUploader extends HttpServlet {
|
||||||
String sentence = NlpUtils.getLanguageRecognizerDigest(stringContent);
|
String sentence = NlpUtils.getLanguageRecognizerDigest(stringContent);
|
||||||
logger.info(sentence);
|
logger.info(sentence);
|
||||||
try {
|
try {
|
||||||
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response);
|
NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
|
||||||
} catch (NlpHubException ex) {
|
} catch (NlpHubException ex) {
|
||||||
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
|
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 {
|
try {
|
||||||
if (dataMiner == null)
|
if (dataMiner == null)
|
||||||
dataMiner = Constants.DEFAULT_DATAMINER_URL;
|
dataMiner = Constants.DEFAULT_DATAMINER_URL;
|
||||||
else
|
//else
|
||||||
dataMiner = "http://" + dataMiner;
|
// dataMiner = "http://" + dataMiner;
|
||||||
String urlService = dataMiner + "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0";
|
String urlService = dataMiner + "?request=Execute&service=WPS&Version=1.0.0";
|
||||||
urlService += "&gcube-token=" + token;
|
urlService += "&gcube-token=" + token;
|
||||||
urlService += "&lang=en-US";
|
urlService += "&lang=en-US";
|
||||||
urlService += "&Identifier=" + RECOGNIZER_ID;
|
urlService += "&Identifier=" + RECOGNIZER_ID;
|
||||||
|
|
|
@ -12,7 +12,6 @@ import java.util.ArrayList;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
|
||||||
import org.gcube.data.analysis.nlphub.legacy.AsyncHttpRequest;
|
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.gcube.data.analysis.nlphub.shared.Constants;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -22,52 +21,64 @@ import org.w3c.dom.NodeList;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
|
|
||||||
public class NlpAsyncNerRunner extends AsyncHttpRequest {
|
public class NlpAsyncNerRunner extends AsyncHttpRequest {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(NerOutput.class);
|
private static final Logger logger = LoggerFactory.getLogger(NlpAsyncNerRunner.class);
|
||||||
public static final String WPS_EXECUTE_URL = "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0";
|
public static final String WPS_EXECUTE_URL = "?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";
|
public static final String WPS_DESCRIBE_PROCESS_URL = "?request=DescribeProcess&service=WPS&Version=1.0.0";
|
||||||
private String identifier, token, httpMethod, annotations, publicLink, dataMiner;
|
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;
|
private RunnerCommander commander;
|
||||||
|
|
||||||
public NlpAsyncNerRunner(String dataMiner, String identifier, String token, String publicLink, String annotations,
|
public NlpAsyncNerRunner(String dataMiner, String identifier, String token, String publicLink, String annotations,
|
||||||
String language, RunnerCommander commander) {
|
String language, RunnerCommander commander) {
|
||||||
super();
|
super();
|
||||||
this.identifier = identifier;
|
this.commander=commander;
|
||||||
this.token = token;
|
this.identifier=identifier;
|
||||||
this.httpMethod = "GET";
|
String httpMethod = "GET";
|
||||||
this.annotations = annotations;
|
|
||||||
this.publicLink = publicLink;
|
|
||||||
|
|
||||||
this.commander = commander;
|
|
||||||
if (dataMiner == null)
|
if (dataMiner == null)
|
||||||
this.dataMiner = Constants.DEFAULT_DATAMINER_URL;
|
dataMiner = Constants.DEFAULT_DATAMINER_URL;
|
||||||
else
|
// else
|
||||||
this.dataMiner = "http://" + dataMiner;
|
// this.dataMiner = "http://" + dataMiner;
|
||||||
|
|
||||||
ArrayList<NlpParameter> params = buildParameterString();
|
logger.debug("NlpAsyncNerRunner: [identifier=" + identifier + ", httpMethod=" + httpMethod + ", annotations="
|
||||||
String serviceUrl = this.dataMiner + WPS_EXECUTE_URL + "&gcube-token=" + token + "&lang=en-US&Identifier="
|
+ annotations + ", publicLink=" + publicLink + ", dataminer=" + dataMiner + "]");
|
||||||
+ identifier;
|
|
||||||
serviceUrl += "&" + setUrl(params);
|
ArrayList<NlpParameter> params = buildParameterString(dataMiner, identifier, publicLink, annotations, token);
|
||||||
super.setBaseUrl(serviceUrl);
|
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);
|
super.setMethod(httpMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NlpAsyncNerRunner(String baseUrl, String method) {
|
/*public NlpAsyncNerRunner(String baseUrl, String method) {
|
||||||
super(baseUrl, method, null);
|
super(baseUrl, method, null);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
/*
|
||||||
public String getIdentifier() {
|
public String getIdentifier() {
|
||||||
return identifier;
|
return identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getToken() {
|
public String getToken() {
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHttpMethod() {
|
public String getHttpMethod() {
|
||||||
return httpMethod;
|
return httpMethod;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private String setUrl(ArrayList<NlpParameter> parameters) {
|
private String setParams(ArrayList<NlpParameter> parameters) {
|
||||||
String url = "DataInputs=";
|
String url = "DataInputs=";
|
||||||
for (NlpParameter p : parameters) {
|
for (NlpParameter p : parameters) {
|
||||||
try {
|
try {
|
||||||
|
@ -76,22 +87,33 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
|
||||||
logger.error(ex.getLocalizedMessage());
|
logger.error(ex.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
logger.debug("");
|
||||||
return url;
|
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<>();
|
ArrayList<NlpParameter> parameters = new ArrayList<>();
|
||||||
HttpURLConnection connection = null;
|
HttpURLConnection connection = null;
|
||||||
BufferedReader r = null;
|
BufferedReader r = null;
|
||||||
try {
|
try {
|
||||||
String finalUrl = dataMiner + WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" + token;
|
StringBuilder serviceUrl = new StringBuilder();
|
||||||
finalUrl += "&lang=en-US&Identifier=" + identifier;
|
serviceUrl.append(dataMiner);
|
||||||
URL url = new URL(finalUrl);
|
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 = (HttpURLConnection) url.openConnection();
|
||||||
connection.setDoInput(true);
|
|
||||||
connection.setDoOutput(true);
|
|
||||||
connection.setUseCaches(false);
|
|
||||||
connection.setRequestMethod("GET");
|
connection.setRequestMethod("GET");
|
||||||
|
connection.setDoInput(true);
|
||||||
|
connection.setDoOutput(false);
|
||||||
|
connection.setUseCaches(false);
|
||||||
|
|
||||||
r = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
r = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||||
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r));
|
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r));
|
||||||
doc.getDocumentElement().normalize();
|
doc.getDocumentElement().normalize();
|
||||||
|
@ -125,7 +147,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getLocalizedMessage(), e);
|
logger.error("NlpAsyncNerRunner buildParameterString: " + e.getLocalizedMessage(), e);
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
if (r != null)
|
if (r != null)
|
||||||
|
@ -146,7 +168,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
|
||||||
@Override
|
@Override
|
||||||
public void asyncHttpRequestCallback() {
|
public void asyncHttpRequestCallback() {
|
||||||
elapsedTime = System.currentTimeMillis() - elapsedTime;
|
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 result = super.getResult();
|
||||||
String theLink = "";
|
String theLink = "";
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class RunnerCommander extends Thread {
|
||||||
private long maxWaitingTime = 5l * 60l * 1000l;
|
private long maxWaitingTime = 5l * 60l * 1000l;
|
||||||
private boolean complete = false;
|
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.identifiers = identifiers;
|
||||||
this.annotationList = annotationList;
|
this.annotationList = annotationList;
|
||||||
this.link = link;
|
this.link = link;
|
||||||
|
@ -33,7 +33,7 @@ public class RunnerCommander extends Thread {
|
||||||
this.sleepTime = 500l;
|
this.sleepTime = 500l;
|
||||||
this.dataMiner = dataMiner;
|
this.dataMiner = dataMiner;
|
||||||
outResultList = new ArrayList<String>();
|
outResultList = new ArrayList<String>();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token,
|
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token,
|
||||||
HttpServletResponse response) {
|
HttpServletResponse response) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.data.analysis.nlphub.session;
|
package org.gcube.data.analysis.nlphub.session;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.gcube.data.analysis.nlphub.shared.Constants;
|
import org.gcube.data.analysis.nlphub.shared.Constants;
|
||||||
|
@ -8,15 +9,38 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class SessionUtils {
|
public class SessionUtils {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(SessionUtils.class);
|
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);
|
String token = request.getParameter(Constants.TOKEN_PARAMETER);
|
||||||
logger.debug("Token in request: "+token);
|
logger.debug("Token in request: " + token);
|
||||||
if(token == null || token.isEmpty()){
|
if (token == null || token.isEmpty()) {
|
||||||
logger.error("Token in request is null");
|
logger.debug("Token is null");
|
||||||
|
throw new ServletException("Token is null");
|
||||||
}
|
}
|
||||||
return token;
|
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_USER = "giancarlo.panichi";
|
||||||
public static final String DEFAULT_SCOPE = "/gcube/devNext/NextNext";
|
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 TOKEN_PARAMETER = "gcube-token";
|
||||||
|
|
||||||
|
|
||||||
public static final String DEFAULT_DESCRIPTION = "NlpHub upload";
|
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 MIME_TEXT = "text/plain";
|
||||||
public static final String CONTENT_TYPE = "Content-Type";
|
public static final String CONTENT_TYPE = "Content-Type";
|
||||||
public static final String UNAVAILABLE = "unavailable";
|
public static final String UNAVAILABLE = "unavailable";
|
||||||
public static final String ERROR_ID = "ERROR";
|
public static final String ERROR_ID = "ERROR";
|
||||||
public static final String INPUT_FILE_PARAMETER = "input";
|
public static final String INPUT_FILE_PARAMETER = "input";
|
||||||
|
public static final String REQUEST = "Request";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,8 @@ public class WorkspaceManager {
|
||||||
return link;
|
return link;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getLocalizedMessage(), e);
|
logger.error("Error in WorkspaceManager for getPublicLink: "+e.getLocalizedMessage(), e);
|
||||||
throw new NlpHubException(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"?>
|
<?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">
|
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
<display-name>NLPHub</display-name>
|
xmlns="http://java.sun.com/xml/ns/javaee"
|
||||||
<welcome-file-list>
|
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||||
<welcome-file>index.html</welcome-file>
|
metadata-complete="true" version="3.0">
|
||||||
<welcome-file>index.htm</welcome-file>
|
<display-name>NLPHub</display-name>
|
||||||
<welcome-file>index.jsp</welcome-file>
|
<welcome-file-list>
|
||||||
<welcome-file>default.html</welcome-file>
|
<welcome-file>index.html</welcome-file>
|
||||||
<welcome-file>default.htm</welcome-file>
|
<welcome-file>index.htm</welcome-file>
|
||||||
<welcome-file>default.jsp</welcome-file>
|
<welcome-file>index.jsp</welcome-file>
|
||||||
</welcome-file-list>
|
<welcome-file>default.html</welcome-file>
|
||||||
<servlet>
|
<welcome-file>default.htm</welcome-file>
|
||||||
<servlet-name>NLPServlet</servlet-name>
|
<welcome-file>default.jsp</welcome-file>
|
||||||
<servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class>
|
</welcome-file-list>
|
||||||
</servlet>
|
<servlet>
|
||||||
<servlet-mapping>
|
<servlet-name>NLPServlet</servlet-name>
|
||||||
<servlet-name>NLPServlet</servlet-name>
|
<servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class>
|
||||||
<url-pattern>/nlphub-servlet</url-pattern>
|
</servlet>
|
||||||
</servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet>
|
<servlet-name>NLPServlet</servlet-name>
|
||||||
<servlet-name>NLPUploader</servlet-name>
|
<url-pattern>/nlphub-servlet</url-pattern>
|
||||||
<servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class>
|
</servlet-mapping>
|
||||||
</servlet>
|
<servlet>
|
||||||
<servlet-mapping>
|
<servlet-name>NLPUploader</servlet-name>
|
||||||
<servlet-name>NLPUploader</servlet-name>
|
<servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class>
|
||||||
<url-pattern>/nlphub-uploader-servlet</url-pattern>
|
</servlet>
|
||||||
</servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet>
|
<servlet-name>NLPUploader</servlet-name>
|
||||||
<servlet-name>NLPMapper</servlet-name>
|
<url-pattern>/nlphub-uploader-servlet</url-pattern>
|
||||||
<servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class>
|
</servlet-mapping>
|
||||||
</servlet>
|
<servlet>
|
||||||
<servlet-mapping>
|
<servlet-name>NLPMapper</servlet-name>
|
||||||
<servlet-name>NLPMapper</servlet-name>
|
<servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class>
|
||||||
<url-pattern>/nlphub-mapper-servlet</url-pattern>
|
</servlet>
|
||||||
</servlet-mapping>
|
<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>
|
</web-app>
|
|
@ -27,7 +27,7 @@
|
||||||
String requestToken=request.getParameter(Constants.TOKEN_PARAMETER);
|
String requestToken=request.getParameter(Constants.TOKEN_PARAMETER);
|
||||||
if( requestToken == null||requestToken.isEmpty()) {
|
if( requestToken == null||requestToken.isEmpty()) {
|
||||||
%>
|
%>
|
||||||
var gCubeToken = "";
|
var gCubeToken = "fea75a5a-d84c-495f-b0ca-09cdd95bacce-843339462";
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
var gCubeToken = <%=requestToken%>
|
var gCubeToken = <%=requestToken%>
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,57 @@ $(document).ready(function() {
|
||||||
console.log('HREF: '+appLocation);
|
console.log('HREF: '+appLocation);
|
||||||
appRoot=contextPath;
|
appRoot=contextPath;
|
||||||
console.log('appRoot: '+ appRoot );
|
console.log('appRoot: '+ appRoot );
|
||||||
|
evaluateRequest();
|
||||||
|
});
|
||||||
|
|
||||||
|
evaluateRequest = function(){
|
||||||
$(".popup-text").hide();
|
$(".popup-text").hide();
|
||||||
disableExecuteButton();
|
disableExecuteButton();
|
||||||
showAnnotationsList();
|
showAnnotationsList();
|
||||||
|
checkAuth();
|
||||||
|
}
|
||||||
|
|
||||||
|
checkAuth = function(){
|
||||||
|
if(gCubeToken ===undefined || gCubeToken==null){
|
||||||
|
alert("Unexpected error token is null!\n.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
dataMinerClusterInfo();
|
||||||
checkInputLink();
|
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() {
|
checkInputLink = function() {
|
||||||
if (inputFile != "") {
|
if (inputFile != "") {
|
||||||
|
@ -45,7 +91,7 @@ checkInputLink = function() {
|
||||||
var uploaderUrl = appRoot
|
var uploaderUrl = appRoot
|
||||||
+ "/nlphub-uploader-servlet?getlang=on&freetext="
|
+ "/nlphub-uploader-servlet?getlang=on&freetext="
|
||||||
+ encodeURIComponent(freeText) + "&dataminer="
|
+ encodeURIComponent(freeText) + "&dataminer="
|
||||||
+ encodeURIComponent(dataMiner);
|
+ dataMiner; //encodeURIComponent(dataMiner);
|
||||||
|
|
||||||
if (gCubeToken.length > 0)
|
if (gCubeToken.length > 0)
|
||||||
uploaderUrl += "&gcube-token=" + gCubeToken;
|
uploaderUrl += "&gcube-token=" + gCubeToken;
|
||||||
|
@ -90,8 +136,8 @@ initApplication = function() {
|
||||||
contentType : "text/plain; charset=utf-8",
|
contentType : "text/plain; charset=utf-8",
|
||||||
success : function(data, stato) {
|
success : function(data, stato) {
|
||||||
$("#ner-result-container").hide();
|
$("#ner-result-container").hide();
|
||||||
var lineTokens = manageCsvData(data);
|
var algorithmsEnable = manageCsvData(data);
|
||||||
getAlgorithms(lineTokens);
|
getAlgorithms(algorithmsEnable);
|
||||||
buildLanguageSelection();
|
buildLanguageSelection();
|
||||||
buildLanguageList();
|
buildLanguageList();
|
||||||
buildAnnotations();
|
buildAnnotations();
|
||||||
|
@ -111,7 +157,8 @@ initApplication = function() {
|
||||||
disableExecuteButton();
|
disableExecuteButton();
|
||||||
var uploaderUrl = appRoot
|
var uploaderUrl = appRoot
|
||||||
+ "/nlphub-uploader-servlet?dataminer="
|
+ "/nlphub-uploader-servlet?dataminer="
|
||||||
+ encodeURIComponent(dataMiner);
|
//+ encodeURIComponent(dataMiner);
|
||||||
|
+ dataMiner;
|
||||||
if (gCubeToken.length > 0)
|
if (gCubeToken.length > 0)
|
||||||
uploaderUrl += "&gcube-token=" + gCubeToken;
|
uploaderUrl += "&gcube-token=" + gCubeToken;
|
||||||
|
|
||||||
|
@ -272,8 +319,9 @@ setEventListeners = function() {
|
||||||
+ "/nlphub-uploader-servlet?freetext="
|
+ "/nlphub-uploader-servlet?freetext="
|
||||||
+ encodeURIComponent(freeText)
|
+ encodeURIComponent(freeText)
|
||||||
+ "&dataminer="
|
+ "&dataminer="
|
||||||
+ encodeURIComponent(dataMiner);
|
//+ encodeURIComponent(dataMiner);
|
||||||
|
+dataMiner;
|
||||||
|
|
||||||
if (gCubeToken.length > 0)
|
if (gCubeToken.length > 0)
|
||||||
uploaderUrl += "&gcube-token=" + gCubeToken;
|
uploaderUrl += "&gcube-token=" + gCubeToken;
|
||||||
|
|
||||||
|
@ -327,8 +375,11 @@ enableAjaxFileUpload = function() {
|
||||||
$(".ajax-file-upload").attr("enabled", "true");
|
$(".ajax-file-upload").attr("enabled", "true");
|
||||||
$(".ajax-file-upload").css("background", pageGreen);
|
$(".ajax-file-upload").css("background", pageGreen);
|
||||||
try {
|
try {
|
||||||
document.getElementById("ajax-file-upload-id").removeEventListener(
|
var fUploadElement=document.getElementById("ajax-file-upload-id");
|
||||||
|
if(fUploadElement!=null){
|
||||||
|
fUploadElement.removeEventListener(
|
||||||
"click", listenAjaxFileUpload);
|
"click", listenAjaxFileUpload);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
}
|
}
|
||||||
|
@ -428,8 +479,8 @@ manageCsvData = function(data) {
|
||||||
|
|
||||||
lineTokens.push(tokens);
|
lineTokens.push(tokens);
|
||||||
var description = tokens[1].toUpperCase().trim();
|
var description = tokens[1].toUpperCase().trim();
|
||||||
if (description == "CLOUD COMPUTING")
|
/*if (description == "CLOUD COMPUTING")
|
||||||
dataMiner = tokens[2];
|
dataMiner = tokens[2];*/
|
||||||
tokens = [];
|
tokens = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -605,7 +656,7 @@ runAlgorithm = function() {
|
||||||
algList = algList.substring(0, algList.length - 1);
|
algList = algList.substring(0, algList.length - 1);
|
||||||
|
|
||||||
var parameters = "annotations=" + annList;
|
var parameters = "annotations=" + annList;
|
||||||
parameters += "&dataminer=" + encodeURIComponent(dataMiner);
|
parameters += "&dataminer=" +dataMiner; //+ encodeURIComponent(dataMiner);
|
||||||
parameters += "&lang=" + $("#language-select").val();
|
parameters += "&lang=" + $("#language-select").val();
|
||||||
parameters += "&plink=" + encodeURIComponent(publicLink);
|
parameters += "&plink=" + encodeURIComponent(publicLink);
|
||||||
parameters += "&algs=" + algList;
|
parameters += "&algs=" + algList;
|
||||||
|
@ -821,11 +872,15 @@ getAlgInformation = function(alg) {
|
||||||
alert("Invalid algorithm identifier.");
|
alert("Invalid algorithm identifier.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("getAlgorithm from dataMiner: "+dataMiner);
|
||||||
|
|
||||||
var parameters = "getInfo=on";
|
var parameters = "getInfo=on";
|
||||||
parameters += "&dataminer=" + encodeURIComponent(dataMiner);
|
parameters += "&dataminer=" + dataMiner; //encodeURIComponent(dataMiner);
|
||||||
parameters += "&algId=" + algId;
|
parameters += "&algId=" + algId;
|
||||||
|
|
||||||
|
console.log("parameters: "+parameters);
|
||||||
|
|
||||||
var nlphubUrl = appRoot + "/nlphub-servlet?" + parameters;
|
var nlphubUrl = appRoot + "/nlphub-servlet?" + parameters;
|
||||||
if (gCubeToken.length > 0)
|
if (gCubeToken.length > 0)
|
||||||
nlphubUrl += "&gcube-token=" + gCubeToken;
|
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…
Reference in New Issue