@@ -7,6 +7,7 @@ import geoscript.style.ColorMap
77import geoscript.style.Gradient
88import geoscript.style.RasterSymbolizer
99import geoscript.style.Style
10+ import geoscript.style.StyleRepository
1011import geoscript.style.Symbolizer
1112import geoscript.style.UniqueValues
1213import geoscript.style.io.SLDWriter
@@ -218,4 +219,105 @@ class StyleCommands implements CommandMarker {
218219 " Colormap Palette Raster Style written to ${ file} !"
219220 }
220221
222+ @CliCommand (value = " style repository save" , help = " Save a style to a style repository" )
223+ String saveStyleToStyleRepository (
224+ @CliOption (key = " type" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
225+ String type ,
226+ @CliOption (key = " options" , mandatory = true , help = " The style repository options" )
227+ String params ,
228+ @CliOption (key = " layerName" , mandatory = true , help = " The layer name" )
229+ String layerName ,
230+ @CliOption (key = " styleName" , mandatory = true , help = " The style name" )
231+ String styleName ,
232+ @CliOption (key = " styleFile" , mandatory = true , help = " The style file (sld or css)" )
233+ File styleFile
234+ ) {
235+ StyleRepository styleRepository = StyleRepositoryFactory . getStyleRepository(type, StyleRepositoryFactory . getParameters(params))
236+ styleRepository. save(layerName, styleName, styleFile. text)
237+ " Style ${ styleName} for Layer ${ layerName} saved to ${ type} "
238+ }
239+
240+ @CliCommand (value = " style repository delete" , help = " Delete a style from a style repository" )
241+ String deleteStyleFromStyleRepository (
242+ @CliOption (key = " type" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
243+ String type ,
244+ @CliOption (key = " options" , mandatory = true , help = " The style repository options" )
245+ String params ,
246+ @CliOption (key = " layerName" , mandatory = true , help = " The layer name" )
247+ String layerName ,
248+ @CliOption (key = " styleName" , mandatory = true , help = " The style name" )
249+ String styleName
250+ ) {
251+ StyleRepository styleRepository = StyleRepositoryFactory . getStyleRepository(type, StyleRepositoryFactory . getParameters(params))
252+ styleRepository. delete(layerName, styleName)
253+ " Style ${ styleName} for Layer ${ layerName} deleted from ${ type} "
254+ }
255+
256+ @CliCommand (value = " style repository get" , help = " Get a style from a style repository" )
257+ String getStyleFromStyleRepository (
258+ @CliOption (key = " type" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
259+ String type ,
260+ @CliOption (key = " options" , mandatory = true , help = " The style repository options" )
261+ String params ,
262+ @CliOption (key = " layerName" , mandatory = true , help = " The layer name" )
263+ String layerName ,
264+ @CliOption (key = " styleName" , mandatory = true , help = " The style name" )
265+ String styleName ,
266+ @CliOption (key = " styleFile" , mandatory = false , help = " The style file (sld or css)" )
267+ File styleFile
268+ ) {
269+ StyleRepository styleRepository = StyleRepositoryFactory . getStyleRepository(type, StyleRepositoryFactory . getParameters(params))
270+ String style = styleRepository. getForLayer(layerName, styleName)
271+ if (styleFile) {
272+ styleFile. text = style
273+ " Style ${ styleName} for Layer ${ layerName} saved to ${ styleFile.name} "
274+ } else {
275+ style
276+ }
277+ }
278+
279+ @CliCommand (value = " style repository list" , help = " List styles in a style repository" )
280+ String listStylesInStyleRepository (
281+ @CliOption (key = " type" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
282+ String type ,
283+ @CliOption (key = " options" , mandatory = true , help = " The style repository options" )
284+ String params ,
285+ @CliOption (key = " layerName" , mandatory = false , help = " The layer name" )
286+ String layerName
287+ ) {
288+ StyleRepository styleRepository = StyleRepositoryFactory . getStyleRepository(type, StyleRepositoryFactory . getParameters(params))
289+ List<Map<String ,String > > styles = []
290+ if (layerName) {
291+ styles. addAll(styleRepository. getForLayer(layerName))
292+ } else {
293+ styles. addAll(styleRepository. getAll())
294+ }
295+ String NEW_LINE = System . getProperty(" line.separator" )
296+ StringBuilder str = new StringBuilder ()
297+ styles. each { Map<String ,String > style ->
298+ str. append(style. layerName + " " + style. styleName). append(NEW_LINE )
299+ }
300+ str. toString()
301+ }
302+
303+ @CliCommand (value = " style repository copy" , help = " Copy styles from one repository to another" )
304+ String copyStylesInStyleRepository (
305+ @CliOption (key = " inputType" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
306+ String inputType ,
307+ @CliOption (key = " inputOptions" , mandatory = true , help = " The style repository options" )
308+ String inputParams ,
309+ @CliOption (key = " outputType" , mandatory = true , help = " The type of style repository (directory, nested-directory, h2, sqlite, postgres)" )
310+ String outputType ,
311+ @CliOption (key = " outputOptions" , mandatory = true , help = " The style repository options" )
312+ String outputParams
313+ ) {
314+ StyleRepository inputStyleRepository = StyleRepositoryFactory . getStyleRepository(inputType, StyleRepositoryFactory . getParameters(inputParams))
315+ StyleRepository outputStyleRepository = StyleRepositoryFactory . getStyleRepository(outputType, StyleRepositoryFactory . getParameters(outputParams))
316+ List<Map<String , String > > styles = inputStyleRepository. getAll()
317+ styles. each {Map<String ,String > style ->
318+ outputStyleRepository. save(style. layerName, style. styleName, style. style)
319+ }
320+ " Copy styles from ${ inputType} to ${ outputType} "
321+ }
322+
221323}
0 commit comments