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 }