gFeed/DataMinerAlgorithmsCrawler/src/main/java/org/gcube/data/publishing/gCatFeeder/collectors/dm/DMAlgorithmsInfoCollector.java

148 lines
4.5 KiB
Java

package org.gcube.data.publishing.gCatFeeder.collectors.dm;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService;
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorCategory;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.data.publishing.gCatFeeder.collectors.dm.model.InternalAlgorithmDescriptor;
import org.gcube.data.publishing.gCatFeeder.collectors.dm.model.InternalAlgorithmDescriptor.Parameter;
import org.gcube.data.publishing.gCatFeeder.model.EnvironmentConfiguration;
import org.gcube.data.publishing.gCatfeeder.collectors.DataCollector;
import org.gcube.data.publishing.gCatfeeder.collectors.model.faults.CollectorFault;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class DMAlgorithmsInfoCollector implements DataCollector<InternalAlgorithmDescriptor> {
private Map<String,String> env=null;
public void setEnvironmentConfiguration(EnvironmentConfiguration envConfig) {
this.env=envConfig.getCurrentConfiguration();
}
@Override
public Set<InternalAlgorithmDescriptor> collect() throws CollectorFault {
try {
log.trace("Collecting information for Dataminer algorithms");
HashSet<InternalAlgorithmDescriptor> toReturn=new HashSet();
SClient client=new DataMinerService().getClient();
// client.
List<OperatorsClassification> opClassifications=client.getOperatorsClassifications();
log.debug("Found {} classifications.",opClassifications.size());
for(OperatorsClassification opClass: opClassifications) {
// Load info
String opClassName =opClass.getName();
List<Operator> ops=opClass.getOperators();
log.debug("Found {} operators under classification {} ",ops.size(),opClassName);
for(Operator op : ops) {
InternalAlgorithmDescriptor desc=new InternalAlgorithmDescriptor();
desc.setClassName(opClassName);
// OperatorCategory Info
OperatorCategory cat = op.getCategory();
String categoryBriefDescription = cat.getBriefDescription();
String categoryDescription= cat.getDescription();
String categoryID=cat.getId();
String categoryName=cat.getName();
desc.setCategoryBriefDescription(categoryBriefDescription);
desc.setCategoryID(categoryID);
desc.setCategoryName(categoryName);
desc.setCategoryDescription(categoryDescription);
// Operator info
String opBriefDescription=op.getBriefDescription();
String opDescription=op.getDescription();
String opID=op.getId();
String operatorName=op.getName();
desc.setBriefDescription(opBriefDescription);
desc.setDescription(opDescription);
desc.setId(opID);
desc.setName(operatorName);
desc.setAuthor(getAuthor(opDescription));
desc.setMaintainer(desc.getAuthor());
// Parameters info
for(org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter param:op.getOperatorParameters()) {
String paramDescription=param.getDescription();
String paramName=param.getName();
String paramType=param.getTypology().toString();
String paramValue=param.getValue();
desc.getParameters().add(
new Parameter(paramName, paramType, paramDescription, paramValue));
}
desc.getTags().add(categoryName);
desc.setGuiLink(getGUIBasePath()+"?"+
DataMinerCollectorProperties.getProperty(DataMinerCollectorProperties.GUI_PARAM_NAME)+"="+opID);
desc.setVisibility(env.get(Constants.VISIBILITY));
toReturn.add(desc);
}
// Create bean
}
return toReturn;
}catch(Exception e) {
throw new CollectorFault("Unable to retrieve information",e);
}
}
private String getGUIBasePath() {
return env.get(Constants.GUI_BASE_URL);
}
private String getAuthor(String algorithmDescription) {
String toReturn=parseDescription(algorithmDescription);
if(toReturn==null)
toReturn=env.get(Constants.DEFAULT_AUTHOR);
if(toReturn==null)
toReturn=DataMinerCollectorProperties.getProperty(DataMinerCollectorProperties.DEFAULT_AUTHOR);
return toReturn;
}
private static final String parseDescription(String description) {
return null;
}
private final String getWPSBasePath() {
return null;
}
}