Package com.aelitis.azureus.util

Source Code of com.aelitis.azureus.util.DataSourceUtils

/**
* Created on Jun 1, 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.util;

import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.torrent.TOTorrent;
import org.gudy.azureus2.core3.util.Base32;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.HashWrapper;
import org.gudy.azureus2.plugins.disk.DiskManagerFileInfo;
import org.gudy.azureus2.plugins.download.Download;
import org.gudy.azureus2.plugins.download.DownloadException;
import org.gudy.azureus2.plugins.torrent.Torrent;
import org.gudy.azureus2.pluginsimpl.local.PluginCoreUtils;

import com.aelitis.azureus.activities.VuzeActivitiesEntry;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.cnetwork.ContentNetwork;
import com.aelitis.azureus.core.cnetwork.ContentNetworkManagerFactory;
import com.aelitis.azureus.core.content.RelatedContent;
import com.aelitis.azureus.core.devices.DeviceOfflineDownload;
import com.aelitis.azureus.core.devices.TranscodeFile;
import com.aelitis.azureus.core.devices.TranscodeJob;
import com.aelitis.azureus.core.torrent.PlatformTorrentUtils;
import com.aelitis.azureus.ui.selectedcontent.DownloadUrlInfo;
import com.aelitis.azureus.ui.selectedcontent.ISelectedContent;

/**
* @author TuxPaper
* @created Jun 1, 2008
*
*/
public class DataSourceUtils
{
  public static org.gudy.azureus2.core3.disk.DiskManagerFileInfo getFileInfo(
      Object ds) {
    try {
      if (ds instanceof DiskManagerFileInfo) {
        return PluginCoreUtils.unwrap((DiskManagerFileInfo) ds);
      } else if (ds instanceof org.gudy.azureus2.core3.disk.DiskManagerFileInfo) {
        return (org.gudy.azureus2.core3.disk.DiskManagerFileInfo) ds;
      } else if ((ds instanceof ISelectedContent)
          && ((ISelectedContent) ds).getFileIndex() >= 0) {
        ISelectedContent sc = (ISelectedContent) ds;
        int idx = sc.getFileIndex();
        DownloadManager dm = sc.getDownloadManager();
        return dm.getDiskManagerFileInfoSet().getFiles()[idx];
      } else if (ds instanceof TranscodeJob) {
        TranscodeJob tj = (TranscodeJob) ds;
        try {
          return PluginCoreUtils.unwrap(tj.getFile());
        } catch (DownloadException e) {
        }
      } else if (ds instanceof TranscodeFile) {
        TranscodeFile tf = (TranscodeFile) ds;
        try {
          DiskManagerFileInfo file = tf.getSourceFile();
          return PluginCoreUtils.unwrap(file);
        } catch (DownloadException e) {
        }
      }

    } catch (Exception e) {
      Debug.printStackTrace(e);
    }
    return null;
  }

  public static DownloadManager getDM(Object ds) {
    try {
      if (ds instanceof DownloadManager) {
        return (DownloadManager) ds;
      } else if (ds instanceof VuzeActivitiesEntry) {
        VuzeActivitiesEntry entry = (VuzeActivitiesEntry) ds;
        DownloadManager dm = entry.getDownloadManger();
        if (dm == null) {
          String assetHash = entry.getAssetHash();
          if (assetHash != null && AzureusCoreFactory.isCoreRunning()) {
            GlobalManager gm = AzureusCoreFactory.getSingleton().getGlobalManager();
            dm = gm.getDownloadManager(new HashWrapper(Base32.decode(assetHash)));
            entry.setDownloadManager(dm);
          }
        }
        return dm;
      } else if ((ds instanceof TOTorrent) && AzureusCoreFactory.isCoreRunning()) {
        GlobalManager gm = AzureusCoreFactory.getSingleton().getGlobalManager();
        return gm.getDownloadManager((TOTorrent) ds);
      } else if (ds instanceof ISelectedContent) {
        return getDM(((ISelectedContent)ds).getDownloadManager());
      } else   if (ds instanceof TranscodeJob) {
        TranscodeJob tj = (TranscodeJob) ds;
        try {
          DiskManagerFileInfo file = tj.getFile();
          if (file != null) {
            Download download = tj.getFile().getDownload();
            if (download != null) {
              return PluginCoreUtils.unwrap(download);
            }
          }
        } catch (DownloadException e) {
        }
      } else if (ds instanceof TranscodeFile) {
        TranscodeFile tf = (TranscodeFile) ds;
        try {
          DiskManagerFileInfo file = tf.getSourceFile();
          if (file != null) {
            Download download = file.getDownload();
            if (download != null) {
              return PluginCoreUtils.unwrap(download);
            }
          }
        } catch (DownloadException e) {
        }
      } else if (ds instanceof DeviceOfflineDownload ) {
        return( PluginCoreUtils.unwrap(((DeviceOfflineDownload)ds).getDownload()));
      }

    } catch (Exception e) {
      Debug.printStackTrace(e);
    }
    return null;
  }

