/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE file at the root of the source * tree and available online at * * https://github.com/keeps/roda */ package org.roda.core.data.v2.ip; import java.util.Arrays; import java.util.List; import javax.xml.bind.annotation.XmlRootElement; import org.roda.core.data.common.RodaConstants; import org.roda.core.data.v2.index.IsIndexed; import com.fasterxml.jackson.annotation.JsonInclude; @XmlRootElement(name = RodaConstants.RODA_OBJECT_REPRESENTATION) @JsonInclude(JsonInclude.Include.NON_NULL) public class IndexedRepresentation extends Representation implements IsIndexed, HasPermissionFilters { private static final long serialVersionUID = -950545608880793468L; private String uuid; private long sizeInBytes; private long numberOfDataFiles; private long numberOfDocumentationFiles; private long numberOfSchemaFiles; private List<String> ancestors; public IndexedRepresentation() { super(); } public IndexedRepresentation(String uuid, String id, String aipId, boolean original, String type, long sizeInBytes, long totalNumberOfFiles, long numberOfDocumentationFiles, long numberOfSchemaFiles, List<String> ancestors) { super(id, aipId, original, type); this.uuid = uuid; this.sizeInBytes = sizeInBytes; this.numberOfDataFiles = totalNumberOfFiles; this.numberOfDocumentationFiles = numberOfDocumentationFiles; this.numberOfSchemaFiles = numberOfSchemaFiles; this.ancestors = ancestors; } @Override public String getUUID() { return uuid; } public void setUUID(String uuid) { this.uuid = uuid; } public long getSizeInBytes() { return sizeInBytes; } public void setSizeInBytes(long sizeInBytes) { this.sizeInBytes = sizeInBytes; } public long getNumberOfDataFiles() { return numberOfDataFiles; } public void setNumberOfDataFiles(long numberOfDataFiles) { this.numberOfDataFiles = numberOfDataFiles; } public long getNumberOfDocumentationFiles() { return numberOfDocumentationFiles; } public void setNumberOfDocumentationFiles(long numberOfDocumentationFiles) { this.numberOfDocumentationFiles = numberOfDocumentationFiles; } public long getNumberOfSchemaFiles() { return numberOfSchemaFiles; } public void setNumberOfSchemaFiles(long numberOfSchemaFiles) { this.numberOfSchemaFiles = numberOfSchemaFiles; } public List<String> getAncestors() { return ancestors; } public void setAncestors(List<String> ancestors) { this.ancestors = ancestors; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (int) (numberOfDocumentationFiles ^ (numberOfDocumentationFiles >>> 32)); result = prime * result + (int) (numberOfSchemaFiles ^ (numberOfSchemaFiles >>> 32)); result = prime * result + (int) (sizeInBytes ^ (sizeInBytes >>> 32)); result = prime * result + (int) (numberOfDataFiles ^ (numberOfDataFiles >>> 32)); result = prime * result + ((uuid == null) ? 0 : uuid.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; IndexedRepresentation other = (IndexedRepresentation) obj; if (numberOfDocumentationFiles != other.numberOfDocumentationFiles) return false; if (numberOfSchemaFiles != other.numberOfSchemaFiles) return false; if (sizeInBytes != other.sizeInBytes) return false; if (numberOfDataFiles != other.numberOfDataFiles) return false; if (uuid == null) { if (other.uuid != null) return false; } else if (!uuid.equals(other.uuid)) return false; return true; } @Override public String toString() { return "IndexedRepresentation [uuid=" + uuid + ", sizeInBytes=" + sizeInBytes + ", numberOfDataFiles=" + numberOfDataFiles + ", numberOfDocumentationFiles=" + numberOfDocumentationFiles + ", numberOfSchemaFiles=" + numberOfSchemaFiles + ", ancestors=" + ancestors + "]"; } @Override public List<String> toCsvHeaders() { return Arrays.asList("uuid", "sizeInBytes", "numberOfDataFiles", "numberOfDocumentationFiles", "numberOfSchemaFiles", "ancestors"); } @Override public List<Object> toCsvValues() { return Arrays.asList(uuid, sizeInBytes, numberOfDataFiles, numberOfDocumentationFiles, numberOfSchemaFiles, ancestors); } @Override public List<String> liteFields() { return Arrays.asList(RodaConstants.INDEX_UUID, RodaConstants.REPRESENTATION_AIP_ID, RodaConstants.REPRESENTATION_ID); } }