[10726] | 1 | package org.greenstone.gatherer.remote;
|
---|
| 2 |
|
---|
| 3 | import java.io.*;
|
---|
| 4 | import java.util.zip.*;
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | /**
|
---|
| 8 | */
|
---|
| 9 | public class ZipCollectionShell
|
---|
| 10 | {
|
---|
| 11 | static public void main(String[] args)
|
---|
| 12 | {
|
---|
| 13 | if (args.length != 3) {
|
---|
| 14 | System.err.println("Usage: ZipCollectionShell <zip-file> <collect-directory-path> <collection-name>");
|
---|
| 15 | return;
|
---|
| 16 | }
|
---|
| 17 |
|
---|
| 18 | String zip_file_path = args[0];
|
---|
| 19 | String collect_directory_path = args[1];
|
---|
| 20 | String collection_name = args[2];
|
---|
| 21 |
|
---|
| 22 | if (!collect_directory_path.endsWith(File.separator)) {
|
---|
| 23 | collect_directory_path += File.separator;
|
---|
| 24 | }
|
---|
| 25 |
|
---|
| 26 | try {
|
---|
| 27 | ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip_file_path));
|
---|
| 28 | ZipTools.ZipFilter null_zip_filter = new ZipTools.NullZipFilter();
|
---|
| 29 |
|
---|
| 30 | // Add archives directory, with doc.xml files only
|
---|
| 31 | String archives_relative_path = collection_name + File.separator + "archives";
|
---|
| 32 | ZipTools.ZipFilter collection_archives_zip_filter = new ZipCollectionArchives.CollectionArchivesZipFilter();
|
---|
| 33 | ZipTools.addFileToZip(zos, collect_directory_path, archives_relative_path, collection_archives_zip_filter);
|
---|
| 34 |
|
---|
| 35 | // Add etc/collect.cfg file
|
---|
| 36 | String collect_cfg_relative_path = collection_name + File.separator + "etc" + File.separator + "collect.cfg";
|
---|
| 37 | ZipTools.addFileToZip(zos, collect_directory_path, collect_cfg_relative_path, null_zip_filter);
|
---|
| 38 |
|
---|
| 39 | // Add images directory
|
---|
| 40 | String images_relative_path = collection_name + File.separator + "images";
|
---|
| 41 | ZipTools.addFileToZip(zos, collect_directory_path, images_relative_path, null_zip_filter);
|
---|
| 42 |
|
---|
| 43 | // Add import directory, with zero-length files except for metadata.xml
|
---|
| 44 | String import_relative_path = collection_name + File.separator + "import";
|
---|
| 45 | ZipTools.ZipFilter collection_import_zip_filter = new CollectionImportZipFilter();
|
---|
| 46 | ZipTools.addFileToZip(zos, collect_directory_path, import_relative_path, collection_import_zip_filter);
|
---|
| 47 |
|
---|
| 48 | // Add index/build.cfg file
|
---|
| 49 | String build_cfg_relative_path = collection_name + File.separator + "index" + File.separator + "build.cfg";
|
---|
| 50 | ZipTools.addFileToZip(zos, collect_directory_path, build_cfg_relative_path, null_zip_filter);
|
---|
| 51 |
|
---|
[12649] | 52 | // Add macros/extra.dm file
|
---|
| 53 | String extra_dm_relative_path = collection_name + File.separator + "macros" + File.separator + "extra.dm";
|
---|
| 54 | ZipTools.addFileToZip(zos, collect_directory_path, extra_dm_relative_path, null_zip_filter);
|
---|
| 55 |
|
---|
[10726] | 56 | // Add metadata directory
|
---|
| 57 | String metadata_relative_path = collection_name + File.separator + "metadata";
|
---|
| 58 | ZipTools.addFileToZip(zos, collect_directory_path, metadata_relative_path, null_zip_filter);
|
---|
| 59 |
|
---|
| 60 | zos.close();
|
---|
| 61 | }
|
---|
| 62 | catch (Exception exception) {
|
---|
| 63 | exception.printStackTrace();
|
---|
| 64 | }
|
---|
| 65 | }
|
---|
| 66 |
|
---|
| 67 |
|
---|
| 68 | static private class CollectionImportZipFilter
|
---|
| 69 | extends ZipTools.NullZipFilter
|
---|
| 70 | {
|
---|
| 71 | public boolean shouldIncludeFileContent(String relative_file_path)
|
---|
| 72 | {
|
---|
| 73 | // We only include file content for metadata.xml files
|
---|
| 74 | return (relative_file_path.equals("metadata.xml") || relative_file_path.endsWith(File.separator + "metadata.xml"));
|
---|
| 75 | }
|
---|
| 76 | }
|
---|
| 77 | }
|
---|