Giter VIP home page Giter VIP logo

bagger's People

Contributors

acdha avatar dbrunton avatar eikeon avatar houzanme1 avatar jmgibson71 avatar johnscancella avatar jscancella avatar smkiewel avatar stmalik avatar thatcher avatar tongwang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bagger's Issues

Unexplained error message

Hello,

I have run into an error multiple times over the past few days trying to save a bag. I get through the steps of creating a bag, hitting save as and filling in the location, but then when I try to save I get the error "The application experienced an unexpected bug, due to a programming error. The application is possibly in an inconsistent state. It is recommended to reboot the application. The exact bug is: Please report this bug." I am using Bagger 2.8.1 on Windows 7 Enterprise. The first few times it happened I had an older version of Bagger on my computer too and I wonder if that may have something to do with it? Log and screenshot attached.

Thank you.

Jamie
Bagger_error_log_04272018.txt
bagger_error_04272018

Checksum types

Version: Bagger 2.8.1
OS: Windows 10
Steps to reproduce:Are there other checksum types other than md5?
Does it support 256 and 512?

Deletion of tagmanifest-md5.txt does not invalidate Bag

Environment

OS: Windows 10 64bit Enterprise
Java: Java 1.8.0_171-b11
Version: Bagger 2.8.1.

Steps to reproduce

  • Start Bagger
  • Create a bag in place with some test data (Bag saved automatically) - no profile selected
  • Exit bagger
  • Navigate in file explorer to newly created bag
  • Remove(delete) tagmanifest-md5.txt
  • Edit (and save) bag-info.txt to have Bagging-Date of "1066-01-01" - which ordinarily will cause the checksum to change and the bag to be invalid
  • Start Bagger
  • Open Existing Bag - choose previously created Bag with missing tagmanifest-md5.txt
  • Click "Validate Bag"

Expected results?

  • On attempting to open the Bag, Bagger should complain that there is a missing tagmanifest-md5.txt
  • On Bag Validation, Bagger should either complain that there is a missing tagmanifest-md5.txt or that it is unable to validate with a missing tagmanifest file

Actual result?

  • Bagger opened the bag with no complaints
  • Bagger validated the bag as - "Validation Successful

2018-05-08 10:51:32,877 INFO [Thread-4] g.l.r.b.v.i.CompleteVerifierImpl [CompleteVerifierImpl.java:276] Completed verification that bag is complete. 2018-05-08 10:51:32,878 INFO [Thread-4] g.l.r.b.v.i.CompleteVerifierImpl [CompleteVerifierImpl.java:277] Note that this a verification of completeness, not validity. A bag may be complete without being valid, though a valid bag must be complete. 2018-05-08 10:51:32,880 INFO [Thread-4] g.l.r.b.v.i.CompleteVerifierImpl [CompleteVerifierImpl.java:278] Result of verification that complete: Result is true. 2018-05-08 10:51:32,895 INFO [Thread-4] g.l.r.b.v.i.ValidVerifierImpl [ValidVerifierImpl.java:83] Completed verification that bag is valid. 2018-05-08 10:51:32,896 INFO [Thread-4] g.l.r.b.v.i.ValidVerifierImpl [ValidVerifierImpl.java:84] Validity check: Result is true. 2018-05-08 10:51:35,083 INFO [AWT-EventQueue-0] g.l.r.b.u.BagView [BagView.java:660] Stopped the timer

image

Create bag in place with directory with dot in the directory name: Two bags are created

Bagger 2.7.5, Win 7 (64 bit)

When I create a bag in place (using a profile) with a directory that contains a dot (.) in the directory name, then two bags are created: One bag with the original directory name, but with no specific profile data in the bag-info.txt AND a second bag without the dot and every character after the dot in the name but with the correct profile data in the bag-info.txt.
For example: The directory Test.Data is resulting in the bags Test.Data and Test

Regards,
Jan

Hidden files being copied in version 2.8.1

When creating a bag Bagger is copying the hidden files contained on a hard drive. This is causing some problems for automated processes we use to count the number of files in a sub-directory.
e.g.
.DS_Store
_000.tif
_001.tif

It seems as if this could have been resolved in version 2.5 according to this - but the issue seems to persist. Any help appreciated. Thanks

Version: Bagger 2.8.1
OS: Windows 7

Error: trying to save bag

