/[schmitzm]/trunk/src/skrueger/geotools/StyledFeatureCollectionTableModel.java
ViewVC logotype

Diff of /trunk/src/skrueger/geotools/StyledFeatureCollectionTableModel.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 59 by mojays, Fri Apr 17 17:26:58 2009 UTC revision 127 by mojays, Sat May 30 14:29:58 2009 UTC
# Line 10  Line 10 
10   **/   **/
11  package skrueger.geotools;  package skrueger.geotools;
12    
13    
14  import java.util.Iterator;  import java.util.Iterator;
15  import java.util.Map;  import java.util.Map;
 import java.util.TreeMap;  
16  import java.util.Vector;  import java.util.Vector;
17    
18    import org.apache.log4j.Logger;
19  import org.geotools.data.DefaultQuery;  import org.geotools.data.DefaultQuery;
20  import org.geotools.data.FeatureSource;  import org.geotools.data.FeatureSource;
21  import org.geotools.data.Query;  import org.geotools.data.Query;
# Line 27  import skrueger.AttributeMetaData; Line 28  import skrueger.AttributeMetaData;
28  import skrueger.i8n.I8NUtil;  import skrueger.i8n.I8NUtil;
29  import skrueger.i8n.Translation;  import skrueger.i8n.Translation;
30    
31    import com.vividsolutions.jts.geom.Envelope;
32    
33  /**  /**
34   * This class extends the the {@link FeatureCollectionTableModel} with the   * This class extends the the {@link FeatureCollectionTableModel} with the
35   * functionalities of the {@link AttributeMetaData} of   * functionalities of the {@link AttributeMetaData} of
# Line 38  import skrueger.i8n.Translation; Line 41  import skrueger.i8n.Translation;
41   * @author <a href="mailto:[email protected]">Martin Schmitz</a> (University of Bonn/Germany)   * @author <a href="mailto:[email protected]">Martin Schmitz</a> (University of Bonn/Germany)
42   */   */
43  public class StyledFeatureCollectionTableModel extends FeatureCollectionTableModel {  public class StyledFeatureCollectionTableModel extends FeatureCollectionTableModel {
44      final static private Logger LOGGER = Logger.getLogger(StyledFeatureCollectionTableModel.class);
45    /** Holds the data source as styled map. */    /** Holds the data source as styled map. */
46    protected StyledMapInterface map = null;    protected StyledMapInterface<?> map = null;
47    /** Contains only the visible elements of the {@link AttributeMetaData}-Map */    /** Contains only the visible elements of the {@link AttributeMetaData}-Map */
48    protected Map<Integer, AttributeMetaData> visibleAMD = null;    protected Map<Integer, AttributeMetaData> visibleAMD = null;
49    /** Holds the data source for the table as {@code FeatureSource}. */    /** Holds the data source for the table as {@code FeatureSource}. */
# Line 48  public class StyledFeatureCollectionTabl Line 52  public class StyledFeatureCollectionTabl
52    protected Map<Integer, AttributeMetaData> origAMD = null;    protected Map<Integer, AttributeMetaData> origAMD = null;
53    /** Holds the current filter on the table */    /** Holds the current filter on the table */
54    protected Filter filter = null;    protected Filter filter = null;
55      /** Holds the Bounds for all features. Only set once during the constructor **/
56      protected Envelope bounds;
57    
58    /**    /**
59     * Creates a new table model for a styled map.     * Creates a new table model for a styled map.
# Line 94  public class StyledFeatureCollectionTabl Line 100  public class StyledFeatureCollectionTabl
100    protected void setFeatureSource(FeatureSource fs, Map<Integer, AttributeMetaData> amd, Filter filter) throws Exception {    protected void setFeatureSource(FeatureSource fs, Map<Integer, AttributeMetaData> amd, Filter filter) throws Exception {
101      if ( filter == null )      if ( filter == null )
102        filter = Filter.INCLUDE;        filter = Filter.INCLUDE;
103        
104      this.featureSource = fs;      this.featureSource = fs;
105      this.filter        = filter;      this.filter        = filter;
106      this.origAMD       = amd;      this.origAMD       = amd;
# Line 102  public class StyledFeatureCollectionTabl Line 108  public class StyledFeatureCollectionTabl
108            
109      FeatureCollection fc = null;      FeatureCollection fc = null;
110      if (fs != null) {      if (fs != null) {
111        Query query = new DefaultQuery();          
112           bounds = fs.getBounds();
113            
114          Query query = new DefaultQuery(fs.getSchema().getTypeName(), filter);
115        if (amd != null) {        if (amd != null) {
116          // determine the names of the visible Attributes          // determine the names of the visible Attributes
117          this.visibleAMD = StyledMapUtil.getVisibleAttributeMetaData(amd, true);          this.visibleAMD = StyledMapUtil.getVisibleAttributeMetaData(amd, true);
# Line 114  public class StyledFeatureCollectionTabl Line 123  public class StyledFeatureCollectionTabl
123    
124          // create a query for the visible attributes          // create a query for the visible attributes
125          String[] properties = visibleAttrNames.toArray(new String[0]);          String[] properties = visibleAttrNames.toArray(new String[0]);
126            
127            LOGGER.debug("Query contains the following attributes: " + visibleAttrNames);
128            
129          query = new DefaultQuery(fs.getSchema().getTypeName(), filter, properties);          query = new DefaultQuery(fs.getSchema().getTypeName(), filter, properties);
130        }        }
131        fc = fs.getFeatures(query);        fc = fs.getFeatures(query);
132    
133    // FAILS:!!!, even with  query = new DefaultQuery(fs.getSchema().getTypeName(), filter);
134                            // java.lang.UnsupportedOperationException: Unknown feature
135                            // attribute: PQM_MOD
136                            // at
137                            // schmitzm.geotools.feature.FeatureOperationTree.evaluate(FeatureOperationTree.java:93)
138                            // bounds = fc.getBounds();
139                            // SK, 17.4.2009
140                            //      
141                            // System.out.println("Filter = "+filter);
142                            // System.out.println("Size of FC = "+fc.size());
143                            // System.out.println("anz att= "+fc.getNumberOfAttributes());
144      }      }
145      setFeatureCollection(fc);      setFeatureCollection(fc);
146    }    }
# Line 135  public class StyledFeatureCollectionTabl Line 159  public class StyledFeatureCollectionTabl
159          setFeatureSource(null, null, null);          setFeatureSource(null, null, null);
160        else {        else {
161          FeatureCollection fc = map.getGeoObject();          FeatureCollection fc = map.getGeoObject();
162          String fcName = fc.getFeatureType().getTypeName();          String fcName = fc.getSchema().getTypeName();
163          FeatureSource fs = new MemoryDataStore(fc).getFeatureSource(fcName);          FeatureSource fs = new MemoryDataStore(fc).getFeatureSource(fcName);
164          setFeatureSource(fs, map.getAttributeMetaDataMap(), filter);          setFeatureSource(fs, map.getAttributeMetaDataMap(), filter);
165        }        }
# Line 170  public class StyledFeatureCollectionTabl Line 194  public class StyledFeatureCollectionTabl
194      try{      try{
195        setFeatureSource(this.featureSource, this.origAMD, filter);        setFeatureSource(this.featureSource, this.origAMD, filter);
196      } catch (Exception err) {      } catch (Exception err) {
197            LOGGER.error("Setting the filter of the table model", err);
198        throw new RuntimeException(err);        throw new RuntimeException(err);
199      }      }
200    }    }
201      
202      /**
203       * @return <code>Filter.INCLUDE</code> or the {@link Filter} applied to the Features
204       */
205      public Filter getFilter() {
206              return this.filter;
207      }
208    
209    /**    /**
210     * After calling {@code super.reorganize(.)} this method replaced the     * After calling {@code super.reorganize(.)} this method replaced the
# Line 189  public class StyledFeatureCollectionTabl Line 221  public class StyledFeatureCollectionTabl
221        for (int i = 0; i < colNames.length && keys.hasNext(); i++) {        for (int i = 0; i < colNames.length && keys.hasNext(); i++) {
222          Translation title = visibleAMD.get(keys.next()).getTitle();          Translation title = visibleAMD.get(keys.next()).getTitle();
223          if (!I8NUtil.isEmpty(title)) {          if (!I8NUtil.isEmpty(title)) {
224            System.out.println("set colname " + i + " to " + title.toString());  //          System.out.println("set colname " + i + " to " + title.toString());
225            colNames[i] = title.toString();            colNames[i] = title.toString();
226          }          }
227        }        }
# Line 197  public class StyledFeatureCollectionTabl Line 229  public class StyledFeatureCollectionTabl
229      if ( fireTableStructureChanged )      if ( fireTableStructureChanged )
230        fireTableStructureChanged();        fireTableStructureChanged();
231    }    }
232    
233      /**
234             * @returns Cached bounds for the whole dataset (without applying the
235             *          filter) or <code>null</code>
236             */
237            public Envelope getBounds() {
238                    return bounds;
239            }
240  }  }

Legend:
Removed from v.59  
changed lines
  Added in v.127

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26