All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.gov.nationalarchives.droid.binFileReader.IdentificationFile Maven / Gradle / Ivy

/*
 * c The National Archives 2005-2006.  All rights reserved.
 * See Licence.txt for full licence details.
 *
 * Developed by:
 * Tessella Support Services plc
 * 3 Vineyard Chambers
 * Abingdon, OX14 3PX
 * United Kingdom
 * http://www.tessella.com
 *
 * Tessella/NPD/4305
 * PRONOM 4
 *
 * $Id: IdentificationFile.java,v 1.9 2006/03/13 15:15:25 linb Exp $
 * 
 * $Logger: IdentificationFile.java,v $
 * Revision 1.9  2006/03/13 15:15:25  linb
 * Changed copyright holder from Crown Copyright to The National Archives.
 * Added reference to licence.txt
 * Changed dates to 2005-2006
 *
 * Revision 1.8  2006/02/09 15:31:23  linb
 * Updates to javadoc and code following the code review
 *
 * Revision 1.7  2006/02/09 13:17:41  linb
 * Changed StreamByteReader to InputStreamByteReader
 * Refactored common code from UrlByteReader and InputStreamByteReader into new class StreamByteReader, from which they both inherit
 * Updated javadoc
 *
 * Revision 1.6  2006/02/09 12:14:15  linb
 * Changed some javadoc to allow it to be created cleanly
 *
 * Revision 1.5  2006/02/08 11:45:48  linb
 * - add support for streams
 *
 * Revision 1.4  2006/02/08 08:56:35  linb
 * - Added header comments
 *
 *
 *$History: IdentificationFile.java $
 * 
 * *****************  Version 10  *****************
 * User: Walm         Date: 5/04/05    Time: 18:08
 * Updated in $/PRONOM4/FFIT_SOURCE
 * review headers
 * 
 * *****************  Version 9  *****************
 * User: Walm         Date: 29/03/05   Time: 11:11
 * Updated in $/PRONOM4/FFIT_SOURCE
 * Read in hit results from a file collection file
 *
 * *****************  Version 8  *****************
 * User: Walm         Date: 24/03/05   Time: 11:17
 * Updated in $/PRONOM4/FFIT_SOURCE
 * add Text versions of file classifications
 *
 * *****************  Version 7  *****************
 * User: Walm         Date: 15/03/05   Time: 15:31
 * Updated in $/PRONOM4/FFIT_SOURCE
 * initialise identification warning
 *
 * *****************  Version 6  *****************
 * User: Walm         Date: 15/03/05   Time: 14:40
 * Updated in $/PRONOM4/FFIT_SOURCE
 * File classifications are now integer constants defined in
 * AnalysisController
 *
 * *****************  Version 5  *****************
 * User: Mals         Date: 14/03/05   Time: 18:09
 * Updated in $/PRONOM4/FFIT_SOURCE
 * return null identification status
 *
 * *****************  Version 4  *****************
 * User: Mals         Date: 14/03/05   Time: 15:07
 * Updated in $/PRONOM4/FFIT_SOURCE
 * Added positive ,tentitive and unidentified status setters
 *
 * *****************  Version 3  *****************
 * User: Mals         Date: 14/03/05   Time: 14:00
 * Updated in $/PRONOM4/FFIT_SOURCE
 * Changed location of FileFormatHit
 *
 * *****************  Version 2  *****************
 * User: Mals         Date: 11/03/05   Time: 12:20
 * Updated in $/PRONOM4/FFIT_SOURCE
 * Added setters
 *
 * *****************  Version 1  *****************
 * User: Mals         Date: 11/03/05   Time: 11:54
 * Created in $/PRONOM4/FFIT_SOURCE
 * Reprsents an analysed or to be analysed file
 *
 */

package uk.gov.nationalarchives.droid.binFileReader;

import uk.gov.nationalarchives.droid.base.DroidConstants;
import uk.gov.nationalarchives.droid.base.FileFormatHit;
import uk.gov.nationalarchives.droid.base.MessageDisplay;
import uk.gov.nationalarchives.droid.base.SimpleElement;