Version: Bagger 2.8.1
OS: macOS High Sierra 10.13.16
Java version: openjdk version "12.0.1" 2019-04-16

Steps to reproduce:

  • create new bag with no profile
  • add two files in payload (.png-images)
  • click "save as.." button
  • type in filepath (/Users/myname/Desktop/testje) and choose to serialize as .zip
  • click save

Expected outcome: Bag is saved

Actual outcome:

  • message: _Error trying to save bag due to: /Users/myname/Desktop/testje/data
  • BUT the bag is saved and complete

Icons inactive on startup

I've just installed Bagger v2.3 (JRE7) on Windows7 (64bit).
When I start Bagger, all icons are disabled/grayed out.
As soon as I click on a menu item (e.g. "File") - they become active.

False error message reported after saving zipped bag

Bagger 2.8.1.
Windows 7 Enterprise

  • Steps to reproduce issue
    Create new bag
    Add content
    Save with the zip option selected and all other options at their default setting
  • The expected outcome, and the actual outcome
    Bag is saved
    Actual outcome is a false error message "Error trying to save bag due to..." and points to the data folder in the bag. Screenshot is attached. When I close Bagger and re-open it and open the zipped bag it validates without error. This does not happen with an unzipped bag.

bagger

Improve README

I see a few changes to improve the README, I'd be happy to create a PR if you agree:

  • use Markdown syntax for better readability on GitHub
  • clarify which version of Java is required (the README mentions both 6 and 7)
  • add information where to find the created application after the gradle build to the running sections, i.e. point the reader to /bagger/bagger/build/distributions and to unzip the file bagger.zip and then run the app (in case of Linux with ./bagger, not bagger.sh). Or am I missing something?

Mac Alias files

Version: Bagger 2.8.1
OS: Mac OS X 10.14.6
Steps to reproduce:

  • create new bag
  • add 2 Mac Alias files (627 bytes and 590 bytes)
  • click "save as.." button
  • type in filepath
  • click save
    Expected outcome: Bag is saved with the copy of 2 Mac Alias files
    Actual outcome: The size of the 2 files are both Zero bytes

Bagger changed files in transit

Hello all,
("Given When Then" below)
I recently downloaded bagger 2.7.6 for the purposes of transferring a number of files from an external drive to my company's archives computer (OS X 10.11.3), and eventually to our server. I've used bagit.py in the command line with success at a different job, but for this one we did not want to disturb the original drive, so I thought I'd use bagger in order to bag the files in the destination folder rather than on the drive we'd mounted read-only. I transferred the files using bagger and validated the bag. It checked out as valid. Unfortunately, files that played fine on the original drive and on files from an earlier (and successful) rsync transfer did not play for the bagged files. Files sizes were different as well. It also would appear to have overwritten the date modified on the folders in the destination folders.
If there's anything you know of that would to make it run properly do let me know. I'm hoping it's user error.

given

  • I have Bagger 2.7.6
  • The computer was running OS X 10.11.3
    *I have files on a drive that we do not want to affect in any way other than to copy them with all the original metadata I can

when

  • I am trying to bag files from a drive mounted read-only to new location on company's archives computer.

then
*how do I make this happen successfully?
*When I tried to do this Bagger failed to deliver full files. This is not a problem that occurs with rsync or even drag-and-drop. So something about the addition of Bagger has likely caused a problem

Best,
Ben

Create Bag In Place does not correctly load profiles

From a user:

"The issue is when you select a profile, say the ndnp, from the drop down box and click OK, I see the bagger GUI doesn’t change (i.e., the Bag-Info section doesn’t become active) where you can type in the value for “Awardee –Phase” which is required."

Bagger v2.2 profile startup error on Windows 7

Bagger v2.2 and Bagger v2.1.3 throws an error at startup on Windows 7 if a new profile file is added to the profile folder. I added a new profile to the folder named safr-profile.json and ran the Bagger.bat file but got the error message seen below.

Windows 7 stores the profiles in C:\Users\bagger folder. It overwrites the example profiles every time it opens.

Start Up Error
startup_error

Profile Folder with New Profile
profile_folder

