private void updatePlugins(DatabaseSession session) throws BimserverDatabaseException { Collection<Plugin> allPlugins = pluginManager.getAllPlugins(false); for (Plugin plugin : allPlugins) { Condition pluginCondition = new AttributeCondition( StorePackage.eINSTANCE.getPluginDescriptor_PluginClassName(), new StringLiteral(plugin.getClass().getName())); Map<Long, PluginDescriptor> results = session.query(pluginCondition, PluginDescriptor.class, Query.getDefault()); if (results.size() == 0) { PluginContext pluginContext = pluginManager.getPluginContext(plugin); PluginDescriptor pluginDescriptor = session.create(PluginDescriptor.class); pluginDescriptor.setPluginClassName(plugin.getClass().getName()); pluginDescriptor.setSimpleName(plugin.getClass().getSimpleName()); pluginDescriptor.setDescription(plugin.getDescription() + " " + plugin.getVersion()); pluginDescriptor.setLocation(pluginContext.getLocation().toString()); pluginDescriptor.setPluginInterfaceClassName(getPluginInterfaceClass(plugin).getName()); pluginDescriptor.setEnabled(true); // New plugins are enabled by default } else if (results.size() == 1) { PluginContext pluginContext = pluginManager.getPluginContext(plugin); PluginDescriptor pluginDescriptor = results.values().iterator().next(); pluginDescriptor.setPluginClassName(plugin.getClass().getName()); pluginDescriptor.setSimpleName(plugin.getClass().getSimpleName()); pluginDescriptor.setDescription(plugin.getDescription() + " " + plugin.getVersion()); pluginDescriptor.setLocation(pluginContext.getLocation().toString()); pluginDescriptor.setPluginInterfaceClassName(getPluginInterfaceClass(plugin).getName()); session.store(pluginDescriptor); pluginManager.getPluginContext(plugin).setEnabled(pluginDescriptor.getEnabled(), false); } else { LOGGER.error( "Multiple plugin descriptor objects found with the same name: " + plugin.getClass().getName()); } } }
private void genericPluginConversion( DatabaseSession session, Plugin plugin, PluginConfiguration pluginConfiguration, PluginDescriptor pluginDescriptor) throws BimserverDatabaseException { try { pluginConfiguration.setName(plugin.getDefaultName()); pluginConfiguration.setPluginDescriptor(pluginDescriptor); // For the opposite of setPluginDescriptor // session.store(pluginDescriptor); Disabled for now, this creates massive lists, that are not // really useful... pluginConfiguration.setDescription(plugin.getDescription()); pluginConfiguration.setEnabled(true); pluginConfiguration.setSettings(convertSettings(session, plugin)); } catch (NoClassDefFoundError e) { // ignore for now } }