1 package org.simantics.modeling.scl.ontologymodule;
4 import java.util.Collection;
5 import java.util.Collections;
7 import org.simantics.Simantics;
8 import org.simantics.db.ReadGraph;
9 import org.simantics.db.common.request.UnaryRead;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.scl.compiler.errors.Failable;
12 import org.simantics.scl.compiler.errors.Failure;
13 import org.simantics.scl.compiler.errors.Success;
14 import org.simantics.scl.compiler.module.Module;
15 import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
16 import org.simantics.scl.compiler.module.repository.ModuleRepository;
17 import org.simantics.scl.compiler.module.repository.UpdateListener;
18 import org.simantics.scl.compiler.source.ModuleSource;
19 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 import gnu.trove.procedure.TObjectProcedure;
25 public enum OntologyModuleSourceRepository implements ModuleSourceRepository {
28 private static final Logger LOGGER = LoggerFactory.getLogger(OntologyModuleSourceRepository.class);
30 static class ModuleRequest extends UnaryRead<String, Module> {
32 public ModuleRequest(String moduleName) {
37 public Module perform(ReadGraph graph) throws DatabaseException {
38 return new OntologyModule(graph, parameter);
44 public ModuleSource getModuleSource(final String moduleName,
45 UpdateListener listener) {
46 if(!moduleName.startsWith("http://"))
47 return null; // Don't do a graph request if this cannot be a resource
49 return new ModuleSource() {
52 public double getPriority() {
57 public String getModuleName() {
62 public ClassLoader getClassLoader() {
63 return getClass().getClassLoader();
67 public Failable<Module> compileModule(ModuleRepository environment, UpdateListener listener,
68 ModuleCompilationOptions options) {
70 return new Success<Module>(Simantics.getAvailableRequestProcessor().syncRequest(new ModuleRequest(moduleName)));
71 } catch(DatabaseException e) {
72 return new Failure(e);
79 public void forAllModules(TObjectProcedure<String> procedure) {
83 public Collection<String> getModuleNames() {
84 return Collections.emptyList();