ModelDefinitionCreator.java
/**
* Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
*/
package cern.accsoft.steering.jmad.tools.modeldefs.creating;
import static java.util.stream.Collectors.toSet;
import java.nio.file.Paths;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cern.accsoft.steering.jmad.modeldefs.ModelDefinitionFactory;
import cern.accsoft.steering.jmad.modeldefs.domain.JMadModelDefinition;
public final class ModelDefinitionCreator {
private static final Logger LOGGER = LoggerFactory.getLogger(ModelDefinitionCreator.class);
private final LocalFactoriesFinder finder;
public ModelDefinitionCreator(LocalFactoriesFinder finder) {
this.finder = finder;
}
public static final ModelDefinitionCreator scan(String basePath) {
return new ModelDefinitionCreator(LocalFactoriesFinder.scanning(Paths.get(basePath)));
}
public static final ModelDefinitionCreator scanDefault() {
return new ModelDefinitionCreator(LocalFactoriesFinder.scanningDefault());
}
public ModelDefinitionCreator and() {
return this;
}
public void writeToDefault() {
write(ModelDefinitionWriter.create());
}
public void writeTo(String destinationPath) {
write(ModelDefinitionWriter.toDestination(destinationPath));
}
private void write(ModelDefinitionWriter writer) {
Set<ModelDefinitionFactory> factories = finder.findModelDefinitionFactories();
if (factories.isEmpty()) {
LOGGER.info("No factories found. Nothing to do.");
return;
}
Set<JMadModelDefinition> modelDefs = factories.stream().map(ModelDefinitionFactory::create).collect(toSet());
writer.write(modelDefs);
}
public static void main(String... args) {
scanDefault().and().writeToDefault();
}
}