bagger.log Error Excerpt
13:21:53,960 ERROR BaggerApplication,main:52 - RuntimeException during startup
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bagView' defined in class path resource [gov/loc/repository/bagger/ctx/common/richclient-application-context.xml]: Cannot resolve reference to bean 'profiles' while setting bean property 'viewProperties' with key [TypedStringValue: value [profileStore], target type [null]]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profiles' defined in class path resource [gov/loc/repository/bagger/ctx/common/business-layer-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:320)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1172)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:940)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:400)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:736)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369)
at org.springframework.richclient.application.ApplicationLauncher.loadRootApplicationContext(ApplicationLauncher.java:262)
at org.springframework.richclient.application.ApplicationLauncher.(ApplicationLauncher.java:158)
at gov.loc.repository.bagger.BaggerApplication.main(BaggerApplication.java:41)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profiles' defined in class path resource [gov/loc/repository/bagger/ctx/common/business-layer-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:239)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:855)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:765)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:412)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 19 more
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:98)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:233)
... 30 more
Caused by: java.lang.NullPointerException
at gov.loc.repository.bagger.Profile.createProfile(Profile.java:87)
at gov.loc.repository.bagger.domain.JSonBagger.loadProfile(JSonBagger.java:201)
at gov.loc.repository.bagger.domain.JSonBagger.loadProfiles(JSonBagger.java:173)
at gov.loc.repository.bagger.profile.BaggerProfileStore.initializeProfile(BaggerProfileStore.java:32)
at gov.loc.repository.bagger.profile.BaggerProfileStore.(BaggerProfileStore.java:23)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:83)
... 32 more

Change fields (in Json profile, display screen and Bag-info) from set to ordered list

