use of org.eclipse.emf.ecore.EPackage in project ifml2php by Dipiert.
the class Main method registerPackages.
/**
* This can be used to update the resource set's package registry with all needed EPackages.
*
* @param resourceSet
* The resource set which registry has to be updated.
* @generated NOT
*/
@Override
public void registerPackages(ResourceSet resourceSet) {
super.registerPackages(resourceSet);
URI uri = URI.createFileURI("../edu.ifml2php.pim.ifml.gen.lycmm/models/metamodels/Metamodel.ecore");
Resource resource = resourceSet.getResource(uri, true);
EPackage PHPMVC = (EPackage) resource.getContents().get(0);
List<EPackage> subPackages = PHPMVC.getESubpackages();
for (EPackage subPack : subPackages) {
EPackage.Registry.INSTANCE.put(subPack.getNsURI(), subPack);
}
/*
* If you want to change the content of this method, do NOT forget to change the "@generated"
* tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
* of the Acceleo module with the main template that has caused the creation of this class will
* revert your modifications.
*/
/*
* If you need additional package registrations, you can register them here. The following line
* (in comment) is an example of the package registration for UML.
*
* You can use the method "isInWorkspace(Class c)" to check if the package that you are about to
* register is in the workspace.
*
* To register a package properly, please follow the following conventions:
*
* If the package is located in another plug-in, already installed in Eclipse. The following content should
* have been generated at the beginning of this method. Do not register the package using this mechanism if
* the metamodel is located in the workspace.
*
* if (!isInWorkspace(UMLPackage.class)) {
* // The normal package registration if your metamodel is in a plugin.
* resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
* }
*
* If the package is located in another project in your workspace, the plugin containing the package has not
* been register by EMF and Acceleo should register it automatically. If you want to use the generator in
* stand alone, the regular registration (seen a couple lines before) is needed.
*
* To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
*/
}
use of org.eclipse.emf.ecore.EPackage in project ifml2php by Dipiert.
the class View method registerPackages.
/**
* This can be used to update the resource set's package registry with all needed EPackages.
*
* @param resourceSet
* The resource set which registry has to be updated.
* @generated NOT
*/
@Override
public void registerPackages(ResourceSet resourceSet) {
super.registerPackages(resourceSet);
URI uri = URI.createFileURI("../edu.ifml2php.pim.ifml.gen.lycmm/models/metamodels/Metamodel.ecore");
Resource resource = resourceSet.getResource(uri, true);
EPackage PHPMVC = (EPackage) resource.getContents().get(0);
List<EPackage> subPackages = PHPMVC.getESubpackages();
for (EPackage subPack : subPackages) {
EPackage.Registry.INSTANCE.put(subPack.getNsURI(), subPack);
}
/*
* If you want to change the content of this method, do NOT forget to change the "@generated"
* tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
* of the Acceleo module with the main template that has caused the creation of this class will
* revert your modifications.
*/
/*
* If you need additional package registrations, you can register them here. The following line
* (in comment) is an example of the package registration for UML.
*
* You can use the method "isInWorkspace(Class c)" to check if the package that you are about to
* register is in the workspace.
*
* To register a package properly, please follow the following conventions:
*
* If the package is located in another plug-in, already installed in Eclipse. The following content should
* have been generated at the beginning of this method. Do not register the package using this mechanism if
* the metamodel is located in the workspace.
*
* if (!isInWorkspace(UMLPackage.class)) {
* // The normal package registration if your metamodel is in a plugin.
* resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
* }
*
* If the package is located in another project in your workspace, the plugin containing the package has not
* been register by EMF and Acceleo should register it automatically. If you want to use the generator in
* stand alone, the regular registration (seen a couple lines before) is needed.
*
* To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
*/
}
use of org.eclipse.emf.ecore.EPackage in project ifml2php by Dipiert.
the class TestLet method registerPackages.
/**
* This can be used to update the resource set's package registry with all needed EPackages.
*
* @param resourceSet
* The resource set which registry has to be updated.
* @generated NOT
*/
@Override
public void registerPackages(ResourceSet resourceSet) {
super.registerPackages(resourceSet);
URI uri = URI.createFileURI("/home/dam/Escritorio/ws/edu.ifml2php.psm.lycmm.gen.yii2/src/Metamodel.ecore");
Resource resource = resourceSet.getResource(uri, true);
EPackage PHPMVC = (EPackage) resource.getContents().get(0);
List<EPackage> subPackages = PHPMVC.getESubpackages();
for (EPackage subPack : subPackages) {
EPackage.Registry.INSTANCE.put(subPack.getNsURI(), subPack);
}
/*
* If you want to change the content of this method, do NOT forget to change the "@generated"
* tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation
* of the Acceleo module with the main template that has caused the creation of this class will
* revert your modifications.
*/
/*
* If you need additional package registrations, you can register them here. The following line
* (in comment) is an example of the package registration for UML.
*
* You can use the method "isInWorkspace(Class c)" to check if the package that you are about to
* register is in the workspace.
*
* To register a package properly, please follow the following conventions:
*
* If the package is located in another plug-in, already installed in Eclipse. The following content should
* have been generated at the beginning of this method. Do not register the package using this mechanism if
* the metamodel is located in the workspace.
*
* if (!isInWorkspace(UMLPackage.class)) {
* // The normal package registration if your metamodel is in a plugin.
* resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
* }
*
* If the package is located in another project in your workspace, the plugin containing the package has not
* been register by EMF and Acceleo should register it automatically. If you want to use the generator in
* stand alone, the regular registration (seen a couple lines before) is needed.
*
* To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents).
*/
}
use of org.eclipse.emf.ecore.EPackage in project BIMserver by opensourceBIM.
the class DataObjectGeneratorWrapper method generateDataObjects.
public void generateDataObjects(Set<EPackage> ePackages) {
try {
FileUtils.forceMkdir(packageFolder);
} catch (IOException e) {
LOGGER.error("", e);
}
ServiceInterfaceObjectGenerator dataObjectGenerator = new ServiceInterfaceObjectGenerator();
Set<String> fileNamesCreated = new HashSet<String>();
for (EPackage ePackage : ePackages) {
for (EClassifier eClassifier : ePackage.getEClassifiers()) {
if (eClassifier instanceof EClass || eClassifier instanceof EEnum) {
Object[] arguments = new Object[] { eClassifier, new ImportManager(), metaDataManager };
String generated = dataObjectGenerator.generate(arguments);
String fileName = "S" + eClassifier.getName() + ".java";
fileNamesCreated.add(fileName);
File file = new File(packageFolder, fileName);
try {
OutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(generated.getBytes(Charsets.UTF_8));
fileOutputStream.close();
} catch (FileNotFoundException e) {
LOGGER.error("", e);
} catch (UnsupportedEncodingException e) {
LOGGER.error("", e);
} catch (IOException e) {
LOGGER.error("", e);
}
}
}
}
for (File file : packageFolder.listFiles()) {
if (!fileNamesCreated.contains(file.getName())) {
file.delete();
}
}
}
use of org.eclipse.emf.ecore.EPackage in project BIMserver by opensourceBIM.
the class BimServer method start.
public void start() throws DatabaseInitException, BimserverDatabaseException, PluginException, DatabaseRestartRequiredException, ServerException {
try {
if (versionChecker != null) {
SVersion localVersion = versionChecker.getLocalVersion();
if (localVersion != null) {
LOGGER.info("Version: " + localVersion.getFullString());
} else {
LOGGER.info("Unknown version");
}
} else {
LOGGER.info("Unknown version");
}
if (config.getHomeDir() != null) {
LOGGER.info("Using \"" + config.getHomeDir().toString() + "\" as homedir");
} else {
LOGGER.info("Not using a homedir");
}
try {
pluginManager.setPluginChangeListener(new PluginChangeListener() {
@Override
public void pluginStateChanged(PluginContext pluginContext, boolean enabled) {
// Reflect this change also in the database
Condition pluginCondition = new AttributeCondition(StorePackage.eINSTANCE.getPluginDescriptor_PluginClassName(), new StringLiteral(pluginContext.getPlugin().getClass().getName()));
DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE);
try {
Map<Long, PluginDescriptor> pluginsFound = session.query(pluginCondition, PluginDescriptor.class, OldQuery.getDefault());
if (pluginsFound.size() == 0) {
LOGGER.error("Error changing plugin-state in database, plugin " + pluginContext.getPlugin().getClass().getName() + " not found");
} else if (pluginsFound.size() == 1) {
PluginDescriptor pluginConfiguration = pluginsFound.values().iterator().next();
pluginConfiguration.setEnabled(pluginContext.isEnabled());
session.store(pluginConfiguration);
} else {
LOGGER.error("Error, too many plugin-objects found in database for name " + pluginContext.getPlugin().getClass().getName());
}
session.commit();
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} catch (ServiceException e) {
LOGGER.error("", e);
} finally {
session.close();
}
}
@Override
public long pluginBundleUpdated(PluginBundle pluginBundle) {
SPluginBundleVersion sPluginBundleVersion = pluginBundle.getPluginBundleVersion();
try (DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE)) {
PluginBundleVersion current = null;
IfcModelInterface allOfType = session.getAllOfType(StorePackage.eINSTANCE.getPluginBundleVersion(), OldQuery.getDefault());
for (PluginBundleVersion pbv : allOfType.getAll(PluginBundleVersion.class)) {
if (pbv.getGroupId().equals(pluginBundle.getPluginBundleVersion().getGroupId()) && pbv.getArtifactId().equals(pluginBundle.getPluginBundleVersion().getArtifactId())) {
// Current pluginBundle found
current = pbv;
}
}
if (current != null) {
current.setDescription(sPluginBundleVersion.getArtifactId());
current.setIcon(sPluginBundleVersion.getIcon());
current.setMismatch(sPluginBundleVersion.isMismatch());
current.setRepository(sPluginBundleVersion.getRepository());
current.setType(getSConverter().convertFromSObject(sPluginBundleVersion.getType()));
current.setVersion(sPluginBundleVersion.getVersion());
current.setOrganization(sPluginBundleVersion.getOrganization());
current.setName(sPluginBundleVersion.getName());
current.setDate(sPluginBundleVersion.getDate());
session.store(current);
session.commit();
}
return current.getOid();
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} catch (ServiceException e) {
LOGGER.error("", e);
}
return -1;
}
@Override
public void pluginUpdated(long pluginBundleVersionId, PluginContext newPluginContext, SPluginInformation sPluginInformation) throws BimserverDatabaseException {
try (DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE)) {
Plugin plugin = newPluginContext.getPlugin();
Condition pluginCondition = new AttributeCondition(StorePackage.eINSTANCE.getPluginDescriptor_Identifier(), new StringLiteral(newPluginContext.getIdentifier()));
Map<Long, PluginDescriptor> pluginsFound = session.query(pluginCondition, PluginDescriptor.class, OldQuery.getDefault());
for (PluginDescriptor pluginDescriptor : pluginsFound.values()) {
pluginDescriptor.setIdentifier(newPluginContext.getIdentifier());
pluginDescriptor.setPluginClassName(plugin.getClass().getName());
pluginDescriptor.setDescription(newPluginContext.getDescription());
pluginDescriptor.setName(sPluginInformation.getName());
pluginDescriptor.setLocation(newPluginContext.getLocation().toString());
pluginDescriptor.setPluginInterfaceClassName(getPluginInterface(plugin.getClass()).getName());
pluginDescriptor.setEnabled(sPluginInformation.isEnabled());
pluginDescriptor.setInstallForNewUsers(sPluginInformation.isInstallForNewUsers());
PluginBundleVersion value = session.get(pluginBundleVersionId, OldQuery.getDefault());
pluginDescriptor.setPluginBundleVersion(value);
session.store(pluginDescriptor);
if (sPluginInformation.isInstallForAllUsers()) {
IfcModelInterface allOfType = session.getAllOfType(StorePackage.eINSTANCE.getUser(), OldQuery.getDefault());
for (User user : allOfType.getAll(User.class)) {
if (user.getState() == ObjectState.ACTIVE) {
updateUserPlugin(session, user, pluginDescriptor, newPluginContext);
}
}
}
if (newPluginContext.getPlugin() instanceof WebModulePlugin) {
ServerSettings serverSettings = getServerSettingsCache().getServerSettings();
WebModulePluginConfiguration webPluginConfiguration = find(serverSettings.getWebModules(), newPluginContext.getIdentifier());
if (webPluginConfiguration == null) {
webPluginConfiguration = session.create(WebModulePluginConfiguration.class);
serverSettings.getWebModules().add(webPluginConfiguration);
}
genericPluginConversion(newPluginContext, session, webPluginConfiguration, pluginDescriptor);
String contextPath = "";
for (Parameter parameter : webPluginConfiguration.getSettings().getParameters()) {
if (parameter.getName().equals("contextPath")) {
contextPath = ((StringType) parameter.getValue()).getValue();
}
}
String identifier = webPluginConfiguration.getPluginDescriptor().getIdentifier();
webModules.put(contextPath, (WebModulePlugin) pluginManager.getPlugin(identifier, true));
} else if (newPluginContext.getPlugin() instanceof ServicePlugin) {
IfcModelInterface allOfType = session.getAllOfType(StorePackage.eINSTANCE.getInternalServicePluginConfiguration(), OldQuery.getDefault());
List<InternalServicePluginConfiguration> all = new ArrayList<>(allOfType.getAll(InternalServicePluginConfiguration.class));
for (InternalServicePluginConfiguration internalServicePluginConfiguration : all) {
if (internalServicePluginConfiguration.getPluginDescriptor().getIdentifier().equals(newPluginContext.getIdentifier())) {
activateService(internalServicePluginConfiguration.getUserSettings().getOid(), internalServicePluginConfiguration);
}
}
}
}
try {
session.commit();
} catch (ServiceException e) {
LOGGER.error("", e);
}
}
}
@Override
public void pluginInstalled(long pluginBundleVersionId, PluginContext pluginContext, SPluginInformation sPluginInformation) throws BimserverDatabaseException {
try (DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE)) {
ServerSettings serverSettings = getServerSettingsCache().getServerSettings();
Plugin plugin = pluginContext.getPlugin();
Condition pluginCondition = new AttributeCondition(StorePackage.eINSTANCE.getPluginDescriptor_Identifier(), new StringLiteral(pluginContext.getIdentifier()));
Map<Long, PluginDescriptor> pluginsFound = session.query(pluginCondition, PluginDescriptor.class, OldQuery.getDefault());
PluginDescriptor pluginDescriptor = null;
ObjectType settings = null;
if (pluginsFound.size() > 0) {
pluginDescriptor = pluginsFound.values().iterator().next();
settings = pluginDescriptor.getSettings();
} else {
pluginDescriptor = session.create(PluginDescriptor.class);
settings = convertSettings(session, pluginContext.getPlugin().getSystemSettingsDefinition());
pluginDescriptor.setSettings(settings);
}
pluginDescriptor.setIdentifier(pluginContext.getIdentifier());
pluginDescriptor.setPluginClassName(plugin.getClass().getName());
pluginDescriptor.setDescription(pluginContext.getDescription());
pluginDescriptor.setName(sPluginInformation.getName());
pluginDescriptor.setLocation(pluginContext.getLocation().toString());
pluginDescriptor.setPluginInterfaceClassName(getPluginInterface(plugin.getClass()).getName());
pluginDescriptor.setEnabled(sPluginInformation.isEnabled());
pluginDescriptor.setInstallForNewUsers(sPluginInformation.isInstallForNewUsers());
pluginDescriptor.setPluginBundleVersion(session.get(pluginBundleVersionId, OldQuery.getDefault()));
try {
pluginContext.initialize(new org.bimserver.plugins.PluginConfiguration(settings));
} catch (PluginException e) {
LOGGER.error("", e);
}
if (pluginDescriptor.getPluginClassName().contentEquals("org.ifcopenshell.IfcOpenShellEnginePlugin")) {
if (serverSettings.getDefaultRenderEnginePlugin() == null) {
serverSettings.setDefaultRenderEnginePlugin(pluginDescriptor);
session.store(serverSettings);
}
}
if (sPluginInformation.isInstallForAllUsers()) {
IfcModelInterface allOfType = session.getAllOfType(StorePackage.eINSTANCE.getUser(), OldQuery.getDefault());
for (User user : allOfType.getAll(User.class)) {
if (user.getState() == ObjectState.ACTIVE) {
updateUserPlugin(session, user, pluginDescriptor, pluginContext);
}
}
}
if (pluginContext.getPlugin() instanceof WebModulePlugin) {
WebModulePluginConfiguration webPluginConfiguration = find(serverSettings.getWebModules(), pluginContext.getIdentifier());
if (webPluginConfiguration == null) {
webPluginConfiguration = session.create(WebModulePluginConfiguration.class);
serverSettings.getWebModules().add(webPluginConfiguration);
genericPluginConversion(pluginContext, session, webPluginConfiguration, pluginDescriptor);
session.store(serverSettings);
}
String contextPath = "";
for (Parameter parameter : webPluginConfiguration.getSettings().getParameters()) {
if (parameter.getName().equals("contextPath")) {
contextPath = ((StringType) parameter.getValue()).getValue();
}
}
webModules.put(contextPath, (WebModulePlugin) pluginManager.getPlugin(pluginContext.getIdentifier(), true));
}
try {
session.commit();
} catch (ServiceException e) {
LOGGER.error("", e);
}
}
}
@Override
public void pluginUninstalled(PluginContext pluginContext) {
// Reflect this change also in the database
Condition pluginCondition = new AttributeCondition(StorePackage.eINSTANCE.getPluginDescriptor_Identifier(), new StringLiteral(pluginContext.getIdentifier()));
DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE);
try {
Map<Long, PluginDescriptor> pluginsFound = session.query(pluginCondition, PluginDescriptor.class, OldQuery.getDefault());
if (pluginsFound.size() == 0) {
LOGGER.error("Error removing plugin-state in database, plugin " + pluginContext.getPlugin().getClass().getName() + " not found");
} else if (pluginsFound.size() == 1) {
PluginDescriptor pluginDescriptor = pluginsFound.values().iterator().next();
for (PluginConfiguration pluginConfiguration : pluginDescriptor.getConfigurations()) {
session.delete(pluginConfiguration, -1);
}
if (pluginContext.getPlugin() instanceof WebModulePlugin) {
ServerSettings serverSettings = getServerSettingsCache().getServerSettings();
WebModulePluginConfiguration webPluginConfiguration = find(serverSettings.getWebModules(), pluginContext.getIdentifier());
serverSettings.getWebModules().remove(webPluginConfiguration);
session.store(serverSettings);
String contextPath = "";
for (Parameter parameter : webPluginConfiguration.getSettings().getParameters()) {
if (parameter.getName().equals("contextPath")) {
contextPath = ((StringType) parameter.getValue()).getValue();
}
}
webModules.remove(contextPath);
}
session.delete(pluginDescriptor, -1);
} else {
LOGGER.error("Error, too many plugin-objects found in database for name " + pluginContext.getPlugin().getClass().getName());
}
session.commit();
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} catch (ServiceException e) {
LOGGER.error("", e);
} finally {
session.close();
}
}
@Override
public long pluginBundleInstalled(PluginBundle pluginBundle) {
try (DatabaseSession session = bimDatabase.createSession(OperationType.POSSIBLY_WRITE)) {
PluginBundleVersion current = null;
IfcModelInterface allOfType = session.getAllOfType(StorePackage.eINSTANCE.getPluginBundleVersion(), OldQuery.getDefault());
for (PluginBundleVersion pbv : allOfType.getAll(PluginBundleVersion.class)) {
if (pbv.getGroupId().equals(pluginBundle.getPluginBundleVersion().getGroupId()) && pbv.getArtifactId().equals(pluginBundle.getPluginBundleVersion().getArtifactId())) {
// Current pluginBundle found
current = pbv;
}
}
PluginBundleVersion pluginBundleVersion = null;
if (current != null) {
pluginBundleVersion = current;
session.store(pluginBundleVersion);
} else {
pluginBundleVersion = session.create(PluginBundleVersion.class);
}
SPluginBundleVersion sPluginBundleVersion = pluginBundle.getPluginBundleVersion();
// SConverter should be used here, but it does not seem to trigger the database session in the rights way, just copying over field for now
pluginBundleVersion.setArtifactId(sPluginBundleVersion.getArtifactId());
pluginBundleVersion.setDescription(sPluginBundleVersion.getArtifactId());
pluginBundleVersion.setGroupId(sPluginBundleVersion.getGroupId());
pluginBundleVersion.setIcon(sPluginBundleVersion.getIcon());
pluginBundleVersion.setMismatch(sPluginBundleVersion.isMismatch());
pluginBundleVersion.setRepository(sPluginBundleVersion.getRepository());
pluginBundleVersion.setType(getSConverter().convertFromSObject(sPluginBundleVersion.getType()));
pluginBundleVersion.setVersion(sPluginBundleVersion.getVersion());
pluginBundleVersion.setOrganization(sPluginBundleVersion.getOrganization());
pluginBundleVersion.setName(sPluginBundleVersion.getName());
pluginBundleVersion.setDate(sPluginBundleVersion.getDate());
session.commit();
return pluginBundleVersion.getOid();
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} catch (ServiceException e) {
LOGGER.error("", e);
}
return -1;
}
@Override
public void pluginBundleUninstalled(PluginBundle pluginBundle) {
}
});
} catch (Exception e) {
LOGGER.error("", e);
}
try {
metaDataManager.init(true);
pluginManager.initAllLoadedPlugins();
} catch (PluginException e) {
LOGGER.error("", e);
}
serverStartTime = new GregorianCalendar();
longActionManager = new LongActionManager(this);
Set<EPackage> packages = new LinkedHashSet<>();
packages.add(Ifc2x3tc1Package.eINSTANCE);
packages.add(Ifc4Package.eINSTANCE);
templateEngine = new TemplateEngine();
ResourceFetcher resourceFetcher = config.getResourceFetcher();
if (resourceFetcher.isDirectory("emailtemplates")) {
templateEngine.init(resourceFetcher.getURL("emailtemplates"));
} else {
LOGGER.info("No email templates found");
}
Path databaseDir = config.getHomeDir().resolve("database");
BerkeleyKeyValueStore keyValueStore = new BerkeleyKeyValueStore(databaseDir, config.getBdbEnvironmentProperties());
geometryAccellerator = new GeometryAccellerator(this);
schemaConverterManager.registerConverter(new Ifc2x3tc1ToIfc4SchemaConverterFactory());
schemaConverterManager.registerConverter(new Ifc4ToIfc2x3tc1SchemaConverterFactory());
authCache = new AuthCache(this);
pluginSettingsCache = new PluginSettingsCache(this);
metricsRegistry = new MetricsRegistry();
Path mavenPath = config.getHomeDir().resolve("maven");
if (!Files.exists(mavenPath)) {
Files.createDirectories(mavenPath);
}
OldQuery.setPackageMetaDataForDefaultQuery(metaDataManager.getPackageMetaData("store"));
bimDatabase = new Database(this, packages, keyValueStore, metaDataManager);
try {
bimDatabase.init();
} catch (DatabaseRestartRequiredException e) {
bimDatabase.close();
keyValueStore = new BerkeleyKeyValueStore(databaseDir, config.getBdbEnvironmentProperties());
bimDatabase = new Database(this, packages, keyValueStore, metaDataManager);
try {
bimDatabase.init();
} catch (InconsistentModelsException e1) {
LOGGER.error("", e);
serverInfoManager.setServerState(ServerState.FATAL_ERROR);
serverInfoManager.setErrorMessage("Inconsistent models");
}
} catch (InconsistentModelsException e) {
LOGGER.error("", e);
serverInfoManager.setServerState(ServerState.FATAL_ERROR);
serverInfoManager.setErrorMessage("Inconsistent models");
}
try (DatabaseSession encsession = bimDatabase.createSession(OperationType.POSSIBLY_WRITE)) {
byte[] encryptionkeyBytes = null;
if (!bimDatabase.getRegistry().has(ENCRYPTIONKEY, encsession)) {
encryptionkeyBytes = new byte[16];
new SecureRandom().nextBytes(encryptionkeyBytes);
bimDatabase.getRegistry().save(ENCRYPTIONKEY, encryptionkeyBytes, encsession);
encsession.commit();
} else {
encryptionkeyBytes = bimDatabase.getRegistry().readByteArray(ENCRYPTIONKEY, encsession);
}
encryptionkey = new SecretKeySpec(encryptionkeyBytes, "AES");
}
cleanupStaleData();
serverInfoManager.init(this);
webModuleManager = new WebModuleManager(this);
jsonHandler = new JsonHandler(this);
serializerFactory = new SerializerFactory();
serverSettingsCache = new ServerSettingsCache(bimDatabase);
for (String schema : new String[] { "ifc2x3tc1", "ifc4" }) {
for (String type : new String[] { "geometry", "stdlib" }) {
try {
PackageMetaData packageMetaData = getMetaDataManager().getPackageMetaData(schema);
JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData);
String queryNameSpace = schema + "-" + type;
if (type.contentEquals("stdlib")) {
Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true);
// The sole reason is to make sure this is done once, and then cached
objectPlacement.makeDirectRecursive(new HashSet<>());
}
} catch (QueryException e) {
LOGGER.error(schema + " " + type, e);
}
}
}
serverInfoManager.update();
if (serverInfoManager.getServerState() == ServerState.MIGRATION_REQUIRED) {
serverInfoManager.registerStateChangeListener(new StateChangeListener() {
@Override
public void stateChanged(ServerState oldState, ServerState newState) {
if (oldState == ServerState.MIGRATION_REQUIRED && newState == ServerState.RUNNING) {
try {
initDatabaseDependantItems();
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
}
}
}
});
} else {
initDatabaseDependantItems();
}
mailSystem = new MailSystem(this);
diskCacheManager = new DiskCacheManager(this, config.getHomeDir().resolve("cache"));
newDiskCacheManager = new NewDiskCacheManager(this, config.getHomeDir().resolve("cache"));
mergerFactory = new MergerFactory(this);
RealtimeReflectorFactoryBuilder factoryBuilder = new RealtimeReflectorFactoryBuilder(servicesMap);
reflectorFactory = factoryBuilder.newReflectorFactory();
if (reflectorFactory == null) {
throw new RuntimeException("No reflector factory!");
}
servicesMap.setReflectorFactory(reflectorFactory);
bimScheduler = new JobScheduler(this);
bimScheduler.start();
if (config.isStartEmbeddedWebServer()) {
embeddedWebServer.start();
}
if (config.isStartCommandLine()) {
commandLine = new CommandLine(this);
commandLine.start();
}
if (getServerInfoManager().getServerState() == ServerState.SETUP) {
getServerInfoManager().setServerState(ServerState.RUNNING);
}
} catch (Throwable e) {
LOGGER.error("", e);
serverInfoManager.setErrorMessage(e.getMessage());
}
}
Aggregations