- public boolean handleBaselineDatabase() throws PlatformException {
- Path workspaceLocation = Platform.getLocation().toFile().toPath();
- Path baselineIndicatorFile = workspaceLocation.resolve(".baselined");
- if (Files.isRegularFile(baselineIndicatorFile)) {
- // This means that the workspace has already been initialized from
- // a database baseline and further initialization is not necessary.
- return true;
- }
-
- String dbBaselineArchive = System.getProperty("org.simantics.db.baseline", null);
- if (dbBaselineArchive == null)
- return false;
-
- Path baseline = Paths.get(dbBaselineArchive);
- if (!Files.isRegularFile(baseline))
- throw new PlatformException("Specified database baseline archive " + baseline + " does not exist. Cannot initialize workspace database.");
-
- validateBaselineFile(baseline);
- validateWorkspaceForBaselineInitialization(workspaceLocation);
-
- try {
- Files.createDirectories(workspaceLocation);
- FileUtils.extractZip(baseline.toFile(), workspaceLocation.toFile());
- Files.write(baselineIndicatorFile, baselineIndicatorContents(baselineIndicatorFile));
- return true;
- } catch (IOException e) {
- throw new PlatformException(e);
- }
- }
-
- private static final DateTimeFormatter TIMESTAMP_FORMAT = DateTimeFormatter.ofPattern("d. MMM yyyy HH:mm:ss");
-
- private static byte[] baselineIndicatorContents(Path path) throws IOException {
- return String.format("%s%n%s%n",
- path.toString(),
- Instant.now().atZone(ZoneId.systemDefault()).format(TIMESTAMP_FORMAT))
- .getBytes("UTF-8");