This repository has been archived by the owner on Apr 3, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 290
/
AbstractLangCore.java
138 lines (108 loc) · 4.21 KB
/
AbstractLangCore.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*******************************************************************************
* Copyright (c) 2016 Bruno Medeiros and other Contributors.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Bruno Medeiros - initial API and implementation
*******************************************************************************/
package melnorme.lang.ide.core;
import melnorme.lang.ide.core.engine.SourceModelManager;
import melnorme.lang.ide.core.operations.ToolManager;
import melnorme.lang.ide.core.operations.build.BuildManager;
import melnorme.lang.ide.core.project_model.BundleModelManager;
import melnorme.lang.ide.core.project_model.LangBundleModel;
import melnorme.utilbox.misc.ILogHandler;
import melnorme.utilbox.status.StatusException;
public abstract class AbstractLangCore extends LoggingCore {
public static LangCore instance;
public static LangCore get() {
return instance;
}
/* ----------------- Owned singletons: ----------------- */
protected final ILogHandler logHandler;
protected final CoreSettings coreSettings;
protected final ToolManager toolManager;
protected final BundleModelManager<? extends LangBundleModel> bundleManager;
protected final BuildManager buildManager;
protected final SourceModelManager sourceModelManager;
public AbstractLangCore(ILogHandler logHandler) {
instance = (LangCore) this;
this.logHandler = logHandler;
coreSettings = createCoreSettings();
toolManager = createToolManager();
bundleManager = LangCore_Actual.createBundleModelManager();
buildManager = createBuildManager();
sourceModelManager = LangCore_Actual.createSourceModelManager();
}
protected void shutdown() {
buildManager.dispose();
bundleManager.shutdownManager();
sourceModelManager.dispose();
toolManager.shutdownNow();
}
/* ----------------- ----------------- */
public static ILogHandler log() {
return instance.logHandler;
}
protected abstract CoreSettings createCoreSettings();
public static CoreSettings settings() {
return instance.coreSettings;
}
protected abstract ToolManager createToolManager();
public static ToolManager getToolManager() {
return instance.toolManager;
}
public static BundleModelManager<? extends LangBundleModel> getBundleModelManager() {
return instance.bundleManager;
}
public static LangBundleModel getBundleModel() {
return getBundleModelManager().getModel();
}
protected abstract BuildManager createBuildManager();
public static BuildManager getBuildManager() {
return instance.buildManager;
}
public static SourceModelManager getSourceModelManager() {
return instance.sourceModelManager;
}
/* ----------------- ----------------- */
/** Start core agents, and do other initizaliation after UI is started. */
public void startAgentsAfterUIStart() {
bundleManager.startManager();
}
}
class LoggingCore {
public static ILogHandler log() {
return AbstractLangCore.instance.logHandler;
}
/** Logs status of given StatusException. */
public static void logStatusException(StatusException se) {
log().logStatus(se);
}
/** Logs an error status with given message. */
public static void logError(String message) {
log().logError(message);
}
/** Logs an error status with given message and given throwable. */
public static void logError(String message, Throwable throwable) {
log().logError(message, throwable);
}
/** Logs a warning status with given message. */
public static void logWarning(String message) {
log().logWarning(message);
}
/** Logs a warning status with given message and given throwable. */
public static void logWarning(String message, Throwable throwable) {
log().logWarning(message, throwable);
}
/** Logs an info status with given message. */
public static void logInfo(String message) {
log().logInfo(message);
}
public static void logInternalError(Throwable throwable) {
log().logError("Internal Error!", throwable);
}
}