1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 package org.apache.commons.compress.compressors.bzip2; 20 21 import java.util.LinkedHashMap; 22 import java.util.Map; 23 24 import org.apache.commons.compress.compressors.FileNameUtil; 25 26 /** 27 * Utility code for the BZip2 compression format. 28 * 29 * @ThreadSafe 30 * @since 1.1 31 */ 32 public abstract class BZip2Utils { 33 34 private static final FileNameUtil fileNameUtil; 35 36 static { 37 final Map<String, String> uncompressSuffix = new LinkedHashMap<>(); 38 // backwards compatibility: BZip2Utils never created the short 39 // tbz form, so .tar.bz2 has to be added explicitly 40 uncompressSuffix.put(".tar.bz2", ".tar"); 41 uncompressSuffix.put(".tbz2", ".tar"); 42 uncompressSuffix.put(".tbz", ".tar"); 43 uncompressSuffix.put(".bz2", ""); 44 uncompressSuffix.put(".bz", ""); 45 fileNameUtil = new FileNameUtil(uncompressSuffix, ".bz2"); 46 } 47 48 /** 49 * Maps the given file name to the name that the file should have after compression with bzip2. Currently this method simply appends the suffix ".bz2" to 50 * the file name based on the standard behavior of the "bzip2" program, but a future version may implement a more complex mapping if a new widely used 51 * naming pattern emerges. 52 * 53 * @param fileName name of a file 54 * @return name of the corresponding compressed file 55 * @deprecated Use {@link #getCompressedFileName(String)}. 56 */ 57 @Deprecated 58 public static String getCompressedFilename(final String fileName) { 59 return fileNameUtil.getCompressedFileName(fileName); 60 } 61 62 /** 63 * Maps the given file name to the name that the file should have after compression with bzip2. Currently this method simply appends the suffix ".bz2" to 64 * the file name based on the standard behavior of the "bzip2" program, but a future version may implement a more complex mapping if a new widely used 65 * naming pattern emerges. 66 * 67 * @param fileName name of a file 68 * @return name of the corresponding compressed file 69 * @since 1.25.0 70 */ 71 public static String getCompressedFileName(final String fileName) { 72 return fileNameUtil.getCompressedFileName(fileName); 73 } 74 75 /** 76 * Maps the given name of a bzip2-compressed file to the name that the file should have after uncompression. Commonly used file type specific suffixes like 77 * ".tbz" or ".tbz2" are automatically detected and correctly mapped. For example the name "package.tbz2" is mapped to "package.tar". And any file names 78 * with the generic ".bz2" suffix (or any other generic bzip2 suffix) is mapped to a name without that suffix. If no bzip2 suffix is detected, then the file 79 * name is returned unmapped. 80 * 81 * @param fileName name of a file 82 * @return name of the corresponding uncompressed file 83 * @deprecated Use {@link #getUncompressedFileName(String)}. 84 */ 85 @Deprecated 86 public static String getUncompressedFilename(final String fileName) { 87 return fileNameUtil.getUncompressedFileName(fileName); 88 } 89 90 /** 91 * Maps the given name of a bzip2-compressed file to the name that the file should have after uncompression. Commonly used file type specific suffixes like 92 * ".tbz" or ".tbz2" are automatically detected and correctly mapped. For example the name "package.tbz2" is mapped to "package.tar". And any file names 93 * with the generic ".bz2" suffix (or any other generic bzip2 suffix) is mapped to a name without that suffix. If no bzip2 suffix is detected, then the file 94 * name is returned unmapped. 95 * 96 * @param fileName name of a file 97 * @return name of the corresponding uncompressed file 98 * @since 1.25.0 99 */ 100 public static String getUncompressedFileName(final String fileName) { 101 return fileNameUtil.getUncompressedFileName(fileName); 102 } 103 104 /** 105 * Detects common bzip2 suffixes in the given file name. 106 * 107 * @param fileName name of a file 108 * @return {@code true} if the file name has a common bzip2 suffix, {@code false} otherwise 109 * @deprecated Use {@link #isCompressedFileName(String)}. 110 */ 111 @Deprecated 112 public static boolean isCompressedFilename(final String fileName) { 113 return fileNameUtil.isCompressedFileName(fileName); 114 } 115 116 /** 117 * Detects common bzip2 suffixes in the given file name. 118 * 119 * @param fileName name of a file 120 * @return {@code true} if the file name has a common bzip2 suffix, {@code false} otherwise 121 * @since 1.25.0 122 */ 123 public static boolean isCompressedFileName(final String fileName) { 124 return fileNameUtil.isCompressedFileName(fileName); 125 } 126 127 /** Private constructor to prevent instantiation of this utility class. */ 128 private BZip2Utils() { 129 } 130 131 }