View Javadoc
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 }