Revision 47818

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/SimpleFeaturesTableModelImpl.java
25 25
import javax.swing.table.DefaultTableColumnModel;
26 26
import javax.swing.table.TableCellRenderer;
27 27
import javax.swing.table.TableColumn;
28
import org.apache.commons.lang3.ArrayUtils;
28 29
import org.apache.commons.lang3.StringUtils;
29 30
import org.gvsig.expressionevaluator.Expression;
31
import org.gvsig.expressionevaluator.ExpressionBuilder;
32
import org.gvsig.expressionevaluator.ExpressionUtils;
30 33
import org.gvsig.fmap.dal.complements.Search;
31 34
import org.gvsig.fmap.dal.exception.DataException;
32 35
import org.gvsig.fmap.dal.feature.DataProfile;
......
566 569
        dynObjectManager.registerTag(TAG_FEATURETABLEMODEL_IMAGE_HEIGHT, "Height to use when images have to be represented in a table, by default 48.");
567 570
        dynObjectManager.registerTag(TAG_FEATURETABLEMODEL_IMAGE_WIDTH, "Width to use when images have to be represented in a table, by default 48.");
568 571
    }
572
    
573
    @Override
574
    public Expression getFeaturesFilter(int[] rows) {
575
        if( ArrayUtils.isEmpty(rows) ) {
576
            return null;            
577
        }
578
        ExpressionBuilder builder = ExpressionUtils.createExpressionBuilder();
579
        for (int row : rows) {
580
            Feature feature = this.getFeatureAt(row);
581
            if( feature == null ) {
582
                continue;
583
            }
584
            ExpressionBuilder filter = feature.createBuilderFilter();
585
            if( filter == null ) {
586
                continue;
587
            }
588
            builder.or(filter.value());
589
        }
590
        if( builder.value() == null ) {
591
            return null;
592
        }
593
        Expression filter = ExpressionUtils.createExpression(builder.toString());                            
594
        return filter;    
595
    }
569 596
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretable/SimpleFeaturesTableModel.java
26 26
import javax.swing.JTable;
27 27
import javax.swing.table.TableCellRenderer;
28 28
import javax.swing.table.TableModel;
29
import org.gvsig.expressionevaluator.Expression;
29 30
import org.gvsig.fmap.dal.feature.Feature;
30 31
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
31 32
import org.gvsig.tools.dispose.Disposable;
......
53 54
    
54 55
    public List<String> getColumnNames();
55 56
    
57
    public Expression getFeaturesFilter(int[] rows);
58
    
56 59
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/Feature.java
28 28
import java.util.List;
29 29
import org.cresques.cts.IProjection;
30 30
import org.gvsig.expressionevaluator.Expression;
31
import org.gvsig.expressionevaluator.ExpressionBuilder;
31 32
import org.gvsig.fmap.dal.exception.DataException;
32 33
import org.gvsig.fmap.geom.Geometry;
33 34
import org.gvsig.fmap.geom.primitive.Envelope;
......
496 497

  
497 498
    public Expression createFilter();
498 499
    
500
    public ExpressionBuilder createBuilderFilter();
501
    
499 502
    public boolean isBroken();
500 503
    
501 504
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeature.java
2017 2017

  
2018 2018
    @Override
2019 2019
    public Expression createFilter() {
2020
        ExpressionBuilder builder = this.createBuilderFilter();
2021
        Expression filter = ExpressionUtils.createExpression(builder.toString());                            
2022
        return filter;
2023
    }
2024
    
2025
    public ExpressionBuilder createBuilderFilter() {
2020 2026
        FeatureType ftype = this.getType();
2021 2027
        FeatureAttributeDescriptor[] pk = ftype.getPrimaryKey();
2022 2028
        if( ArrayUtils.isEmpty(pk) ) {
......
2038 2044
                );
2039 2045
            }
2040 2046
        }
2041
        Expression filter = ExpressionUtils.createExpression(builder.toString());                            
2042
        return filter;
2047
        return builder;
2043 2048
    }
2044 2049
}

Also available in: Unified diff