Gianpaolo Coro 2013-03-19 17:38:21 +00:00
parent ec325150b6
commit 366995f3b8
1 changed files with 42 additions and 100 deletions

View File

@ -1,134 +1,76 @@
package org.gcube.dataanalysis.fin.taxamatch;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger;
import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration;
import org.gcube.dataanalysis.ecoengine.configuration.INFRASTRUCTURE;
import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType;
import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType;
import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes;
import org.gcube.dataanalysis.ecoengine.interfaces.Transducerer;
import org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsInSeaOnEarth.inseasonearth;
import org.gcube.dataanalysis.ecoengine.utils.ResourceFactory;
import org.gcube.dataanalysis.StandardLocalExternalAlgorithm;
import org.gcube.dataanalysis.taxamatch.fin.func_Taxamatch;
public class TaxaMatchTransducer implements Transducerer{
public class TaxaMatchTransducer extends StandardLocalExternalAlgorithm {
public static enum operators {
EQUAL, NOT_EQUAL, CONTAINS, BEGINS_WITH, ENDS_WITH
};
public static enum operators {EQUAL, NOT_EQUAL,CONTAINS,BEGINS_WITH,ENDS_WITH};
static String GenusOperator = "ComparisonOperatorforGenus";
static String SpeciesOperator = "ComparisonOperatorforSpecies";
static String Genus = "Genus";
static String Species = "Species";
protected AlgorithmConfiguration config;
protected float status = 0;
LinkedHashMap<String, String> count = new LinkedHashMap<String, String>();
@Override
public String getDescription() {
return "An algorithm for Taxa Matching with respect to the Fishbase database";
}
@Override
public INFRASTRUCTURE getInfrastructure() {
return INFRASTRUCTURE.LOCAL;
}
@Override
public List<StatisticalType> getInputParameters() {
PrimitiveType genus = new PrimitiveType(String.class.getName(), null, PrimitiveTypes.STRING, Genus,"Genus", "Gadus");
PrimitiveType genusComp = new PrimitiveType(Enum.class.getName(), inseasonearth.values(), PrimitiveTypes.ENUMERATED, GenusOperator, "Comparison Operator for Genus",""+operators.EQUAL);
PrimitiveType species = new PrimitiveType(String.class.getName(), null, PrimitiveTypes.STRING, Species,"Species", "morhua");
PrimitiveType speciesComp = new PrimitiveType(Enum.class.getName(), inseasonearth.values(), PrimitiveTypes.ENUMERATED, SpeciesOperator, "Comparison Operator for Species",""+operators.EQUAL);
List<StatisticalType> inputs = new ArrayList<StatisticalType>();
inputs.add(genus);
inputs.add(species);
inputs.add(genusComp);
inputs.add(speciesComp);
return inputs;
}
@Override
public StatisticalType getOutput() {
PrimitiveType p = new PrimitiveType(Map.class.getName(), PrimitiveType.stringMap2StatisticalMap(count), PrimitiveTypes.MAP, "Species Match","");
return p;
}
ResourceFactory resourceManager;
public String getResourceLoad() {
if (resourceManager==null)
resourceManager = new ResourceFactory();
return resourceManager.getResourceLoad(1);
}
@Override
public String getResources() {
return ResourceFactory.getResources(100f);
}
@Override
public float getStatus() {
return status;
}
@Override
public void init() throws Exception {
}
@Override
public void setConfiguration(AlgorithmConfiguration config) {
this.config = config;
}
protected void process() throws Exception {
@Override
public void shutdown() {
}
String genus = getInputParameter(Genus);
String species = getInputParameter(Species);
String genusOperator = getInputParameter(GenusOperator);
String speciesOperator = getInputParameter(SpeciesOperator);
@Override
public void compute() throws Exception {
AnalysisLogger.setLogger(config.getConfigPath() + AlgorithmConfiguration.defaultLoggerFile);
String genus = config.getParam(Genus);
String species = config.getParam(Species);
String genusOperator = config.getParam(GenusOperator);
String speciesOperator = config.getParam(SpeciesOperator);
String databaseIP = "biodiversity.db.i-marine.research-infrastructures.eu";
String databaseUser = "postgres";
String databasePwd = "0b1s@d4sc13nc3";
String databaseName = "fishbase";
AnalysisLogger.getLogger().trace("Computing matching for "+genus+" "+species);
AnalysisLogger.getLogger().trace("With operators: "+genusOperator+" "+speciesOperator);
log("Computing matching for " + genus + " " + species);
log("With operators: " + genusOperator + " " + speciesOperator);
func_Taxamatch func = new func_Taxamatch();
AnalysisLogger.getLogger().trace("TaxaMatcher Initialized");
String[] matches = func.func_Taxamatch(genus, species, genusOperator, speciesOperator, databaseIP, databaseUser, databasePwd, databaseName);
if ((matches==null) || (matches.length==0)){
AnalysisLogger.getLogger().trace("No match");
count.put("Number of Matches", "0");
}
else{
AnalysisLogger.getLogger().trace("Found "+matches[0]+" matches");
count.put("Number of Matches", matches[0]);
String[] speciesn = matches[1].split("\n");
for (int i=0;i<speciesn.length;i++){
count.put("Match "+(i+1), speciesn[i].trim());
}
AnalysisLogger.getLogger().trace("Returning map: "+count);
if ((matches == null) || (matches.length == 0)) {
log("No match");
addOutputString("Number of Matches", "0");
} else {
log("Found " + matches[0] + " matches");
addOutputString("Number of Matches", matches[0]);
String[] speciesn = matches[1].split("\n");
for (int i = 0; i < speciesn.length; i++) {
addOutputString("Match " + (i + 1), speciesn[i].trim());
}
}
status = 100;
log(outputParameters);
}
@Override
public void shutdown() {
}
@Override
protected void setInputParameters() {
addStringInput(Genus, "Genus of the species", "Gadus");
addStringInput(Species, "Species", "morhua");
addEnumerateInput(operators.values(), GenusOperator, "Comparison Operator for Genus", "" + operators.EQUAL);
addEnumerateInput(operators.values(), SpeciesOperator, "Comparison Operator for Species", "" + operators.EQUAL);
}
}