Revision 8663

View differences:

trunk/extensions/extWFS2/src/com/iver/cit/gvsig/gui/panels/WFSFilterPanel.java
6 6
import java.text.NumberFormat;
7 7
import java.text.ParseException;
8 8
import java.util.ArrayList;
9
import java.util.Collection;
9 10
import java.util.Comparator;
10 11
import java.util.Iterator;
12
import java.util.Map;
11 13
import java.util.TreeSet;
12 14
import java.util.Vector;
13 15
import java.util.regex.Matcher;
......
23 25
import org.apache.log4j.Logger;
24 26
import org.gvsig.gui.beans.filterPanel.filterQueryPanel.FilterQueryJPanel;
25 27
import org.gvsig.remoteClient.gml.schemas.IXMLType;
28
import org.gvsig.remoteClient.gml.schemas.XMLComplexType;
26 29
import org.gvsig.remoteClient.gml.schemas.XMLElement;
27 30

  
28 31
import com.hardcode.gdbms.engine.data.driver.DriverException;
......
453 456
                
454 457
        try {
455 458
        	int numberOfFields = model.getFieldCount();
456
        	
459

  
457 460
        	if (numberOfFields > 0) {
458 461
        		Vector fields = new Vector(0, 1);
459 462
        		int j = 0;
460 463
        	
461 464
				for (int i = 0; i < numberOfFields; i++) {
462
					Object field = model.getFieldName(i);
465
					 Object field = model.getFieldName(i);
463 466
					
464 467
					if (field != null) {
465 468
						fields.add(field);
......
728 731
	 */
729 732
	private void setFields(WFSLayerNode feature) {
730 733
		Vector fields = feature.getFields();
734
//		Vector fieldsWithoutGeometry = new Vector(0, 1);
731 735
				
732 736
		this.resetFieldsAndValuesData();
733 737
		
734 738
		int numberOfFields = fields.size();
735 739
		
736 740
		if (numberOfFields > 0) {
737
			int j = 0;
741
//			int j = 0;
738 742
			Vector fieldBranches = new Vector(0, 1);
743
//			Vector fieldsClone = (Vector)fields.clone();
739 744
			
740
			for (int i=0 ; i<fields.size() ;i++) {
741
				XMLElement field = (XMLElement)fields.get(i);				
742

  
745
			for (int i=0; i<fields.size(); i++) {
746
				XMLElement field = (XMLElement)fields.get(i);
747
				
748
//				XMLElement aaa = (XMLElement)new Object();
749
//				aaa.
750
//								
743 751
				IXMLType type = field.getEntityType();
744 752
				
745
				if (type != null) {
753
				if (type != null) {					
754
					
746 755
					switch (type.getType()) {
747 756
						case IXMLType.GML_GEOMETRY:
757
						//	fields.remove(i);
748 758
							break;
749
						case IXMLType.COMPLEX:
759
						case IXMLType.COMPLEX: // Now it's implemented that the first level is always COMPLEX
760
//							Object field_clone = new Object();
761
//							field_clone = field;
762
							
763
//							// If the complex element has a geometry, don't load this field in the tree
764
//							Object field_copy = new Object();
765
//							field_copy = field;
766
//							
767
//							Map c_fields_map = ((XMLComplexType)((XMLElement)field_copy).getEntityType()).getSubtypes();
768
//							
769
//							Collection c_fields = c_fields_map.values();
770
//							
771
//							Iterator iterator = c_fields.iterator();
772
//							XMLElement element = null;
773
//							
774
//							while(iterator.hasNext()) {
775
//								element = (XMLElement)iterator.next();
776
//								
777
//								if (element.getEntityType().getType() == IXMLType.GML_GEOMETRY) {
778
//									iterator.remove();
779
//								}
780
//							}
781
//							
782
//							fieldBranches.add(field_copy);
783
//							fieldsWithoutGeometry.add(field_clone);
750 784
							fieldBranches.add(field);
751
							j++;
785
//							j++;
752 786
							break;
753 787
						case IXMLType.SIMPLE:
754 788
							fieldBranches.add(field);
755
							j++;
789
//							fieldsWithoutGeometry.add(field);
790
//							j++;
756 791
							break;
757 792
					}
758 793
				}
759 794
			}
760 795
			
761 796
			attributesTreeTableModel = new AttributesTreeTableModel(fieldBranches.get(0));
762
			fieldsJTree.setModel(attributesTreeTableModel);
797
			fieldsJTree.setModel(new AttributesTreeTableModel(fieldBranches.get(0), false));
763 798
		}
764 799
	}
765 800

  
trunk/extensions/extWFS2/src/com/iver/cit/gvsig/gui/panels/attributesTree/AttributesTreeTableModel.java
4 4

  
5 5
import org.gvsig.gui.beans.swing.treeTable.AbstractTreeTableModel;
6 6
import org.gvsig.gui.beans.swing.treeTable.TreeTableModel;
7
import org.gvsig.remoteClient.gml.schemas.GMLGeometryType;
7 8
import org.gvsig.remoteClient.gml.schemas.IXMLType;
8 9
import org.gvsig.remoteClient.gml.schemas.XMLComplexType;
9 10
import org.gvsig.remoteClient.gml.schemas.XMLElement;
......
55 56
 *
56 57
 * $Id$
57 58
 * $Log$
58
 * Revision 1.4  2006-11-01 17:29:07  jorpiell
59
 * Revision 1.5  2006-11-10 09:04:33  ppiqueras
60
 * La geometría no se visualiza en el árbol del panel de filtro, pero sí en el de atributos
61
 *
62
 * Revision 1.4  2006/11/01 17:29:07  jorpiell
59 63
 * Se ha elimiado el nodo virtual de la raiz. Adem?s ya se cargan los valores de un campo complejo en la pesta?a del filtro
60 64
 *
61 65
 * Revision 1.3  2006/10/31 13:51:15  ppiqueras
......
85 89
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
86 90
 */
87 91
public class AttributesTreeTableModel extends AbstractTreeTableModel {
92
	private boolean showGeometry;	
88 93
	private String[]  cNames = {PluginServices.getText(this,"attributeName"),
89 94
			PluginServices.getText(this,"attributeType")};
90 95
	private Class[]  cTypes = {TreeTableModel.class,String.class};
91 96
			
92 97
	public AttributesTreeTableModel(Object root) { 
93
		super(root);			
94
	}		
98
		super(root);
99
		showGeometry = true;
100
	}
95 101
	
102
	public AttributesTreeTableModel(Object root, boolean show_Geometry) { 
103
		super(root);
104
		showGeometry = show_Geometry;
105
	}
106
	
96 107
	public AttributesTreeTableModel() { 
97
		super(null); 		
108
		super(null);
109
		showGeometry = true;
98 110
	}
99 111
	
112
	public boolean getShowGeometry() {
113
		return showGeometry;
114
	}
115
	
100 116
	//
101 117
	// The TreeModel interface
102 118
	//
......
104 120
	public int getChildCount(Object node) { 
105 121
		XMLElement element = (XMLElement)node;			
106 122
		if (element.getEntityType().getType() == IXMLType.COMPLEX){
107
			return ((XMLComplexType)element.getEntityType()).getAttributes().size();
123

  
124
			// It's supposed that geometry is on level 1
125
			Vector attributes = ((XMLComplexType)element.getEntityType()).getAttributes();
126
			int size = attributes.size();
127
			
128
			if (!showGeometry) {
129
				for (int i = 0; i < attributes.size(); i++) {
130
					if (((XMLElement)attributes.get(i)).getEntityType().getType() == IXMLType.GML_GEOMETRY)
131
						size --;
132
				}
133
			}
134
			
135
			return size;
108 136
		}else{
109 137
			return 0;
110 138
		}
......
113 141
	public Object getChild(Object node, int i) { 
114 142
		XMLElement element = (XMLElement)node;			
115 143
		if (element.getEntityType().getType() == IXMLType.COMPLEX){
116
			Vector vector = ((XMLComplexType)element.getEntityType()).getAttributes();
117
			XMLElement child = (XMLElement) vector.get(i);
144
			Vector attributes = ((XMLComplexType)element.getEntityType()).getAttributes();
145
			XMLElement child = null;
146
			int k = -1;
147
			
148
			if (!showGeometry) {
149
				for (int j = 0; j < attributes.size(); j++) {
150
					child = (XMLElement) attributes.get(j);
151

  
152
					if (child.getEntityType().getType() != IXMLType.GML_GEOMETRY)
153
						k++;					
154
					
155
					if (i == k)
156
						break;
157
				}	
158
			}
159
			else {
160
				child = (XMLElement) attributes.get(i);
161
			}
162
			
118 163
			child.setParentElement(element);
164
			
119 165
			return child;
120 166
		}
121 167
		return null;

Also available in: Unified diff