96 lines
3.1 KiB
Java
96 lines
3.1 KiB
Java
package org.gcube.common.software.analyser;
|
|
|
|
import java.net.URL;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import org.gcube.common.software.export.SoftwareVersionExporter;
|
|
import org.gcube.common.software.model.ExporterConfig;
|
|
import org.gcube.common.software.model.GlobalConfig;
|
|
import org.gcube.common.software.model.SoftwareVersionConfig;
|
|
import org.gcube.common.software.model.SoftwareVersionFile;
|
|
import org.gcube.common.software.model.Variables;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
/**
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
*/
|
|
public class SoftwareVersionConfigAnalyser {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(SoftwareVersionConfigAnalyser.class);
|
|
|
|
protected GlobalConfig softwareConfig;
|
|
protected SoftwareVersionConfig softwareVersionConfig;
|
|
protected boolean first;
|
|
|
|
public SoftwareVersionConfigAnalyser(SoftwareVersionConfig softwareVersionConfig) {
|
|
this.softwareVersionConfig = softwareVersionConfig;
|
|
}
|
|
|
|
public GlobalConfig getSoftwareConfig() {
|
|
return softwareConfig;
|
|
}
|
|
|
|
public void setSoftwareConfig(GlobalConfig softwareConfig) {
|
|
this.softwareConfig = softwareConfig;
|
|
}
|
|
|
|
public SoftwareVersionConfig getSoftwareVersionConfig() {
|
|
return softwareVersionConfig;
|
|
}
|
|
|
|
public void setSoftwareVersionConfig(SoftwareVersionConfig softwareVersionConfig) {
|
|
this.softwareVersionConfig = softwareVersionConfig;
|
|
}
|
|
|
|
public boolean isFirst() {
|
|
return first;
|
|
}
|
|
|
|
public void setFirst(boolean first) {
|
|
this.first = first;
|
|
}
|
|
|
|
public void analyse() throws Exception {
|
|
|
|
Variables variables = softwareVersionConfig.getVariables();
|
|
List<SoftwareVersionFile> svfs = softwareVersionConfig.getFiles();
|
|
for(SoftwareVersionFile svf : svfs) {
|
|
URL url = svf.getURL();
|
|
String urlString = variables.replaceAllVariables(url.toString());
|
|
svf.setURL(new URL(urlString));
|
|
String desiredName = svf.getDesiredName();
|
|
desiredName = variables.replaceAllVariables(desiredName);
|
|
svf.setDesiredName(desiredName);
|
|
}
|
|
|
|
Map<String, Class<? extends SoftwareVersionExporter>> availableExporters = SoftwareVersionExporter.getAvailableExporters();
|
|
Map<String,ExporterConfig> requestedExporters = softwareVersionConfig.getExporters();
|
|
|
|
Set<String> availableExporterNames = new HashSet<>(availableExporters.keySet());
|
|
Set<String> requestedExporterNames = new HashSet<>(availableExporters.keySet());
|
|
|
|
if(!availableExporterNames.containsAll(requestedExporterNames)) {
|
|
requestedExporterNames.removeAll(availableExporterNames);
|
|
throw new Exception("The following requested Exporters does not exists " + requestedExporterNames);
|
|
}
|
|
|
|
for(String className : requestedExporters.keySet()) {
|
|
logger.debug("Goign to export with {}", className);
|
|
Class<? extends SoftwareVersionExporter> exporterClass = availableExporters.get(className);
|
|
SoftwareVersionExporter sve = exporterClass.newInstance();
|
|
ExporterConfig processorConfig = requestedExporters.get(className);
|
|
sve.setSoftwareConfig(softwareConfig);
|
|
sve.setSoftwareVersion(softwareVersionConfig);
|
|
sve.setProcessorConfig(processorConfig);
|
|
sve.setFirst(first);
|
|
// sve.export();
|
|
}
|
|
|
|
}
|
|
|
|
}
|