1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.compress.archivers.sevenz; 18 19 import java.util.BitSet; 20 21 final class Archive { 22 23 private static String lengthOf(final long[] a) { 24 return a == null ? "(null)" : Integer.toString(a.length); 25 } 26 27 private static String lengthOf(final Object[] a) { 28 return a == null ? "(null)" : Integer.toString(a.length); 29 } 30 31 /** Offset from beginning of file + SIGNATURE_HEADER_SIZE to packed streams. */ 32 long packPos; 33 34 /** Size of each packed stream. */ 35 long[] packSizes = {}; 36 37 /** Whether each particular packed streams has a CRC. */ 38 BitSet packCrcsDefined; 39 40 /** CRCs for each packed stream, valid only if that packed stream has one. */ 41 long[] packCrcs; 42 43 /** Properties of solid compression blocks. */ 44 Folder[] folders = Folder.EMPTY_FOLDER_ARRAY; 45 46 /** Temporary properties for non-empty files (subsumed into the files array later). */ 47 SubStreamsInfo subStreamsInfo; 48 49 /** The files and directories in the archive. */ 50 SevenZArchiveEntry[] files = SevenZArchiveEntry.EMPTY_SEVEN_Z_ARCHIVE_ENTRY_ARRAY; 51 52 /** Mapping between folders, files and streams. */ 53 StreamMap streamMap; 54 55 @Override 56 public String toString() { 57 return "Archive with packed streams starting at offset " + packPos + ", " + lengthOf(packSizes) + " pack sizes, " + lengthOf(packCrcs) + " CRCs, " 58 + lengthOf(folders) + " folders, " + lengthOf(files) + " files and " + streamMap; 59 } 60 }