/** * Builds a {@link RevFeatureType} for the given feature type, computing its id throuh * {@link HashObject} */ public static RevFeatureType build(FeatureType featureType) { checkNotNull(featureType); featureType = adapt(featureType); ObjectId id = HashObject.hashFeatureType(featureType); return RevFeatureTypeBuilder.create(id, featureType); }
public static RevFeatureType readFeatureType(ObjectId id, DataInput in, FeatureTypeFactory typeFactory) throws IOException { Name name = readName(in); int propertyCount = in.readInt(); List<AttributeDescriptor> attributes = new ArrayList<AttributeDescriptor>(); for (int i = 0; i < propertyCount; i++) { attributes.add(readAttributeDescriptor(in, typeFactory)); } SimpleFeatureType ftype = typeFactory.createSimpleFeatureType(name, attributes, null, false, Collections.<Filter> emptyList(), BasicFeatureTypes.FEATURE, null); return RevFeatureTypeBuilder.create(id, ftype); }
public RevFeatureType readFeatureType(@Nullable ObjectId id, DataInput in, FeatureTypeFactory typeFactory) throws IOException { Name name = readName(in); int propertyCount = readUnsignedVarInt(in); List<AttributeDescriptor> attributes = new ArrayList<AttributeDescriptor>(); for (int i = 0; i < propertyCount; i++) { attributes.add(readAttributeDescriptor(in, typeFactory)); } SimpleFeatureType ftype = typeFactory.createSimpleFeatureType(name, attributes, null, false, Collections.<Filter> emptyList(), BasicFeatureTypes.FEATURE, null); RevFeatureType revtype; if (id == null) { revtype = RevFeatureTypeBuilder.build(ftype); } else { revtype = RevFeatureTypeBuilder.create(id, ftype); } return revtype; }
@Test public void testGet() throws Exception { ObjectId meta1 = getOID(1); ObjectId meta2 = getOID(2); SimpleFeatureType fType1 = DataUtilities.createType("location", "the_geom:Point:srid=4326,name:String,name2:String"); RevFeatureType revft1 = RevFeatureTypeBuilder.create(getOID(1), fType1); SimpleFeatureType fType2 = DataUtilities.createType("location", "the_geom:Point:srid=4326,name3:String,name4:String"); RevFeatureType revft2 = RevFeatureTypeBuilder.create(getOID(1), fType2); ObjectDatabase odb = mock(ObjectDatabase.class); when(odb.getFeatureType(meta1)).thenReturn(revft1); when(odb.getFeatureType(meta2)).thenReturn(revft2); MultiFeatureTypeBuilder builder = new MultiFeatureTypeBuilder(odb); FeatureBuilder fb1 = builder.get(meta1); FeatureBuilder fb2 = builder.get(meta2); Assert.isTrue(fb1 == builder.get(meta1)); // not rebuilt Assert.isTrue(fb2 == builder.get(meta2)); // not rebuilt Assert.isTrue(fb1.getType().equals(revft1)); Assert.isTrue(fb2.getType().equals(revft2)); }
RevFeatureType revft1 = RevFeatureTypeBuilder.create(meta1, fType1);
@Test public void testBuild() throws Exception { ObjectId meta1 = getOID(1); SimpleFeatureType fType1 = DataUtilities.createType("location", "the_geom:Point:srid=4326,name:String,name2:String"); RevFeatureType revft1 = RevFeatureTypeBuilder.create(getOID(1), fType1); ObjectDatabase odb = mock(ObjectDatabase.class); when(odb.getFeatureType(meta1)).thenReturn(revft1); WKTReader2 wkt = new WKTReader2(); RevFeature feat = RevObjectTestSupport.feature(wkt.read("POINT(0 0)"), "abc", "def"); Node n1 = Node.create("name1", getOID(2), meta1, TYPE.FEATURE, new Envelope()); NodeRef nr1 = new NodeRef(n1, "testcase", meta1); ObjectInfo<RevFeature> fi = ObjectInfo.of(nr1, feat); MultiFeatureTypeBuilder builder = new MultiFeatureTypeBuilder(odb); SimpleFeature sf = builder.apply(fi); Assert.isTrue(sf.getAttribute("name").equals("abc")); Assert.isTrue(sf.getAttribute("name2").equals("def")); }
RevFeatureType fakeType = RevFeatureTypeBuilder.create(metadataId, pointsType); if (!db.exists(fakeType.getId())) { db.put(fakeType);