Revision 8663
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