Package com.aelitis.azureus.core.custom.impl

Source Code of com.aelitis.azureus.core.custom.impl.CustomizationImpl

/*
* Created on Sep 22, 2008
* Created by Paul Gardner
*
* 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.core.custom.impl;

import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.gudy.azureus2.core3.util.Debug;

import com.aelitis.azureus.core.custom.Customization;
import com.aelitis.azureus.core.custom.CustomizationException;

public class
CustomizationImpl  
  implements Customization
{
  private CustomizationManagerImpl    manager;
 
  private String    name;
  private String    version;
  private File    contents;
 
  protected
  CustomizationImpl(
    CustomizationManagerImpl  _manager,
    String            _name,
    String            _version,
    File            _contents )
 
    throws CustomizationException
 
    manager    = _manager;
    name    = _name;
    version    = _version;
    contents  = _contents;
   
    if ( !contents.exists()){
     
      throw( new CustomizationException( "Content file '" + contents + " not found" ));
    }
  }
 
  public String
  getName()
  {
    return( name );
  }
 
  public String
  getVersion()
  {
    return( version );
  }
 
  protected File
  getContents()
  {
    return( contents );
  }
 
  public Object
  getProperty(
    String    name )
  {
    return( null );
  }
 
  public boolean
  isActive()
  {
    return( true );
  }
 
  public void
  setActive(
    boolean    active )
  {
    // TODO:
  }
 
  public InputStream
  getResource(
    String    resource_name )
  {
    return( null );
  }
 
  public InputStream[]
     getResources(
       String    resource_name )
  {
    List  result = new ArrayList();
   
    ZipInputStream  zis = null;
 
    try{
      zis = new ZipInputStream(
          new BufferedInputStream( new FileInputStream( contents ) ));
       
      while( true ){
       
        ZipEntry  entry = zis.getNextEntry();
         
        if ( entry == null ){
         
          break;
        }
       
        String  name = entry.getName();
       
        int pos = name.indexOf( resource_name + "/" );
       
        if ( pos != -1 ){
                   
          if ( name.endsWith( ".vuze" )){
           
            ByteArrayOutputStream baos = new ByteArrayOutputStream( 16*1024 );
           
            byte[]  buffer = new byte[16*1024];
           
            while( true ){
           
              int  len = zis.read( buffer );
             
              if ( len <= 0 ){
               
                break;
              }
             
              baos.write( buffer, 0, len );
            }
           
            result.add( new ByteArrayInputStream( baos.toByteArray()));
          }
        }
      }
    }catch( Throwable e ){
     
      Debug.out( e );
     
    }finally{
     
      if ( zis != null ){
       
        try{
          zis.close();
         
        }catch( Throwable e ){
        }
      }
    }
   
    return((InputStream[])result.toArray( new InputStream[result.size()]));
  }
 
  public void
  exportToVuzeFile
    File     file )
 
    throws CustomizationException
  {
    manager.exportCustomization( this, file );
  }
}
TOP

Related Classes of com.aelitis.azureus.core.custom.impl.CustomizationImpl

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.