Skip to content

Commit

Permalink
Provide a function to do version inspection (sort of a no-op for now
Browse files Browse the repository at this point in the history
though)
  • Loading branch information
dwins committed Oct 8, 2011
1 parent 49675d8 commit 4435c13
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 25 deletions.
41 changes: 38 additions & 3 deletions src/main/scala/Mapnik2GeoTools.scala
Expand Up @@ -243,8 +243,43 @@ object Mapnik2GeoTools {
}
}

trait Output {
def writeStyle(style: Node): Unit
def writeLayers(layers: NodeSeq): Unit
def rulesFor(mapnikXml: xml.Elem): Seq[RewriteRule] = {
val Version = """(\d+)\.(\d+)\.(\d+)""".r

val versionString = {
val mapnik1VersionString =
(mapnikXml \ "Map" \ "@minimum_version" headOption) map(_.text)
val mapnik2VersionString =
(mapnikXml \ "Map" \ "@minimum-version" headOption) map(_.text)
mapnik2VersionString orElse mapnik1VersionString
}

versionString match {
case None =>
// No version string found, just go with the latest and greatest.
// @todo: Give the user some feedback about that decision, maybe we
// make rulesFor return an Option[Seq[RewriteRule]] or an
// Either[Seq[RewriteRule], String] with the error message.
Seq(
FilterTransformer,
PointSymbolizerTransformer,
MarkersSymbolizerTransformer,
LineSymTransformer,
PolygonSymTransformer,
RasterSymTransformer,
new TextSymbolizerTransformer(mapnikXml \\ "FontSet")
)
case Some(Version(major, minor, patch)) =>
Seq(
FilterTransformer,
PointSymbolizerTransformer,
MarkersSymbolizerTransformer,
LineSymTransformer,
PolygonSymTransformer,
RasterSymTransformer,
new TextSymbolizerTransformer(mapnikXml \\ "FontSet")
)
case Some(v) => sys.error("I don't understand the version number \"%s\"".format(v))
}
}
}
34 changes: 12 additions & 22 deletions src/main/scala/driver.scala
Expand Up @@ -17,17 +17,12 @@ case class LocalConversion(
ensureOutputDirectory()
val original = xml.XML.load(mapnikFile.getAbsolutePath)
val convert =
new RuleTransformer(
FilterTransformer,
PointSymbolizerTransformer,
MarkersSymbolizerTransformer,
LineSymTransformer,
PolygonSymTransformer,
RasterSymTransformer,
new TextSymbolizerTransformer(original \\ "FontSet")
) andThen (new RuleTransformer(RuleCleanup))

val converted = convert(original)
new RuleTransformer(Mapnik2GeoTools.rulesFor(original): _*)
val cleanup =
new RuleTransformer(RuleCleanup)
val fullTransform = convert andThen cleanup

val converted = fullTransform(original)
val styles = converted \\ "Style"
styles.foreach { s =>
writeStyle(s)
Expand Down Expand Up @@ -176,17 +171,12 @@ case class PublishToGeoServer(
def run() {
val original = xml.XML.load(mapnikFile.getAbsolutePath)
val convert =
new RuleTransformer(
FilterTransformer,
PointSymbolizerTransformer,
MarkersSymbolizerTransformer,
LineSymTransformer,
PolygonSymTransformer,
RasterSymTransformer,
new TextSymbolizerTransformer(original \\ "FontSet")
) andThen (new RuleTransformer(RuleCleanup, URLResolver))

val converted = convert(original)
new RuleTransformer(Mapnik2GeoTools.rulesFor(original): _*)
val cleanup =
new RuleTransformer(RuleCleanup, URLResolver)
val fullTransform = convert andThen cleanup

val converted = fullTransform(original)
val styles = converted \\ "Style"
styles.foreach { s =>
writeStyle(s)
Expand Down

0 comments on commit 4435c13

Please sign in to comment.