The current set does not allow desired ordering of metadata entry fields (in Json profile, display screen and Bag-info). It is is available here: [https://github.com/LibraryOfCongress/bagger/blob/master/bagger/src/main/java/gov/loc/repository/bagger/ui/BagInfoForm.java#L86]

Desired improvement:
For an ordered field of metadata to be possible for accessions of digital records that will hep make sense of the keyed information in Bag-Info and on the display screen, it is desired that an ordered list be implemented. With such an improvement, profiles will help generate understandable metadata in the order originally intended for during project profile creation.
This improvement will also help make Bagger very usable and customizable. Additionally, importing SIPs created into preservation or records systems will be facilitated by the metadata structure/order on mapping fields between Bagger (Bag-info) and the new system's metadata structure.

Bagger chokes when writing a bag - perhaps bag size or file path length?

Hello,

I'm trying to create a bag that is about 82,000 files and 1.23 GB. I tried saving it on a hard drive and Bagger stalled out; the log file said something about out of memory error. I then tried validating the bag and got an error about cannot remove
bagger_error_log_07262018.txt
baggerbasepatherror

basePath. I was trying to bag on a hard drive and remembered previous advice that this may cause problems, so I tried bagging from the hard drive to my computer, and when that also failed I copied the files from the drive to my computer and tried bagging there - but also got the same problems. I've attached the log file and the error.

Bagger creates a data subdirectory

I start with:
drwxr-xr-x 4 sk staff 128 May 9 15:52 data
drwxr-xr-x 3 sk staff 96 May 9 15:52 metadata

art2/data:

-rw-r--r-- 1 sk staff 611802 May 9 15:52 abstract.JPG
-rw-r--r-- 1 sk staff 1046876 May 9 15:52 ppart.JPG

art2/metadata:
-rw-r--r-- 1 sk staff 127 May 9 15:52 metadata.csv

but after bagger creates a data sub-directory and places all my files there. Expected behavior?

drwxr-xr-x 8 sk staff 256 May 9 16:01 bagged_art

new/bagged_art:
total 48

-rw-r--r-- 1 sk staff 105 May 9 16:01 bag-info.txt
-rw-r--r-- 1 sk staff 55 May 9 16:01 bagit.txt
drwxr-xr-x 4 sk staff 128 May 9 16:07 data
-rw-r--r-- 1 sk staff 377 May 9 16:01 manifest-sha256.txt
-rw-r--r-- 1 sk staff 241 May 9 16:01 tagmanifest-sha256.txt

new/bagged_art/data:
total 16

drwxr-xr-x 5 sk staff 160 May 9 16:01 art2 2

new/bagged_art/data/art2 2:
total 16

drwxr-xr-x 4 sk staff 128 May 9 16:01 data
drwxr-xr-x 3 sk staff 96 May 9 16:01 metadata

new/bagged_art/data/art2 2/data:
total 3248

-rw-r--r-- 1 sk staff 611802 May 9 15:52 abstract.JPG
-rw-r--r-- 1 sk staff 1046876 May 9 15:52 ppart.JPG

new/bagged_art/data/art2 2/metadata:
total 8

-rw-r--r-- 1 sk staff 127 May 9 15:52 metadata.csv

Create folders in Bagger when creating a new bag

It would be useful to have the ability to create folders in both the payload and tag files when creating a new bag.

For example, I would like to create a 'metadata' folder in the tag files before adding files to that folder.

Example bag structure:

  • base directory/
    • bagit.txt
    • manifest-md5.txt
    • bag-info.txt
    • data/
      • [payload files]
    • metadata/
      • [tag files]

Bagger does not correctly escape filenames with newline characters in the manifest

If you create a bag with a file that has a newline character in its filename, the manifest will not represent that characters. For example, "data/Icon\r" is represented as "data/Icon" in the manifest. The bag cannot be validated because the file system does not contain a file at "data/Icon".

A further complication is that this bug can cause filename collisions in the manifest. "data/Icon", "data/Icon\n", and "data/Icon\r" are all represented in the manifest as "data/Icon"

Bagit-python had the same issue. It was fixed by using percent encoding for \r and \n.
LibraryOfCongress/bagit-python#12

suggested feature enhancement to future version of Bagger

This is just a suggested feature enhancement:
When a created bag is tempered with such as deleting a few files from the "data" folder, Bagger correctly identifies the files that are missing and lists them upon bag validation. That's very helpful in identifying exactly where the issues are.

Now the suggested feature: Suppose the Hash values (MD5 or SHAx) are tempered with, either in the manifest-.txt and/or the tagmanifest-.txt files, it would be helpful to know exactly which files are affected that are in the "data" folder.

The idea is to not reject a whole bag when one or two items are tempered with or became corrupt.

gradle builds fail outside LoC environment

Currently the gradle builds specify Argon as a artifact repository, which is unavailable to those outside the library of congress environment. We should change gradle to use only publicly available artifact repositories.

"Could not find or load main class Files" error when spaces exist in Windows file path

Using Java Runtime Environment 1.8, Bagger 2.7.5, Windows 7 Enterprise

When I first downloaded Java, I had to manually set the JAVA_HOME environmental variable through Windows - it might have been helpful to have some pointers for how to do this in the install instructions.

Once I did that, every time I opened the bagger.bat file, I got the error "Could not find or load main class Files." After a lot of trial and error, we tracked this down to the fact that both Java and Bagger were installed in the "Program Files" folder, and the space in the file name was confusing Bagger. The issue was resolved by moving both Java and Bagger to a different directory, but the instructions should either specify not to save Bagger in a file path with a space, or the program should handle this failure more gracefully.

Bagger info panel unordered after saving

When saving a new bag that is using a profile template that preserves ordering, then the bag is saved the ordering changes.

To recreate:

  • create new bag
  • select profile that should be ordered
  • add file to payload so the bag can be saved
  • save bag to some location
  • notice the order of the key value pairs in the bag info panel has changed.

Uncaught Exception Handler

Hello,

I am running Bagger 2.7.7 on Windows 7 Enterprise. On a particular bag receive the error "Exception: Java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "Thread-4" The bag validates in the command-line, but not in Bagger. I've attached the log from opening the bag to trying to validate.

Thank you,

Jamie

BaggerUncaughtExceptionLog.txt

bag with partial payload & local data

I have a question regarding bags which contain fetch.txt but also some files in the data/ dir.
I couldn't find a way to create those in bagger, they either are entirely holey or entirely whole.
I created such a bag manually and opened it in bagger.
It is reported as compliant, incomplete and invalid, but it cannot be used.
The payload defined in fetch.txt cannot be retrieved be retrieved to the data/ dir.

Isn't it possible to retrieve it, and check completeness and validity thereafter?
I find it very useful to have such bag and need to know if existing python/java implementations can treat this kind of bags properly.

bag1.zip

Version 2.7.7 fails to start

I've just downloaded 2.7.7 from the releases page and, when running the bagger shell script, I received the message:

Error: Could not find or load main class gov.loc.repository.bagger.BaggerApplication

2.7.6 seems to load up and run absolutely fine.

This all happened on Mac OSX El Capitan.

I guess it's just a little error in how the release might have been packaged up, or something?

All the best and thanks.

Save errors when not using browse button

When submitting an issue please include:

  • 2.8.1
  • Mac OS

Steps to reproduce

  • create new bag
  • add some content
  • click the "Save Bag As..." button
  • type a path in "Save in:" field (DO NOT USE BROWSE BUTTON!)
  • click "ok" button

Expected results?

The bag was saved

Actual result?

"Unexpected general bug" error pops up

bagger seems unresponsive after saving bag

Hi:

Demonstrated this issue in person with John Scancella on 20150817.

The issue is that after you use the option "Create New Bag" (which works fine-first screenshot), when you click on the "Validate" icon (second screenshot), it doesn't appear to do anything. (Actually, it appears the other four icons to the right of the Validate icon don't get a response either, if I'm not mistaken.)

The way I discovered to resolve this is to select the Terminal window--which brings it in front of the Bagger GUI window (third screenshot) and the window that the validation is successful appears.

Thank you.

Andrew Cook
[email protected]
Library of Congress

screen shot 2015-08-17 at 10 28 41 am
screen shot 2015-08-17 at 10 29 24 am
screen shot 2015-08-17 at 10 30 21 am

Confusion: Where to download release?

At our archive, we are not only using Bagger/BagIt extensively, but also trying to promote its use for exchange with others (institution/individuals). Bagger is a great tool for making hashcode/fixity checks easily accessible for anyone. Thank you so very much!

But:
When trying to send "a link" to where to download Bagger to another institution, I realized that it's quite unclear, where to download the most recent LoC transfer-tools (bagger/bagit) - and which file actually...

I'm not complaining, but I think it'd be great to have a simple html-page that points to the most current releases - or did I simply not find it?

Detailed information:

Here's a summary of things that add to the confusion:

  • Official download from Sourceforge or GitHub?
    On the LoC Transfer-Tools Sourceforge site, it says that the project has moved to GitHub:

    As of 2013-07-12, this project may now be found at https://github.com/LibraryOfCongress/bagit-java

    ...where I can find the source-code, but no release packages.

  • The Sourceforge site seems to contain Bagger releases (currently up to v2.1.3):
    http://sourceforge.net/projects/loc-xferutils/files/loc-bagger/

    Now, not being sure if those releases are actually still maintained (or rather found on GitHub), there is a message that causes more insecurity if I'm right:

    "Looking for the latest version? Download bagit-4.4-bin.zip (3.5 MB)"

    Which is actually the BagIt library/commandline application.

  • "loc-bil-java-library" = "bagit-java"
    Since the Bagger-releases on Sourceforge (still) work fine, I thought I'd check the date of the BagIt library/CLI releases on Sourceforge and compare them with the most recent changes on GitHub.

    Then I realized that:

    • on GitHub it's called "bagit-java", but on Sourceforge it's "loc-bil-java-library"
    • There seem to have been commits/releases on GitHub (v4.9.0), but not on SourceForge (v4.4)

    So now I'm even more insecure about the Bagger builds on Sourceforge... :(

Thank you very much in advance.

deleting a directory

When deleting a directory in a saved bag, bagit only deletes the files (since that is all the spec cares about). This causes confusion since after a save, bagger reloads the payload directory from what is on the system. Thus a directory that WAS gone reappears.

To reproduce this:

  • create a bag with directories
  • save bag to a location on disk
  • delete a directory
  • save the bag again to the same directory
  • EMPTY directory appears in the bagger UI

update user guide

The current user guide still references version 2.1.4 for bagger and other things that are out of date.

Cannot locate bagger.bat

I have a feeling I'm making a foolish error, but I just downloaded the zip and cannot locate bagger.bat. The readme tells me to locate the directory bagger-2.1.3. I cannot find that either. And I missing something obvious?

Error happening at start when trying to copy default profile files to user dir

In windows 7, when starting bagger, I have an exception related to the task that is supposed to copy the default JSON profiles to my user dir. Here's the exception :

2016-04-29 11:16:37,945 INFO [main] g.l.r.b.d.JSonBagger [JSonBagger.java:54] Using profiles from C:\Users\stephane.tellier\bagger
java.lang.NullPointerException
        at java.util.Objects.requireNonNull(Objects.java:203)
        at java.nio.file.Files.copy(Files.java:2984)
        at gov.loc.repository.bagger.domain.JSonBagger.copyDefautprofilesToUserFolder(JSonBagger.java:75)
        at gov.loc.repository.bagger.domain.JSonBagger.<init>(JSonBagger.java:57)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:320)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:134)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
        at org.springframework.richclient.application.ApplicationLauncher.loadRootApplicationContext(ApplicationLauncher.java:263)
        at org.springframework.richclient.application.ApplicationLauncher.<init>(ApplicationLauncher.java:159)
        at gov.loc.repository.bagger.BaggerApplication.main(BaggerApplication.java:42)