  public static TOTorrent getTorrent(Object ds) {
    if (ds instanceof TOTorrent) {
      return (TOTorrent) ds;
    }

    if (ds instanceof DownloadManager) {
      TOTorrent torrent = ((DownloadManager) ds).getTorrent();
      if (torrent != null) {
        return torrent;
      }
    }
    if (ds instanceof VuzeActivitiesEntry) {
      TOTorrent torrent = ((VuzeActivitiesEntry) ds).getTorrent();
      if (torrent == null) {
        // getDM will check hash as well
        DownloadManager dm = getDM(ds);
        if (dm != null) {
          torrent = dm.getTorrent();
        }
      }
      return torrent;
    }

    if (ds instanceof TranscodeFile) {
      TranscodeFile tf = (TranscodeFile) ds;
      try {
        DiskManagerFileInfo file = tf.getSourceFile();
        if (file != null) {
          Download download = file.getDownload();
          if (download != null) {
            Torrent torrent = download.getTorrent();
            if (torrent != null) {
              return PluginCoreUtils.unwrap(torrent);
            }
          }
        }
      } catch (Throwable e) {
      }
    }

    if (ds instanceof TranscodeJob) {
      TranscodeJob tj = (TranscodeJob) ds;
      try {
        DiskManagerFileInfo file = tj.getFile();
        if (file != null) {
          Download download = tj.getFile().getDownload();
         
          if (download != null) {
            Torrent torrent = download.getTorrent();
            if (torrent != null) {
              return PluginCoreUtils.unwrap(torrent);
            }
          }
        }
      } catch (DownloadException e) {
      }
    }
   
    if (ds instanceof DeviceOfflineDownload ){
      Torrent torrent = ((DeviceOfflineDownload) ds).getDownload().getTorrent();
      if (torrent != null) {
        return PluginCoreUtils.unwrap(torrent);
      }
    }

    if (ds instanceof ISelectedContent) {
      return ((ISelectedContent)ds).getTorrent();
    }
   
    if (ds instanceof String) {
      String hash = (String) ds;
      try {
        GlobalManager gm = AzureusCoreFactory.getSingleton().getGlobalManager();
        DownloadManager dm = gm.getDownloadManager(new HashWrapper(Base32.decode(hash)));
        if (dm != null) {
          return dm.getTorrent();
        }
      } catch (Exception e) {
        // ignore
      }
    }

    return null;
  }

  /**
   * @return
   *
   * @since 3.0.5.3
   */
  public static boolean isPlatformContent(Object ds) {
    TOTorrent torrent = getTorrent(ds);
    if (torrent != null) {
      return PlatformTorrentUtils.isContent(torrent, true);
    }
    if ((ds instanceof VuzeActivitiesEntry)
        && ((VuzeActivitiesEntry) ds).isPlatformContent()) {
      return true;
    }

    return false;
  }

  public static String getHash(Object ds) {
    try {
      if (ds instanceof DownloadManager) {
        return ((DownloadManager) ds).getTorrent().getHashWrapper().toBase32String();
      } else if (ds instanceof TOTorrent) {
        return ((TOTorrent) ds).getHashWrapper().toBase32String();
      } else if (ds instanceof DeviceOfflineDownload) {
        return( getHash(PluginCoreUtils.unwrap(((DeviceOfflineDownload)ds).getDownload())));
      } else if (ds instanceof VuzeActivitiesEntry) {
        VuzeActivitiesEntry entry = (VuzeActivitiesEntry) ds;
        return entry.getAssetHash();
      } else if (ds instanceof ISelectedContent) {
        return ((ISelectedContent)ds).getHash();
      } else if (ds instanceof String) {
        return (String) ds;
      }
    } catch (Exception e) {
      Debug.printStackTrace(e);
    }
    return null;
  }

  public static ContentNetwork getContentNetwork(Object ds) {
    long id = -1;
    try {
      if (ds instanceof DownloadManager) {
        id = PlatformTorrentUtils.getContentNetworkID(((DownloadManager) ds).getTorrent());
      } else if (ds instanceof TOTorrent) {
        id = PlatformTorrentUtils.getContentNetworkID((TOTorrent) ds);
      } else if (ds instanceof DeviceOfflineDownload) {
        return( getContentNetwork(PluginCoreUtils.unwrap(((DeviceOfflineDownload)ds).getDownload())));
      } else if (ds instanceof VuzeActivitiesEntry) {
        VuzeActivitiesEntry entry = (VuzeActivitiesEntry) ds;
        return entry.getContentNetwork();
      } else if (ds instanceof ISelectedContent) {
        return getContentNetwork(((ISelectedContent)ds).getDownloadManager());
      } else if ((ds instanceof String) && ((String)ds).length() == 32) {
        // assume 32 byte string is a hash and that it belongs to the def. network
        id = ConstantsVuze.getDefaultContentNetwork().getID();
      } else   if (ds instanceof TranscodeJob) {
        TranscodeJob tj = (TranscodeJob) ds;
        try {
          DiskManagerFileInfo file = tj.getFile();
          if (file != null) {
            Download download = tj.getFile().getDownload();
            if (download != null) {
              DownloadManager dm = PluginCoreUtils.unwrap(download);
              return getContentNetwork(dm);
            }
          }
        } catch (DownloadException e) {
        }
      } else if (ds instanceof TranscodeFile) {
        TranscodeFile tf = (TranscodeFile) ds;
        try {
          DiskManagerFileInfo file = tf.getSourceFile();
          if (file != null) {
            Download download = file.getDownload();
            if (download != null) {
              DownloadManager dm = PluginCoreUtils.unwrap(download);
              return getContentNetwork(dm);
            }
          }
        } catch (Throwable e) {
        }
      } else if (ds instanceof RelatedContent) {
        id = ((RelatedContent)ds).getContentNetwork();
      } else {
        Debug.out("Tux: UH OH NO CN for " + ds + "\n" + Debug.getCompressedStackTrace());
      }
    } catch (Exception e) {
      Debug.printStackTrace(e);
    }
    ContentNetwork cn = ContentNetworkManagerFactory.getSingleton().getContentNetwork(
        id);
    return cn;
  }
 
  /**
   * @param ds
   *
   * @since 3.1.1.1
   */
  public static DownloadUrlInfo getDownloadInfo(Object ds) {
    if (ds instanceof ISelectedContent) {
      return ((ISelectedContent)ds).getDownloadInfo();
    }
    return null;
  }

}
TOP

Related Classes of com.aelitis.azureus.util.DataSourceUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.