FileItemProvider.java :  » App » nookbibliotheca » dim133 » bibliotheca » providers » Android Open Source

Android Open Source » App » nookbibliotheca 
nookbibliotheca » dim133 » bibliotheca » providers » FileItemProvider.java
package dim133.bibliotheca.providers;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.util.Log;


import dim133.bibliotheca.Bibliotheca;
import dim133.bibliotheca.Util;
import dim133.bibliotheca.interfaces.*;
import dim133.bibliotheca.items.GoUpItem;
import dim133.bibliotheca.items.ItemComparator;
import dim133.bibliotheca.items.ItemFactory;


public class FileItemProvider extends BaseItemProvider implements IItemProvider 
{

  static final long TIMEOUT = 5 * 1000;//milliseconds
  
  String _path;
  IItemProvider _parent;
  int _itemsperpage;
  
  

  
  public FileItemProvider(String title, String path,IItemProvider parent)
  {
    _path = path;
    _parent = parent;
    _itemsperpage = Bibliotheca.ITEMSMAX;
    _title = title;

    
    
    
  }

  public String getInfo()
  {
    return _path==null ? Util.EMPTYSTR : _path;
  }
  
  
  protected void Fill()
  {

    _issorted = false;
    
    try
    {
      long stop = System.currentTimeMillis()+TIMEOUT;

      
      File  f = new File(_path);
      if (!f.isDirectory()) 
        throw new Exception("Not folder");
      
      if (_title == null) _title = f.getName();

      List<IItem> list = new ArrayList<IItem>();
      if (_parent!=null)
      {  _goupitem = new GoUpItem(_parent.getTitle(), _parent);
        //i.add(_goupitem);
      }
      File[] files = f.listFiles();
      int N = files.length;
      IItem item;
      for(int j=0;j<N;j++)
      {
        item = ItemFactory.FromFile(files[j], this);
        if (item == null) continue;
        list.add(item);
      }

      Boolean istimeout = false;
      for(IItem i:list)
      {
        if (System.currentTimeMillis()>stop) 
        {
          istimeout = true;
          break;
        }
        i.Fill();
      }
      
      if (!istimeout)
      {
        Collections.sort(list, new ItemComparator());
        _issorted = true;
      }
      
      _items = (IItem[])list.toArray(new IItem[list.size()]);
      


    }
    catch(Exception e)
    {
      _title = "Error '"+_path+"'";
      Log.d(Bibliotheca.LOGTAG,"Fill path '"+_path+"' error "+e.getMessage() );
      _items = null;
      _issorted = false;
    }
    
    
  }



  
  




}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.