aboutsummaryrefslogtreecommitdiffstats
path: root/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java
diff options
context:
space:
mode:
Diffstat (limited to 'cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java')
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java
new file mode 100644
index 0000000..86ff60b
--- /dev/null
+++ b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java
@@ -0,0 +1,131 @@
+/*
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this code except in compliance
+ with the License. You may obtain a copy of the License
+ at http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ permissions and limitations under the License.
+
+*/
+package org.onap.dcae.cdf.util.common;
+
+import java.util.zip.GZIPOutputStream;
+import java.util.zip.ZipOutputStream;
+import java.util.zip.ZipEntry;
+// import java.io.InputStream;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.io.File;
+import java.io.IOException;
+
+public class Compress {
+
+ /**
+ * Compress a file with the gzip algorithm, sending output to outFilename.
+ * Based on code at http://www.java-tips.org/java-se-tips/java.util.zip/how-to-compress-a-file-in-the-gip-format.html.
+ */
+ public static void gzip(String inFilename, String outFilename) throws IOException {
+ String tmpFilename = outFilename + ".tmp";
+ try {
+ // Create the GZIP output stream
+ GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(tmpFilename));
+
+ // Open the input file
+ FileInputStream in = new FileInputStream(inFilename);
+
+ // Transfer bytes from the input file to the GZIP output stream
+ byte[] buf = new byte[4096];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+
+ // Complete the GZIP file
+ out.finish();
+ out.close();
+
+ // rename .gz.tmp to .gz
+ File target = new File(outFilename);
+ if (target.exists()) target.delete();
+ File file = new File(tmpFilename);
+ boolean result = file.renameTo(target);
+ if (!result) throw new IOException("Cannot rename " + tmpFilename + " to " + outFilename);
+ } catch (IOException e) {
+ // If we can't write the gzip file, remove it and pass on the exception.
+ File f = new File(outFilename);
+ f.delete();
+ throw e;
+ }
+ }
+
+ /**
+ * Compress a file with the gzip algorithm, sending output to filename+".gz".
+ */
+ public static void gzip(String filename) throws IOException {
+ gzip(filename, filename + ".gz");
+ }
+
+ /**
+ * Compress a file with the zip algorithm, sending output to outFilename
+ * Based on code at http://www.java-tips.org/java-se-tips/java.util.zip/how-to-compress-a-file-in-the-gip-format.html.
+ */
+ public static void zip(String inFilename, String outFilename) throws IOException {
+ String tmpFilename = outFilename + ".tmp";
+ try {
+ // Create the ZIP output stream
+ ZipOutputStream out = new ZipOutputStream(new FileOutputStream(tmpFilename));
+ ZipEntry zipEntry = new ZipEntry(inFilename);
+ out.putNextEntry(zipEntry);
+
+ // Open the input file
+ FileInputStream in = new FileInputStream(inFilename);
+
+ // Transfer bytes from the input file to the ZIP output stream
+ byte[] buf = new byte[4096];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+
+ // Complete the ZIP file
+ out.finish();
+ out.close();
+
+ // rename .zip.tmp to .zip
+ File target = new File(outFilename);
+ if (target.exists()) target.delete();
+ File file = new File(tmpFilename);
+ boolean result = file.renameTo(target);
+ if (!result) throw new IOException("Cannot rename " + tmpFilename + " to " + outFilename);
+ } catch (IOException e) {
+ // If we can't write the zip file, remove it and pass on the exception.
+ File f = new File(outFilename);
+ f.delete();
+ throw e;
+ }
+ }
+
+ /**
+ * Compress a file with the gzip algorithm, sending output to filename+".zip".
+ */
+ public static void zip(String filename) throws IOException {
+ zip(filename, filename + ".zip");
+ }
+
+ public static void main(String args[]) throws Exception {
+ if (args.length == 1) {
+ gzip(args[0]);
+ zip(args[0]);
+ } else {
+ System.err.println("Usage: java Compress filename");
+ }
+ }
+}