]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java
Minor SCL enhancements and fixes for logging and test executing
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / SCLOsgi.java
1 package org.simantics.scl.osgi;
2
3 import java.util.ArrayList;
4
5 import org.simantics.scl.compiler.errors.DoesNotExist;
6 import org.simantics.scl.compiler.errors.Failable;
7 import org.simantics.scl.compiler.module.Module;
8 import org.simantics.scl.compiler.module.repository.ModuleRepository;
9 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
10 import org.simantics.scl.compiler.testing.repository.TestRepository;
11 import org.simantics.scl.osgi.internal.Activator;
12 import org.simantics.scl.osgi.internal.ServiceBasedModuleSourceRepository;
13 import org.simantics.scl.osgi.internal.ServiceBasedTestRepository;
14
15 import gnu.trove.procedure.TObjectProcedure;
16
17
18 public class SCLOsgi {
19
20     private SCLOsgi() {}
21     
22     public static ModuleSourceRepository SOURCE_REPOSITORY = new ServiceBasedModuleSourceRepository(Activator.getContext());
23     public static ModuleRepository MODULE_REPOSITORY = new ModuleRepository(SOURCE_REPOSITORY);
24     public static TestRepository TEST_REPOSITORY = new ServiceBasedTestRepository(Activator.getContext());
25
26     
27     public static String compileAllModules() {
28         ArrayList<String> modulesWithErrors = new ArrayList<String>(); 
29         SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
30             @Override
31             public boolean execute(String moduleName) {
32                 System.out.print(moduleName);
33                 System.out.print(" - ");
34                 Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
35                 if(module.didSucceed())
36                     System.out.println("succeeded");
37                 else if(module == DoesNotExist.INSTANCE)
38                     System.out.println("does not exist"); // should not happen
39                 else {
40                     System.out.println("error");
41                     modulesWithErrors.add(moduleName);
42                 }
43                 return true;
44             }
45         });
46         if(!modulesWithErrors.isEmpty()) {
47             StringBuilder b = new StringBuilder();
48             b.append("Some SCL modules failed to compile:");
49             for(String module : modulesWithErrors)
50                 b.append(' ').append(module);
51             return b.toString();
52         }
53         return null;
54     }
55 }