Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrbrooks2009-12-03 19:05:18 +0000
committerrbrooks2009-12-03 19:05:18 +0000
commit4ca4dd8465d8b69001d5993de2bb851864c293b7 (patch)
treec5dacf681f25787815e66ed5a0acb06397b99727 /org.eclipse.osee.framework.branch.management
parent79bbfbcaa49166c764a1cf939f1a3b50a22aa9ee (diff)
downloadorg.eclipse.osee-4ca4dd8465d8b69001d5993de2bb851864c293b7.tar.gz
org.eclipse.osee-4ca4dd8465d8b69001d5993de2bb851864c293b7.tar.xz
org.eclipse.osee-4ca4dd8465d8b69001d5993de2bb851864c293b7.zip
Add support for importing exports (backups) from previous versions of OSEE
Diffstat (limited to 'org.eclipse.osee.framework.branch.management')
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeIntegrity.java4
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java41
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/IOseeDbExportDataProvider.java2
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/StandardOseeDbExportDataProvider.java4
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/ManifestVersionRule.java41
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_BranchRule.java (renamed from org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyBranchRule.java)4
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_DbSchemaRule.java (renamed from org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyDbSchemaRule.java)4
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_LegacyExportTransformer.java (renamed from org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyExportTransformer.java)6
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0Transformer.java35
-rw-r--r--org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0TxsTransformer.java34
10 files changed, 158 insertions, 17 deletions
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeIntegrity.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeIntegrity.java
index e3ae8a91ece..b1ea6781d8f 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeIntegrity.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeIntegrity.java
@@ -47,7 +47,7 @@ public class ExchangeIntegrity {
long startTime = System.currentTimeMillis();
try {
ManifestSaxHandler manifestSaxHandler = new ManifestSaxHandler();
- exportDataProvider.startSaxParsing(ExportItemId.EXPORT_MANIFEST, manifestSaxHandler);
+ exportDataProvider.saxParse(ExportItemId.EXPORT_MANIFEST, manifestSaxHandler);
List<ImportFile> filesToCheck = new ArrayList<ImportFile>();
filesToCheck.addAll(manifestSaxHandler.getImportFiles());
@@ -56,7 +56,7 @@ public class ExchangeIntegrity {
final List<IndexCollector> checkList = ExchangeDb.createCheckList();
for (final ImportFile importFile : filesToCheck) {
- exportDataProvider.startSaxParsing(importFile, new CheckSaxHandler(exportDataProvider, checkList,
+ exportDataProvider.saxParse(importFile, new CheckSaxHandler(exportDataProvider, checkList,
importFile.getFileName()));
}
checkExchange = exportDataProvider.getExportedDataRoot() + ".verify.xml";
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java
index 91b774d25a6..1221a4f8b25 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.osee.framework.branch.management.exchange;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -20,6 +22,9 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
import org.eclipse.osee.framework.branch.management.ImportOptions;
import org.eclipse.osee.framework.branch.management.exchange.handler.BaseDbSaxHandler;
import org.eclipse.osee.framework.branch.management.exchange.handler.BranchDataSaxHandler;
@@ -33,7 +38,9 @@ import org.eclipse.osee.framework.branch.management.exchange.handler.RelationalS
import org.eclipse.osee.framework.branch.management.exchange.handler.RelationalTypeCheckSaxHandler;
import org.eclipse.osee.framework.branch.management.exchange.handler.ManifestSaxHandler.ImportFile;
import org.eclipse.osee.framework.branch.management.exchange.transform.IOseeDbExportTransformer;
-import org.eclipse.osee.framework.branch.management.exchange.transform.LegacyExportTransformer;
+import org.eclipse.osee.framework.branch.management.exchange.transform.ManifestVersionRule;
+import org.eclipse.osee.framework.branch.management.exchange.transform.V0_8_3_LegacyExportTransformer;
+import org.eclipse.osee.framework.branch.management.exchange.transform.V0_9_0Transformer;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
import org.eclipse.osee.framework.core.exception.OseeStateException;
@@ -46,6 +53,7 @@ import org.eclipse.osee.framework.database.core.SequenceManager;
import org.eclipse.osee.framework.database.core.SupportedDatabase;
import org.eclipse.osee.framework.jdk.core.text.Rule;
import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.SaxTransformer;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.resource.management.Options;
@@ -95,7 +103,7 @@ public final class ImportController {
currentSavePoint = "manifest";
manifestHandler = new ManifestSaxHandler();
- exportDataProvider.startSaxParsing(ExportItemId.EXPORT_MANIFEST, manifestHandler);
+ exportDataProvider.saxParse(ExportItemId.EXPORT_MANIFEST, manifestHandler);
applyTransforms();
@@ -106,7 +114,7 @@ public final class ImportController {
// Process database meta data
currentSavePoint = manifestHandler.getMetadataFile();
metadataHandler = new MetaDataSaxHandler();
- exportDataProvider.startSaxParsing(ExportItemId.EXPORT_DB_SCHEMA, metadataHandler);
+ exportDataProvider.saxParse(ExportItemId.EXPORT_DB_SCHEMA, metadataHandler);
metadataHandler.checkAndLoadTargetDbMetadata();
// Load Import Indexes
@@ -124,13 +132,36 @@ public final class ImportController {
}
}
+ public void transformExportItem(ExportItemId exportItem, SaxTransformer transformer) throws OseeCoreException {
+ try {
+
+ File orignalFile = exportDataProvider.getFile(exportItem);
+ File tempFile = new File(Lib.changeExtension(orignalFile.getPath(), "temp"));
+ if (!orignalFile.renameTo(tempFile)) {
+ throw new OseeStateException("not able to rename " + orignalFile);
+ }
+
+ XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter(orignalFile));
+ transformer.setWriter(writer);
+ ExchangeUtil.readExchange(tempFile, transformer);
+ tempFile.delete();
+ } catch (IOException ex) {
+ throw new OseeWrappedException(ex);
+ } catch (XMLStreamException ex) {
+ throw new OseeWrappedException(ex);
+ }
+ }
+
private void applyTransforms() throws OseeCoreException {
- IOseeDbExportTransformer[] transforms = new IOseeDbExportTransformer[] {new LegacyExportTransformer()};
+ IOseeDbExportTransformer[] transforms =
+ new IOseeDbExportTransformer[] {new V0_8_3_LegacyExportTransformer(), new V0_9_0Transformer()};
String exportVersion = manifestHandler.getSourceExportVersion();
for (IOseeDbExportTransformer transform : transforms) {
if (transform.isApplicable(exportVersion)) {
exportVersion = transform.applyTransform(this);
+ transformExportItem(ExportItemId.EXPORT_MANIFEST, new ManifestVersionRule(exportVersion));
}
}
}
@@ -205,7 +236,7 @@ public final class ImportController {
handler.clearDataTable();
}
}
- exportDataProvider.startSaxParsing(importSourceFile, handler);
+ exportDataProvider.saxParse(importSourceFile, handler);
}
private MetaData checkMetadata(ImportFile importFile) {
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/IOseeDbExportDataProvider.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/IOseeDbExportDataProvider.java
index e697aad0503..a399044bd78 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/IOseeDbExportDataProvider.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/IOseeDbExportDataProvider.java
@@ -19,7 +19,7 @@ import org.xml.sax.ContentHandler;
*/
public interface IOseeDbExportDataProvider {
- public void startSaxParsing(IExportItem id, ContentHandler handler) throws OseeCoreException;
+ public void saxParse(IExportItem id, ContentHandler handler) throws OseeCoreException;
public boolean wasZipExtractionRequired();
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/StandardOseeDbExportDataProvider.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/StandardOseeDbExportDataProvider.java
index 8711d6955a1..977e0abd725 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/StandardOseeDbExportDataProvider.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/StandardOseeDbExportDataProvider.java
@@ -33,8 +33,8 @@ public class StandardOseeDbExportDataProvider implements IOseeDbExportDataProvid
}
@Override
- public void startSaxParsing(IExportItem item, ContentHandler handler) throws OseeCoreException {
- ExchangeUtil.readExchange(getFile(item), handler);
+ public void saxParse(IExportItem exportItem, ContentHandler handler) throws OseeCoreException {
+ ExchangeUtil.readExchange(getFile(exportItem), handler);
}
@Override
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/ManifestVersionRule.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/ManifestVersionRule.java
new file mode 100644
index 00000000000..29eb9bdd58f
--- /dev/null
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/ManifestVersionRule.java
@@ -0,0 +1,41 @@
+/*
+ * Created on Nov 30, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.branch.management.exchange.transform;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.text.Rule;
+import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
+
+public class ManifestVersionRule extends Rule {
+ private static final Pattern exportPattern = Pattern.compile("<export ");
+ private static final Pattern versionPattern = Pattern.compile("exportVersion=\"([^\"]+)");
+
+ private final String version;
+
+ public ManifestVersionRule(String version) {
+ super(null);
+ this.version = version;
+ }
+
+ @Override
+ public ChangeSet computeChanges(CharSequence seq) {
+ ChangeSet changeSet = new ChangeSet(seq);
+ ruleWasApplicable = true;
+
+ Matcher versionMatcher = versionPattern.matcher(seq);
+ if (versionMatcher.find()) {
+ changeSet.replace(versionMatcher.start(1), versionMatcher.end(1), version);
+ } else {
+ Matcher exportMatcher = exportPattern.matcher(seq);
+ while (exportMatcher.find()) {
+ changeSet.insertBefore(exportMatcher.end(), "exportVersion=\"" + version + "\" ");
+ }
+ }
+
+ return changeSet;
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyBranchRule.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_BranchRule.java
index 44c6c1e1f3c..5112cca0391 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyBranchRule.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_BranchRule.java
@@ -11,10 +11,10 @@ import org.eclipse.osee.framework.jdk.core.text.Rule;
import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
import org.eclipse.osee.framework.jdk.core.util.GUID;
-public class LegacyBranchRule extends Rule {
+public class V0_8_3_BranchRule extends Rule {
private static final Pattern branchPattern = Pattern.compile("<entry ()branch_type");
- public LegacyBranchRule() {
+ public V0_8_3_BranchRule() {
super(null);
}
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyDbSchemaRule.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_DbSchemaRule.java
index 6cabb96d2af..2eebabccf9d 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyDbSchemaRule.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_DbSchemaRule.java
@@ -10,7 +10,7 @@ import java.util.regex.Pattern;
import org.eclipse.osee.framework.jdk.core.text.Rule;
import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
-public class LegacyDbSchemaRule extends Rule {
+public class V0_8_3_DbSchemaRule extends Rule {
private static final Pattern typeTablePattern =
Pattern.compile("\\s+<table name=\"osee_\\w+_type\".*?</table>", Pattern.DOTALL);
@@ -18,7 +18,7 @@ public class LegacyDbSchemaRule extends Rule {
private static final Pattern txsTablePattern = Pattern.compile("<table name=\"osee_txs\" >\\s+");
- public LegacyDbSchemaRule() {
+ public V0_8_3_DbSchemaRule() {
super(null);
}
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyExportTransformer.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_LegacyExportTransformer.java
index 5d9383123d2..22e58e6b83c 100644
--- a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/LegacyExportTransformer.java
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_8_3_LegacyExportTransformer.java
@@ -17,12 +17,12 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
/**
* @author Ryan D. Brooks
*/
-public class LegacyExportTransformer implements IOseeDbExportTransformer {
+public class V0_8_3_LegacyExportTransformer implements IOseeDbExportTransformer {
@Override
public String applyTransform(ImportController importController) throws OseeCoreException {
- importController.transformExportItem(ExportItemId.EXPORT_DB_SCHEMA, new LegacyDbSchemaRule());
- importController.transformExportItem(ExportItemId.OSEE_BRANCH_DATA, new LegacyBranchRule());
+ importController.transformExportItem(ExportItemId.EXPORT_DB_SCHEMA, new V0_8_3_DbSchemaRule());
+ importController.transformExportItem(ExportItemId.OSEE_BRANCH_DATA, new V0_8_3_BranchRule());
return "0.8.3";
}
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0Transformer.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0Transformer.java
new file mode 100644
index 00000000000..8fc3cd65bb7
--- /dev/null
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0Transformer.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.branch.management.exchange.transform;
+
+import org.eclipse.osee.framework.branch.management.exchange.ImportController;
+import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItemId;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.SaxTransformer;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class V0_9_0Transformer implements IOseeDbExportTransformer {
+
+ @Override
+ public String applyTransform(ImportController importController) throws OseeCoreException {
+
+ SaxTransformer txsTransformer = new V0_9_0TxsTransformer();
+ importController.transformExportItem(ExportItemId.OSEE_TXS_DATA, txsTransformer);
+ return "0.9.0";
+ }
+
+ @Override
+ public boolean isApplicable(String exportVersion) throws OseeCoreException {
+ return exportVersion.startsWith("0.8.3");
+ }
+}
diff --git a/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0TxsTransformer.java b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0TxsTransformer.java
new file mode 100644
index 00000000000..5669ac87c95
--- /dev/null
+++ b/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/transform/V0_9_0TxsTransformer.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.branch.management.exchange.transform;
+
+import javax.xml.stream.XMLStreamException;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.SaxTransformer;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class V0_9_0TxsTransformer extends SaxTransformer {
+
+ @Override
+ public void startElementFound(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ super.startElementFound(uri, localName, qName, attributes);
+ try {
+ if (localName.equals("entry")) {
+ writer.writeAttribute("branch_id", "-1");
+ }
+ } catch (XMLStreamException ex) {
+ throw new SAXException(ex);
+ }
+ }
+} \ No newline at end of file

Back to the top