Skip to content

Commit 93bea6b

Browse files
committed
Add MapReaders and CartoReaders SPI
1 parent 24c16ea commit 93bea6b

16 files changed

+156
-0
lines changed

src/main/groovy/geoscript/carto/io/CartoReader.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ import geoscript.carto.CartoBuilder
88
*/
99
interface CartoReader {
1010

11+
/**
12+
* Get the name of the CartoReader
13+
* @return The name
14+
*/
15+
String getName()
16+
1117
/**
1218
* Read a CartoBuilder from a String
1319
* @param str A String
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package geoscript.carto.io
2+
3+
import geoscript.render.io.MapReader
4+
5+
/**
6+
* A Utility for finding all registered CartoReaders.
7+
* @author Jared Erickson
8+
*/
9+
class CartoReaders {
10+
11+
/**
12+
* Get a List of all CartoReaders
13+
* @return A List of CartoReaders
14+
*/
15+
static List<Reader> list() {
16+
ServiceLoader.load(CartoReader).iterator().collect()
17+
}
18+
19+
/**
20+
* Find a CartoReader by name (json, xml)
21+
* @param name The name (json, xml)
22+
* @return A CartoReader or null
23+
*/
24+
static CartoReader find(String name) {
25+
list().find{ CartoReader reader ->
26+
String readerName = reader.class.simpleName
27+
readerName.toLowerCase().startsWith(name.toLowerCase())
28+
}
29+
}
30+
31+
}

src/main/groovy/geoscript/carto/io/JsonCartoReader.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ import java.text.SimpleDateFormat
3434
*/
3535
class JsonCartoReader implements CartoReader {
3636

37+
@Override
38+
String getName() {
39+
"json"
40+
}
41+
3742
@Override
3843
CartoBuilder read(String str) {
3944
JsonSlurper jsonSlurper = new JsonSlurper()

src/main/groovy/geoscript/carto/io/XmlCartoReader.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ import java.text.SimpleDateFormat
3535
*/
3636
class XmlCartoReader implements CartoReader {
3737

38+
@Override
39+
String getName() {
40+
"xml"
41+
}
42+
3843
@Override
3944
CartoBuilder read(String str) {
4045
XmlSlurper xmlSlurper = new XmlSlurper()

src/main/groovy/geoscript/render/io/JsonMapReader.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ import groovy.json.JsonSlurper
2929
*/
3030
class JsonMapReader implements MapReader {
3131

32+
@Override
33+
String getName() {
34+
"json"
35+
}
36+
3237
@Override
3338
GMap read(String str) {
3439
JsonSlurper jsonSlurper = new JsonSlurper()

src/main/groovy/geoscript/render/io/MapReader.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ import geoscript.render.Map as GMap
88
*/
99
interface MapReader {
1010

11+
/**
12+
* The name of the MapReader
13+
* @return The name
14+
*/
15+
String getName()
16+
1117
/**
1218
* Read a Map from a configuration string.
1319
* @param str The string
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package geoscript.render.io
2+
3+
/**
4+
* A Utility for finding all registered MapReaders.
5+
* @author Jared Erickson
6+
*/
7+
class MapReaders {
8+
9+
/**
10+
* Get a List of all MapReaders
11+
* @return A List of MapReaders
12+
*/
13+
static List<Reader> list() {
14+
ServiceLoader.load(MapReader).iterator().collect()
15+
}
16+
17+
/**
18+
* Find a MapReader by name (json, xml)
19+
* @param name The name (json, xml)
20+
* @return A MapReader or null
21+
*/
22+
static MapReader find(String name) {
23+
list().find{ MapReader reader ->
24+
String readerName = reader.class.simpleName
25+
readerName.toLowerCase().startsWith(name.toLowerCase())
26+
}
27+
}
28+
29+
}

src/main/groovy/geoscript/render/io/XmlMapReader.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ import groovy.xml.slurpersupport.GPathResult
3636
*/
3737
class XmlMapReader implements MapReader {
3838

39+
@Override
40+
String getName() {
41+
"xml"
42+
}
43+
3944
@Override
4045
GMap read(String str) {
4146
XmlSlurper xmlSlurper = new XmlSlurper()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
geoscript.carto.io.JsonCartoReader
2+
geoscript.carto.io.XmlCartoReader
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
geoscript.render.io.XmlMapReader
2+
geoscript.render.io.JsonMapReader

0 commit comments

Comments
 (0)