
org.openl.rules.project.resolving.SimpleXlsResolvingStrategy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.openl.rules.project Show documentation
Show all versions of org.openl.rules.project Show documentation
Classes and utilities to work with OpenL Rules Project
package org.openl.rules.project.resolving;
import org.openl.rules.project.model.Module;
import org.openl.rules.project.model.ModuleType;
import org.openl.rules.project.model.PathEntry;
import org.openl.rules.project.model.ProjectDescriptor;
import org.openl.util.FileTypeHelper;
import org.openl.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
/**
* Resolver for simple OpenL project with only xls file.
*
* ProjectDescriptor will be created with modules for each xls.
*
* @author PUdalau
*/
public class SimpleXlsResolvingStrategy extends BaseResolvingStrategy {
private final Logger log = LoggerFactory.getLogger(SimpleXlsResolvingStrategy.class);
public boolean isRulesProject(File folder) {
if (!folder.isDirectory()) {
return false;
}
for (File f : folder.listFiles()) {
if (!f.isHidden() && FileTypeHelper.isExcelFile(f.getName())) {
log.debug("Project in {} folder was resolved as simple xls project", folder.getPath());
return true;
}
}
log.debug("Simple xls strategy failed to resolve project folder: there is no excel files in given folder {}",
folder.getPath());
return false;
}
protected ProjectDescriptor internalResolveProject(File folder) throws ProjectResolvingException {
Map modules = new TreeMap();
try {
ProjectDescriptor project = createDescriptor(folder);
for (File f : folder.listFiles()) {
if (!f.isHidden() && f.isFile() && FileTypeHelper.isExcelFile(f.getName())) {
String name = FileUtils.removeExtension(f.getName());
if (!modules.containsKey(name)) {
PathEntry rootPath = new PathEntry(f.getCanonicalFile().getAbsolutePath());
Module module = createModule(project, rootPath, name);
modules.put(name, module);
} else {
if (log.isErrorEnabled()){
log.error("A module with this name already exists: {}", name);
}
}
}
}
project.setModules(new ArrayList(modules.values()));
return project;
} catch (IOException e) {
throw new ProjectResolvingException(e);
}
}
private Module createModule(ProjectDescriptor project, PathEntry rootPath, String name) {
Module module = new Module();
module.setProject(project);
module.setRulesRootPath(rootPath);
module.setType(ModuleType.API);
// FIXME: classname just for webstudio
module.setClassname(name);
module.setName(name);
return module;
}
private ProjectDescriptor createDescriptor(File folder) throws IOException{
ProjectDescriptor project = new ProjectDescriptor();
project.setProjectFolder(folder.getCanonicalFile());
project.setName(folder.getName());
return project;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy