software-versions-processor.../src/main/java/org/gcube/common/software/analyser/SoftwareVersionConfigAnalys...

91 lines
2.8 KiB
Java

package org.gcube.common.software.analyser;
import java.net.URL;
import java.util.List;
import java.util.Map;
import org.gcube.common.software.model.ProcessorConfig;
import org.gcube.common.software.model.SoftwareConfig;
import org.gcube.common.software.model.SoftwareVersionConfig;
import org.gcube.common.software.model.SoftwareVersionFile;
import org.gcube.common.software.model.Variables;
import org.gcube.common.software.process.export.SoftwareVersionExporter;
import org.gcube.common.software.process.publish.SoftwareVersionPublisher;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class SoftwareVersionConfigAnalyser {
protected SoftwareConfig softwareConfig;
protected SoftwareVersionConfig softwareVersionConfig;
protected boolean first;
public SoftwareVersionConfigAnalyser(SoftwareVersionConfig softwareVersionConfig) {
this.softwareVersionConfig = softwareVersionConfig;
}
public SoftwareConfig getSoftwareConfig() {
return softwareConfig;
}
public void setSoftwareConfig(SoftwareConfig 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,ProcessorConfig> processors = softwareVersionConfig.getPublishers();
List<SoftwareVersionPublisher> svps = SoftwareVersionPublisher.getPublishers();
for(SoftwareVersionPublisher svp: svps) {
ProcessorConfig processorConfig = processors.get(svp.getClass().getSimpleName());
svp.setSoftwareConfig(softwareConfig);
svp.setSoftwareVersion(softwareVersionConfig);
svp.setProcessorConfig(processorConfig);
svp.setFirst(first);
svp.publish();
}
Map<String,ProcessorConfig> exporters = softwareVersionConfig.getExporters();
List<SoftwareVersionExporter> sves = SoftwareVersionExporter.getExporters();
for(SoftwareVersionExporter sve: sves) {
ProcessorConfig processorConfig = exporters.get(sve.getClass().getSimpleName());
sve.setSoftwareConfig(softwareConfig);
sve.setSoftwareVersion(softwareVersionConfig);
sve.setProcessorConfig(processorConfig);
sve.setFirst(first);
sve.export();
}
}
}