/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.engine.content;
import java.io.File;
import java.net.URL;
import com.vodafone360.people.datatypes.ExternalResponseObject;
/**
* ContentObject is the class for transferring contents It contains the URL for
* downloads or a link for uploads, the protocol, the transfer direction and
* status. After it is created it will be processed by the ContentEngine which
* will, after the transfer is done, pass it over to the Handler implementing
* the TranferListener.
*/
public class ContentObject {
/**
* id can be used for some unique ids.
*/
private String mId;
/**
* Url for the download.
*/
private URL mUrl;
/**
* additional params for the transfer.
*/
private String mUrlParams;
/**
* File to upload or path for saving downloaded content Depends on
* TransferDirection.
*/
private File mPath;
/**
* Actual status of the ContentObject.
*/
private TransferStatus mStatus;
/**
* TransferLister to be called after transfer for further processing.
*/
private TransferListener mTransferListener;
/**
* Member holding the TransferDirection.
*/
private TransferDirection mTransferDirection;
/**
* Link to an Object. If downloading thumbnails for contacts this field
* would contain the Contact object for which the thumbnail should be
* downloaded.
*/
private Object mLink;
/**
* Member containing the protocol to be used.
*/
private Protocol mProtocol;
/**
* Answer from the Server.
*/
private ExternalResponseObject mExtResponse;
/**
* TransferDirection determines if the ContentObject is to be uploaded or
* downloaded.
*/
public enum TransferDirection {
/** Direction download. **/
DOWNLOAD,
/** Direction upload. **/
UPLOAD
};
/**
* The TransferStatus of the ContentObject.
*/
public enum TransferStatus {
/**
* First status. the object has been created and the transfer has not
* started yet.
**/
INIT,
/** The transfer has started and is in progress. **/
TRANSFERRING,
/** The transfer completed with an error. **/
ERROR,
/** The transfer completed with an error. **/
DONE
};
/**
* Protocol used for the Transfer.
*/
public enum Protocol {
/** Lets the Transport decide what to use. **/
AUTO,
/** Use the RPG protocol. Best for batch-sue **/
RPG,
/** Use HTTP protocol. **/
HTTP,
/** Use FTP. Mostly for downloading files like pictures or videos **/
FTP,
/** Use Real Time Streaming protocol. Mostly for video streaming **/
RTSP,
/** Use the Secure Copy protocol. **/
SCP
}
/**
* Constructor for the ContentObject. Only sets the parameters.
*
* @param id The unique id, if needed
* @param link Link to a object
* @param transferListener TranferListener for this Handler
* @param transferDirection Upload or download
* @param protocol Protocol to be used for transfer
*/
ContentObject(final String id, final Object link, final TransferListener transferListener,
final TransferDirection transferDirection, final Protocol protocol) {
this.mId = id;
this.mLink = link;
this.mTransferListener = transferListener;
this.mTransferDirection = transferDirection;
this.mStatus = TransferStatus.INIT;
this.mProtocol = protocol;
}
/**
* Getter for the UrlParams.
*
* @return the urlParams
*/
public final String getUrlParams() {
return mUrlParams;
}
/**
* Setter for the UrlParamas
*
* @param urlParams the urlParams to set.
*/
public final void setUrlParams(final String urlParams) {
this.mUrlParams = urlParams;
}
/**
* Setter for the ExternalResponse.
*
* @param extResponse to be set
*/
public final void setExtResponse(ExternalResponseObject extResponse) {
this.mExtResponse = extResponse;
}
/**
* Getter for the ExternalResponseObject.
*
* @return ExternalResponseObject
*/
public final ExternalResponseObject getExternalResponseObject() {
return mExtResponse;
}
/**
* Getter for the Protocol.
*
* @return Protocol used for transfer
*/
public final Protocol getProtocol() {
return mProtocol;
}
/**
* Getter for the id.
*
* @return id
*/
public final String getId() {
return mId;
}
/**
* Getter for the URL.
*
* @return URL for the transfer
*/
public final URL getUrl() {
return mUrl;
}
/**
* Setter for the URL.
*
* @param url URL for the transfer
*/
public final void setUrl(final URL url) {
this.mUrl = url;
}
/**
* Getter for the path.
*
* @return Instance of File. Points to a place where the downloaded file
* should be stored or the to be uploaded file can be found
*/
public final File getPath() {
return mPath;
}
/**
* Setter for the path.
*
* @param path Instance of File. Points to a place where the downloaded file
* should be stored or the to be uploaded file can be found
*/
public final void setPath(final File path) {
this.mPath = path;
}
/**
* Getter for the TransferStatus.
*
* @return The TransferStatus
*/
public final TransferStatus getStatus() {
return mStatus;
}
/**
* Setter for the TransferStatus.
*
* @param status The TransferStatus to set for this object
*/
public final void setTransferStatus(final TransferStatus status) {
this.mStatus = status;
}
/**
* Getter for the TransferListener.
*
* @return TransferListener for this handler
*/
public final TransferListener getTransferListener() {
return mTransferListener;
}
/**
* Getter for the Link.
*
* @return then Link
*/
public final Object getLink() {
return mLink;
}
/**
* Getter for the TransferDirection.
*
* @return transferDirection
*/
public final TransferDirection getDirection() {
return mTransferDirection;
}
}