Android Open Source - colibri Active Record List






From Project

Back to project page colibri.

License

The source code is released under:

Apache License

If you think the Android project colibri listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package labrom.colibri.data;
//w w w .jav  a  2  s .c o m
import java.util.ArrayList;
import java.util.List;

import android.database.Cursor;

public class ActiveRecordList<T extends ActiveRecord> {
    
    private final Cursor cursor;
    private final Object[] cache;
    private final T proto;
    private final Database db;
    
    /**
     * 
     * @param db May be null.
     * @param proto
     * @param c
     */
    public ActiveRecordList(Database db, T proto, Cursor c) {
        this.cursor = c;
        this.cache = new Object[c.getCount()];
        this.proto = proto;
        this.db = db;
    }
    
    public Cursor getCursor() {
        return cursor;
    }
    
    @SuppressWarnings("unchecked")
    public T get() {
        int position = cursor.getPosition();
        if(position < 0 || position >= cache.length)
            return null;
        
        T record = (T)cache[position];
        if(record != null)
            return record;
        
        record = (T)this.proto.copy();
        record.hydrateFromCursor(db, cursor);
        cache[position] = record;
        return record;
    }
    
    /**
     * Returns all the records in a list then closes the cursor (which means this
     * instance cannot be used anymore).
     * @return
     */
    public List<T> asList() {
        List<T> list = new ArrayList<T>(cursor.getCount());
        try {
            if(cursor.moveToFirst()) {
                do {
                    list.add(get());
                } while(cursor.moveToNext());
            }
        } finally {
            cursor.close();
        }
        return list;
    }
    
    public T getUnique() {
        try {
            if(cursor.moveToFirst()) {
                return get();
            }
        } finally {
            cursor.close();
        }
        return null;
    }


}




Java Source Code List

labrom.colibri.Util.java
labrom.colibri.cache.CacheEntry.java
labrom.colibri.cache.Cache.java
labrom.colibri.cache.Entries.java
labrom.colibri.data.ActiveContentProvider.java
labrom.colibri.data.ActiveRecordList.java
labrom.colibri.data.ActiveRecord.java
labrom.colibri.data.Database.java
labrom.colibri.data.SelectionArgs.java
labrom.colibri.xml.AttributeContext.java
labrom.colibri.xml.CursorDef.java
labrom.colibri.xml.CursorException.java
labrom.colibri.xml.Cursor.java
labrom.colibri.xml.CustomMap.java
labrom.colibri.xml.ElementContext.java
labrom.colibri.xml.FieldSetter.java
labrom.colibri.xml.Item.java
labrom.colibri.xml.NodeContext.java
labrom.colibri.xml.ObjectFactory.java
labrom.colibri.xml.ParserFactory.java
labrom.colibri.xml.ParserUtil.java
labrom.colibri.xml.PullTest.java
labrom.colibri.xml.ReflectorTest.java
labrom.colibri.xml.Reflector.java
labrom.colibri.xml.RootContext.java
labrom.colibri.xml.SetterTest.java
labrom.colibri.xml.StringToDateTransformer.java
labrom.colibri.xml.StringTransformer.java
labrom.colibri.xml.maps.Cursor4Maps.java
labrom.colibri.xml.maps.CursorDef4Maps.java
labrom.colibri.xml.maps.ElementContext4Maps.java
labrom.colibri.xml.maps.RootContext4Maps.java
labrom.colibri.xml.maps.package-info.java
labrom.colibri.xml.package-info.java