/** * Created on Jun 9, 2008 * * Copyright 2008 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.ui.selectedcontent; import org.gudy.azureus2.core3.download.DownloadManager; import org.gudy.azureus2.core3.torrent.TOTorrent; import com.aelitis.azureus.core.torrent.PlatformTorrentUtils; import com.aelitis.azureus.ui.selectedcontent.ISelectedContent; import com.aelitis.azureus.ui.selectedcontent.SelectedContent; import com.aelitis.azureus.util.PlayUtils; /** * @author TuxPaper * @created Jun 9, 2008 * */ public class SelectedContentV3 implements ISelectedContent { private final SelectedContent content; private boolean isPlatformContent; private boolean canPlay; private String thumbURL; private byte[] imageBytes; private DownloadUrlInfo downloadInfo; // if you add more fields here be sure to amend 'sameAs' logic below public SelectedContentV3(SelectedContent content) { this.content = content; this.setDownloadManager(content.getDownloadManager()); } public SelectedContentV3() { content = new SelectedContent(); } public SelectedContentV3(String hash, String displayName, boolean isPlatformContent, boolean canPlay) { this.isPlatformContent = isPlatformContent; this.canPlay = canPlay; content = new SelectedContent(hash, displayName); } public SelectedContentV3(DownloadManager dm) throws Exception { content = new SelectedContent(); setDownloadManager(dm); } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#getDisplayName() public String getDisplayName() { return content.getDisplayName(); } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#getDM() public DownloadManager getDownloadManager() { return content.getDownloadManager(); } public int getFileIndex() { return content.getFileIndex(); } public TOTorrent getTorrent(){ return content.getTorrent(); } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#getHash() public String getHash() { return content.getHash(); } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#setDisplayName(java.lang.String) public void setDisplayName(String displayName) { content.setDisplayName(displayName); } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#setDM(org.gudy.azureus2.core3.download.DownloadManager) public void setDownloadManager(DownloadManager dm) { content.setDownloadManager(dm); if ( dm != null ){ setTorrent( dm.getTorrent()); setDisplayName(PlatformTorrentUtils.getContentTitle2(dm)); } } public void setTorrent( TOTorrent torrent ){ content.setTorrent( torrent ); if ( torrent != null ){ try { setHash(torrent.getHashWrapper().toBase32String()); } catch (Exception e) { setHash(null); } setPlatformContent(PlatformTorrentUtils.isContent(torrent, true)); setDisplayName(PlatformTorrentUtils.getContentTitle( torrent )); setCanPlay(PlayUtils.canUseEMP(torrent, -1)); setImageBytes(PlatformTorrentUtils.getContentThumbnail(torrent)); } } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#setHash(java.lang.String) public void setHash(String hash) { content.setHash(hash); } public void setHash(String hash, boolean isPlatformContent) { content.setHash(hash); setPlatformContent(isPlatformContent); } public boolean isPlatformContent() { return isPlatformContent; } public void setPlatformContent(boolean isPlatformContent) { this.isPlatformContent = isPlatformContent; } public boolean canPlay() { return canPlay; } public void setCanPlay(boolean canPlay) { this.canPlay = canPlay; } public String getThumbURL() { return thumbURL; } public void setThumbURL(String thumbURL) { this.thumbURL = thumbURL; } /** * @param imageBytes the imageBytes to set */ public void setImageBytes(byte[] imageBytes) { this.imageBytes = imageBytes; } /** * @return the imageBytes */ public byte[] getImageBytes() { return imageBytes; } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#getDownloadInfo() public DownloadUrlInfo getDownloadInfo() { return downloadInfo; } // @see com.aelitis.azureus.ui.selectedcontent.ISelectedContent#setDownloadInfo(com.aelitis.azureus.ui.selectedcontent.SelectedContentDownloadInfo) public void setDownloadInfo(DownloadUrlInfo info) { this.downloadInfo = info; } public boolean sameAs( ISelectedContent _other ) { if ( _other == this ){ return( true ); } if ( _other instanceof SelectedContentV3 ){ SelectedContentV3 other = (SelectedContentV3)_other; if ( !content.sameAs( other.content )){ return( false ); } if ( isPlatformContent != other.isPlatformContent || canPlay != other.canPlay ){ return( false ); } if ( thumbURL != other.thumbURL ){ if ( thumbURL == null || other.thumbURL == null || !thumbURL.equals( other.thumbURL )){ return( false ); } } if ( imageBytes != other.imageBytes ){ return( false ); } if ( downloadInfo != other.downloadInfo ){ if ( downloadInfo == null || other.downloadInfo == null || !downloadInfo.sameAs( other.downloadInfo )){ return( false ); } } return( true ); } return( false ); } }