diff options
author | rescobar | 2011-08-31 23:34:52 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2011-08-31 23:34:52 +0000 |
commit | 573b960ba7333f1cdb26a3f70db533a5081538db (patch) | |
tree | ba8ee5da9c2161fd9010afa9b995c7ac68ef746b | |
parent | 27f67513af695f9ef1147cb137cecfe355f4c8b2 (diff) | |
download | org.eclipse.osee-573b960ba7333f1cdb26a3f70db533a5081538db.tar.gz org.eclipse.osee-573b960ba7333f1cdb26a3f70db533a5081538db.tar.xz org.eclipse.osee-573b960ba7333f1cdb26a3f70db533a5081538db.zip |
feature[ats_M1Y56]: Update branch exchange for type changes
17 files changed, 279 insertions, 105 deletions
diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeDb.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeDb.java index b251beb98ca..8fe21e77658 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeDb.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExchangeDb.java @@ -20,6 +20,7 @@ import org.eclipse.osee.framework.branch.management.exchange.export.AbstractExpo import org.eclipse.osee.framework.branch.management.exchange.export.DbTableExportItem; import org.eclipse.osee.framework.branch.management.exchange.export.ManifestExportItem; import org.eclipse.osee.framework.branch.management.exchange.export.MetadataExportItem; +import org.eclipse.osee.framework.branch.management.exchange.export.OseeTypeModelExportItem; import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -136,6 +137,7 @@ public final class ExchangeDb { List<AbstractExportItem> items = new ArrayList<AbstractExportItem>(); items.add(new ManifestExportItem(items)); items.add(new MetadataExportItem(items, services.getDatabaseService().getConnection().getMetaData())); + items.add(new OseeTypeModelExportItem(services.getModelingService())); items.add(new DbTableExportItem(services, ExportItem.OSEE_BRANCH_DATA, BRANCH_TABLE_QUERY)); items.add(new DbTableExportItem(services, ExportItem.OSEE_TX_DETAILS_DATA, TX_DETAILS_TABLE_QUERY)); items.add(new DbTableExportItem(services, ExportItem.OSEE_TXS_DATA, TXS_TABLE_QUERY)); diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportController.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportController.java index 007ebc3171f..5bae8dc2512 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportController.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportController.java @@ -11,7 +11,6 @@ package org.eclipse.osee.framework.branch.management.exchange; import java.io.File; -import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -20,7 +19,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.logging.Level; -import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.osee.framework.branch.management.ExportOptions; import org.eclipse.osee.framework.branch.management.IExchangeTaskListener; import org.eclipse.osee.framework.branch.management.exchange.export.AbstractDbExportItem; @@ -136,12 +134,10 @@ final class ExportController implements IExchangeTaskListener { String zipTargetName = getExchangeFileName() + ZIP_EXTENSION; if (this.options.getBoolean(ExportOptions.COMPRESS.name())) { - OseeLog.logf(this.getClass(), Level.INFO, - "Compressing Branch Export Data - [%s]", zipTargetName); + OseeLog.logf(this.getClass(), Level.INFO, "Compressing Branch Export Data - [%s]", zipTargetName); File zipTarget = new File(tempFolder.getParent(), zipTargetName); Lib.compressDirectory(tempFolder, zipTarget.getAbsolutePath(), true); - OseeLog.logf(this.getClass(), Level.INFO, - "Deleting Branch Export Temp Folder - [%s]", tempFolder); + OseeLog.logf(this.getClass(), Level.INFO, "Deleting Branch Export Temp Folder - [%s]", tempFolder); Lib.deleteDir(tempFolder); } else { File target = new File(tempFolder.getParent(), getExchangeFileName()); @@ -157,11 +153,8 @@ final class ExportController implements IExchangeTaskListener { } finally { cleanUp(taskList); } - OseeLog.logf( - this.getClass(), - Level.INFO, - "Exported [%s] branch%s in [%s]", branchIds.size(), branchIds.size() != 1 ? "es" : "", - Lib.getElapseString(startTime)); + OseeLog.logf(this.getClass(), Level.INFO, "Exported [%s] branch%s in [%s]", branchIds.size(), + branchIds.size() != 1 ? "es" : "", Lib.getElapseString(startTime)); } private void sendTasksToExecutor(List<AbstractExportItem> taskList, final File exportFolder) throws InterruptedException, ExecutionException, OseeCoreException { @@ -170,18 +163,6 @@ final class ExportController implements IExchangeTaskListener { futures.add(this.executorService.submit(exportItem)); } - futures.add(this.executorService.submit(new Runnable() { - @Override - public void run() { - try { - oseeServices.getModelingService().exportOseeTypes(new NullProgressMonitor(), - new FileOutputStream(new File(exportFolder, "OseeModel.osee"))); - } catch (Exception ex) { - onException("model export", ex); - } - } - })); - for (Future<?> future : futures) { future.get(); if (!this.errorList.isEmpty()) { diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportImportXml.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportImportXml.java index fa6a96d78a8..c3619fcca06 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportImportXml.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ExportImportXml.java @@ -49,6 +49,7 @@ public class ExportImportXml { public static final String ART_TYPE_ID = "art_type_id"; public static final String REL_TYPE_ID = "rel_link_type_id"; public static final String ATTR_TYPE_ID = "attr_type_id"; + public static final String TYPE_MODEL = "osee_type_model"; private ExportImportXml() { } diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java index 69b17cb6fe5..2a7a57ab43f 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/ImportController.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.osee.framework.branch.management.exchange; +import java.net.URI; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; @@ -25,6 +26,7 @@ import org.eclipse.osee.framework.branch.management.exchange.handler.BranchDataS import org.eclipse.osee.framework.branch.management.exchange.handler.DbTableSaxHandler; import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; import org.eclipse.osee.framework.branch.management.exchange.handler.IExportItem; +import org.eclipse.osee.framework.branch.management.exchange.handler.ImportOseeModelHandler; import org.eclipse.osee.framework.branch.management.exchange.handler.ManifestSaxHandler; import org.eclipse.osee.framework.branch.management.exchange.handler.MetaData; import org.eclipse.osee.framework.branch.management.exchange.handler.MetaDataSaxHandler; @@ -38,7 +40,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeExceptions; import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.core.operation.OperationLogger; -import org.eclipse.osee.framework.database.core.ConnectionHandler; +import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.database.core.DbTransaction; import org.eclipse.osee.framework.database.core.IOseeStatement; import org.eclipse.osee.framework.database.core.OseeConnection; @@ -150,6 +152,11 @@ public final class ImportController { setup(); + URI modelUri = exportDataProvider.getFile(manifestHandler.getTypeModel()).toURI(); + ImportOseeModelHandler modelHandler = + new ImportOseeModelHandler(oseeServices.getModelingService(), logger, modelUri); + Operations.executeWorkAndCheckStatus(modelHandler); + ImportBranchesTx importBranchesTx = new ImportBranchesTx(); importBranchesTx.execute(); @@ -171,16 +178,15 @@ public final class ImportController { } } - private void initializeHandler(OseeConnection connection, BaseDbSaxHandler handler, MetaData metadata) { - handler.setConnection(connection); + private void initializeHandler(BaseDbSaxHandler handler, MetaData metadata) { handler.setMetaData(metadata); handler.setOptions(options); handler.setTranslator(translator); } - private void process(BaseDbSaxHandler handler, OseeConnection connection, IExportItem exportItem) throws OseeCoreException { + private void process(BaseDbSaxHandler handler, IExportItem exportItem) throws OseeCoreException { MetaData metadata = checkMetadata(exportItem); - initializeHandler(connection, handler, metadata); + initializeHandler(handler, metadata); boolean cleanDataTable = options.getBoolean(ImportOptions.CLEAN_BEFORE_IMPORT.name()); cleanDataTable &= !doesSavePointExist(currentSavePoint); OseeLog.logf(this.getClass(), Level.INFO, "Importing: [%s] %s Meta: %s", exportItem.getSource(), @@ -216,7 +222,7 @@ public final class ImportController { currentSavePoint = item.getSource(); handler.setExportItem(item); if (!doesSavePointExist(currentSavePoint)) { - process(handler, ConnectionHandler.getConnection(), item); + process(handler, item); handler.store(); handler.reset(); addSavePoint(currentSavePoint); @@ -294,17 +300,24 @@ public final class ImportController { protected void handleTxWork(OseeConnection connection) throws OseeCoreException { // Import Branches currentSavePoint = manifestHandler.getBranchFile().getSource(); - process(branchHandler, connection, manifestHandler.getBranchFile()); + branchHandler.setConnection(connection); + process(branchHandler, manifestHandler.getBranchFile()); if (!doesSavePointExist(currentSavePoint)) { - branchesStored = branchHandler.store(true, branchesToImport); + branchesStored = branchHandler.store(connection, true, branchesToImport); addSavePoint(currentSavePoint); } else { // This step has already been performed - only get branches needed for remaining operations OseeLog.logf(this.getClass(), Level.INFO, "Save point found for: [%s] - skipping", currentSavePoint); - branchesStored = branchHandler.store(false, branchesToImport); + branchesStored = branchHandler.store(connection, false, branchesToImport); } } + + @Override + protected void handleTxFinally() throws OseeCoreException { + super.handleTxFinally(); + branchHandler.setConnection(null); + } } private final class CommitImportSavePointsTx extends DbTransaction { diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractDbExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractDbExportItem.java index a034c664908..15833b074aa 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractDbExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractDbExportItem.java @@ -15,7 +15,7 @@ import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; /** * @author Roberto E. Escobar */ -public abstract class AbstractDbExportItem extends AbstractExportItem { +public abstract class AbstractDbExportItem extends AbstractXmlExportItem { private int joinQueryId; diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractExportItem.java index 2d7c6367941..be8de7080d6 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractExportItem.java @@ -11,14 +11,10 @@ package org.eclipse.osee.framework.branch.management.exchange.export; import java.io.File; -import java.io.IOException; -import java.io.Writer; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.eclipse.osee.framework.branch.management.IExchangeTaskListener; -import org.eclipse.osee.framework.branch.management.exchange.ExchangeUtil; -import org.eclipse.osee.framework.branch.management.exchange.ExportImportXml; import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; import org.eclipse.osee.framework.jdk.core.type.PropertyStore; @@ -36,7 +32,7 @@ public abstract class AbstractExportItem implements Runnable { public AbstractExportItem(ExportItem id) { this.id = id; - this.fileName = id.toString() + ExportImportXml.XML_EXTENSION; + this.fileName = id.getFileName(); this.options = null; this.cancel = false; this.exportListeners = Collections.synchronizedSet(new HashSet<IExchangeTaskListener>()); @@ -101,28 +97,13 @@ public abstract class AbstractExportItem implements Runnable { @Override public final void run() { long startTime = System.currentTimeMillis(); - Writer writer = null; try { - writer = ExchangeUtil.createXmlWriter(getWriteLocation(), getFileName(), getBufferSize()); - ExportImportXml.openXmlNode(writer, ExportImportXml.DATA); - if (isCancel() != true) { - try { - doWork(writer); - } catch (Exception ex) { - notifyOnExportException(ex); - } + if (!isCancel()) { + executeWork(); } - ExportImportXml.closeXmlNode(writer, ExportImportXml.DATA); - } catch (IOException ex) { + } catch (Exception ex) { notifyOnExportException(ex); } finally { - if (writer != null) { - try { - writer.close(); - } catch (IOException ex) { - notifyOnExportException(ex); - } - } notifyOnExportItemCompleted(System.currentTimeMillis() - startTime); } } @@ -139,7 +120,7 @@ public abstract class AbstractExportItem implements Runnable { } } - protected abstract void doWork(Appendable appendable) throws Exception; + protected abstract void executeWork() throws Exception; public void setCancel(boolean cancel) { this.cancel = cancel; diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractXmlExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractXmlExportItem.java new file mode 100644 index 00000000000..82a9ca8ae80 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/AbstractXmlExportItem.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 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.export; + +import java.io.Writer; +import org.eclipse.osee.framework.branch.management.exchange.ExchangeUtil; +import org.eclipse.osee.framework.branch.management.exchange.ExportImportXml; +import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; +import org.eclipse.osee.framework.jdk.core.util.Lib; + +/** + * @author Roberto E. Escobar + */ +public abstract class AbstractXmlExportItem extends AbstractExportItem { + + public AbstractXmlExportItem(ExportItem id) { + super(id); + } + + @Override + public final void executeWork() throws Exception { + Writer writer = null; + try { + writer = ExchangeUtil.createXmlWriter(getWriteLocation(), getFileName(), getBufferSize()); + ExportImportXml.openXmlNode(writer, ExportImportXml.DATA); + if (!isCancel()) { + try { + doWork(writer); + } catch (Exception ex) { + notifyOnExportException(ex); + } + } + ExportImportXml.closeXmlNode(writer, ExportImportXml.DATA); + } finally { + Lib.close(writer); + } + } + + protected abstract void doWork(Appendable appendable) throws Exception; + +} diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/DbTableExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/DbTableExportItem.java index fe23ae9707f..d243d5735b7 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/DbTableExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/DbTableExportItem.java @@ -24,7 +24,9 @@ import org.eclipse.osee.framework.branch.management.exchange.OseeServices; import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; import org.eclipse.osee.framework.branch.management.internal.Activator; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.model.AbstractOseeType; import org.eclipse.osee.framework.core.model.cache.AbstractOseeCache; +import org.eclipse.osee.framework.core.util.HexUtil; import org.eclipse.osee.framework.database.core.IOseeStatement; import org.eclipse.osee.framework.jdk.core.type.Pair; import org.eclipse.osee.framework.jdk.core.type.PropertyStore; @@ -195,10 +197,21 @@ public class DbTableExportItem extends AbstractDbExportItem { } } - private void handleTypeId(Appendable appendable, Object value, AbstractOseeCache<?, ?> cache) throws IOException, OseeCoreException { - int typeId = (Integer) value; - String guid = String.valueOf(cache.getById(typeId).getGuid()); - ExportImportXml.addXmlAttribute(appendable, ExportImportXml.TYPE_GUID, guid); + private void handleTypeId(Appendable appendable, Object value, AbstractOseeCache<Long, ? extends AbstractOseeType<Long>> cache) throws IOException, OseeCoreException { + int typeId = -1; + if (value instanceof Short) { + Short xShort = (Short) value; + typeId = xShort.intValue(); + } else if (value instanceof Integer) { + typeId = (Integer) value; + } else if (value instanceof Long) { + typeId = ((Long) value).intValue(); + } else { + throw new OseeCoreException("Undefined Type [%s]", value != null ? value.getClass().getSimpleName() : value); + } + AbstractOseeType<Long> type = cache.getById(typeId); + String uuid = HexUtil.toString(type.getGuid()); + ExportImportXml.addXmlAttribute(appendable, ExportImportXml.TYPE_GUID, uuid); } private void handleStringContent(Appendable appendable, Object value, String tag) throws IOException { diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/ManifestExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/ManifestExportItem.java index 1f229bc9554..232edd59315 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/ManifestExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/ManifestExportItem.java @@ -22,7 +22,7 @@ import org.eclipse.osee.framework.database.core.OseeInfo; /** * @author Roberto E. Escobar */ -public class ManifestExportItem extends AbstractExportItem { +public class ManifestExportItem extends AbstractXmlExportItem { private final List<AbstractExportItem> exportItems; public ManifestExportItem(List<AbstractExportItem> exportItems) { diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/MetadataExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/MetadataExportItem.java index 05afbdec800..8bf0967f23b 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/MetadataExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/MetadataExportItem.java @@ -27,7 +27,7 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; /** * @author Roberto E. Escobar */ -public class MetadataExportItem extends AbstractDbExportItem { +public class MetadataExportItem extends AbstractXmlExportItem { private final List<AbstractExportItem> exportItems; private final DatabaseMetaData metaData; diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/OseeTypeModelExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/OseeTypeModelExportItem.java new file mode 100644 index 00000000000..8ac4d724a9a --- /dev/null +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/export/OseeTypeModelExportItem.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 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.export; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.osee.framework.branch.management.exchange.handler.ExportItem; +import org.eclipse.osee.framework.core.message.IOseeModelingService; +import org.eclipse.osee.framework.jdk.core.util.Lib; + +/** + * @author Roberto E. Escobar + */ +public class OseeTypeModelExportItem extends AbstractExportItem { + private final IOseeModelingService modelingService; + + public OseeTypeModelExportItem(IOseeModelingService modelingService) { + super(ExportItem.EXPORT_TYPE_MODEL); + this.modelingService = modelingService; + } + + @Override + protected void executeWork() throws Exception { + File outputFile = new File(getWriteLocation(), getFileName()); + OutputStream outputStream = null; + try { + outputStream = new FileOutputStream(outputFile); + modelingService.exportOseeTypes(new NullProgressMonitor(), outputStream); + } finally { + Lib.close(outputStream); + } + } +} diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java index a5bb6443b17..1e852259892 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java @@ -21,8 +21,9 @@ import org.eclipse.osee.framework.branch.management.internal.Activator; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.database.IOseeDatabaseService; import org.eclipse.osee.framework.database.core.OseeConnection; -import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.jdk.core.type.PropertyStore; +import org.eclipse.osee.framework.jdk.core.util.Lib; +import org.eclipse.osee.framework.logging.OseeLog; /** * @author Roberto E. Escobar @@ -33,7 +34,6 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { private final int cacheLimit; private final boolean isCacheAll; - private OseeConnection connection; private MetaData metadata; private TranslationManager translator; private PropertyStore options; @@ -49,7 +49,6 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { this.options = new PropertyStore(); this.translator = null; this.metadata = null; - this.connection = null; this.isCacheAll = isCacheAll; this.cacheLimit = cacheLimit; this.data = new ArrayList<Object[]>(); @@ -69,18 +68,10 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { this.metadata = metadata; } - public void setConnection(OseeConnection connection) { - this.connection = connection; - } - public void setTranslator(TranslationManager translator) { this.translator = translator; } - protected OseeConnection getConnection() { - return this.connection; - } - protected MetaData getMetaData() { return this.metadata; } @@ -97,7 +88,11 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { this.data.add(objects); } - protected void store(OseeConnection connection) throws OseeCoreException { + public void store() throws OseeCoreException { + store(null); + } + + public void store(OseeConnection connection) throws OseeCoreException { if (!data.isEmpty()) { getDatabaseService().runBatchUpdate(connection, getMetaData().getQuery(), data); data.clear(); @@ -106,27 +101,32 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { private boolean isTruncateSupported() throws OseeCoreException { boolean isTruncateSupported = false; - DatabaseMetaData metaData = connection.getMetaData(); - ResultSet resultSet = null; + OseeConnection connection = service.getConnection(); try { - resultSet = metaData.getTablePrivileges(null, null, getMetaData().getTableName().toUpperCase()); - while (resultSet.next()) { - String value = resultSet.getString("PRIVILEGE"); - if ("TRUNCATE".equalsIgnoreCase(value)) { - isTruncateSupported = true; - break; + DatabaseMetaData metaData = connection.getMetaData(); + ResultSet resultSet = null; + try { + resultSet = metaData.getTablePrivileges(null, null, getMetaData().getTableName().toUpperCase()); + while (resultSet.next()) { + String value = resultSet.getString("PRIVILEGE"); + if ("TRUNCATE".equalsIgnoreCase(value)) { + isTruncateSupported = true; + break; + } } - } - } catch (SQLException ex1) { - OseeLog.log(Activator.class, Level.INFO, ex1); - } finally { - if (resultSet != null) { - try { - resultSet.close(); - } catch (SQLException ex) { - // Do Nothing + } catch (SQLException ex1) { + OseeLog.log(Activator.class, Level.INFO, ex1); + } finally { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException ex) { + // Do Nothing + } } } + } finally { + Lib.close(connection); } return isTruncateSupported; } @@ -135,7 +135,7 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { String cmd = isTruncateSupported() ? "TRUNCATE TABLE" : "DELETE FROM"; String deleteSql = String.format("%s %s", cmd, getMetaData().getTableName()); try { - getDatabaseService().runPreparedUpdate(connection, deleteSql); + getDatabaseService().runPreparedUpdate(deleteSql); } catch (OseeCoreException ex) { OseeLog.logf(Activator.class, Level.INFO, ex, "Error clearing: %s", deleteSql); throw ex; @@ -147,7 +147,6 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { } public void reset() { - this.connection = null; this.translator = null; this.options = null; this.metadata = null; diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BranchDataSaxHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BranchDataSaxHandler.java index 1dd925cd9eb..f502af752a5 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BranchDataSaxHandler.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BranchDataSaxHandler.java @@ -28,6 +28,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeDataStoreException; import org.eclipse.osee.framework.database.IOseeDatabaseService; import org.eclipse.osee.framework.database.core.IOseeStatement; +import org.eclipse.osee.framework.database.core.OseeConnection; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; @@ -37,6 +38,7 @@ import org.eclipse.osee.framework.logging.OseeLog; public class BranchDataSaxHandler extends BaseDbSaxHandler { private final Map<Integer, BranchData> idToImportFileBranchData; + private OseeConnection connection; public static BranchDataSaxHandler createWithCacheAll(IOseeDatabaseService service) { return new BranchDataSaxHandler(service, true, 0); @@ -49,6 +51,7 @@ public class BranchDataSaxHandler extends BaseDbSaxHandler { private BranchDataSaxHandler(IOseeDatabaseService service, boolean isCacheAll, int cacheLimit) { super(service, isCacheAll, cacheLimit); this.idToImportFileBranchData = new HashMap<Integer, BranchData>(); + this.connection = null; } @Override @@ -113,11 +116,11 @@ public class BranchDataSaxHandler extends BaseDbSaxHandler { } } - public int[] store(boolean writeToDb, int... branchesToImport) throws OseeCoreException { + public int[] store(OseeConnection connection, boolean writeToDb, int... branchesToImport) throws OseeCoreException { checkSelectedBranches(branchesToImport); Collection<BranchData> branchesToStore = getSelectedBranchesToImport(branchesToImport); - branchesToStore = checkTargetDbBranches(branchesToStore); + branchesToStore = checkTargetDbBranches(connection, branchesToStore); int[] toReturn = new int[branchesToStore.size()]; int index = 0; for (BranchData branchData : branchesToStore) { @@ -143,7 +146,7 @@ public class BranchDataSaxHandler extends BaseDbSaxHandler { index++; } if (writeToDb) { - super.store(getConnection()); + super.store(connection); } return toReturn; } @@ -184,13 +187,13 @@ public class BranchDataSaxHandler extends BaseDbSaxHandler { return newValue.intValue(); } - private Collection<BranchData> checkTargetDbBranches(Collection<BranchData> selectedBranches) throws OseeCoreException { + private Collection<BranchData> checkTargetDbBranches(OseeConnection connection, Collection<BranchData> selectedBranches) throws OseeCoreException { Map<String, BranchData> guidToImportFileBranchData = new HashMap<String, BranchData>(); for (BranchData data : selectedBranches) { guidToImportFileBranchData.put(data.getBranchGuid(), data); } - IOseeStatement chStmt = getDatabaseService().getStatement(getConnection()); + IOseeStatement chStmt = getDatabaseService().getStatement(connection); try { chStmt.runPreparedQuery("select * from osee_branch"); while (chStmt.next()) { @@ -216,4 +219,24 @@ public class BranchDataSaxHandler extends BaseDbSaxHandler { String.format("DELETE FROM %s where NOT branch_type = " + BranchType.SYSTEM_ROOT.getValue(), getMetaData().getTableName())); } + + public void setConnection(OseeConnection connection) { + this.connection = connection; + } + + public OseeConnection getConnection() { + return connection; + } + + @Override + public void reset() { + super.reset(); + setConnection(null); + } + + @Override + public void store() throws OseeCoreException { + super.store(getConnection()); + } + } diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/DbTableSaxHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/DbTableSaxHandler.java index c8a1378fdbb..8b5df418ca5 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/DbTableSaxHandler.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/DbTableSaxHandler.java @@ -70,10 +70,6 @@ public class DbTableSaxHandler extends BaseDbSaxHandler { } } - public void store() throws OseeCoreException { - super.store(this.getConnection()); - } - private String importBinaryContent(String uriValue, String gammaId) throws OseeCoreException { String relativePath = Lib.isWindows() ? uriValue : uriValue.replaceAll("\\\\", File.separator); String entrySearch = ExportImportXml.RESOURCE_FOLDER_NAME + File.separator + relativePath; diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ExportItem.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ExportItem.java index ac7b07f45f5..fce7acf9dcf 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ExportItem.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ExportItem.java @@ -15,6 +15,7 @@ package org.eclipse.osee.framework.branch.management.exchange.handler; */ public enum ExportItem implements IExportItem { EXPORT_MANIFEST(""), + EXPORT_TYPE_MODEL("osee_type_model"), EXPORT_DB_SCHEMA("db.metadata"), OSEE_BRANCH_DATA("osee_branch"), OSEE_TX_DETAILS_DATA("osee_tx_details"), @@ -41,7 +42,8 @@ public enum ExportItem implements IExportItem { @Override public String getFileName() { - return this + ".xml"; + String extension = this != EXPORT_TYPE_MODEL ? ".xml" : ".osee"; + return this + extension; } @Override diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ImportOseeModelHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ImportOseeModelHandler.java new file mode 100644 index 00000000000..f82997b012f --- /dev/null +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ImportOseeModelHandler.java @@ -0,0 +1,62 @@ +/* + * Created on Aug 31, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.framework.branch.management.exchange.handler; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URL; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.osee.framework.branch.management.internal.Activator; +import org.eclipse.osee.framework.core.message.IOseeModelingService; +import org.eclipse.osee.framework.core.message.OseeImportModelRequest; +import org.eclipse.osee.framework.core.message.OseeImportModelResponse; +import org.eclipse.osee.framework.core.operation.AbstractOperation; +import org.eclipse.osee.framework.core.operation.OperationLogger; +import org.eclipse.osee.framework.jdk.core.util.Lib; + +public class ImportOseeModelHandler extends AbstractOperation { + + private final IOseeModelingService modelingService; + private final URI model; + + public ImportOseeModelHandler(IOseeModelingService modelingService, OperationLogger logger, URI model) { + super("Import Exchange Type Model", Activator.PLUGIN_ID, logger); + this.modelingService = modelingService; + this.model = model; + } + + private String getModel(URL url) throws IOException { + InputStream inputStream = null; + try { + inputStream = new BufferedInputStream(url.openStream()); + return Lib.inputStreamToString(inputStream); + } finally { + Lib.close(inputStream); + } + } + + private String getName(URI uri) { + String name = uri.toASCIIString(); + int index = name.lastIndexOf("/"); + if (index > 0) { + name = name.substring(index + 1, name.length()); + } + return name; + } + + @Override + protected void doWork(IProgressMonitor monitor) throws Exception { + OseeImportModelRequest modelRequest = + new OseeImportModelRequest(getName(model), getModel(model.toURL()), false, false, true); + OseeImportModelResponse response = new OseeImportModelResponse(); + + logf("Updating Type Model with [%s]", model); + modelingService.importOseeTypes(monitor, true, modelRequest, response); + log("Type Model Import complete"); + } +} diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ManifestSaxHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ManifestSaxHandler.java index b66bb2ca9cc..47ee72f07dd 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ManifestSaxHandler.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/ManifestSaxHandler.java @@ -27,6 +27,7 @@ import org.xml.sax.SAXException; public class ManifestSaxHandler extends BaseExportImportSaxHandler { private final List<IExportItem> filesToImport; + private String typeModelFile; private String metadataFile; private IExportItem branchFile; private String sourceDatabaseId; @@ -36,6 +37,7 @@ public class ManifestSaxHandler extends BaseExportImportSaxHandler { public ManifestSaxHandler() { super(); this.filesToImport = new ArrayList<IExportItem>(); + this.typeModelFile = null; this.metadataFile = null; this.branchFile = null; this.sourceExportDate = null; @@ -59,7 +61,9 @@ public class ManifestSaxHandler extends BaseExportImportSaxHandler { String source = fieldMap.get(ExportImportXml.SOURCE); if (Strings.isValid(fileName) && Strings.isValid(source)) { - if (source.equals(ExportImportXml.DB_SCHEMA)) { + if (source.equals(ExportImportXml.TYPE_MODEL)) { + typeModelFile = fileName; + } else if (source.equals(ExportImportXml.DB_SCHEMA)) { this.metadataFile = fileName; } else { ImportFile importFile = new ImportFile(fileName, source, priority); @@ -103,6 +107,10 @@ public class ManifestSaxHandler extends BaseExportImportSaxHandler { return filesToImport; } + public String getTypeModel() { + return typeModelFile; + } + public class ImportFile implements IExportItem { private final String fileName; private final String source; @@ -151,4 +159,5 @@ public class ManifestSaxHandler extends BaseExportImportSaxHandler { return String.format("ImportFile [fileName=%s, source=%s, priority=%d]", fileName, source, priority); } } + }
\ No newline at end of file |