use of eu.esdihumboldt.hale.io.geoserver.Layer 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();
}
Aggregations