diff options
author | rbrooks | 2009-12-03 19:05:18 +0000 |
---|---|---|
committer | rbrooks | 2009-12-03 19:05:18 +0000 |
commit | 4ca4dd8465d8b69001d5993de2bb851864c293b7 (patch) | |
tree | c5dacf681f25787815e66ed5a0acb06397b99727 /org.eclipse.osee.framework.branch.management | |
parent | 79bbfbcaa49166c764a1cf939f1a3b50a22aa9ee (diff) | |
download | org.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')
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 |