1 /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">http://www.qedeq.org
2 *
3 * Copyright 2000-2014, Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16 package org.qedeq.kernel.bo.common;
17
18 import org.qedeq.kernel.se.base.module.Qedeq;
19 import org.qedeq.kernel.se.common.ModuleAddress;
20 import org.qedeq.kernel.se.common.Service;
21 import org.qedeq.kernel.se.common.SourceFileExceptionList;
22 import org.qedeq.kernel.se.state.AbstractState;
23 import org.qedeq.kernel.se.state.DependencyState;
24 import org.qedeq.kernel.se.state.FormallyProvedState;
25 import org.qedeq.kernel.se.state.LoadingImportsState;
26 import org.qedeq.kernel.se.state.LoadingState;
27 import org.qedeq.kernel.se.state.WellFormedState;
28
29
30 /**
31 * Represents a module and its states.
32 *
33 * @author Michael Meyling
34 */
35 public interface QedeqBo {
36
37 /**
38 * Has the module any basic failures? This includes errors during loading the module, during load
39 * of imported modules and logical checking. This includes no plugin errors.
40 *
41 * @return wWre there any basic errors?
42 */
43 public boolean hasBasicFailures();
44
45 /**
46 * Is this a error state the module is in?
47 *
48 * @return Were there any errors?
49 */
50 public boolean hasErrors();
51
52 /**
53 * Is this a warning state the module is in?
54 *
55 * @return Were there any warnings?
56 */
57 public boolean hasWarnings();
58
59 /**
60 * Get {@link ModuleAddress} of module.
61 *
62 * @return Address of module.
63 */
64 public ModuleAddress getModuleAddress();
65
66 /**
67 * Get the last successful state of the module.
68 *
69 * @return Last successful module state.
70 */
71 public AbstractState getLastSuccessfulState();
72
73 /**
74 * Get the current state of the module.
75 *
76 * @return Current module state.
77 */
78 public AbstractState getCurrentState();
79
80 /**
81 * Get currently running service.
82 *
83 * @return Currently running service. Might be <code>null</code>.
84 */
85 public Service getCurrentlyRunningService();
86
87 /**
88 * Get module loading state.
89 *
90 * @return Module state.
91 */
92 public LoadingState getLoadingState();
93
94 /**
95 * Set completeness percentage.
96 *
97 * @return completeness Completeness of loading into memory in percent.
98 */
99 public int getLoadingCompleteness();
100
101 /**
102 * Get module loading imports state.
103 *
104 * @return module state.
105 */
106 public LoadingImportsState getLoadingImportsState();
107
108 /**
109 * Get module dependency state.
110 *
111 * @return module state.
112 */
113 public DependencyState getDependencyState();
114
115 /**
116 * Get module logical well formed state.
117 *
118 * @return module state.
119 */
120 public WellFormedState getWellFormedState();
121
122 /**
123 * Get module logical formally proved state.
124 *
125 * @return module state.
126 */
127 public FormallyProvedState getFormallyProvedState();
128
129 /**
130 * Get error list.
131 *
132 * @return Error list.
133 */
134 public SourceFileExceptionList getErrors();
135
136 /**
137 * Get warning list.
138 *
139 * @return Warning list.
140 */
141 public SourceFileExceptionList getWarnings();
142
143 /**
144 * Get module state description.
145 *
146 * @return module state description.
147 */
148 public String getStateDescription();
149
150 /**
151 * Get name of module.
152 *
153 * @return module name.
154 */
155 public String getName();
156
157 /**
158 * Get rule version information.
159 *
160 * @return rule version.
161 */
162 public String getRuleVersion();
163
164 /**
165 * Get original URL of module.
166 *
167 * @return URL of module.
168 */
169 public String getUrl();
170
171 /**
172 * Is this module already loaded?
173 *
174 * @return Is this module already loaded?
175 */
176 public boolean isLoaded();
177
178 /**
179 * Get module. Works only if module is already completely loaded.
180 *
181 * @return QEDEQ module if it is already loaded.
182 */
183 public Qedeq getQedeq();
184
185 /**
186 * Are all directly imported modules loaded?
187 *
188 * @return Are all directly imported modules loaded?
189 */
190 public boolean hasLoadedImports();
191
192 /**
193 * Are all required modules loaded?
194 *
195 * @return Are all required modules loaded?
196 */
197 public boolean hasLoadedRequiredModules();
198
199 /**
200 * Get labels and URLs of all referenced modules. Only available if module has loaded
201 * all required modules. Otherwise a runtime exception is thrown.
202 *
203 * @return URLs of all referenced modules.
204 * @throws IllegalStateException Module not yet loaded.
205 */
206 public ModuleReferenceList getRequiredModules();
207
208 /**
209 * Was the module successfully checked for being well formed?
210 *
211 *
212 * @return Module was checked?
213 */
214 public boolean isWellFormed();
215
216 /**
217 * Was the module successfully checked for being fully formal correct proved?
218 *
219 *
220 * @return Module was checked?
221 */
222 public boolean isFullyFormallyProved();
223
224 /**
225 * Get all supported languages for this QEDEQ module.
226 *
227 * @return Array of supported languages.
228 */
229 public String[] getSupportedLanguages();
230
231 /**
232 * Is the given language supported.
233 *
234 * @param language Language.
235 * @return Is this language supported?
236 */
237 public boolean isSupportedLanguage(String language);
238
239 /**
240 * Get default language for this QEDEQ module. This should be the original language
241 * of the module before it was translated. This value should be also within
242 * {@link #getSupportedLanguages()}.
243 *
244 * @return Original language.
245 */
246 public String getOriginalLanguage();
247
248 }