Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Add the following section to the xml. This adds a developer BnF to Jhove2.

Code Block
borderStylesolid
titlejhove2-framework-config.xml
borderStylesolid
	<!-- BnF (Bibliothéque nationale de France) agent bean -->
	<bean id="BnFAgent" class="org.jhove2.core.Agent" scope="singleton">
		<constructor-arg value="Bibliothèque nationale de France"
		                 type="java.lang.String"/>
		<constructor-arg value="Corporate"
		                 type="org.jhove2.core.Agent$Type"/>
		<property name="URI" value="http://www.bnf.fr/"/>
	</bean>

...

Insert the follow section in the internal signature part.

Code Block
borderStylesolid
titleDROID_SignatureFile_V20.xml
borderStylesolid
        <!-- ARC, matches "filedesc:" in beginning of file. -->
        <InternalSignature ID="123456" Specificity="Specific">
            <ByteSequence Reference="BOFoffset">
                <SubSequence Position="1" SubSeqMinOffset="0" SubSeqMaxOffset="0" MinFragLength="0">
                    <Sequence>66696C65646573633A</Sequence>
                    <DefaultShift>10</DefaultShift>
                    <Shift Byte="3A">1</Shift>
                    <Shift Byte="63">2</Shift>
                    <Shift Byte="73">3</Shift>
                    <Shift Byte="65">4</Shift>
                    <Shift Byte="64">5</Shift>
                    <Shift Byte="65">6</Shift>
                    <Shift Byte="6C">7</Shift>
                    <Shift Byte="69">8</Shift>
                    <Shift Byte="66">9</Shift>
                </SubSequence>
            </ByteSequence>
        </InternalSignature>
        <!-- WARC, matches "WARC/" in beginning of file. -->
        <InternalSignature ID="12345" Specificity="Specific">
            <ByteSequence Reference="BOFoffset">
                <SubSequence Position="1" SubSeqMinOffset="0" SubSeqMaxOffset="0" MinFragLength="0">
                    <Sequence>574152432F</Sequence>
                    <DefaultShift>6</DefaultShift>
                    <Shift Byte="2F">1</Shift>
                    <Shift Byte="43">2</Shift>
                    <Shift Byte="52">3</Shift>
                    <Shift Byte="41">4</Shift>
                    <Shift Byte="57">5</Shift>
                </SubSequence>
            </ByteSequence>
        </InternalSignature>

Insert the follow section in the file format part.

Code Block
borderStylesolid
titleDROID_SignatureFile_V20.xml
borderStylesolid
	<!-- ARC -->
        <FileFormat ID="310" Name="Alexa Archive File" PUID="x-fmt/219">
            <InternalSignatureID>123456</InternalSignatureID>
            <Extension>arc</Extension>
            <!-- If left out file is recognized as SGML -->
            <HasPriorityOverFileFormatID>638</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>639</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>640</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>641</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>642</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>643</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>644</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>645</HasPriorityOverFileFormatID>
        </FileFormat>
	<!-- WARC -->
        <FileFormat ID="12345" Name="WARC file" Version="1.0" PUID="x-fmt/289">
            <InternalSignatureID>12345</InternalSignatureID>
       	    <Extension>warc</Extension>
            <!-- If left out file is recognized as SGML -->
            <HasPriorityOverFileFormatID>638</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>639</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>640</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>641</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>642</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>643</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>644</HasPriorityOverFileFormatID>
            <HasPriorityOverFileFormatID>645</HasPriorityOverFileFormatID>
        </FileFormat>

...

Added to allow Spring to recognize and load the GZipModule.

