SimpleFeature f = SimpleFeatureBuilder.build(schema, attributes, feature.getID()); f.getUserData().putAll(feature.getUserData()); return f; } catch (IllegalAttributeException e) {
static SimpleFeature retype(SimpleFeature source, SimpleFeatureBuilder builder) throws IllegalAttributeException { SimpleFeatureType target = builder.getFeatureType(); for (int i = 0; i < target.getAttributeCount(); i++) { AttributeDescriptor attributeType = target.getDescriptor(i); Object value = null; if (source.getFeatureType().getDescriptor(attributeType.getName()) != null) { value = source.getAttribute(attributeType.getName()); } builder.add(value); } FeatureId id = reTypeId(source.getIdentifier(), source.getFeatureType(), target); SimpleFeature retyped = builder.buildFeature(id.getID()); retyped.getUserData().putAll(source.getUserData()); return retyped; }
public Map<Object, Object> getUserData() { return delegate.getUserData(); }
public Map<Object, Object> getUserData() { return delegate.getUserData(); }
public static boolean useExisting(SimpleFeature feature) { return Boolean.TRUE.equals(feature.getUserData().get(Hints.USE_PROVIDED_FID)); } }
b.add(new WKTReader().read("POINT(1 1)")); SimpleFeature f = b.buildFeature(null); f.getUserData().put("foo", "bar");
private void writeImplementation(SimpleFeature f) throws IOException { if (writer == null) { throw new IOException("Writer has been closed"); } writer.newLine(); writer.flush(); String fid = f.getID(); if (Boolean.TRUE.equals(f.getUserData().get(Hints.USE_PROVIDED_FID))) { if (f.getUserData().containsKey(Hints.PROVIDED_FID)) { fid = (String) f.getUserData().get(Hints.PROVIDED_FID); } } writeFeatureID(fid); for (int i = 0; i < f.getAttributeCount(); i++) { Object value = f.getAttribute(i); write(i, value); } }
/** * Initialize the builder with the provided feature. * * <p>This method adds all the attributes from the provided feature. It is useful when copying a * feature. */ public void init(SimpleFeature feature) { reset(); // optimize the case in which we just build if (feature instanceof SimpleFeatureImpl) { SimpleFeatureImpl impl = (SimpleFeatureImpl) feature; System.arraycopy(impl.values, 0, values, 0, impl.values.length); if (impl.userData != null) { featureUserData = new HashMap(impl.userData); } } else { for (Object value : feature.getAttributes()) { add(value); } if (!feature.getUserData().isEmpty()) { featureUserData = new HashMap(feature.getUserData()); } } }
feature.getUserData().put("fid", fid); keyValues.clear();
@Override public void postInsert( SimpleFeatureType featureType, SimpleFeature feature, Connection cx, Statement st) throws SQLException { if (!isPostInsert()) { return; } List<Object> keyValues = getLastValues(cx, st); String fid = featureType.getTypeName() + "." + JDBCDataStore.encodeFID(keyValues); feature.getUserData().put("fid", fid); }
if (orig != null) { ((FeatureIdImpl) orig.getIdentifier()).setID(fid); orig.getUserData().putAll(cur.getUserData()); orig.getUserData().remove(ContentFeatureStore.ORIGINAL_FEATURE_KEY);
@Override public SimpleFeature buildFeature(DBObject rootDBO, SimpleFeatureType featureType) { String gdLocalName = featureType.getGeometryDescriptor().getLocalName(); List<AttributeDescriptor> adList = featureType.getAttributeDescriptors(); List<Object> values = new ArrayList<Object>(adList.size()); for (AttributeDescriptor descriptor : adList) { String adLocalName = descriptor.getLocalName(); if (gdLocalName.equals(adLocalName)) { values.add(getGeometry(rootDBO)); } else { String path = getPropertyPath(adLocalName); Object o = path == null ? null : MongoUtil.getDBOValue(rootDBO, path); values.add( o == null ? null : Converters.convert(o, descriptor.getType().getBinding())); } } SimpleFeature feature = new MongoFeature( rootDBO, values.toArray(), featureType, rootDBO.get("_id").toString()); // we store a reference to the original feature in the user data feature.getUserData().put(MONGO_OBJECT_FEATURE_KEY, feature); return feature; } }
/** Set all the key values (the ones that are known before insert) for a prepared statement. */ public int setKeyValues( PreparedStatementSQLDialect dialect, PreparedStatement ps, Connection cx, SimpleFeatureType featureType, SimpleFeature feature, int curFieldPos) throws IOException, SQLException { final List<Object> keyValues = getNextValues(cx, feature); for (int i = 0; i < key.getColumns().size(); i++) { final PrimaryKeyColumn col = key.getColumns().get(i); final Object value = keyValues.get(i); if (value != NOT_SET_BEFORE_INSERT) { dialect.setValue(value, col.getType(), ps, curFieldPos++, cx); } } if (!isPostInsert()) { // report the feature id as user data since we cant set the fid. String fid = featureType.getTypeName() + "." + JDBCDataStore.encodeFID(keyValues); feature.getUserData().put("fid", fid); } return curFieldPos; }
private SimpleFeatureCollection createFeatureCollection() throws Exception { SimpleFeatureType type = dataStore.getSchema(tname("uuidt")); GeometryFactory gf = new GeometryFactory(); Point p = gf.createPoint(new Coordinate(138.6, -34.93)); SimpleFeature feature1 = SimpleFeatureBuilder.build(type, new Object[] {p}, uuid1.toString()); feature1.getUserData().put(Hints.USE_PROVIDED_FID, true); feature1.getUserData().put(Hints.PROVIDED_FID, uuid1); SimpleFeature feature2 = SimpleFeatureBuilder.build(type, new Object[] {p}, uuid2.toString()); feature2.getUserData().put(Hints.USE_PROVIDED_FID, true); feature2.getUserData().put(Hints.PROVIDED_FID, uuid2); SimpleFeature feature3 = SimpleFeatureBuilder.build(type, new Object[] {p}, uuid3.toString()); feature3.getUserData().put(Hints.USE_PROVIDED_FID, true); feature3.getUserData().put(Hints.PROVIDED_FID, uuid3); return DataUtilities.collection(new SimpleFeature[] {feature1, feature2, feature3}); } }
feature.getUserData().put("fid", fid);
public void testSegregateUseExisting() throws Exception { SimpleFeatureType featureType = buildType(); Collection<SimpleFeature> features = new ArrayList<>(); SimpleFeature f2 = createFeature(featureType, "toto", createLineString(), createPolygon()); f2.getUserData().put(Hints.USE_PROVIDED_FID, true); features.add(f2); features.add(createFeature(featureType, "tutu", createLineString(), createPolygon())); Map<InsertionClassifier, Collection<SimpleFeature>> actual = InsertionClassifier.classify(featureType, features); assertEquals(2, actual.size()); Set<Boolean> uses = new HashSet<>(); for (InsertionClassifier kind : actual.keySet()) { uses.add(kind.useExisting); assertEquals(2, kind.geometryTypes.size()); assertEquals(LineString.class, kind.geometryTypes.get("geom1")); assertEquals(Polygon.class, kind.geometryTypes.get("geom2")); assertEquals(1, actual.get(kind).size()); } assertEquals(new HashSet<>(Arrays.asList(Boolean.FALSE, Boolean.TRUE)), uses); }
public void testUserData() throws Exception { GeometryFactory gf = new GeometryFactory(); builder.add(gf.createPoint(new Coordinate(0, 0))); builder.add(Integer.valueOf(1)); builder.add(new Float(2.0)); builder.featureUserData("foo", "bar"); SimpleFeature feature = builder.buildFeature("fid"); assertNotNull(feature); assertEquals("bar", feature.getUserData().get("foo")); builder = new SimpleFeatureBuilder(feature.getFeatureType()); builder.init(feature); feature = builder.buildFeature("fid"); assertNotNull(feature); assertEquals("bar", feature.getUserData().get("foo")); } }
features.add(feature); feature.getUserData().put("someKey", "someValue"); checkDoubleValue(geometry.getY(), 111325.1429, 0.0001); assertThat(reprojectedFeature.getUserData().get("someKey"), is("someValue"));
protected void addFeature(SimpleFeatureType featureType, JDBCFeatureStore features) throws Exception { SimpleFeatureBuilder b = new SimpleFeatureBuilder(featureType); b.add("four"); b.add(new GeometryFactory().createPoint(new Coordinate(4, 4))); SimpleFeature f = b.buildFeature(null); features.addFeatures(DataUtilities.collection(f)); // pattern match to handle the multi primary key case assertTrue( ((String) f.getUserData().get("fid")) .matches(tname(featureType.getTypeName()) + ".4(\\..*)?")); }
protected void addFeature(SimpleFeatureType featureType, JDBCFeatureStore features) throws Exception { SimpleFeatureBuilder b = new SimpleFeatureBuilder(featureType); b.add("four"); b.add(new GeometryFactory().createPoint(new Coordinate(4, 4))); SimpleFeature f = b.buildFeature(null); features.addFeatures(DataUtilities.collection(f)); // pattern match to handle the multi primary key case assertTrue( ((String) f.getUserData().get("fid")) .matches(tname(featureType.getTypeName()) + ".4(\\..*)?")); }