use of eu.esdihumboldt.hale.io.geoserver.DataStore in project hale by halestudio.
the class AppSchemaMappingFileWriter method writeArchive.
private void writeArchive(ProgressIndicator progress, IOReporter reporter) throws IOException {
Workspace ws = generator.getMainWorkspace();
Namespace mainNs = generator.getMainNamespace();
DataStore ds = generator.getAppSchemaDataStore();
// save to archive
final ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(getTarget().getOutput()));
// add workspace folder
ZipEntry workspaceFolder = new ZipEntry(ws.getAttribute(Workspace.NAME) + "/");
zip.putNextEntry(workspaceFolder);
// add workspace file
zip.putNextEntry(new ZipEntry(workspaceFolder.getName() + WORKSPACE_FILE));
copyAndCloseInputStream(ws.asStream(), zip);
zip.closeEntry();
// add namespace file
zip.putNextEntry(new ZipEntry(workspaceFolder.getName() + NAMESPACE_FILE));
copyAndCloseInputStream(mainNs.asStream(), zip);
zip.closeEntry();
// add datastore folder
ZipEntry dataStoreFolder = new ZipEntry(workspaceFolder.getName() + ds.getAttribute(DataStore.NAME) + "/");
zip.putNextEntry(dataStoreFolder);
// add datastore file
zip.putNextEntry(new ZipEntry(dataStoreFolder.getName() + DATASTORE_FILE));
copyAndCloseInputStream(ds.asStream(), zip);
zip.closeEntry();
// add target schema to zip
if (getIncludeSchemaParameter()) {
addTargetSchemaToZip(zip, dataStoreFolder, progress, reporter);
}
// add main mapping file
Map<String, String> connectionParams = ds.getConnectionParameters();
zip.putNextEntry(new ZipEntry(dataStoreFolder.getName() + connectionParams.get("mappingFileName")));
generator.writeMappingConf(zip);
zip.closeEntry();
// add included types mapping file, if necessary
if (generator.getGeneratedMapping().requiresMultipleFiles()) {
zip.putNextEntry(new ZipEntry(dataStoreFolder.getName() + AppSchemaIO.INCLUDED_TYPES_MAPPING_FILE));
generator.writeIncludedTypesMappingConf(zip);
zip.closeEntry();
}
// add feature type entries
List<FeatureType> featureTypes = generator.getFeatureTypes();
for (FeatureType ft : featureTypes) {
Layer layer = generator.getLayer(ft);
// add feature type folder
ZipEntry featureTypeFolder = new ZipEntry(dataStoreFolder.getName() + ft.getAttribute(FeatureType.NAME) + "/");
zip.putNextEntry(featureTypeFolder);
// add feature type file
zip.putNextEntry(new ZipEntry(featureTypeFolder.getName() + FEATURETYPE_FILE));
copyAndCloseInputStream(ft.asStream(), zip);
zip.closeEntry();
// add layer file
zip.putNextEntry(new ZipEntry(featureTypeFolder.getName() + LAYER_FILE));
copyAndCloseInputStream(layer.asStream(), zip);
zip.closeEntry();
}
// add secondary namespaces
List<Namespace> secondaryNamespaces = generator.getSecondaryNamespaces();
for (Namespace secNs : secondaryNamespaces) {
Workspace secWs = generator.getWorkspace(secNs);
// add workspace folder
ZipEntry secondaryWorkspaceFolder = new ZipEntry(secWs.name() + "/");
zip.putNextEntry(secondaryWorkspaceFolder);
// add workspace file
zip.putNextEntry(new ZipEntry(secondaryWorkspaceFolder.getName() + WORKSPACE_FILE));
copyAndCloseInputStream(secWs.asStream(), zip);
zip.closeEntry();
// add namespace file
zip.putNextEntry(new ZipEntry(secondaryWorkspaceFolder.getName() + NAMESPACE_FILE));
copyAndCloseInputStream(secNs.asStream(), zip);
zip.closeEntry();
}
zip.close();
}
use of eu.esdihumboldt.hale.io.geoserver.DataStore in project hale by halestudio.
the class AppSchemaMappingUploader method publishAppSchemaDataStore.
private void publishAppSchemaDataStore(ProgressIndicator progress, IOReporter reporter) throws IOException {
Workspace ws = generator.getMainWorkspace();
// build datastore resource
DataStore dataStore = generator.getAppSchemaDataStore();
DataStoreManager dsMgr = new DataStoreManager(geoserverURL);
dsMgr.setCredentials(username, password);
dsMgr.setResource(dataStore);
dsMgr.setWorkspace(ws.name());
// remove datastore, if necessary
if (dsMgr.exists()) {
Map<String, String> deleteParams = new HashMap<String, String>();
deleteParams.put("recurse", "true");
dsMgr.delete(deleteParams);
}
// build mapping file resource
ContentType contentType = getMimeType();
byte[] content = writeContent(dataStore.name(), contentType, progress, reporter);
DataStoreFile mappingFile = ResourceBuilder.dataStoreFile(new ByteArrayInputStream(content), contentType).setAttribute(DataStoreFile.EXTENSION, "appschema").setAttribute(DataStoreFile.DATASTORE, dataStore.name()).setAttribute(DataStoreFile.WORKSPACE, ws.name()).build();
DataStoreFileManager dsFileMgr = new DataStoreFileManager(geoserverURL);
dsFileMgr.setCredentials(username, password);
dsFileMgr.setResource(mappingFile);
Map<String, String> updateParams = new HashMap<String, String>();
updateParams.put("configure", "all");
dsFileMgr.update(updateParams);
}
Aggregations