Code Block
borderStylesolid
titlejhove2-gzip-config.xml
borderStylesolid
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">

	<!-- GZip module bean -->
	<bean id="GZipModule" class="org.jhove2.module.format.gzip.GzipModule" scope="prototype">
		<constructor-arg ref="GZipFormat"/>
		<constructor-arg ref="FormatModuleAccessor"/>
		<property name="developers">
			<list value-type="org.jhove2.core.Agent">
				<ref bean="BnFAgent"/>
			</list>
		</property>
		<property name="recurse" value="true"/>
		<!--property name="parallelCharacterization" value="4"/-->
	</bean>

	<!-- GZip format bean -->
	<bean id="GZipFormat" class="org.jhove2.core.format.Format" scope="singleton">
		<constructor-arg type="java.lang.String" value="GZip"/>
		<constructor-arg ref="GZipIdentifier"/>
		<constructor-arg type="org.jhove2.core.format.Format$Type" value="Format"/>
		<constructor-arg type="org.jhove2.core.format.Format$Ambiguity" value="Unambiguous"/>
		<property name="aliasIdentifiers">
			<set value-type="org.jhove2.core.I8R">
				<!-- ref bean="GZipIdentifier"/ -->
				<ref bean="GZipXFmt266Identifier"/>
				<ref bean="GZipMimeIdentifier"/>
				<ref bean="GZipRFC1952Identifier"/>
				<ref bean="GZipAppleUTIIdentifier"/>
			</set>
		</property>
		<property name="aliasNames">
			<set>
				<value>GZIP</value>
			</set>
		</property>
		<property name="specifications">
			<list value-type="org.jhove2.core.Document">
				<ref bean="GZip43Specification"/>
			</list>
		</property>
	</bean>

	<!-- Alias Identifiers -->

	<!-- GZip identifier bean -->
	<bean id="GZipIdentifier" class="org.jhove2.core.I8R" scope="singleton">
		<constructor-arg type="java.lang.String" value="http://jhove2.org/terms/format/gzip"/>
	</bean>

        <!-- GZip PUID x-fmt/266 alias identifier bean -->
        <bean id="GZipXFmt266Identifier" class="org.jhove2.core.I8R" scope="singleton">
		<constructor-arg type="java.lang.String" value="x-fmt/266"/>
		<constructor-arg type="org.jhove2.core.I8R$Namespace" value="PUID"/>
        </bean>

        <!-- GZip MIME alias identifier bean -->
        <bean id="GZipMimeIdentifier" class="org.jhove2.core.I8R" scope="singleton">
		<constructor-arg type="java.lang.String" value="application/x-gzip"/>
		<constructor-arg type="org.jhove2.core.I8R$Namespace" value="MIME"/>
        </bean>

        <!-- GZip RFC 1952 alias identifier bean -->
        <bean id="GZipRFC1952Identifier" class="org.jhove2.core.I8R" scope="singleton">
		<constructor-arg type="java.lang.String" value="RFC 1952"/>
		<constructor-arg type="org.jhove2.core.I8R$Namespace" value="RFC"/>
        </bean>

        <!-- GZip Apple UTI alias identifier bean -->
        <bean id="GZipAppleUTIIdentifier" class="org.jhove2.core.I8R" scope="singleton">
		<constructor-arg type="java.lang.String" value="org.gnu.gnu-zip-archive"/>
		<constructor-arg type="org.jhove2.core.I8R$Namespace" value="UTI"/>
	</bean>

	<!-- Specifications -->

	<!-- GZIP file format version 4.3 specification bean -->
	<bean id="GZip43Specification" class="org.jhove2.core.Document" scope="singleton">
		<constructor-arg type="java.lang.String" value="GZIP file format specification version 4.3"/>
		<constructor-arg type="org.jhove2.core.Document$Type" value="Specification"/>
		<constructor-arg type="org.jhove2.core.Document$Intention" value="Authoritative"/>
		<property name="author" value="P. Deutsch"/>
		<property name="date" value="May 1996"/>
		<property name="edition" value="RFC 1952"/>
		<property name="identifiers">
		<list value-type="org.jhove2.core.I8R">
				<bean class="org.jhove2.core.I8R">
					<constructor-arg type="java.lang.String" value="http://tools.ietf.org/html/rfc1952"/>
					<constructor-arg type="org.jhove2.core.I8R$Namespace" value="URI"/>
				</bean>
			</list>
		</property>
		<property name="publisher" value="IETF"/>
	</bean>

	<!-- GZip module resources -->

  <!-- GZip header compression methods description resources -->
  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass"
              value="org.jhove2.module.format.gzip.field.CompressionMethod"/>
    <property name="targetMethod" value="initValues"/>
    <property name="arguments">
      <list>
        <bean class="org.jhove2.config.spring.ModulePropertiesFactoryBean">
          <property name="propertyFileBaseName"
                    value="gzip/compression-methods"/>
        </bean>
      </list>
    </property>
  </bean>

  <!-- GZip header extra flags description resources -->
  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass"
              value="org.jhove2.module.format.gzip.field.CompressionType"/>
    <property name="targetMethod" value="initValues"/>
    <property name="arguments">
      <list>
        <bean class="org.jhove2.config.spring.ModulePropertiesFactoryBean">
          <property name="propertyFileBaseName"
                    value="gzip/compression-types"/>
        </bean>
      </list>
    </property>
  </bean>

  <!-- GZip header operating systems description resources -->
  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass"
              value="org.jhove2.module.format.gzip.field.OperatingSystem"/>
    <property name="targetMethod" value="initValues"/>
    <property name="arguments">
      <list>
        <bean class="org.jhove2.config.spring.ModulePropertiesFactoryBean">
          <property name="propertyFileBaseName"
                    value="gzip/operating-systems"/>
        </bean>
      </list>
    </property>
  </bean>

