/*
* 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;
}
}