Revision 44655 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
DefaultFeature.java | ||
---|---|---|
24 | 24 |
package org.gvsig.fmap.dal.feature.impl; |
25 | 25 |
|
26 | 26 |
import java.lang.ref.WeakReference; |
27 |
import java.time.format.DateTimeFormatter; |
|
27 | 28 |
import java.util.ArrayList; |
28 | 29 |
import java.util.Date; |
29 | 30 |
import java.util.Iterator; |
30 | 31 |
import java.util.List; |
31 | 32 |
import java.util.Map; |
33 |
import java.util.Objects; |
|
34 |
import javax.json.Json; |
|
35 |
import javax.json.JsonObject; |
|
36 |
import javax.json.JsonObjectBuilder; |
|
32 | 37 |
import org.apache.commons.lang3.StringUtils; |
33 | 38 |
import org.cresques.cts.IProjection; |
34 | 39 |
import org.gvsig.fmap.dal.DALLocator; |
... | ... | |
1099 | 1104 |
return this.data.getExtraValue(index); |
1100 | 1105 |
} |
1101 | 1106 |
|
1107 |
public JsonObject toJSON() { |
|
1108 |
JsonObjectBuilder builder = Json.createObjectBuilder(); |
|
1109 |
|
|
1110 |
FeatureType ft = this.getType(); |
|
1111 |
for (FeatureAttributeDescriptor desc : ft) { |
|
1112 |
if (desc.isComputed()) { |
|
1113 |
continue; |
|
1114 |
} |
|
1115 |
switch(desc.getType()) { |
|
1116 |
case DataTypes.GEOMETRY: |
|
1117 |
{ |
|
1118 |
try { |
|
1119 |
builder.add(desc.getName(), this.getGeometry(desc.getIndex()).convertToWKT()); |
|
1120 |
} catch (Exception ex) { |
|
1121 |
throw new RuntimeException("Can't convert geometry to WKT.", ex); |
|
1122 |
} |
|
1123 |
} |
|
1124 |
break; |
|
1125 |
case DataTypes.BOOLEAN: |
|
1126 |
builder.add(desc.getName(), this.getBoolean(desc.getIndex())); |
|
1127 |
break; |
|
1128 |
case DataTypes.BYTE: |
|
1129 |
builder.add(desc.getName(), this.getByte(desc.getIndex())); |
|
1130 |
break; |
|
1131 |
case DataTypes.INT: |
|
1132 |
builder.add(desc.getName(), this.getInt(desc.getIndex())); |
|
1133 |
break; |
|
1134 |
case DataTypes.LONG: |
|
1135 |
builder.add(desc.getName(), this.getLong(desc.getIndex())); |
|
1136 |
break; |
|
1137 |
case DataTypes.DOUBLE: |
|
1138 |
builder.add(desc.getName(), this.getDouble(desc.getIndex())); |
|
1139 |
break; |
|
1140 |
case DataTypes.FLOAT: |
|
1141 |
builder.add(desc.getName(), this.getFloat(desc.getIndex())); |
|
1142 |
break; |
|
1143 |
case DataTypes.DATE: |
|
1144 |
// Format date as ISO 8601 |
|
1145 |
Date date = this.getDate(desc.getIndex()); |
|
1146 |
String value = DateTimeFormatter.ISO_DATE_TIME.format(date.toInstant()); |
|
1147 |
builder.add(desc.getName(), value); |
|
1148 |
break; |
|
1149 |
default: |
|
1150 |
builder.add(desc.getName(), Objects.toString(this.get(desc.getIndex()),"")); |
|
1151 |
} |
|
1152 |
} |
|
1153 |
return builder.build(); |
|
1154 |
} |
|
1102 | 1155 |
|
1103 | 1156 |
} |
Also available in: Unified diff