</beans>

...

Added to allow Spring to recognize and load the ArcModule.

Code Block
borderStyle
borderStylesolid
titlejhove2-arc-config.xmlsolid
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!-- ARC module bean -->
    <bean id="ArcModule" class="org.jhove2.module.format.arc.ArcModule" scope="prototype">
        <constructor-arg ref="AlexaArchiveFileFormat"/>
	<constructor-arg ref="FormatModuleAccessor"/>
	<property name="developers">
	    <list value-type="org.jhove2.core.Agent">
	      <ref bean="BnFAgent"/>
	    </list>
	</property>
	<property name="recurse" value="false"/>
	<property name="computeBlockDigest" value="true"/>
	<property name="blockDigestAlgorithm" value="sha1"/>
	<property name="blockDigestEncoding" value="base32"/>
	<property name="computePayloadDigest" value="true"/>
	<property name="payloadDigestAlgorithm" value="sha1"/>
	<property name="payloadDigestEncoding" value="base32"/>
	<!--property name="parallelCharacterization" value="0"/-->
    </bean>

    <!-- ARC format bean -->
    <bean id="AlexaArchiveFileFormat" class="org.jhove2.core.format.Format" scope="singleton">
        <constructor-arg type="java.lang.String" value="Alexa Archive File"/>
	<constructor-arg ref="AlexaArchiveFileIdentifier"/>
	<constructor-arg type="org.jhove2.core.format.Format$Type" value="Format"/>
	<constructor-arg type="org.jhove2.core.format.Format$Ambiguity" value="Unambiguous"/>

	<property name="aliasIdentifiers">
  	    <set value-type="org.jhove2.core.I8R">
	    <ref bean="AlexaArchiveFileIdentifier"/>
	    <!-- ARC PUID x-fmt/219 alias identifier bean -->
	    <bean class="org.jhove2.core.I8R">
	      <constructor-arg type="java.lang.String" value="x-fmt/219"/>
	      <constructor-arg type="org.jhove2.core.I8R$Namespace" value="PUID"/>
	    </bean>
	    <!-- ARC MIME alias identifier bean -->
	    <bean class="org.jhove2.core.I8R">
	      <constructor-arg type="java.lang.String" value="application/x-ia-arc"/>
	      <constructor-arg type="org.jhove2.core.I8R$Namespace" value="MIME"/>
	    </bean>
	  </set>
	</property>
	<property name="aliasNames">
	  <set>
	    <value>ARC</value>
	  </set>
	</property>
	<property name="specifications">
	  <list value-type="org.jhove2.core.Document">
	    <ref bean="Arc10Specification"/>
	  </list>
	</property>
    </bean>

  <!-- Arc identifier bean -->
  <bean id="AlexaArchiveFileIdentifier" class="org.jhove2.core.I8R" scope="singleton">
    <constructor-arg value="http://jhove2.org/terms/format/arc"
                     type="java.lang.String"/>
  </bean>

  <!-- ARC file format version 1.0 specification bean -->
  <bean id="Arc10Specification" class="org.jhove2.core.Document" scope="singleton">
    <constructor-arg type="java.lang.String"
                     value="ARC file format specification version 1.0"/>
    <constructor-arg type="org.jhove2.core.Document$Type"
                     value="Specification"/>
    <constructor-arg type="org.jhove2.core.Document$Intention"
                     value="Authoritative"/>

    <property name="author" value="Mike Burner and Brewster Kahle"/>
    <property name="date" value="September 15, 1996"/>
  </bean>

