Package org.geoserver.catalog.rest

Source Code of org.geoserver.catalog.rest.SLDFormat

/* Copyright (c) 2001 - 2009 TOPP - www.openplans.org.  All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.catalog.rest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.xml.transform.TransformerException;

import org.geoserver.rest.format.StreamDataFormat;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.styling.NamedLayer;
import org.geotools.styling.SLDParser;
import org.geotools.styling.SLDTransformer;
import org.geotools.styling.Style;
import org.geotools.styling.StyleFactory;
import org.geotools.styling.StyledLayer;
import org.geotools.styling.StyledLayerDescriptor;

public class SLDFormat extends StreamDataFormat {

    boolean prettyPrint;
   
    public SLDFormat() {
        this(false);
    }
   
    public SLDFormat(boolean prettyPrint) {
        super(StyleResource.MEDIATYPE_SLD);
        this.prettyPrint = prettyPrint;
    }
   
    @Override
    protected void write(Object object, OutputStream out) throws IOException {
        Style style = (Style) object;
       
        //wrap in a StyledLayerDescriptor
        StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
        NamedLayer nl = sf.createNamedLayer();
        nl.setName( style.getName() );
        nl.addStyle( style );
       
        StyledLayerDescriptor sld = sf.createStyledLayerDescriptor();
        sld.setStyledLayers( new StyledLayer[]{ nl });
       
        SLDTransformer writer = new SLDTransformer();
        if (prettyPrint) {
            writer.setIndentation(2);
        }
        try {
            writer.transform( sld, out );
        }
        catch (TransformerException e) {
            throw (IOException) new IOException().initCause(e);
        }
    }

    @Override
    protected Object read(InputStream in) throws IOException {
        SLDParser parser
            = new SLDParser( CommonFactoryFinder.getStyleFactory(null), in );
      
        Style[] styles = parser.readXML();
        if ( styles.length > 0 ) {
            return styles[0];
        }
        return null;
    }
}
TOP

Related Classes of org.geoserver.catalog.rest.SLDFormat

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.