/* * Copyright (c) 2002-2009, The DSpace Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of the DSpace Foundation nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.dspace.checker; import java.util.Date; /** * <p> * Value Object that holds bitstream information that will be used for checksum * processing. * </p> * * @author Jim Downing * @author Grace Carpenter * @author Nathan Sarr * */ public final class BitstreamInfo { /** deleted flag. */ private boolean deleted; /** dspace bitstream information */ private DSpaceBitstreamInfo dspaceBitstream; /** * Indicates the bitstream info (metdata) was found in the database. * * @todo Is this actually used for anything? */ private boolean infoFound; /** indicates the bitstream was found in the database. */ private boolean bitstreamFound; /** the check sum value calculated by the algorithm. */ private String calculatedChecksum; /** should be processed or not? */ private boolean toBeProcessed; /** checksum comparison result code. */ private String checksumCheckResult; /** Date the object was created for processing. */ private Date processStartDate; /** Date the processing was completed. */ private Date processEndDate; /** * Blanked off no-op default constructor. */ private BitstreamInfo() { ; } /** * Minimal constructor. * * @param bid * Bitstream identifier */ public BitstreamInfo(int bid) { deleted = false; dspaceBitstream = new DSpaceBitstreamInfo(bid); // set default to true since it's the // case for most bitstreams infoFound = true; bitstreamFound = false; calculatedChecksum = null; processEndDate = null; toBeProcessed = false; processStartDate = new Date(); } /** * Complete constructor. * * @param del * Deleted * @param storeNo * Bitstream storeNumber * @param sz * Bitstream size * @param bitstrmFmt * Bitstream format * @param bitstrmId * Bitstream id * @param usrFmtDesc * Bitstream format description * @param intrnlId * Bitstream DSpace internal id * @param src * Bitstream source * @param chksumAlgorthm * Algorithm used to check bitstream * @param chksum * Hash digest obtained * @param nm * Name of bitstream * @param procEndDate * When the last bitstream check finished. * @param toBeProc * Whether the bitstream will be checked or skipped * @param procStartDate * When the last bitstream check started. */ public BitstreamInfo(boolean del, int storeNo, long sz, String bitstrmFmt, int bitstrmId, String usrFmtDesc, String intrnlId, String src, String chksumAlgorthm, String chksum, String nm, Date procEndDate, boolean toBeProc, Date procStartDate) { dspaceBitstream = new DSpaceBitstreamInfo(del, storeNo, sz, bitstrmFmt, bitstrmId, usrFmtDesc, intrnlId, src, chksumAlgorthm, chksum, nm, ""); this.deleted = del; this.processEndDate = procEndDate; this.toBeProcessed = toBeProc; this.processStartDate = procStartDate; this.infoFound = true; } /** * Get the deleted flag. * * @return true if the bitstream has been deleted */ public boolean getDeleted() { return deleted; } /** * Set the deleted flag. * * @param deleted * deleted flag */ public void setDeleted(boolean deleted) { this.deleted = deleted; } /** * Get the bitstream store number. * * @return int */ public int getStoreNumber() { return dspaceBitstream.getStoreNumber(); } /** * Set the store number. * * @param storeNumber * the store number */ public void setStoreNumber(int storeNumber) { dspaceBitstream.setStoreNumber(storeNumber); } /** * Get the size. * * @return int */ public long getSize() { return dspaceBitstream.getSize(); } /** * Set the size. * * @param size * the bitstream size */ public void setSize(int size) { dspaceBitstream.setSize(size); } /** * Get the Bitstream Format id. * * @return int */ public String getBitstreamFormatId() { return dspaceBitstream.getBitstreamFormatId(); } /** * Set the Bitstream Format id. * * @param bitstrmFmt * id of the bitstream format */ public void setBitstreamFormatId(String bitstrmFmt) { dspaceBitstream.setBitstreamFormatId(bitstrmFmt); } /** * Get the Bitstream id. * * @return int */ public int getBitstreamId() { return dspaceBitstream.getBitstreamId(); } /** * Get the user format description. * * @return String */ public String getUserFormatDescription() { return dspaceBitstream.getUserFormatDescription(); } /** * Set the user format description. * * @param userFormatDescription * the userFormatDescription */ public void setUserFormatDescription(String userFormatDescription) { dspaceBitstream.setUserFormatDescription(userFormatDescription); } /** * Get the Internal Id. * * @return String */ public String getInternalId() { return dspaceBitstream.getInternalId(); } /** * Set the Internal Id. * * @param internalId * the DSpace internal sequence id for the bitstream. */ public void setInternalId(String internalId) { dspaceBitstream.setInternalId(internalId); } /** * Get the source. * * @return String */ public String getSource() { return dspaceBitstream.getSource(); } /** * Set the source. * * @param source * The bitstream source. */ public void setSource(String source) { dspaceBitstream.setSource(source); } /** * Get the checksum algorithm. * * @return String */ public String getChecksumAlgorithm() { return dspaceBitstream.getChecksumAlgorithm(); } /** * Set the checksum algorithm. * * @param checksumAlgorithm * the algorithm used for checking this bitstream */ public void setChecksumAlgorithm(String checksumAlgorithm) { dspaceBitstream.setChecksumAlgorithm(checksumAlgorithm); } /** * Get the checksum. * * @return String */ public String getStoredChecksum() { return dspaceBitstream.getStoredChecksum(); } /** * Set the checksum. * * @param checksum * The last stored checksum for this bitstream. */ public void setStoredChecksum(String checksum) { dspaceBitstream.setStoredChecksum(checksum); } /** * Get the name of the bitstream. * * @return String */ public String getName() { return dspaceBitstream.getName(); } /** * Set the name of the bitstream. * * @param nm * The name of this bitstream. */ public void setName(String nm) { dspaceBitstream.setName(nm); } /** * calculatedChecksum accessor. * * @return Returns the calculatedChecksum. */ public String getCalculatedChecksum() { return calculatedChecksum; } /** * calculatedChecksum accessor. * * @param calculatedChecksum * The calculatedChecksum to set. */ public void setCalculatedChecksum(String calculatedChecksum) { this.calculatedChecksum = calculatedChecksum; } /** * infoFound accessor. * * @return Returns infoFound. */ public boolean getInfoFound() { return this.infoFound; } /** * infoFound accessor. * * @param found * sets infoFound. */ public void setInfoFound(boolean found) { this.infoFound = found; } /** * bitstreamFound accessor. * * @return Returns bitstreamFound. */ public boolean getBitstreamFound() { return this.bitstreamFound; } /** * sets bitstreamFound. * * @param found * value of bitstreamFound to set. */ public void setBitstreamFound(boolean found) { this.bitstreamFound = found; } /** * Identity entirely dependent upon <code>bitstreamId</code>. * * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof BitstreamInfo)) { return false; } BitstreamInfo other = (BitstreamInfo) o; return (this.getBitstreamId() == other.getBitstreamId()); } /** * HashCode method uses <code>bitstreamId</code> as hashing function. * * @see java.lang.Object#hashCode() */ public int hashCode() { return getBitstreamId(); } /** * Describes this BitstreamInfo. * * @see java.lang.Object#toString() */ public String toString() { return new StringBuffer("ChecksumInformation for id ").append( getBitstreamId()).toString(); } /** * Sets toBeProcessed. * * @param toBeProcessed * flag from most_recent_checksum table */ public void setToBeProcessed(boolean toBeProcessed) { this.toBeProcessed = toBeProcessed; } /** * Gets toBeProcessed. * * @return value of toBeProcessed flag (from most_recent_checksum table) */ public boolean getToBeProcessed() { return this.toBeProcessed; } /** * Gets checksumCheckResult. * * @return result code for comparison of previous and current checksums */ public String getChecksumCheckResult() { return this.checksumCheckResult; } /** * Sets checksumCheckResult. * * @param resultCode * for comparison of previous and current checksums */ public void setChecksumCheckResult(String resultCode) { this.checksumCheckResult = resultCode; } /** * The start date and time this bitstream is being processed. * * @return date */ public Date getProcessStartDate() { return this.processStartDate; } /** * The date and time the processing started for this bitstream. * * @param startDate * date to set. */ public void setProcessStartDate(Date startDate) { this.processStartDate = startDate; } /** * The date and time this bitstream is finished being processed. * * @return date */ public Date getProcessEndDate() { return this.processEndDate; } /** * The date and time this bitstream is finished being processed. * * @param endDate * the date to set. */ public void setProcessEndDate(Date endDate) { this.processEndDate = endDate; } }