</beans>

...

Added to allow Spring to recognize and load the WarcModule.

Code Block
borderStyle
borderStylesolid
titlejhove2-warc-config.xmlsolid
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

  <!-- WARC module bean -->
  <bean id="WarcModule" class="org.jhove2.module.format.warc.WarcModule" scope="prototype">
    <constructor-arg ref="WarcArchiveFileFormat"/>
    <constructor-arg ref="FormatModuleAccessor"/>
    <property name="developers">
      <list value-type="org.jhove2.core.Agent">
	<ref bean="BnFAgent"/>
      </list>
    </property>
    <property name="recurse" value="false"/>
    <property name="computeBlockDigest" value="true"/>
    <property name="blockDigestAlgorithm" value="sha1"/>
    <property name="blockDigestEncoding" value="base32"/>
    <property name="computePayloadDigest" value="true"/>
    <property name="payloadDigestAlgorithm" value="sha1"/>
    <property name="payloadDigestEncoding" value="base32"/>
    <!--property name="parallelCharacterization" value="0"/-->
  </bean>

  <!-- WARC format bean -->
  <bean id="WarcArchiveFileFormat" class="org.jhove2.core.format.Format" scope="singleton">
    <constructor-arg type="java.lang.String" value="Warc Archive File"/>
    <constructor-arg ref="WarcArchiveFileIdentifier"/>
    <constructor-arg type="org.jhove2.core.format.Format$Type" value="Format"/>
    <constructor-arg type="org.jhove2.core.format.Format$Ambiguity" value="Unambiguous"/>
    <property name="aliasIdentifiers">
      <set value-type="org.jhove2.core.I8R">
	<ref bean="WarcArchiveFileIdentifier"/>
	<!-- ARC PUID x-fmt/219 alias identifier bean -->
	<bean class="org.jhove2.core.I8R">
	  <constructor-arg type="java.lang.String" value="x-fmt/289"/>
	  <constructor-arg type="org.jhove2.core.I8R$Namespace" value="PUID"/>
	</bean>
	<!-- WARC MIME alias identifier bean -->
	<bean class="org.jhove2.core.I8R">
	  <constructor-arg type="java.lang.String" value="application/warc"/>
	  <constructor-arg type="org.jhove2.core.I8R$Namespace" value="MIME"/>
	</bean>
	<!-- WARC ISO 28500 -->
	<bean id="WarcISO28500" class="org.jhove2.core.I8R" scope="singleton">
	  <constructor-arg type="java.lang.String" value="ISO 28500:2009(E)" />
	  <constructor-arg type="org.jhove2.core.I8R$Namespace" value="ISO" />
	</bean>
      </set>
    </property>
    <property name="aliasNames">
      <set>
	<value>WARC</value>
      </set>
    </property>
    <property name="specifications">
      <list value-type="org.jhove2.core.Document">
	<ref bean="Warc10Specification"/>
      </list>
    </property>
  </bean>

  <!-- WARC identifier bean -->
  <bean id="WarcArchiveFileIdentifier" class="org.jhove2.core.I8R" scope="singleton">
    <constructor-arg value="http://jhove2.org/terms/format/warc" type="java.lang.String"/>
  </bean>

  <!-- WARC file format version 1.0 specification bean -->
  <bean id="Warc10Specification" class="org.jhove2.core.Document" scope="singleton">
    <constructor-arg type="java.lang.String"
                     value="WARC file format specification version 1.0"/>
    <constructor-arg type="org.jhove2.core.Document$Type"
                     value="Specification"/>
    <constructor-arg type="org.jhove2.core.Document$Intention"
                     value="Authoritative"/>

    <property name="author" value="Technical Committee ISO/TC 46"/>
    <property name="date" value="September 15, 1996"/>
    <property name="identifiers">
      <list value-type="org.jhove2.core.I8R">
	<ref bean="ISO28500WARCSpecificationURI"/>
      </list>
    </property>
    <property name="publisher" value="ISO"/>
    <!--property name="title" value="ISO 28500: Information and documentation - WARC file format"/-->
  </bean>

  <!-- ISO 28500 WARC specification URI bean -->
  <bean id="ISO28500WARCSpecificationURI" class="org.jhove2.core.I8R" scope="singleton">
    <constructor-arg type="java.lang.String" value="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=44717"/>
    <constructor-arg type="org.jhove2.core.I8R$Namespace" value="URI"/>
  </bean>

