Skip to content

Commit 794c264

Browse files
authored
add: separate each level of config as class (#164)
* add: separate each level of config as class * fix: add execution configuration files * fix: remame classes * fix: missing files * fix: print configuration
1 parent bcaf8ec commit 794c264

24 files changed

+848
-642
lines changed

portal/src/main/java/edu/isi/wings/portal/classes/config/ConfigLoader.java

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,9 @@ public ConfigLoader(
7474
String userid,
7575
String domain
7676
) {
77-
// Initialize UserDatabase
7877
this.contextRootPath = request.getContextPath();
7978
this.initializeUserDatabase();
80-
81-
// Initialize portal config
8279
portalConfig.initializePortalConfig(request);
83-
84-
// Initialize user config
8580
this.initializeUserConfig(request, userid, domain);
8681
}
8782

@@ -104,7 +99,7 @@ private void initializeUserConfig(
10499
if (this.domainId != null) this.userDomainUrl =
105100
this.contextRootPath +
106101
"/" +
107-
PortalConfig.USERS_RELATIVE_DIR +
102+
MainConfig.USERS_RELATIVE_DIR +
108103
"/" +
109104
this.getUserId() +
110105
"/" +
@@ -120,28 +115,25 @@ private void initializeUserConfig(
120115
if (!this.checkUser(null)) return;
121116

122117
this.exportUserUrl =
123-
portalConfig.serverUrl +
118+
portalConfig.mainConfig.serverUrl +
124119
contextRootPath +
125-
PortalConfig.EXPORT_SERVLET_PATH +
120+
MainConfig.EXPORT_SERVLET_PATH +
126121
"/" +
127-
PortalConfig.USERS_RELATIVE_DIR +
122+
MainConfig.USERS_RELATIVE_DIR +
128123
"/" +
129124
userId;
130125
this.userDir =
131-
portalConfig.storageDirectory +
126+
portalConfig.storageConfig.storageDirectory +
132127
File.separator +
133-
PortalConfig.USERS_RELATIVE_DIR +
128+
MainConfig.USERS_RELATIVE_DIR +
134129
File.separator +
135130
userId;
136131

137132
this.userPath =
138-
contextRootPath + "/" + PortalConfig.USERS_RELATIVE_DIR + "/" + userId;
133+
contextRootPath + "/" + MainConfig.USERS_RELATIVE_DIR + "/" + userId;
139134

140135
// Create userDir (if it doesn't exist)
141-
File uf = new File(this.userDir);
142-
if (!uf.exists() && !uf.mkdirs()) System.err.println(
143-
"Cannot create user directory : " + uf.getAbsolutePath()
144-
);
136+
StorageConfig.createStorageDirectory(this.userDir);
145137

146138
// Get domain and user list
147139
DomainController dc = new DomainController(this);
@@ -165,7 +157,7 @@ private void initializeUserConfig(
165157
this.userDomainUrl =
166158
this.contextRootPath +
167159
"/" +
168-
PortalConfig.USERS_RELATIVE_DIR +
160+
MainConfig.USERS_RELATIVE_DIR +
169161
"/" +
170162
this.getUserId() +
171163
"/" +
@@ -318,52 +310,57 @@ public Properties getProperties() {
318310
// Return Properties that are currently used by catalogs & planners
319311
public Properties getProperties(Domain domain) {
320312
Properties props = new Properties();
313+
StorageConfig storageConfig = portalConfig.storageConfig;
314+
OntologyConfig ontologyConfig = portalConfig.getOntologyConfig();
315+
MainConfig mainConfig = portalConfig.mainConfig;
321316
if (domain != null) {
322317
props = domain.getProperties();
323318
if (domain.isLegacy()) return props;
324-
props.setProperty(ONT_DIR_URL, PortalConfig.ONT_DIR_URL);
319+
props.setProperty(ONT_DIR_URL, OntologyConfig.ONT_DIR_URL);
325320
if (!domain.getUseSharedTripleStore()) props.setProperty(
326321
ONT_DIR_MAP,
327322
"file:" + domain.getDomainDirectory() + File.separator + "ontology"
328323
);
329324

330-
props.setProperty("ont.data.url", portalConfig.getDataOntologyUrl());
325+
props.setProperty("ont.data.url", ontologyConfig.getDataOntologyUrl());
331326
props.setProperty(
332327
"ont.component.url",
333-
portalConfig.getComponentOntologyUrl()
328+
ontologyConfig.getComponentOntologyUrl()
334329
);
335330
props.setProperty(
336331
"ont.workflow.url",
337-
portalConfig.getWorkflowOntologyUrl()
332+
ontologyConfig.getWorkflowOntologyUrl()
338333
);
339334
props.setProperty(
340335
"ont.execution.url",
341-
portalConfig.getExecutionOntologyUrl()
336+
ontologyConfig.getExecutionOntologyUrl()
337+
);
338+
props.setProperty(
339+
"ont.resource.url",
340+
ontologyConfig.getResourceOntologyUrl()
342341
);
343342

344343
if (domain.getUseSharedTripleStore()) props.setProperty(
345344
"tdb.repository.dir",
346-
portalConfig.getTdbDirectory()
345+
storageConfig.getTdbDirectory()
347346
);
348347

349-
HashMap<String, ExeEngine> engines = portalConfig.getEngines();
350-
ExeEngine pengine = engines.get(domain.getPlanEngine());
351-
ExeEngine sengine = engines.get(domain.getStepEngine());
348+
HashMap<String, ExecutionEngineConfig> engines =
349+
portalConfig.executionConfig.getEngines();
350+
ExecutionEngineConfig pengine = engines.get(domain.getPlanEngine());
351+
ExecutionEngineConfig sengine = engines.get(domain.getStepEngine());
352352
props.putAll(pengine.getProperties());
353353
props.putAll(sengine.getProperties());
354354
} else {
355-
props.setProperty("tdb.repository.dir", portalConfig.getTdbDirectory());
355+
props.setProperty("tdb.repository.dir", storageConfig.getTdbDirectory());
356356
}
357-
props.setProperty("logs.dir", portalConfig.getLogsDirectory());
358-
props.setProperty("dot.path", portalConfig.getDotFile());
359-
props.setProperty(
360-
"ont.resource.url",
361-
portalConfig.getResourceOntologyUrl()
362-
);
357+
props.setProperty("logs.dir", storageConfig.getLogsDirectory());
358+
props.setProperty("dot.path", mainConfig.getDotFile());
363359

364360
props.setProperty(
365361
"lib.resource.url",
366-
this.portalConfig.getExportCommunityUrl() + "/resource/library.owl"
362+
this.portalConfig.mainConfig.getExportCommunityUrl() +
363+
"/resource/library.owl"
367364
);
368365

369366
if (domain != null && !domain.getUseSharedTripleStore()) props.setProperty(
@@ -380,7 +377,8 @@ public Properties getProperties(Domain domain) {
380377

381378
props.setProperty(
382379
"lib.provenance.url",
383-
this.portalConfig.getExportCommunityUrl() + "/provenance/library.owl"
380+
this.portalConfig.mainConfig.getExportCommunityUrl() +
381+
"/provenance/library.owl"
384382
);
385383

386384
if (this.viewerId != null) props.setProperty("viewer.id", this.viewerId);
@@ -394,20 +392,24 @@ public Properties getProperties(Domain domain) {
394392
}
395393

396394
public PlanExecutionEngine getDomainExecutionEngine() {
397-
ExeEngine pengine = portalConfig.engines.get(domain.getPlanEngine());
398-
ExeEngine sengine = portalConfig.engines.get(domain.getStepEngine());
395+
ExecutionEngineConfig planEngine = portalConfig.executionConfig.engines.get(
396+
domain.getPlanEngine()
397+
);
398+
ExecutionEngineConfig stepEngine = portalConfig.executionConfig.engines.get(
399+
domain.getStepEngine()
400+
);
399401
try {
400-
pengine.getProperties().putAll(this.getProperties());
401-
sengine.getProperties().putAll(this.getProperties());
402+
planEngine.getProperties().putAll(this.getProperties());
403+
stepEngine.getProperties().putAll(this.getProperties());
402404
// TODO: Check if the selected engines are compatible
403405
// and can be used as plan and step engines respectively
404406
PlanExecutionEngine pee = ExecutionFactory.createPlanExecutionEngine(
405-
pengine.getImplementation(),
406-
pengine.getProperties()
407+
planEngine.getImplementation(),
408+
planEngine.getProperties()
407409
);
408410
StepExecutionEngine see = ExecutionFactory.createStepExecutionEngine(
409-
sengine.getImplementation(),
410-
sengine.getProperties()
411+
stepEngine.getImplementation(),
412+
stepEngine.getProperties()
411413
);
412414
ExecutionLoggerAPI logger = ExecutionToolsFactory.createLogger(
413415
this.getProperties()
@@ -418,7 +420,9 @@ public PlanExecutionEngine getDomainExecutionEngine() {
418420
ExecutionResourceAPI resource = ExecutionToolsFactory.getResourceAPI(
419421
this.getProperties()
420422
);
421-
resource.setLocalStorageFolder(portalConfig.getStorageDirectory());
423+
resource.setLocalStorageFolder(
424+
portalConfig.storageConfig.getStorageDirectory()
425+
);
422426
pee.setStepExecutionEngine(see);
423427
pee.setExecutionLogger(logger);
424428
pee.setExecutionMonitor(monitor);
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package edu.isi.wings.portal.classes.config;
2+
3+
import edu.isi.wings.execution.engine.api.impl.distributed.DistributedExecutionEngine;
4+
import edu.isi.wings.execution.engine.api.impl.local.LocalExecutionEngine;
5+
import java.util.HashMap;
6+
import java.util.Iterator;
7+
import java.util.List;
8+
import java.util.Map.Entry;
9+
import java.util.Set;
10+
import org.apache.commons.configuration.HierarchicalConfiguration;
11+
import org.apache.commons.configuration.plist.PropertyListConfiguration;
12+
13+
public class ExecutionConfig {
14+
15+
public HashMap<String, ExecutionEngineConfig> engines;
16+
17+
public ExecutionConfig(PropertyListConfiguration serverConfig) {
18+
this.engines = new HashMap<String, ExecutionEngineConfig>();
19+
List<HierarchicalConfiguration> engineNodes = serverConfig.configurationsAt(
20+
"execution.engine"
21+
);
22+
for (HierarchicalConfiguration engineNode : engineNodes) {
23+
ExecutionEngineConfig engine = this.getExeEngine(engineNode);
24+
this.engines.put(engine.getName(), engine);
25+
}
26+
}
27+
28+
public ExecutionConfig() {
29+
this.engines = new HashMap<String, ExecutionEngineConfig>();
30+
ExecutionEngineConfig defaultLocal = new ExecutionEngineConfig(
31+
"Local",
32+
LocalExecutionEngine.class.getCanonicalName(),
33+
ExecutionEngineConfig.Type.BOTH
34+
);
35+
ExecutionEngineConfig defaultDistrubited = new ExecutionEngineConfig(
36+
"Distributed",
37+
DistributedExecutionEngine.class.getCanonicalName(),
38+
ExecutionEngineConfig.Type.BOTH
39+
);
40+
41+
this.engines.put(defaultLocal.getName(), defaultLocal);
42+
this.engines.put(defaultDistrubited.getName(), defaultDistrubited);
43+
}
44+
45+
@SuppressWarnings("rawtypes")
46+
private ExecutionEngineConfig getExeEngine(HierarchicalConfiguration node) {
47+
String name = node.getString("name");
48+
String impl = node.getString("implementation");
49+
ExecutionEngineConfig.Type type = ExecutionEngineConfig.Type.valueOf(
50+
node.getString("type")
51+
);
52+
ExecutionEngineConfig engine = new ExecutionEngineConfig(name, impl, type);
53+
for (Iterator it = node.getKeys("properties"); it.hasNext();) {
54+
String key = (String) it.next();
55+
String value = node.getString(key);
56+
engine.addProperty(key.replace("properties.", ""), value);
57+
}
58+
return engine;
59+
}
60+
61+
public void addDefaultEngineConfig(PropertyListConfiguration config) {
62+
// loop engines and add them to config
63+
for (Entry<String, ExecutionEngineConfig> entryEngine : this.engines.entrySet()) {
64+
ExecutionEngineConfig engine = entryEngine.getValue();
65+
config.addProperty("execution.engine(-1).name", engine.getName());
66+
config.addProperty(
67+
"execution.engine.implementation",
68+
engine.getImplementation()
69+
);
70+
config.addProperty("execution.engine.type", engine.getType());
71+
for (Entry<Object, Object> entryProperty : engine
72+
.getProperties()
73+
.entrySet()) {
74+
config.addProperty(
75+
"execution.engine.properties." + entryProperty.getKey(),
76+
entryProperty.getValue()
77+
);
78+
}
79+
}
80+
}
81+
82+
public HashMap<String, ExecutionEngineConfig> getEngines() {
83+
return engines;
84+
}
85+
86+
public Set<String> getEnginesList() {
87+
return this.engines.keySet();
88+
}
89+
}

portal/src/main/java/edu/isi/wings/portal/classes/config/ExeEngine.java renamed to portal/src/main/java/edu/isi/wings/portal/classes/config/ExecutionEngineConfig.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,24 @@
55
/**
66
* Created by varun on 13/07/2015.
77
*/
8-
public class ExeEngine {
8+
public class ExecutionEngineConfig {
99

1010
public static enum Type {
1111
PLAN,
1212
STEP,
1313
BOTH,
1414
}
1515

16-
ExeEngine.Type type;
16+
ExecutionEngineConfig.Type type;
1717
String name;
1818
String implementation;
1919
Properties props;
2020

21-
public ExeEngine(String name, String implementation, ExeEngine.Type type) {
21+
public ExecutionEngineConfig(
22+
String name,
23+
String implementation,
24+
ExecutionEngineConfig.Type type
25+
) {
2226
this.type = type;
2327
this.name = name;
2428
this.implementation = implementation;
@@ -33,11 +37,11 @@ public void setName(String name) {
3337
this.name = name;
3438
}
3539

36-
public ExeEngine.Type getType() {
40+
public ExecutionEngineConfig.Type getType() {
3741
return type;
3842
}
3943

40-
public void setType(ExeEngine.Type type) {
44+
public void setType(ExecutionEngineConfig.Type type) {
4145
this.type = type;
4246
}
4347

0 commit comments

Comments
 (0)