/*
* jSite - ClientGet.java - Copyright © 2008–2012 David Roden
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package de.todesbaum.util.freenet.fcp2;
import java.io.IOException;
import java.io.Writer;
/**
* Implementation of the “ClientGet” command.
*
* @author David ‘BombeB Roden <bombe@freenetproject.org>
*/
public class ClientGet extends Command {
private boolean ignoreDataStore;
private boolean dataStoreOnly;
private String uri;
private Verbosity verbosity = Verbosity.NONE;
private long maxSize = -1;
private long maxTempSize = -1;
private int maxRetries = -1;
private PriorityClass priorityClass = PriorityClass.INTERACTIVE;
private Persistence persistence = Persistence.CONNECTION;
private String clientToken;
private boolean global = false;
private ReturnType returnType = ReturnType.direct;
private boolean binaryBlob = false;
private String allowedMimeTypes = null;
private String filename = null;
private String tempFilename = null;
/**
*Creates a new ClientGet command with the given request identifier.
*
* @param identifier
* The request identifier
*/
public ClientGet(String identifier) {
super("ClientGet", identifier);
}
/**
* TODO
*
* @return
*/
public boolean isIgnoreDataStore() {
return ignoreDataStore;
}
/**
* TODO
*
* @param ignoreDataStore
*/
public void setIgnoreDataStore(boolean ignoreDataStore) {
this.ignoreDataStore = ignoreDataStore;
}
/**
* TODO
*
* @return
*/
public boolean isDataStoreOnly() {
return dataStoreOnly;
}
/**
* TODO
*
* @param dataStoreOnly
*/
public void setDataStoreOnly(boolean dataStoreOnly) {
this.dataStoreOnly = dataStoreOnly;
}
/**
* TODO
*
* @return
*/
public String getUri() {
return uri;
}
/**
* TODO
*
* @param uri
*/
public void setUri(String uri) {
this.uri = uri;
}
/**
* TODO
*
* @return
*/
public Verbosity getVerbosity() {
return verbosity;
}
/**
* TODO
*
* @param verbosity
*/
public void setVerbosity(Verbosity verbosity) {
this.verbosity = verbosity;
}
/**
* TODO
*
* @return
*/
public long getMaxSize() {
return maxSize;
}
/**
* TODO
*
* @param maxSize
*/
public void setMaxSize(long maxSize) {
this.maxSize = maxSize;
}
/**
* TODO
*
* @return
*/
public long getMaxTempSize() {
return maxTempSize;
}
/**
* TODO
*
* @param maxTempSize
*/
public void setMaxTempSize(long maxTempSize) {
this.maxTempSize = maxTempSize;
}
/**
* TODO
*
* @return
*/
public int getMaxRetries() {
return maxRetries;
}
/**
* TODO
*
* @param maxRetries
*/
public void setMaxRetries(int maxRetries) {
this.maxRetries = maxRetries;
}
/**
* TODO
*
* @return
*/
public PriorityClass getPriorityClass() {
return priorityClass;
}
/**
* TODO
*
* @param priorityClass
*/
public void setPriorityClass(PriorityClass priorityClass) {
this.priorityClass = priorityClass;
}
/**
* TODO
*
* @return
*/
public Persistence getPersistence() {
return persistence;
}
/**
* TODO
*
* @param persistence
*/
public void setPersistence(Persistence persistence) {
this.persistence = persistence;
}
/**
* TODO
*
* @return
*/
public String getClientToken() {
return clientToken;
}
/**
* TODO
*
* @param clientToken
*/
public void setClientToken(String clientToken) {
this.clientToken = clientToken;
}
/**
* TODO
*
* @return
*/
public boolean isGlobal() {
return global;
}
/**
* TODO
*
* @param global
*/
public void setGlobal(boolean global) {
this.global = global;
}
/**
* TODO
*
* @return
*/
public ReturnType getReturnType() {
return returnType;
}
/**
* TODO
*
* @param returnType
*/
public void setReturnType(ReturnType returnType) {
this.returnType = returnType;
}
/**
* TODO
*
* @return
*/
public boolean isBinaryBlob() {
return binaryBlob;
}
/**
* TODO
*
* @param binaryBlob
*/
public void setBinaryBlob(boolean binaryBlob) {
this.binaryBlob = binaryBlob;
}
/**
* TODO
*
* @return
*/
public String getAllowedMimeTypes() {
return allowedMimeTypes;
}
/**
* TODO
*
* @param allowedMimeTypes
*/
public void setAllowedMimeTypes(String allowedMimeTypes) {
this.allowedMimeTypes = allowedMimeTypes;
}
/**
* TODO
*
* @return
*/
public String getFilename() {
return filename;
}
/**
* TODO
*
* @param filename
*/
public void setFilename(String filename) {
this.filename = filename;
}
/**
* TODO
*
* @return
*/
public String getTempFilename() {
return tempFilename;
}
/**
* TODO
*
* @param tempFilename
*/
public void setTempFilename(String tempFilename) {
this.tempFilename = tempFilename;
}
/**
* {@inheritDoc}
*/
@Override
protected void write(Writer writer) throws IOException {
super.write(writer);
writer.write("IgnoreDS=" + ignoreDataStore + LINEFEED);
writer.write("DSonly=" + dataStoreOnly + LINEFEED);
writer.write("URI=" + uri + LINEFEED);
writer.write("Verbosity=" + verbosity.getValue() + LINEFEED);
if (maxSize > -1) {
writer.write("MaxSize=" + maxSize + LINEFEED);
}
if (maxTempSize > -1) {
writer.write("MaxTempSize=" + maxTempSize + LINEFEED);
}
if (maxRetries >= -1) {
writer.write("MaxRetries=" + maxRetries + LINEFEED);
}
writer.write("PriorityClass=" + priorityClass.getValue() + LINEFEED);
writer.write("Persistence=" + persistence.getName() + LINEFEED);
if (clientToken != null) {
writer.write("ClientToken=" + clientToken + LINEFEED);
}
writer.write("Global=" + global + LINEFEED);
writer.write("BinaryBlob=" + binaryBlob + LINEFEED);
if (allowedMimeTypes != null) {
writer.write("AllowedMIMETypes=" + allowedMimeTypes + LINEFEED);
}
if (returnType == ReturnType.disk) {
writer.write("Filename=" + filename + LINEFEED);
if (tempFilename != null) {
writer.write("TempFilename=" + tempFilename + LINEFEED);
}
}
}
}