Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/ExchangeUtil.java')
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/ExchangeUtil.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/ExchangeUtil.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/ExchangeUtil.java
new file mode 100644
index 00000000000..236e8543e1e
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/ExchangeUtil.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * 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.orcs.db.internal.exchange;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.exception.OseeExceptions;
+import org.eclipse.osee.framework.core.util.Conditions;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.type.PropertyStore;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.resource.management.IResource;
+import org.eclipse.osee.framework.resource.management.IResourceLocator;
+import org.eclipse.osee.framework.resource.management.IResourceManager;
+import org.eclipse.osee.logger.Log;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ExchangeUtil {
+ private static final String TEMP_NAME_PREFIX = "branch.xchng.";
+
+ private ExchangeUtil() {
+ }
+
+ public static Writer createXmlWriter(File tempFolder, String name, int bufferSize) throws IOException {
+ File indexFile = new File(tempFolder, name);
+ Writer writer =
+ new BufferedWriter(new OutputStreamWriter(new FileOutputStream(indexFile), ExportImportXml.XML_ENCODING),
+ bufferSize);
+ writer.write(ExportImportXml.XML_HEADER);
+ return writer;
+ }
+
+ public static Pair<Boolean, File> getTempExchangeFile(String exchangePath, Log logger, IResourceLocator locator, IResourceManager resourceManager) throws OseeCoreException {
+ File importSource = null;
+ boolean wasZipExtractionRequired = false;
+ IResource resource = resourceManager.acquire(locator, new PropertyStore());
+ Conditions.checkExpressionFailOnTrue(!resourceManager.exists(locator), "Error locating [%s]",
+ locator.getLocation());
+ File source = new File(resource.getLocation());
+ if (source.isFile()) {
+ wasZipExtractionRequired = true;
+ importSource = ExchangeUtil.createTempFolder(exchangePath);
+ logger.info("Extracting Exchange File: [%s] to [%s]", source.getName(), importSource);
+ try {
+ Lib.decompressStream(new FileInputStream(source), importSource);
+ } catch (Exception ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ }
+ wasZipExtractionRequired = true;
+ } else {
+ wasZipExtractionRequired = false;
+ importSource = source;
+ }
+ return new Pair<Boolean, File>(wasZipExtractionRequired, importSource);
+ }
+
+ public static void cleanUpTempExchangeFile(String exchangePath, Log logger, File exchangeSource, boolean wasZipExtractionRequired) {
+ if (wasZipExtractionRequired && exchangeSource != null && exchangeSource.exists() && !exchangeSource.getAbsolutePath().equals(
+ exchangePath)) {
+ logger.info("Deleting Branch Import Temp Folder - [%s]", exchangeSource);
+ Lib.deleteDir(exchangeSource);
+ }
+ }
+
+ public static File createTempFolder(String exchangePath) {
+ String fileName = TEMP_NAME_PREFIX + Lib.getDateTimeString();
+ File rootDirectory = new File(exchangePath, fileName + File.separator);
+ rootDirectory.mkdirs();
+ return rootDirectory;
+ }
+
+ public static void readExchange(File file, ContentHandler handler) throws OseeCoreException {
+ InputStream byteStream = null;
+ try {
+ byteStream = new BufferedInputStream(new FileInputStream(file));
+ XMLReader reader = XMLReaderFactory.createXMLReader();
+ reader.setContentHandler(handler);
+ reader.parse(new InputSource(byteStream));
+ } catch (Exception ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ } finally {
+ Lib.close(byteStream);
+ }
+ }
+} \ No newline at end of file

Back to the top