</beans>

...

Additional file with GZipModule messages.

Code Block
borderStylesolid
titlegzip_messages.propertiesborderStylesolid
# gzip_messages.properties
# Key value pairs from fully-qualified Java path for a Message field in a class
# to message text template
# Used for localization
#
# ##############################################################################
#   Message templates for class org.jhove2.module.format.gzip.GzipModule
# ##############################################################################
#
org.jhove2.module.format.gzip.GzipModule.invalidGzipFile = \
        Invalid GZIP file: fatal error encountered (current offset={0, number, integer}): {1}
#
org.jhove2.module.format.gzip.GzipModule.invalidExtraFlags = \
        Invalid extra flags value
org.jhove2.module.format.gzip.GzipModule.invalidOperatingSystem = \
        Unknown operating system value
org.jhove2.module.format.gzip.GzipModule.reservedFlagsSet = Reserved flags set
org.jhove2.module.format.gzip.GzipModule.invalidISize = \
        Invalid ISize value: read={0, number, integer}, computed={1, number, integer}
org.jhove2.module.format.gzip.GzipModule.invalidCrc16 = \
        Invalid header CRC16 value: read={0}, computed={1}
org.jhove2.module.format.gzip.GzipModule.invalidCrc32 = \
        Invalid data CRC32 value: read={0}, computed={1}
#

...

Additional file with ArcModule messages.

Code Block
borderStylesolid
titlearc_messages.propertiesborderStylesolid
# arc_messages.properties
# Key value pairs from fully-qualified Java path for a Message field in a class
# to message text template
# Used for localization
#
# ##############################################################################
#   Message templates for class org.jhove2.module.format.arc.ArcModule
# ##############################################################################
#
org.jhove2.module.format.arc.ArcModule.missing = \
        Missing ARC header fields {0}
org.jhove2.module.format.arc.ArcModule.invalid = \
        Invalid {0}: {1}
org.jhove2.module.format.arc.ArcModule.warning = \
        Warning: {0}
#
org.jhove2.module.format.arc.ArcModule.characterizationError = \
        Fatal characterization error: {0}
#

...

Additional file with WarcModule messages.

Code Block
borderStylesolid
titlewarc_messages.propertiesborderStylesolid
# warc_messages.properties
# Key value pairs from fully-qualified Java path for a Message field in a class
# to message text template
# Used for localization
#
# ##############################################################################
#   Message templates for class org.jhove2.module.format.warc.WarcModule
# ##############################################################################
#
org.jhove2.module.format.warc.WarcModule.missing = \
        Missing ARC header fields {0}
org.jhove2.module.format.warc.WarcModule.invalid = \
        Invalid {0}: {1}
org.jhove2.module.format.warc.WarcModule.warning = \
        Warning: {0}

org.jhove2.module.format.warc.WarcModule.empty = \
        Empty ARC header field {0}
org.jhove2.module.format.warc.WarcModule.duplicate = \
        Invalid {0}: {1}
org.jhove2.module.format.warc.WarcModule.unknown = \
        Invalid {0}: {1}
org.jhove2.module.format.warc.WarcModule.wanted = \
        Invalid {0}: {1}
org.jhove2.module.format.warc.WarcModule.unwanted = \
        Invalid {0}: {1}
org.jhove2.module.format.warc.WarcModule.recommended = \
        Invalid {0}: {1}

#
org.jhove2.module.format.warc.WarcModule.characterizationError = \
        Fatal characterization error: {0}
#

...