Skip to content

Commit 3a4e333

Browse files
committed
Fixes to allow feature.builder to actually run
1 parent b1e8b46 commit 3a4e333

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

geoscript/src/main/scala/feature/Feature.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ package object feature {
4747
* @see [[org.geoscript.feature.SchemaBuilder]]
4848
*/
4949
val schemaFactory: org.opengis.feature.`type`.FeatureTypeFactory =
50-
org.geotools.factory.CommonFactoryFinder.getFeatureTypeFactory(null)
50+
new org.geotools.feature.`type`.FeatureTypeFactoryImpl
5151

5252
/**
5353
* A feature factory with default configuration.

geoscript/src/main/scala/feature/builder/Builder.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ package builder {
9999
sealed trait Fields[T] {
100100
def conformsTo(schema: Schema): Boolean
101101
def fields: Seq[Field]
102+
def values(t: T): Seq[AnyRef]
102103
def unapply(feature: Feature): Option[T]
103104
def update(feature: Feature, value: T): Unit
104105

@@ -151,7 +152,7 @@ package builder {
151152
featureFactory: org.opengis.feature.FeatureFactory)
152153
: T => Feature = {
153154
t =>
154-
val feature = featureFactory.createSimpleFeature(Array.empty, schema, null)
155+
val feature = featureFactory.createSimpleFeature(values(t).toArray, schema, "")
155156
update(feature, t)
156157
feature
157158
}
@@ -165,6 +166,10 @@ package builder {
165166
def conformsTo(schema: Schema): Boolean =
166167
(tFields conformsTo schema) && (uFields conformsTo schema)
167168
def fields = tFields.fields ++ uFields.fields
169+
def values(x: T ~ U): Seq[AnyRef] = {
170+
val (t ~ u) = x
171+
tFields.values(t) ++ uFields.values(u)
172+
}
168173
def update(feature: Feature, value: T ~ U) {
169174
val (t ~ u) = value
170175
tFields(feature) = t
@@ -182,6 +187,7 @@ package builder {
182187
def conformsTo(schema: Schema): Boolean = schema.fields.exists(field =>
183188
field.name == name && field.binding.isAssignableFrom(clazz))
184189
def fields = Seq(schemaBuilder.Field(name, clazz))
190+
def values(t: T): Seq[AnyRef] = Seq(t)
185191
def update(feature: Feature, value: T) {
186192
feature.setAttribute(name, value)
187193
}

0 commit comments

Comments
 (0)