/* * Copyright 2010 Srikanth Reddy Lingala * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file 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 net.lingala.zip4j.model; import java.util.TimeZone; import net.lingala.zip4j.util.InternalZipConstants; import net.lingala.zip4j.util.Zip4jConstants; import net.lingala.zip4j.util.Zip4jUtil; public class ZipParameters implements Cloneable { private int compressionMethod; private int compressionLevel; private boolean encryptFiles; private int encryptionMethod; private boolean readHiddenFiles; private char[] password; private int aesKeyStrength; private boolean includeRootFolder; private String rootFolderInZip; private TimeZone timeZone; private int sourceFileCRC; private String defaultFolderPath; private String fileNameInZip; private boolean isSourceExternalStream; public ZipParameters() { compressionMethod = Zip4jConstants.COMP_DEFLATE; encryptFiles = false; readHiddenFiles = true; encryptionMethod = Zip4jConstants.ENC_NO_ENCRYPTION; aesKeyStrength = -1; includeRootFolder = true; timeZone = TimeZone.getDefault(); } public int getCompressionMethod() { return compressionMethod; } public void setCompressionMethod(int compressionMethod) { this.compressionMethod = compressionMethod; } public boolean isEncryptFiles() { return encryptFiles; } public void setEncryptFiles(boolean encryptFiles) { this.encryptFiles = encryptFiles; } public int getEncryptionMethod() { return encryptionMethod; } public void setEncryptionMethod(int encryptionMethod) { this.encryptionMethod = encryptionMethod; } public int getCompressionLevel() { return compressionLevel; } public void setCompressionLevel(int compressionLevel) { this.compressionLevel = compressionLevel; } public boolean isReadHiddenFiles() { return readHiddenFiles; } public void setReadHiddenFiles(boolean readHiddenFiles) { this.readHiddenFiles = readHiddenFiles; } public Object clone() throws CloneNotSupportedException { return super.clone(); } public char[] getPassword() { return password; } /** * Sets the password for the zip file or the file being added<br> * <b>Note</b>: For security reasons, usage of this method is discouraged. Use * setPassword(char[]) instead. As strings are immutable, they cannot be wiped * out from memory explicitly after usage. Therefore, usage of Strings to store * passwords is discouraged. More info here: * http://docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html#PBEEx * @param password */ public void setPassword(String password) { if (password == null) return; setPassword(password.toCharArray()); } public void setPassword(char[] password) { this.password = password; } public int getAesKeyStrength() { return aesKeyStrength; } public void setAesKeyStrength(int aesKeyStrength) { this.aesKeyStrength = aesKeyStrength; } public boolean isIncludeRootFolder() { return includeRootFolder; } public void setIncludeRootFolder(boolean includeRootFolder) { this.includeRootFolder = includeRootFolder; } public String getRootFolderInZip() { return rootFolderInZip; } public void setRootFolderInZip(String rootFolderInZip) { if (Zip4jUtil.isStringNotNullAndNotEmpty(rootFolderInZip)) { if (!rootFolderInZip.endsWith("\\") && !rootFolderInZip.endsWith("/")) { rootFolderInZip = rootFolderInZip + InternalZipConstants.FILE_SEPARATOR; } rootFolderInZip = rootFolderInZip.replaceAll("\\\\", "/"); // if (rootFolderInZip.endsWith("/")) { // rootFolderInZip = rootFolderInZip.substring(0, rootFolderInZip.length() - 1); // rootFolderInZip = rootFolderInZip + "\\"; // } } this.rootFolderInZip = rootFolderInZip; } public TimeZone getTimeZone() { return timeZone; } public void setTimeZone(TimeZone timeZone) { this.timeZone = timeZone; } public int getSourceFileCRC() { return sourceFileCRC; } public void setSourceFileCRC(int sourceFileCRC) { this.sourceFileCRC = sourceFileCRC; } public String getDefaultFolderPath() { return defaultFolderPath; } public void setDefaultFolderPath(String defaultFolderPath) { this.defaultFolderPath = defaultFolderPath; } public String getFileNameInZip() { return fileNameInZip; } public void setFileNameInZip(String fileNameInZip) { this.fileNameInZip = fileNameInZip; } public boolean isSourceExternalStream() { return isSourceExternalStream; } public void setSourceExternalStream(boolean isSourceExternalStream) { this.isSourceExternalStream = isSourceExternalStream; } }