/*
* Created : 2004/May/26
*
* Copyright (C) 2004, 2005, 2006 Aelitis SAS, All rights Reserved
*
* 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.
*
* 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 ( see the LICENSE file ).
*
* 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
*
* AELITIS, SAS au capital de 46,603.30 euros,
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*/
package org.gudy.azureus2.pluginsimpl.local.disk;
import java.io.File;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.plugins.disk.DiskManagerChannel;
import org.gudy.azureus2.plugins.disk.DiskManagerFileInfo;
import org.gudy.azureus2.plugins.disk.DiskManagerListener;
import org.gudy.azureus2.plugins.disk.DiskManagerRandomReadRequest;
import org.gudy.azureus2.plugins.download.Download;
import org.gudy.azureus2.plugins.download.DownloadException;
import org.gudy.azureus2.pluginsimpl.local.download.DownloadImpl;
import org.gudy.azureus2.pluginsimpl.local.download.DownloadManagerImpl;
/**
* @author TuxPaper
*
*/
public class
DiskManagerFileInfoImpl
implements DiskManagerFileInfo
{
protected DownloadImpl download;
protected org.gudy.azureus2.core3.disk.DiskManagerFileInfo core;
public
DiskManagerFileInfoImpl(
DownloadImpl _download,
org.gudy.azureus2.core3.disk.DiskManagerFileInfo coreFileInfo )
{
core = coreFileInfo;
download = _download;
}
public void setPriority(boolean b) {
core.setPriority(b?1:0);
}
public void setSkipped(boolean b) {
core.setSkipped(b);
}
public int
getNumericPriorty()
{
return( core.getPriority());
}
public int getNumericPriority() {
return( core.getPriority());
}
public void
setNumericPriority(
int priority)
{
core.setPriority( priority );
}
public void
setDeleted(boolean b)
{
int st = core.getStorageType();
int target_st;
if ( b ){
if ( st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_LINEAR ){
target_st = org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_COMPACT;
}else if ( st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_REORDER ){
target_st = org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_REORDER_COMPACT;
}else{
return;
}
}else{
if ( st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_COMPACT ){
target_st = org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_LINEAR;
}else if ( st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_REORDER_COMPACT ){
target_st = org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_REORDER;
}else{
return;
}
}
core.setStorageType( target_st );
}
public boolean
isDeleted()
{
int st = core.getStorageType();
return( st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_COMPACT || st == org.gudy.azureus2.core3.disk.DiskManagerFileInfo.ST_REORDER_COMPACT );
}
public void
setLink(
File link_destination )
{
core.setLink( link_destination );
}
public File
getLink()
{
return( core.getLink());
}
// get methods
public int getAccessMode() {
return core.getAccessMode();
}
public long getDownloaded() {
return core.getDownloaded();
}
public long getLength() {
return core.getLength();
}
public File getFile() {
return core.getFile(false);
}
public File
getFile(
boolean follow_link )
{
return( core.getFile( follow_link ));
}
public int getFirstPieceNumber() {
return core.getFirstPieceNumber();
}
public long getPieceSize(){
try{
return getDownload().getTorrent().getPieceSize();
}catch( Throwable e ){
Debug.printStackTrace(e);
return(0);
}
}
public int getNumPieces() {
return core.getNbPieces();
}
public boolean isPriority() {
return core.getPriority() != 0;
}
public boolean isSkipped() {
return core.isSkipped();
}
public int
getIndex()
{
return( core.getIndex());
}
public byte[] getDownloadHash()
throws DownloadException
{
return( getDownload().getTorrent().getHash());
}
public Download getDownload()
throws DownloadException
{
if ( download != null ){
return( download );
}
// not sure why this code is here as we already have the download - leaving in for the moment just in case...
return DownloadManagerImpl.getDownloadStatic( core.getDownloadManager());
}
public DiskManagerChannel
createChannel()
throws DownloadException
{
return( new DiskManagerChannelImpl( download, this ));
}
public DiskManagerRandomReadRequest
createRandomReadRequest(
long file_offset,
long length,
boolean reverse_order,
DiskManagerListener listener )
throws DownloadException
{
return( DiskManagerRandomReadController.createRequest( download, this, file_offset, length, reverse_order, listener ));
}
// not visible to plugin interface
public org.gudy.azureus2.core3.disk.DiskManagerFileInfo
getCore()
{
return( core );
}
}