Therefore, the JSON files aren't copied to my user dir. However, the bagger directory is correctly created.

Difference in validation status of bag using Python and Java versions

from user https://github.com/jamiepb

I've discovered a discrepancy between the Java version and the Python version when validating a bag with an extra file. I have a bag that acquired a thumbs.db file when someone opened it. I ran a tool that is built on bagit-python (current pip install version, 1.6.2) that did not validate the bag, noting that the expected file count and bag size did not match. I then investigated and saw the thumbs.db file that had appeared after bagging. However, I then ran Bagger 2.7.6 and the bag validated.

Software and OS:

BagIt Python 1.6.2 and Bagger 2.7.6
Windows 7 Enterprise
Given

A bag with a thumbs.db file in it that is not on the manifest
When

I run a Python tool that calls bagit py 1.6.2
Then

The bag does not validate
BUT:

Given

A bag with a thumbs.db file in it that is not on the manifest
When

I open the bag in Bagger 2.7.6 and validate
Then

The validation is successful
Thank you for looking into it.

Bagger fails to start if parent directory has spaces (Windows)

I am using Bagger 2.7.6 on Windows 7.

It appears that bagger expects the application directory to not have any spaces. I had originally extracted the application files to d:\digital preservation tools. Launching bagger triggered the error: "Could not find or load main class preservation"

