基于开源geoserver-manager发布自定义的数据源和图层(java)

基于开源geoserver-manager发布自定义的数据源和图层(java)
调用方法:

String zookeeper="node111:2181,node112:2181,node113:2181";
GeoServerUtil.createWorkspace("hsg");
GeoServerUtil.publisher.removeWorkspace("hsg",true);
GeoServerUtil.removeDatastore("geowave","out_tk_1_2");
GeoServerUtil.createSproutDatastore("geowave","out_tk_1_2",zookeeper,"out_tk_1_2",true);        
GeoServerUtil.publisher.publishLayer_sprout("geowave","out_tk_1_2","out_tk_1_2","EPSG:4326","DistributedRender-Polygon");

GeoServerUtil.createSproutDatastore("geowave","hsg_tk12",zookeeper,"hsg_tk12",false);
GeoServerUtil.publisher.publishLayer_sprout("geowave","hsg_tk12","hsg_tk12","EPSG:4326","DistributedRender-Polygon");
System.out.println("OK!");

扩展开源geoserver-manager项目的数据源定义:
it.geosolutions.geoserver.rest.encoder.datastore.
GSSproutDatastoreEncoder.java

package it.geosolutions.geoserver.rest.encoder.datastore;

import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;

public class GSSproutDatastoreEncoder extends GSAbstractDatastoreEncoder {
    static final String TYPE = "SproutDataStore";

    final static boolean DEFAULT_ENABLED = true;

    static final String zookeeper = "node111:2181,node112:2181,node113:2181";
    static final String gwNamespace = "out_tk_1_2";
    static final boolean IsSpark = false;

    public GSSproutDatastoreEncoder(String name) {
        super(name);

        // Set mandatory parameter
        setType(TYPE);
        setEnabled(DEFAULT_ENABLED);
        //
        setZookeeper(zookeeper);
        setNamespace(gwNamespace);
        setIsSpark(IsSpark);

    }
    public GSSproutDatastoreEncoder(RESTDataStore store) {
        super(store);

        // Check mandatory parameter validity
        ensureValidZookeeper(store.getConnectionParameters().get("zookeeper"));
        ensureValidNamespace(store.getConnectionParameters().get("gwNamespace"));
    }
    protected String getValidType() {
        return TYPE;
    }
    //
    public void setZookeeper(String zookeeper) {
        ensureValidZookeeper(zookeeper);
        connectionParameters.set("zookeeper", zookeeper);
    }
    public void setNamespace(String gwNamespace) {
        ensureValidNamespace(gwNamespace);
        connectionParameters.set("gwNamespace", gwNamespace);
    }
    public void setIsSpark(boolean IsSpark) {
        connectionParameters.set("IsSpark", Boolean.toString(IsSpark));
    }
    //
    public String getZookeeper() {
        return ElementUtils.contains(connectionParameters.getRoot(), "zookeeper").getTextTrim();
    }
    public String getNamespace() {
        return ElementUtils.contains(connectionParameters.getRoot(), "gwNamespace").getTextTrim();
    }
    public boolean getIsSpark() {
        return Boolean.parseBoolean(ElementUtils.contains(connectionParameters.getRoot(), "IsSpark").getTextTrim());
    }
    //
    private static void ensureValidZookeeper(String Zookeeper) {
        if (Zookeeper == null || Zookeeper.length() == 0) {
            throw new IllegalArgumentException(
                    "Zookeeper cannot be null or empty");
        }
    }
    private static void ensureValidNamespace(String gwNamespace) {
        if (gwNamespace == null || gwNamespace.length() == 0) {
            throw new IllegalArgumentException(
                    "gwNamespace cannot be null or empty");
        }
    }
}


it.geosolutions.geoserver.rest.
GeoServerRESTPublisher类中添加如下方法:

//创建自定义的数据源    
    public boolean createSproutDatastore(String workspace,
                                         GSSproutDatastoreEncoder datastoreEncoder) {
        String sUrl = restURL + "/rest/workspaces/" + workspace + "/datastores/";
        String xml = datastoreEncoder.toString();
        String result = HTTPUtils.postXml(sUrl, xml, gsuser, gspass);
        return result != null;
    }
    public boolean publishLayer_sprout(String workspace, String storename, String layername, String srs,
                                       String defaultStyle) {

        final GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder();

        fte.setProjectionPolicy(ProjectionPolicy.FORCE_DECLARED);
        fte.addKeyword("features");
        fte.setTitle(layername);
        fte.setName(layername);
        fte.setSRS(srs); // srs=null?"EPSG:4326":srs);
        final GSLayerEncoder layerEncoder = new GSLayerEncoder();
        layerEncoder.setDefaultStyle(defaultStyle);
        return publishDBLayer(workspace, storename, fte, layerEncoder);
    }    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值