import org.eclipse.core.runtime.Status;\r
import org.eclipse.core.runtime.SubMonitor;\r
import org.eclipse.osgi.service.resolver.BundleDescription;\r
-import org.simantics.SimanticsPlatform.OntologyRecoveryPolicy;\r
-import org.simantics.SimanticsPlatform.RecoveryPolicy;\r
import org.simantics.databoard.Bindings;\r
import org.simantics.databoard.Databoard;\r
import org.simantics.datatypes.literal.Font;\r
return application != null ? application : UUID.randomUUID().toString();\r
}\r
\r
- private Session setupDatabase(String databaseId, IProgressMonitor progressMonitor, RecoveryPolicy workspacePolicy, PlatformUserAgent userAgent) throws PlatformException {\r
+ private Session setupDatabase(String databaseDriverId, IProgressMonitor progressMonitor, RecoveryPolicy workspacePolicy, PlatformUserAgent userAgent) throws PlatformException {\r
if (progressMonitor == null)\r
progressMonitor = new NullProgressMonitor();\r
File dbLocation = Platform.getLocation().append("db").toFile();\r
ServerManager serverManager;\r
try {\r
- serverManager = ServerManagerFactory.create(databaseId, dbLocation.getAbsolutePath());\r
+ serverManager = ServerManagerFactory.create(databaseDriverId, dbLocation.getAbsolutePath());\r
} catch (DatabaseException | IOException e) {\r
throw new PlatformException("Failed to initialize Server Manager", e);\r
}\r
// Check hash of transferable graph to know whether to update or not.\r
if (platformBundle.getHashcode() == existingBundle.getHashcode())\r
continue;\r
- System.out.println("Ontology hashcodes does not match! platformBundle" + platformBundle.getName() + ".getHashCode()=" + platformBundle.getHashcode() + " existingBundle" + existingBundle.getName() + ".getHashCode()=" + existingBundle.getHashcode());\r
+ //System.out.println("Ontology hashcodes do not match: platform bundle="\r
+ // + platformBundle.getVersionedId() + ", hash=" + platformBundle.getHashcode()\r
+ // + "; existing bundle=" + existingBundle.getVersionedId() + ", hash=" + existingBundle.getHashcode());\r
reinstallTGs.put(platformBundle, existingBundle);\r
}\r
}\r
boolean changes = TransferableGraphs.hasChanges(readGraph(), oldResources, delta);\r
endTransaction();\r
if (!changes) {\r
- log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "Nothing to merge for "+tg.toString()));\r
+ //log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "Nothing to merge for "+tg.toString()));\r
continue;\r
}\r
\r
* startup or <code>null</code> to resort to default measures\r
* @throws PlatformException\r
*/\r
- public SessionContext startUp(String databaseId, IProgressMonitor progressMonitor, RecoveryPolicy workspacePolicy,\r
+ public SessionContext startUp(String databaseDriverId, IProgressMonitor progressMonitor, RecoveryPolicy workspacePolicy,\r
OntologyRecoveryPolicy ontologyPolicy, boolean requireSynchronize, PlatformUserAgent userAgent)\r
throws PlatformException\r
{\r
VariableRepository.clear();\r
\r
// 1. Assert there is a database at <workspace>/db\r
- session = setupDatabase(databaseId, progressMonitor, workspacePolicy, userAgent);\r
+ session = setupDatabase(databaseDriverId, progressMonitor, workspacePolicy, userAgent);\r
TimeLogger.log("Database setup complete");\r
-\r
+ \r
+ // 1.1 \r
+ XSupport support = session.getService(XSupport.class);\r
+ if (support.rolledback()) {\r
+ try {\r
+ DatabaseIndexing.deleteAllIndexes();\r
+ } catch (IOException e) {\r
+ throw new PlatformException(e);\r
+ }\r
+ }\r
+ \r
// 2. Assert all graphs, and correct versions, are installed to the database\r
synchronizeOntologies(progressMonitor, ontologyPolicy, requireSynchronize);\r
TimeLogger.log("Synchronized ontologies");\r
return false;\r
}\r
\r
- public void reconnect(String databaseId) throws Exception {\r
+ public void reconnect(String databaseDriverId) throws Exception {\r
// Starts database server.\r
- SimanticsPlatform.INSTANCE.startUp(databaseId, null, RecoveryPolicy.ThrowError, OntologyRecoveryPolicy.ThrowError, true, null);\r
+ SimanticsPlatform.INSTANCE.startUp(databaseDriverId, null, RecoveryPolicy.ThrowError, OntologyRecoveryPolicy.ThrowError, true, null);\r
}\r
\r
private void dumpPlatformBundleState() {\r