Moving the bagger files to a directory with no spaces successfully works around the issue.

Bagger to validate batches of bags on local/network storage, write and hash txt report file

As most of users just receive records and bag them, it is hard to validate bag-by-bag and having Bagger validate all the bags in a folder and its subfolders would be very very useful.

Essentially, being able to ask Bagger to validate an entire repository of many bags in various subfolders on a drive or network storage...then create a text report (with its hash) containing successful and failed bag validation, each time it finishes validating the entire repository would be a highly coveted improvement.

Expected outcomes:

  • Bagger to validate an entire drive by validating one bag after another, in the same folder or different folder or paths. Once started and pointed to a storage location, Bagger to complete all validation
  • Bagger to create a text report file containing the list of bags that validated or did not validate during a specific session
    -Bagger to hash the text report file, so when the validation report is modified, one can tell.
  • If one runs Bagger once a month, one should be able to tell in which month a bag as been altered by comparing the 12 months validation of bags.

If this would be better implemented in a new Bagger Architecture, no need to overhaul the current one if you judge so.
Tibaut

Feature Request: some kind of progress indication while bagging

When running a large bag (say, 4.5TB with a few hundred large Quicktime files), the process can be really slow. There's no indication that anything is happening, short of looking at the Task Manager (Windows) to see if there's CPU/Process activity associated with bagger/java.

A progress bar, or even displaying the current operation (hashing a given filename, for instance) in the console area, would be a huge help. Though a progress bar would be best, since it gives you some indication of remaining time.

On a reasonably fast i7 workstation running Windows 7, pulling files off a SAN capable of moving data at well over 1GB/s, it can take over 5 hours to run a bag that will fill an uncompressed LTO7 tape. During that time, we have no idea if anything is actually happening.

Version: Bagger 2.7.7
OS: Windows 7 Ultimate, SP1
Steps to reproduce:

  • Create a bag on a large fileset.
  • Cross fingers!

Problems with vertical scrollbar of Payload and Tag Files section

In Windows 7, there seems to be a problem with the vertical scrolling of the "Payload" and "Tag Files" section.
For the Payload, while the scrollbar is visible, it doesn't detect the panel's new dimensions when adding multiple files.
For the Tag Files, it works partially, as the new dimensions are not correctly sets.
Those problems were also in version 2.3.
Here's some snapshots.

image

image

reopening a bag changes the order of key:value pairs defined in the json profile

Version: Bagger 2.8.1
OS: Windows 7
Java: jre-10.0.2 windows-x64

