CatalogFactory factory = cat.getFactory();
WorkspaceInfo workspace = findWorkspace(wsName);
StoreInfo store = null;
JSONObj params = obj.object("connection");
if( params == null ){
throw new IllegalArgumentException("connection parameters required");
}
if( params.has("raster")){
String url = params.str("raster");
CoverageStoreInfo info = factory.createCoverageStore();
info.setWorkspace(workspace);
info.setType(name);
// connect and defaults
info.setURL(url);
info.setType(obj.str("type"));
try {
GridCoverageReader reader = info.getGridCoverageReader(null, null);
Format format = reader.getFormat();
info.setDescription( format.getDescription() );
info.setEnabled(true);
} catch (IOException e) {
info.setError(e);
info.setEnabled(false);
}
store = info;
}
else if ( params.has("url") &&
params.str("url").toLowerCase().contains("Service=WMS") &&
params.str("url").startsWith("http")){
WMSStoreInfo info = factory.createWebMapServer();
info.setWorkspace(workspace);
info.setType(name);
// connect and defaults
info.setCapabilitiesURL(params.str("url"));
try {
WebMapServer service = info.getWebMapServer(new NullProgressListener());
info.setDescription( service.getInfo().getDescription() );
info.setEnabled(true);
} catch (Throwable e) {
info.setError(e);
info.setEnabled(false);
}
store = info;
}
else {
HashMap map = new HashMap(params.raw());
Map resolved = ResourcePool.getParams(map, cat.getResourceLoader() );
DataAccess dataStore = DataAccessFinder.getDataStore(resolved);
if( dataStore == null ){
throw new IllegalArgumentException("Connection parameters incomplete (does not match an available data store, coverage store or wms store).");
}
DataStoreInfo info = factory.createDataStore();
info.setWorkspace(workspace);
info.setType(name);
info.getConnectionParameters().putAll(map);
try {
info.setDescription( dataStore.getInfo().getDescription());
info.setEnabled(true);
} catch (Throwable e) {
info.setError(e);
info.setEnabled(false);
}
store = info;
}
boolean refresh = define( store, obj );
if( refresh ){
LOG.log( Level.FINE, "Inconsistent: default connection used for store creation required refresh");
}
cat.add(store);
return storeDetails(new JSONObj(), store,req);
}