package scripting.project.table;

import java.util.Iterator;
import org.gvsig.fmap.dal.feature.Feature;
import org.gvsig.fmap.dal.feature.FeatureSelection;
import org.gvsig.fmap.dal.feature.FeatureSet;
import org.gvsig.fmap.dal.feature.FeatureType;

/**
 *
 *
 */
public interface TableDocument extends org.gvsig.app.project.documents.table.TableDocument {

    /**
     *
     * @param filterExpresion, optional
     * @param sortby, optional
     * @param asc, optional
     * @return
     */
    public FeatureSet features(String filterExpresion, String sortby, boolean asc);

    /**
     * 
     * @return 
     */
    public Iterator<Feature> __iter__();

    /**
     * 
     * @return 
     */
    public int __len__();

    /**
     * 
     */
    public void edit();

    /**
     * 
     */
    public void append(Object... values);

    /**
     * 
     * @param schema 
     */
    public void updateSchema(FeatureType schema);

    /**
     * 
     * @param feature 
     */
    public void update(Feature feature);

    /**
     * 
     * @return 
     */
    public FeatureType getSchema();

    /**
     * 
     */
    public void commit();

    /**
     * 
     */
    public void abort();

    /**
     * 
     * @return 
     */
    public FeatureSelection getSelecion();

    /**
     * 
     * @param selection 
     */
    public void select(FeatureSelection selection);

    /**
     * 
     * @param selection 
     */
    public void deselect(FeatureSelection selection);

    /**
     * 
     * @param feature
     * @return 
     */
    public boolean isSelected(Feature feature);

    /**
     * Returns the java object associated to this python object. With the
     * current implementation this is not necessary, don't use now python
     * wrappers for java objects.
     *
     * @return 
     * @deprecated this method now return self alwais.
     *
     */
    public Object __call__();

}