Steps performed:

  • create a new ordered -profile.json Profile save it in working directory
  • start bagger
  • select newly created profile
  • create new bag
  • key:value pairs for Bag-Info are displayed in the GUI in correct order according to the -profile.json file
  • add some content
  • click "save as.." button
  • type in filepath
  • click save
  • Bag is saved
  • key/value pairs are written to bag-info.txt in correct order according to the -profile.json file, profile name is included
  • close bagger
  • start bagger
  • open saved bag
    Expected outcome: key:value pairs for Bag-Info are displayed in the GUI in correct order according to the -profile.json file and the order in bag-info.txt
    Problem: key:value pairs for Bag-Info are not displayed in the GUI in correct order according to the -profile.json file, but are being reordered by the application

I have read the thread on "Change fields (in Json profile, display screen and Bag-info) from set to ordered list" as well as the closed issue: "Bagger info panel unordered after saving" but I am ot sure if the problem has been solved and there is something wrong with my profile.

Thanks for any advice

J.Schminder

New bag profile causes bagger to not open on mac

After adding a new json profile to the bagger profile folder, bagger is unable to open on a mac. The output from terminal is pasted below.

Editing an existing profile to add an additional element, saving it, and then re-opening bagger over-writes the profile with the defaults.

2016-02-18 09:18:36,331 INFO [main] g.l.r.b.d.JSonBagger [JSonBagger.java:52] Using profiles from /Users/Erin/bagger
2016-02-18 09:18:36,361 ERROR [main] g.l.r.b.BaggerApplication [BaggerApplication.java:55] RuntimeException during startup
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bagView' defined in class path resource [gov/loc/repository/bagger/ctx/common/richclient-application-context.xml]: Cannot resolve reference to bean 'profiles' while setting bean property 'viewProperties' with key [TypedStringValue: value [profileStore], target type [null]]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profiles' defined in class path resource [gov/loc/repository/bagger/ctx/common/business-layer-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:320) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:134) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) ~[spring-beans-2.5.5.jar:2.5.5]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_71]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729) ~[spring-context-2.5.5.jar:2.5.5]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381) ~[spring-context-2.5.5.jar:2.5.5]
at org.springframework.richclient.application.ApplicationLauncher.loadRootApplicationContext(ApplicationLauncher.java:263) ~[spring-richclient-core-1.1.0.jar:1.1.0]
at org.springframework.richclient.application.ApplicationLauncher.(ApplicationLauncher.java:159) ~[spring-richclient-core-1.1.0.jar:1.1.0]
at gov.loc.repository.bagger.BaggerApplication.main(BaggerApplication.java:42) ~[bagger-2.5.0-RC3.jar:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profiles' defined in class path resource [gov/loc/repository/bagger/ctx/common/business-layer-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:254) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) ~[spring-beans-2.5.5.jar:2.5.5]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_71]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ~[spring-beans-2.5.5.jar:2.5.5]
... 20 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [gov.loc.repository.bagger.profile.BaggerProfileStore]: Constructor threw exception; nested exception is java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-2.5.5.jar:2.5.5]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:248) ~[spring-beans-2.5.5.jar:2.5.5]
... 32 common frames omitted
Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at gov.loc.repository.bagger.ProfileField.createProfileField(ProfileField.java:105) ~[bagger-business-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.Profile.getFields(Profile.java:130) ~[bagger-business-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.Profile.createProfile(Profile.java:114) ~[bagger-business-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.domain.JSonBagger.loadProfile(JSonBagger.java:134) ~[bagger-business-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.domain.JSonBagger.loadProfiles(JSonBagger.java:109) ~[bagger-business-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.profile.BaggerProfileStore.initializeProfile(BaggerProfileStore.java:34) ~[bagger-core-2.5.0-RC3.jar:na]
at gov.loc.repository.bagger.profile.BaggerProfileStore.(BaggerProfileStore.java:21) ~[bagger-core-2.5.0-RC3.jar:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_71]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_71]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_71]
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_71]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) ~[spring-beans-2.5.5.jar:2.5.5]
... 34 common frames omitted
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

Serialize to tarball?

We are going to start creating bags with a lot of A/V content that will not compress well and will be rather large (50G+). Is it possible to add an option to serialize the bag to a tarball in addition to zip and directory? Right now we're doing it as two steps.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.