Revision 46956
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 | ||
---|---|---|
41 | 41 |
import javax.json.JsonObject; |
42 | 42 |
import org.apache.commons.lang3.ArrayUtils; |
43 | 43 |
import org.apache.commons.lang3.StringUtils; |
44 |
import org.apache.commons.lang3.tuple.Pair; |
|
45 | 44 |
import org.cresques.cts.IProjection; |
46 | 45 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
47 | 46 |
import org.gvsig.fmap.dal.DALLocator; |
... | ... | |
59 | 58 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
60 | 59 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
61 | 60 |
import org.gvsig.fmap.dal.feature.FeatureType; |
62 |
import org.gvsig.fmap.dal.feature.ForeingKey; |
|
63 | 61 |
import org.gvsig.fmap.dal.feature.exception.IllegalValueException; |
64 | 62 |
import org.gvsig.fmap.dal.feature.exception.SetReadOnlyAttributeException; |
65 | 63 |
import org.gvsig.fmap.dal.feature.impl.dynobjectutils.DynObjectFeatureFacade; |
... | ... | |
71 | 69 |
import org.gvsig.json.Json; |
72 | 70 |
import org.gvsig.json.JsonArrayBuilder; |
73 | 71 |
import org.gvsig.json.JsonObjectBuilder; |
74 |
import org.gvsig.json.SupportToJson; |
|
75 | 72 |
import org.gvsig.tools.ToolsLocator; |
76 | 73 |
import org.gvsig.tools.dataTypes.Coercion; |
77 | 74 |
import org.gvsig.tools.dataTypes.CoercionException; |
78 | 75 |
import org.gvsig.tools.dataTypes.DataType; |
79 | 76 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
77 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
80 | 78 |
import org.gvsig.tools.dynobject.DynField; |
79 |
import static org.gvsig.tools.dynobject.DynField.RELATION_TYPE_AGGREGATE; |
|
80 |
import static org.gvsig.tools.dynobject.DynField.RELATION_TYPE_COLLABORATION; |
|
81 | 81 |
import static org.gvsig.tools.dynobject.DynField.RELATION_TYPE_COMPOSITION; |
82 | 82 |
import org.gvsig.tools.dynobject.DynObject; |
83 | 83 |
import org.gvsig.tools.evaluator.Evaluator; |
... | ... | |
1651 | 1651 |
Geometry geom; |
1652 | 1652 |
FeatureType ft = this.getType(); |
1653 | 1653 |
|
1654 |
boolean hasVisited = false; |
|
1655 |
if(visiteds != null){ |
|
1656 |
FeatureReference ref = this.getReference(); |
|
1657 |
String code = ref.getCode(); |
|
1658 |
hasVisited = visiteds.contains(code); |
|
1659 |
if(hasVisited){ |
|
1660 |
return this.featureReferenceToJson(ref); |
|
1661 |
} |
|
1662 |
visiteds.add(code); |
|
1663 |
} |
|
1664 |
|
|
1654 | 1665 |
for (FeatureAttributeDescriptor desc : ft) { |
1655 | 1666 |
if (desc.isComputed() ) { |
1656 | 1667 |
if( !mode.isSetBits(TOJSON_MODE_COMPUTEDS) ) { |
... | ... | |
1659 | 1670 |
} |
1660 | 1671 |
} |
1661 | 1672 |
} |
1662 |
if(this.isNull(desc.getName())){
|
|
1673 |
if(desc.getType() != DataTypes.LIST && this.isNull(desc.getName()) ){
|
|
1663 | 1674 |
builder.addNull(desc.getName()); |
1664 | 1675 |
continue; |
1665 | 1676 |
} |
1666 | 1677 |
if( desc.isForeingKey() && !desc.getForeingKey().isClosedList() && mode.isSetBits(TOJSON_MODE_DEEP) ) { |
1667 |
if( desc.getRelationType()==RELATION_TYPE_COMPOSITION ) { // --Ojo--
|
|
1678 |
if( desc.getRelationType()==DynField.RELATION_TYPE_COLLABORATION_WITH_COMPOSITION) {
|
|
1668 | 1679 |
Object value = this.get(desc.getName()); |
1669 | 1680 |
Feature f = desc.getForeingKey().getFeature(null, value); |
1670 | 1681 |
String x = f.getReference().getCode(); |
... | ... | |
1674 | 1685 |
} else { |
1675 | 1686 |
builder.add(desc.getName(), f.toJsonBuilder(props)); |
1676 | 1687 |
} |
1688 |
continue; |
|
1677 | 1689 |
} else if( !visiteds.contains(x) ) { |
1678 |
visiteds.add(x); |
|
1679 | 1690 |
if( f instanceof DefaultFeature ) { |
1680 | 1691 |
builder.add(desc.getName(), ((DefaultFeature)f).toJsonBuilder(props, mode, visiteds)); |
1681 | 1692 |
} else { |
1682 | 1693 |
builder.add(desc.getName(), f.toJsonBuilder(props)); |
1683 | 1694 |
} |
1695 |
continue; |
|
1684 | 1696 |
} |
1685 |
continue; |
|
1686 | 1697 |
} |
1687 | 1698 |
} |
1688 | 1699 |
switch (desc.getType()) { |
... | ... | |
1748 | 1759 |
break; |
1749 | 1760 |
case DataTypes.LIST: |
1750 | 1761 |
if( mode.isSetBits(TOJSON_MODE_COLLECTIONS) ) { |
1751 |
if( desc.getRelationType()==RELATION_TYPE_COMPOSITION ) {
|
|
1762 |
if( desc.getRelationType()== DynField.RELATION_TYPE_AGGREGATE_WITH_COMPOSITION) {
|
|
1752 | 1763 |
JsonArrayBuilder arraybuilder = Json.createArrayBuilder(); |
1753 | 1764 |
Object x = this.get(desc.getName()); |
1754 | 1765 |
if( x instanceof List ) { |
1755 | 1766 |
for (Object v : (List)x) { |
1756 | 1767 |
if( v instanceof DefaultFeature ) { |
1757 |
arraybuilder.add(((DefaultFeature)v).toJsonBuilder(props, mode, visiteds)); |
|
1768 |
arraybuilder.add(((DefaultFeature)v).toJsonBuilder(props, mode, visiteds));
|
|
1758 | 1769 |
} else if( v instanceof Feature ) { |
1759 | 1770 |
arraybuilder.add(((Feature)v).toJsonBuilder(props)); |
1760 | 1771 |
} |
1761 | 1772 |
} |
1762 | 1773 |
} |
1774 |
DisposeUtils.disposeQuietly(x); |
|
1763 | 1775 |
builder.add(desc.getName(), arraybuilder); |
1764 | 1776 |
} |
1765 | 1777 |
} |
... | ... | |
1771 | 1783 |
} |
1772 | 1784 |
return builder; |
1773 | 1785 |
} |
1786 |
|
|
1787 |
private JsonObjectBuilder featureReferenceToJson(FeatureReference ref){ |
|
1788 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
1789 |
builder.add("$reference", ref.toJsonBuilder()); |
|
1790 |
return builder; |
|
1791 |
} |
|
1774 | 1792 |
|
1775 | 1793 |
@Override |
1776 | 1794 |
public List<String> getKeys() { |
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/featurereference/FeatureReferencePK.java | ||
---|---|---|
20 | 20 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
21 | 21 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
22 | 22 |
import org.gvsig.json.Json; |
23 |
import org.gvsig.json.JsonArrayBuilder; |
|
23 | 24 |
import org.gvsig.json.JsonObjectBuilder; |
24 | 25 |
import org.gvsig.tools.persistence.Persistent; |
25 | 26 |
import org.gvsig.tools.persistence.PersistentState; |
... | ... | |
132 | 133 |
|
133 | 134 |
@Override |
134 | 135 |
public String getCode() { |
135 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
136 |
builder.add("type", PK_TYPE); |
|
137 |
if (this.pk == null) { |
|
138 |
builder.add("size", -1); |
|
139 |
builder.addNull("names"); |
|
140 |
builder.addNull("values"); |
|
141 |
} else { |
|
142 |
builder.add("size", pkNames.length); |
|
143 |
builder.add("names", this.pkNames); |
|
144 |
builder.add("values", this.pk); |
|
145 |
} |
|
146 |
|
|
147 |
String s = builder.toString(); |
|
136 |
String s = toJsonBuilder().toString(); |
|
148 | 137 |
String r = Base64.getEncoder().encodeToString(s.getBytes()); |
149 | 138 |
return r; |
150 | 139 |
} |
... | ... | |
235 | 224 |
return myHashCode; |
236 | 225 |
} |
237 | 226 |
|
227 |
@Override |
|
228 |
public JsonObjectBuilder toJsonBuilder() { |
|
229 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
230 |
builder.add("type", PK_TYPE); |
|
231 |
if (this.pk == null) { |
|
232 |
builder.addNull("names"); |
|
233 |
builder.addNull("values"); |
|
234 |
} else { |
|
235 |
JsonArrayBuilder arrayNames = Json.createArrayBuilder(); |
|
236 |
JsonArrayBuilder arrayValues = Json.createArrayBuilder(); |
|
237 |
for (int i = 0; i < pk.length; i++) { |
|
238 |
arrayNames.add(pkNames[i]); |
|
239 |
arrayValues.add(pk[i]); |
|
240 |
} |
|
241 |
builder.add("names", arrayNames); |
|
242 |
builder.add("values", arrayValues); |
|
243 |
} |
|
244 |
return builder; |
|
245 |
} |
|
238 | 246 |
} |
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/featurereference/FeatureReferenceOID.java | ||
---|---|---|
101 | 101 |
|
102 | 102 |
@Override |
103 | 103 |
public String getCode() { |
104 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
105 |
builder.add("type", OID_TYPE); |
|
106 |
builder.add("oid", this.oid); |
|
107 |
String s = builder.toString(); |
|
104 |
String s = this.toJsonBuilder().toString(); |
|
108 | 105 |
String r = Base64.getEncoder().encodeToString(s.getBytes()); |
109 | 106 |
return r; |
110 | 107 |
} |
... | ... | |
161 | 158 |
return -1; |
162 | 159 |
} |
163 | 160 |
|
161 |
@Override |
|
162 |
public JsonObjectBuilder toJsonBuilder() { |
|
163 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
164 |
builder.add("type", OID_TYPE); |
|
165 |
builder.add("oid", this.oid); |
|
166 |
return builder; |
|
167 |
} |
|
164 | 168 |
|
169 |
|
|
165 | 170 |
} |
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/featurereference/FeatureReferenceCounter.java | ||
---|---|---|
6 | 6 |
package org.gvsig.fmap.dal.feature.impl.featurereference; |
7 | 7 |
|
8 | 8 |
import java.lang.ref.WeakReference; |
9 |
import java.math.BigDecimal; |
|
9 | 10 |
import java.util.Base64; |
10 | 11 |
import javax.json.JsonObject; |
11 | 12 |
import org.gvsig.fmap.dal.exception.DataException; |
... | ... | |
116 | 117 |
|
117 | 118 |
@Override |
118 | 119 |
public String getCode() { |
119 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
120 |
builder.add("type", COUNTER_TYPE); |
|
121 |
builder.add("oid", this.oid); |
|
122 |
String s = builder.toString(); |
|
120 |
String s = this.toJsonBuilder().toString(); |
|
123 | 121 |
String r = Base64.getEncoder().encodeToString(s.getBytes()); |
124 | 122 |
return r; |
125 | 123 |
} |
... | ... | |
176 | 174 |
return false; |
177 | 175 |
} |
178 | 176 |
|
177 |
@Override |
|
178 |
public JsonObjectBuilder toJsonBuilder() { |
|
179 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
180 |
builder.add("type", COUNTER_TYPE); |
|
181 |
builder.add("oid", this.oid); |
|
182 |
return builder; |
|
183 |
} |
|
179 | 184 |
|
185 |
|
|
180 | 186 |
} |
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/featurereference/FeatureReferenceUID.java | ||
---|---|---|
116 | 116 |
|
117 | 117 |
@Override |
118 | 118 |
public String getCode() { |
119 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
120 |
builder.add("type", UID_TYPE); |
|
121 |
builder.add("uid", this.uid); |
|
122 |
String s = builder.toString(); |
|
119 |
String s = this.toJsonBuilder().toString(); |
|
123 | 120 |
String r = Base64.getEncoder().encodeToString(s.getBytes()); |
124 | 121 |
return r; |
125 | 122 |
} |
... | ... | |
165 | 162 |
} |
166 | 163 |
return -1; |
167 | 164 |
} |
165 |
|
|
166 |
@Override |
|
167 |
public JsonObjectBuilder toJsonBuilder() { |
|
168 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
169 |
builder.add("type", UID_TYPE); |
|
170 |
builder.add("uid", this.uid); |
|
171 |
return builder; |
|
172 |
} |
|
168 | 173 |
|
169 | 174 |
} |
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/featurereference/DefaultFeatureReference.java | ||
---|---|---|
38 | 38 |
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore; |
39 | 39 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
40 | 40 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
41 |
import org.gvsig.json.JsonObjectBuilder; |
|
41 | 42 |
import org.gvsig.tools.ToolsLocator; |
42 | 43 |
import org.gvsig.tools.dynobject.DynStruct; |
43 | 44 |
import org.gvsig.tools.persistence.Persistent; |
... | ... | |
47 | 48 |
import org.json.JSONObject; |
48 | 49 |
|
49 | 50 |
@SuppressWarnings("UseSpecificCatch") |
51 |
@Deprecated |
|
50 | 52 |
public class DefaultFeatureReference implements |
51 | 53 |
FeatureReferenceProviderServices, Persistent { |
52 | 54 |
|
... | ... | |
456 | 458 |
return builder.toString(); |
457 | 459 |
} |
458 | 460 |
|
461 |
@Override |
|
462 |
public JsonObjectBuilder toJsonBuilder() { |
|
463 |
throw new UnsupportedOperationException("Not supported yet."); |
|
464 |
} |
|
465 |
|
|
459 | 466 |
} |
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/featuretype/DefaultFeatureAttributePanel.java | ||
---|---|---|
383 | 383 |
// relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Identity_1_1"),DynField.RELATION_TYPE_IDENTITY)); |
384 | 384 |
// relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Collaboration_1_1_without_composition"),DynField.RELATION_TYPE_COLLABORATION)); |
385 | 385 |
// relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Collaboration_1_1_with_composition"),DynField.RELATION_TYPE_COLLABORATION_WITH_COMPOSITION)); |
386 |
relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Aggregate_1_N_without_composition"),DynField.RELATION_TYPE_AGGREGATE_WITH_COMPOSITION));
|
|
387 |
relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Aggregate_1_N_with_composition"),DynField.RELATION_TYPE_AGGREGATE)); |
|
386 |
relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Aggregate_1_N_with_composition"),DynField.RELATION_TYPE_AGGREGATE_WITH_COMPOSITION)); |
|
387 |
relationTypeModel.addElement(new ListElement<>(i18n.getTranslation("_Aggregate_1_N_without_composition"),DynField.RELATION_TYPE_AGGREGATE));
|
|
388 | 388 |
this.cboRelationType.setModel(relationTypeModel); |
389 | 389 |
|
390 | 390 |
this.pickerMyField = dataSwingManager.createAttributeDescriptorPickerController(cboMyField); |
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/FeatureReference.java | ||
---|---|---|
24 | 24 |
package org.gvsig.fmap.dal.feature; |
25 | 25 |
|
26 | 26 |
import org.gvsig.fmap.dal.exception.DataException; |
27 |
import org.gvsig.json.SupportToJson; |
|
27 | 28 |
|
28 | 29 |
/** |
29 | 30 |
* A FeatureReference is a lightweight unique identifier for a |
... | ... | |
32 | 33 |
* memory needs. |
33 | 34 |
* |
34 | 35 |
*/ |
35 |
public interface FeatureReference { |
|
36 |
public interface FeatureReference extends SupportToJson{
|
|
36 | 37 |
|
37 | 38 |
/** |
38 | 39 |
* Returns the referenced {@link Feature} |
Also available in: Unified diff