2018-03-08 14:28:45 +01:00
|
|
|
package org.gcube.nlphub.nlp;
|
|
|
|
|
2018-03-09 14:40:21 +01:00
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
import java.net.URL;
|
2018-03-08 14:28:45 +01:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2018-03-09 14:40:21 +01:00
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
2018-03-08 14:28:45 +01:00
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
|
|
|
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ParameterType;
|
2018-03-09 14:40:21 +01:00
|
|
|
import org.gcube.nlphub.legacy.Constants;
|
2018-03-08 14:28:45 +01:00
|
|
|
import org.gcube.nlphub.legacy.DataminerClient;
|
2018-03-09 14:40:21 +01:00
|
|
|
import org.gcube.nlphub.legacy.JsonManager;
|
2018-03-08 14:28:45 +01:00
|
|
|
import org.gcube.nlphub.legacy.NlpHubException;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class NLpLanguageRecognizer extends DataminerClient {
|
2018-03-09 14:40:21 +01:00
|
|
|
private HttpServletResponse response;
|
2018-03-08 14:28:45 +01:00
|
|
|
private Logger logger = Logger.getLogger(NLpLanguageRecognizer.class.getSimpleName());
|
2018-03-09 14:40:21 +01:00
|
|
|
private String sentence, publicLink;
|
2018-03-08 14:28:45 +01:00
|
|
|
public final static String RECOGNIZER_ID = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LANGUAGE_RECOGNIZER";
|
|
|
|
// private String service = "http://dataminer-prototypes.d4science.org/wps/";
|
|
|
|
// private String token = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462";
|
|
|
|
|
|
|
|
public NLpLanguageRecognizer(String service, String token, String sentence) {
|
|
|
|
super(service, "", token);
|
|
|
|
this.sentence = sentence;
|
2018-03-09 14:40:21 +01:00
|
|
|
response = null;
|
2018-03-08 14:28:45 +01:00
|
|
|
}
|
|
|
|
|
2018-03-09 14:40:21 +01:00
|
|
|
public NLpLanguageRecognizer(String service, String token, String sentence, String publicLink, HttpServletResponse response) {
|
|
|
|
super(service, "", token);
|
|
|
|
this.sentence = sentence;
|
|
|
|
this.response = response;
|
|
|
|
this.publicLink = publicLink;
|
|
|
|
}
|
2018-03-08 14:28:45 +01:00
|
|
|
|
|
|
|
public void run() throws NlpHubException {
|
|
|
|
try {
|
|
|
|
super.identifier = RECOGNIZER_ID;
|
|
|
|
super.init();
|
|
|
|
ObjectParameter inputParameter = new ObjectParameter();
|
|
|
|
inputParameter.setName("sentence");
|
|
|
|
inputParameter.setValue(sentence);
|
|
|
|
ArrayList<Parameter> parameters = new ArrayList<>();
|
|
|
|
parameters.add(inputParameter);
|
|
|
|
super.execute(parameters);
|
|
|
|
} catch (Exception e) {
|
|
|
|
logger.error(e.getLocalizedMessage());
|
|
|
|
throw new NlpHubException(e.getLocalizedMessage(), e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void retrieveOutput(ComputationId computationId, SClient sClient) {
|
|
|
|
try {
|
|
|
|
OutputData output = sClient.getOutputDataByComputationId(computationId);
|
|
|
|
Resource resource = output.getResource();
|
|
|
|
if (resource.isMap()) {
|
|
|
|
MapResource mapResource = (MapResource) resource;
|
|
|
|
for (String key : mapResource.getMap().keySet()) {
|
|
|
|
Resource r = mapResource.getMap().get(key);
|
|
|
|
if (r.isFile()) {
|
|
|
|
FileResource f = (FileResource) r;
|
2018-03-09 14:40:21 +01:00
|
|
|
String name = f.getName();
|
|
|
|
String link = f.getUrl();
|
|
|
|
if(name.equalsIgnoreCase("outfile")) {
|
|
|
|
String content = readFileContent(link);
|
|
|
|
System.out.println(content + ".");
|
|
|
|
if(response != null) {
|
|
|
|
response.getWriter().println(new JsonManager().getSuccessJsonResponse(content, publicLink));
|
|
|
|
}
|
2018-03-08 14:28:45 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
logger.error(e.getLocalizedMessage());
|
|
|
|
//writeResponse(e.getLocalizedMessage(), false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-09 14:40:21 +01:00
|
|
|
private String readFileContent(String link) throws Exception {
|
|
|
|
URL url = new URL(link);
|
|
|
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
|
|
|
connection.setRequestProperty(Constants.TOKEN_PARAMETER, super.getToken());
|
|
|
|
connection.setDoInput(true);
|
|
|
|
connection.setDoOutput(true);
|
|
|
|
connection.setUseCaches(false);
|
|
|
|
connection.setRequestMethod("GET");
|
|
|
|
|
|
|
|
BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
|
|
|
|
|
|
|
StringBuffer response = new StringBuffer();
|
|
|
|
String inputLine;
|
|
|
|
while ((inputLine = r.readLine()) != null) {
|
|
|
|
response.append(inputLine);
|
|
|
|
}
|
|
|
|
|
|
|
|
String out = response.toString();
|
|
|
|
return out;
|
2018-03-08 14:28:45 +01:00
|
|
|
}
|
2018-03-09 14:40:21 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
public static void main(String[] args) {
|
|
|
|
String service = "http://dataminer-prototypes.d4science.org/wps/";
|
|
|
|
String token = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462";
|
|
|
|
String sentence = "Per me si va nella città dolente";
|
|
|
|
sentence = "Querido amigo, te escribo, así que me distraigo un poco.";
|
|
|
|
sentence = "Per me si va in città";
|
|
|
|
|
|
|
|
NLpLanguageRecognizer recognizer = new NLpLanguageRecognizer(service, token, sentence);
|
|
|
|
try {
|
|
|
|
recognizer.run();
|
|
|
|
} catch (Exception x) {
|
|
|
|
x.printStackTrace();
|
|
|
|
}
|
|
|
|
|
|
|
|
}*/
|
2018-03-08 14:28:45 +01:00
|
|
|
}
|