All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geojsf.geoserver.rest.GeoServerRestDataStoreWrapper Maven / Gradle / Ivy

The newest version!
package org.geojsf.geoserver.rest;

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

import net.sf.exlp.util.xml.JDomUtil;
import net.sf.exlp.util.xml.XmlUtil;

import org.apache.commons.io.IOUtils;
import org.geojsf.factory.xml.geoserver.XmlDataStoreFactory;
import org.geojsf.interfaces.rest.GeoServerRestInterface;
import org.geojsf.interfaces.rest.geoserver.GeoServerDataStoreRest;
import org.geojsf.xml.geoserver.DataStore;
import org.geojsf.xml.geoserver.DataStores;
import org.geojsf.xml.geoserver.Workspace;
import org.jdom2.Document;
import org.jdom2.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class GeoServerRestDataStoreWrapper implements GeoServerDataStoreRest
{
	final static Logger logger = LoggerFactory.getLogger(GeoServerRestDataStoreWrapper.class);
	
	private GeoServerRestInterface rest;
	private static final String xmlEncoding = "UTF-8";

	public GeoServerRestDataStoreWrapper(GeoServerRestInterface rest)
	{
		this.rest=rest;
	}
	
	@Override
	public DataStores getDataStores(String workspace) throws IOException
	{		
		InputStream is = IOUtils.toInputStream(XmlUtil.defaultXmlHeader+rest.dataStores(workspace), xmlEncoding);
		Document doc = JDomUtil.load(is, xmlEncoding);
		Element root = doc.getRootElement();
		JDomUtil.setNameSpaceRecursive(root, GeoServerRestWrapper.ns);
	 
		for(Element e : root.getChildren("dataStore",GeoServerRestWrapper.ns))
		{
			GeoServerXmlTranscoder.dataStore(e);
		}
		
		DataStores result = new DataStores();
		
		DataStores first = JDomUtil.toJaxb(root, DataStores.class);
		for(DataStore ds : first.getDataStore())
		{
			result.getDataStore().add(dataStore(workspace, ds.getName()));
		}
		
		return result;
	}
	
	@Override
	public DataStore dataStore(String workspace, String dataStore) throws IOException
	{		
		logger.info("REST.dataStore ws="+workspace+" ds="+dataStore);
		InputStream is = IOUtils.toInputStream(XmlUtil.defaultXmlHeader+rest.dataStore(workspace,dataStore), xmlEncoding);
		Document doc = JDomUtil.load(is, xmlEncoding);
		
		Element root = doc.getRootElement();
//		JDomUtil.debug(doc);
		JDomUtil.setNameSpaceRecursive(root, GeoServerRestWrapper.ns);
	 
		XmlDataStoreFactory.transform(root);
//		JDomUtil.debug(root);
		
		return JDomUtil.toJaxb(root, DataStore.class);
	}
	
	@Override
	public void createDataStore(DataStore ds, Workspace ws)
	{
		Document doc = new Document();
		doc.setRootElement(XmlDataStoreFactory.build(ds, ws));

//		JDomUtil.debug(doc);
		
		rest.createDatastore(ws.getName(),JDomUtil.toString(doc));
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy