/*
* File : TorrentAnnounceURLListImpl.java
* Created : 03-Mar-2004
* By : parg
*
* Azureus - a Java Bittorrent client
*
* 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
*/
package org.gudy.azureus2.pluginsimpl.local.torrent;
/**
* @author parg
*
*/
import java.net.URL;
import org.gudy.azureus2.core3.torrent.*;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.plugins.torrent.*;
public class
TorrentAnnounceURLListImpl
implements TorrentAnnounceURLList
{
protected TorrentImpl torrent;
protected
TorrentAnnounceURLListImpl(
TorrentImpl _torrent )
{
torrent = _torrent;
}
public TorrentAnnounceURLListSet[]
getSets()
{
TOTorrentAnnounceURLGroup group = torrent.getTorrent().getAnnounceURLGroup();
TOTorrentAnnounceURLSet[] sets = group.getAnnounceURLSets();
TorrentAnnounceURLListSet[] res = new TorrentAnnounceURLListSet[sets.length];
for (int i=0;i<res.length;i++){
res[i] = new TorrentAnnounceURLListSetImpl( this, sets[i]);
}
return( res );
}
public void
setSets(
TorrentAnnounceURLListSet[] sets )
{
TOTorrentAnnounceURLGroup group = torrent.getTorrent().getAnnounceURLGroup();
TOTorrentAnnounceURLSet[] res = new TOTorrentAnnounceURLSet[sets.length];
for (int i=0;i<res.length;i++){
res[i] = ((TorrentAnnounceURLListSetImpl)sets[i]).getSet();
}
group.setAnnounceURLSets( res );
updated();
}
public TorrentAnnounceURLListSet
create(
URL[] urls )
{
return( new TorrentAnnounceURLListSetImpl( this, torrent.getTorrent().getAnnounceURLGroup().createAnnounceURLSet(urls)));
}
public void
addSet(
URL[] urls )
{
if ( setAlreadyExists( urls )){
return;
}
TorrentUtils.announceGroupsInsertLast( torrent.getTorrent(), urls );
updated();
}
public void
insertSetAtFront(
URL[] urls )
{
if ( setAlreadyExists( urls )){
return;
}
TorrentUtils.announceGroupsInsertFirst( torrent.getTorrent(), urls );
updated();
}
protected boolean
setAlreadyExists(
URL[] urls )
{
TOTorrentAnnounceURLGroup group = torrent.getTorrent().getAnnounceURLGroup();
TOTorrentAnnounceURLSet[] sets = group.getAnnounceURLSets();
for (int i=0;i<sets.length;i++){
URL[] u = sets[i].getAnnounceURLs();
if ( u.length != urls.length ){
continue;
}
boolean all_found = true;
for (int j=0;j<urls.length;j++){
URL u1 = urls[j];
boolean this_found = false;
for ( int k=0;k<u.length;k++){
URL u2 = u[k];
if ( u1.toString().equals( u2.toString())){
this_found = true;
break;
}
}
if ( !this_found ){
all_found = false;
break;
}
}
if ( all_found ){
return( true );
}
}
return( false );
}
protected void
updated()
{
torrent.updated();
}
}