/**
 * Reprsents an analysed or to be analysed file.
 * 

*

* Holds details on warnings, status and format hits for the file. * * @author Shahzad Malik * @version V1.R0.M.0, 11-Mar-2005 */ public class IdentificationFile extends SimpleElement implements Comparable { private String identificationWarning = ""; private int myIDStatus = DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED; private final java.util.List fileHits = new java.util.ArrayList(); private String filePath; public IdentificationFile() { } /** * Creates a new instance of IdentificationFile. * * @param filePath * Full file path */ public IdentificationFile(final String filePath) { setFilePath(filePath); } /** * Add a file format hit for this file. *

*

* Used for reading XML * * @param theHit * file format hit found */ public void addFileFormatHit(final FileFormatHit theHit) { this.fileHits.add(theHit); } /** * Add a file format hit for this file. * * @param hit * file format hit found */ public void addHit(final FileFormatHit hit) { this.fileHits.add(hit); } public int compareTo(final Object otherIDFile) { // This object always smaller if path not set if ((this.filePath == null) || (this.filePath.length() == 0)) { return -1; } return getFilePath().compareToIgnoreCase( ((IdentificationFile) otherIDFile).getFilePath()); } /** * Base equality on filePath */ @Override public boolean equals(final Object otherIDFile) { if (otherIDFile instanceof IdentificationFile) { return this.filePath.toLowerCase() .equals( ((IdentificationFile) otherIDFile).filePath .toLowerCase()); } else { return false; } } /** * Returns the file classification found by the identification The options * are setup as constants under Analysis Controller: * *FILE_CLASSIFICATION_POSITIVE *FILE_CLASSIFICATION_TENTATIVE * *FILE_CLASSIFICATION_NOHIT *FILE_CLASSIFICATION_ERROR * *FILE_CLASSIFICATION_NOTCLASSIFIED */ public int getClassification() { return this.myIDStatus; } /** * Returns the text description of the file classification found by the * identification The options are setup as constants under Analysis * Controller: *FILE_CLASSIFICATION_POSITIVE_TEXT * *FILE_CLASSIFICATION_TENTATIVE_TEXT *FILE_CLASSIFICATION_NOHIT_TEXT * *FILE_CLASSIFICATION_ERROR_TEXT *FILE_CLASSIFICATION_NOTCLASSIFIED_TEXT */ public String getClassificationText() { String theClassificationText = ""; if (this.myIDStatus == DroidConstants.FILE_CLASSIFICATION_POSITIVE) { theClassificationText = DroidConstants.FILE_CLASSIFICATION_POSITIVE_TEXT; } else if (this.myIDStatus == DroidConstants.FILE_CLASSIFICATION_TENTATIVE) { theClassificationText = DroidConstants.FILE_CLASSIFICATION_TENTATIVE_TEXT; } else if (this.myIDStatus == DroidConstants.FILE_CLASSIFICATION_NOHIT) { theClassificationText = DroidConstants.FILE_CLASSIFICATION_NOHIT_TEXT; } else if (this.myIDStatus == DroidConstants.FILE_CLASSIFICATION_ERROR) { theClassificationText = DroidConstants.FILE_CLASSIFICATION_ERROR_TEXT; } else if (this.myIDStatus == DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED) { theClassificationText = DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED_TEXT; } return theClassificationText; } /** * Returns the file name (without the full path) */ public String getFileName() { return (new java.io.File(this.filePath)).getName(); } /** * Returns the full file path */ public String getFilePath() { return this.filePath; } /** * Returns a hit object associated with the file that has been run through * the identification process */ public FileFormatHit getHit(final int theIndex) { return this.fileHits.get(theIndex); } /** * Returns number of hits found for this file */ public int getNumHits() { return this.fileHits.size(); } /** * Returns any warning associated with the file */ public String getWarning() { return this.identificationWarning; } /** * Use hashCode of filePath if set, as we wish to enforce this to be unique */ @Override public int hashCode() { if ((this.filePath == null) || (this.filePath.length() == 0)) { return super.hashCode(); } else { return this.filePath.toLowerCase().hashCode(); } } /** * Checks whether the file has been classified yet (i.e return YES for the * following classification values: FILE_CLASSIFICATION_POSITIVE , * FILE_CLASSIFICATION_TENTITIVE FILE_CLASSIFICATION_NOHIT , * FILE_CLASSIFICATION_ERROR */ public boolean isClassified() { return (this.myIDStatus != DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED); } /** * Remove a file format hit for the file. * * @param index * position in hit list of file */ public void removeHit(final int index) { this.fileHits.remove(index); } /** * Populate the details of the IdentificationFile object when read in from * XML file. * * @param theName * Name of the attribute read in * @param theValue * Value of the attribute read in */ @Override public void setAttributeValue(final String theName, final String theValue) { if (theName.equals("Name")) { setFilePath(theValue); } else if (theName.equals("IdentQuality")) { // The IdentQuality attribute value should match one of those // specified in code - // otherwise show a warning if (theValue .equals(DroidConstants.FILE_CLASSIFICATION_POSITIVE_TEXT)) { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_POSITIVE; } else if (theValue .equals(DroidConstants.FILE_CLASSIFICATION_TENTATIVE_TEXT)) { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_TENTATIVE; } else if (theValue .equals(DroidConstants.FILE_CLASSIFICATION_NOHIT_TEXT)) { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_NOHIT; } else if (theValue .equals(DroidConstants.FILE_CLASSIFICATION_ERROR_TEXT)) { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_ERROR; } else if (theValue .equals(DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED_TEXT)) { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_NOTCLASSIFIED; } else { MessageDisplay.generalWarning("Unknown file status listed: <" + theValue + "> is not the same as <" + DroidConstants.FILE_CLASSIFICATION_POSITIVE_TEXT + ">"); } } else if (theName.equals("Warning")) { setWarning(theValue); } else { MessageDisplay.unknownAttributeWarning(theName, getElementName()); } } /** * Sets the status to error during identification */ public void setErrorIdent() { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_ERROR; } /** * Set the full file Path. * * @param filePath * full file path */ public void setFilePath(final String filePath) { this.filePath = filePath; } /** * Set the file identification status. * * @param theStatus * file identification status */ public void setIDStatus(final int theStatus) { this.myIDStatus = theStatus; } /** * Sets the status to not identified */ public void setNoIdent() { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_NOHIT; } /** * Sets the file status to Postive */ public void setPositiveIdent() { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_POSITIVE; } /** * Sets the file status to tentitive */ public void setTentativeIdent() { this.myIDStatus = DroidConstants.FILE_CLASSIFICATION_TENTATIVE; } /** * Set the file identification warning. * * @param warning * file identification warning */ public void setWarning(final String warning) { this.identificationWarning = warning; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy