/*
* Created on Jul 9, 2009
* Created by Paul Gardner
*
* Copyright 2009 Vuze, Inc. 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; version 2 of the License only.
*
* 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 com.aelitis.azureus.core.content;
import org.gudy.azureus2.core3.util.Base32;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.SystemTime;
import org.gudy.azureus2.plugins.download.Download;
import com.aelitis.azureus.core.cnetwork.ContentNetwork;
public abstract class
RelatedContent
{
public final static String[] NO_TAGS = {};
final private String title;
final private byte[] hash;
final private String tracker;
final private long size;
private int date;
private int seeds_leechers;
private byte content_network;
private byte[] related_to_hash;
private byte[] tracker_keys;
private byte[] ws_keys;
private String[] tags;
private long changed_locally_on;
public
RelatedContent(
byte[] _related_to_hash,
String _title,
byte[] _hash,
String _tracker,
byte[] _tracker_keys,
byte[] _ws_keys,
String[] _tags,
long _size,
int _date,
int _seeds_leechers,
byte _cnet )
{
related_to_hash = _related_to_hash;
title = _title;
hash = _hash;
tracker = _tracker;
tracker_keys = _tracker_keys;
ws_keys = _ws_keys;
tags = _tags;
size = _size;
date = _date;
seeds_leechers = _seeds_leechers;
content_network = _cnet;
setChangedLocallyOn(0);
}
public
RelatedContent(
String _title,
byte[] _hash,
String _tracker,
long _size,
int _date,
int _seeds_leechers,
byte _cnet )
{
// legacy constructor as referenced from plugin - remove oneday!
this( _title, _hash, _tracker, null, null, null, _size, _date, _seeds_leechers, _cnet );
}
public
RelatedContent(
String _title,
byte[] _hash,
String _tracker,
byte[] _tracker_keys,
byte[] _ws_keys,
String[] _tags,
long _size,
int _date,
int _seeds_leechers,
byte _cnet )
{
title = _title;
hash = _hash;
tracker = _tracker;
tracker_keys = _tracker_keys;
ws_keys = _ws_keys;
tags = _tags;
size = _size;
date = _date;
seeds_leechers = _seeds_leechers;
content_network = _cnet;
setChangedLocallyOn(0);
}
protected void
setRelatedToHash(
byte[] h )
{
related_to_hash = h;
// Intentionally not called, since setRelatedToHash gets called after
// constructing all the RelatedContent objects
// setChangedLocallyOn(0);
}
public byte[]
getRelatedToHash()
{
return( related_to_hash );
}
public abstract Download
getRelatedToDownload();
public String
getTitle()
{
return( title );
}
public abstract int
getRank();
public byte[]
getHash()
{
return( hash );
}
public abstract int
getLevel();
public abstract boolean
isUnread();
public abstract void
setUnread(
boolean unread );
public abstract int
getLastSeenSecs();
public String
getTracker()
{
return( tracker );
}
public byte[]
getTrackerKeys()
{
return( tracker_keys );
}
public byte[]
getWebSeedKeys()
{
return( ws_keys );
}
public String[]
getTags()
{
return( tags==null?NO_TAGS:tags );
}
protected void
setTags(
String[] _tags )
{
tags = _tags;
setChangedLocallyOn(0);
}
public long
getSize()
{
return( size );
}
public long
getPublishDate()
{
return( date*60*60*1000L );
}
protected int
getDateHours()
{
return( date );
}
protected void
setDateHours(
int _date )
{
date = _date;
setChangedLocallyOn(0);
}
public int
getLeechers()
{
if ( seeds_leechers == -1 ){
return( -1 );
}
return( seeds_leechers&0xffff );
}
public int
getSeeds()
{
if ( seeds_leechers == -1 ){
return( -1 );
}
return( (seeds_leechers>>16) & 0xffff );
}
protected int
getSeedsLeechers()
{
return( seeds_leechers );
}
protected void
setSeedsLeechers(
int _sl )
{
seeds_leechers = _sl;
setChangedLocallyOn(0);
}
public long
getContentNetwork()
{
return((content_network&0xff)==0xff?ContentNetwork.CONTENT_NETWORK_UNKNOWN:(content_network&0xff));
}
protected void
setContentNetwork(
long cnet )
{
content_network = (byte)cnet;
setChangedLocallyOn(0);
}
public long
getChangedLocallyOn()
{
return changed_locally_on;
}
/**
*
* @param _changed_locally_on 0 == current time
*/
public void
setChangedLocallyOn(long _changed_locally_on)
{
changed_locally_on = (_changed_locally_on == 0) ? SystemTime.getCurrentTime() : _changed_locally_on;
}
public abstract void
delete();
public String
getString()
{
return( "title=" + title + ", hash=" + (hash==null?"null":Base32.encode( hash )) + ", tracker=" + tracker +", date=" + date + ", sl=" + seeds_leechers + ", cnet=" + content_network );
}
}