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 { private Map env=null; public void setEnvironmentConfiguration(EnvironmentConfiguration envConfig) { this.env=envConfig.getCurrentConfiguration(); } @Override public Set collect() throws CollectorFault { try { log.trace("Collecting information for Dataminer algorithms"); HashSet toReturn=new HashSet(); SClient client=new DataMinerService().getClient(); // client. List opClassifications=client.getOperatorsClassifications(); log.debug("Found {} classifications.",opClassifications.size()); for(OperatorsClassification opClass: opClassifications) { // Load info String opClassName =opClass.getName(); List 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; } }