001/* 002 * The contents of this file are subject to the license and copyright 003 * detailed in the LICENSE and NOTICE files at the root of the source 004 * tree. 005 */ 006package org.fcrepo.persistence.common; 007 008import java.net.URI; 009import java.time.Instant; 010import java.util.Collection; 011 012import org.fcrepo.kernel.api.identifiers.FedoraId; 013import org.fcrepo.kernel.api.models.ResourceHeaders; 014 015/** 016 * Common implementation of resource headers 017 * 018 * @author bbpennel 019 */ 020public class ResourceHeadersImpl implements ResourceHeaders { 021 022 private FedoraId id; 023 024 private FedoraId parent; 025 026 private FedoraId archivalGroupId; 027 028 private String stateToken; 029 030 private String interactionModel; 031 032 private String mimeType; 033 034 private String filename; 035 036 private long contentSize; 037 038 private Collection<URI> digests; 039 040 private String externalUrl; 041 042 private String externalHandling; 043 044 private Instant createdDate; 045 046 private String createdBy; 047 048 private Instant lastModifiedDate; 049 050 private String lastModifiedBy; 051 052 private Instant mementoCreatedDate; 053 054 private boolean archivalGroup; 055 056 private boolean objectRoot; 057 058 private boolean deleted; 059 060 private String contentPath; 061 062 private String headersVersion; 063 064 private String storageRelativePath; 065 066 @Override 067 public FedoraId getId() { 068 return id; 069 } 070 071 /** 072 * @param id the fedora id to set 073 */ 074 public void setId(final FedoraId id) { 075 this.id = id; 076 } 077 078 @Override 079 public FedoraId getParent() { 080 return parent; 081 } 082 083 /** 084 * @param parent the parent to set 085 */ 086 public void setParent(final FedoraId parent) { 087 this.parent = parent; 088 } 089 090 @Override 091 public FedoraId getArchivalGroupId() { 092 return archivalGroupId; 093 } 094 095 /** 096 * @param archivalGroupId the archivalGroupId to set 097 */ 098 public void setArchivalGroupId(final FedoraId archivalGroupId) { 099 this.archivalGroupId = archivalGroupId; 100 } 101 102 @Override 103 public String getStateToken() { 104 return stateToken; 105 } 106 107 /** 108 * @param stateToken the stateToken to set 109 */ 110 public void setStateToken(final String stateToken) { 111 this.stateToken = stateToken; 112 } 113 114 @Override 115 public String getInteractionModel() { 116 return interactionModel; 117 } 118 119 /** 120 * @param interactionModel the interactionModel to set 121 */ 122 public void setInteractionModel(final String interactionModel) { 123 this.interactionModel = interactionModel; 124 } 125 126 @Override 127 public String getMimeType() { 128 return mimeType; 129 } 130 131 /** 132 * @param mimeType the mimeType to set 133 */ 134 public void setMimeType(final String mimeType) { 135 this.mimeType = mimeType; 136 } 137 138 @Override 139 public String getFilename() { 140 return filename; 141 } 142 143 /** 144 * @param filename the filename to set 145 */ 146 public void setFilename(final String filename) { 147 this.filename = filename; 148 } 149 150 @Override 151 public long getContentSize() { 152 return contentSize; 153 } 154 155 /** 156 * @param contentSize the contentSize to set 157 */ 158 public void setContentSize(final long contentSize) { 159 this.contentSize = contentSize; 160 } 161 162 @Override 163 public Collection<URI> getDigests() { 164 return digests; 165 } 166 167 /** 168 * @param digests the digests to set 169 */ 170 public void setDigests(final Collection<URI> digests) { 171 this.digests = digests; 172 } 173 174 @Override 175 public String getExternalHandling() { 176 return externalHandling; 177 } 178 179 /** 180 * @param externalHandling the externalHandling to set 181 */ 182 public void setExternalHandling(final String externalHandling) { 183 this.externalHandling = externalHandling; 184 } 185 186 @Override 187 public Instant getCreatedDate() { 188 return createdDate; 189 } 190 191 /** 192 * @param createdDate the createdDate to set 193 */ 194 public void setCreatedDate(final Instant createdDate) { 195 this.createdDate = createdDate; 196 } 197 198 @Override 199 public String getCreatedBy() { 200 return createdBy; 201 } 202 203 /** 204 * @param createdBy the createdBy to set 205 */ 206 public void setCreatedBy(final String createdBy) { 207 this.createdBy = createdBy; 208 } 209 210 @Override 211 public Instant getLastModifiedDate() { 212 return lastModifiedDate; 213 } 214 215 /** 216 * @param lastModifiedDate the lastModifiedDate to set 217 */ 218 public void setLastModifiedDate(final Instant lastModifiedDate) { 219 this.lastModifiedDate = lastModifiedDate; 220 } 221 222 @Override 223 public String getLastModifiedBy() { 224 return lastModifiedBy; 225 } 226 227 /** 228 * @param lastModifiedby the lastModifiedby to set 229 */ 230 public void setLastModifiedBy(final String lastModifiedby) { 231 this.lastModifiedBy = lastModifiedby; 232 } 233 234 @Override 235 public Instant getMementoCreatedDate() { 236 return mementoCreatedDate; 237 } 238 239 /** 240 * @param mementoCreatedDate the mementoCreateDate to set 241 */ 242 public void setMementoCreatedDate(final Instant mementoCreatedDate) { 243 this.mementoCreatedDate = mementoCreatedDate; 244 } 245 246 /** 247 * @param externalUrl the externalUrl to set 248 */ 249 public void setExternalUrl(final String externalUrl) { 250 this.externalUrl = externalUrl; 251 } 252 253 @Override 254 public String getExternalUrl() { 255 return externalUrl; 256 } 257 258 /** 259 * 260 * @param flag boolean flag 261 */ 262 public void setArchivalGroup(final boolean flag) { 263 this.archivalGroup = flag; 264 } 265 266 @Override 267 public boolean isArchivalGroup() { 268 return archivalGroup; 269 } 270 271 /** 272 * @param flag boolean flag 273 */ 274 public void setObjectRoot(final boolean flag) { 275 this.objectRoot = flag; 276 } 277 278 @Override 279 public boolean isObjectRoot() { 280 if (isArchivalGroup()) { 281 return true; 282 } else { 283 return objectRoot; 284 } 285 } 286 287 /** 288 * Set deleted status flag. 289 * @param deleted true if deleted (a tombstone). 290 */ 291 public void setDeleted(final boolean deleted) { 292 this.deleted = deleted; 293 } 294 295 /** 296 * {@inheritDoc} 297 */ 298 @Override 299 public boolean isDeleted() { 300 return deleted; 301 } 302 303 /** 304 * {@inheritDoc} 305 */ 306 @Override 307 public String getContentPath() { 308 return contentPath; 309 } 310 311 /** 312 * Sets the path to the content file associated with the header file 313 * 314 * @param contentPath path to content file 315 */ 316 public void setContentPath(final String contentPath) { 317 this.contentPath = contentPath; 318 } 319 320 @Override 321 public String getHeadersVersion() { 322 return headersVersion; 323 } 324 325 /** 326 * @param headersVersion the headers version 327 */ 328 public void setHeadersVersion(final String headersVersion) { 329 this.headersVersion = headersVersion; 330 } 331 332 @Override 333 public String getStorageRelativePath() { 334 return storageRelativePath; 335 } 336 337 /** 338 * @param storageRelativePath the storage relative path 339 */ 340 public void setStorageRelativePath(final String storageRelativePath) { 341 this.storageRelativePath = storageRelativePath; 342 } 343 344 @Override 345 public String toString() { 346 return "ResourceHeadersImpl{" + 347 "id=" + id + 348 ", parent=" + parent + 349 ", archivalGroupId=" + archivalGroupId + 350 ", stateToken='" + stateToken + '\'' + 351 ", interactionModel='" + interactionModel + '\'' + 352 ", mimeType='" + mimeType + '\'' + 353 ", filename='" + filename + '\'' + 354 ", contentSize=" + contentSize + 355 ", digests=" + digests + 356 ", externalUrl='" + externalUrl + '\'' + 357 ", externalHandling='" + externalHandling + '\'' + 358 ", createdDate=" + createdDate + 359 ", createdBy='" + createdBy + '\'' + 360 ", lastModifiedDate=" + lastModifiedDate + 361 ", lastModifiedBy='" + lastModifiedBy + '\'' + 362 ", mementoCreatedDate=" + mementoCreatedDate + 363 ", archivalGroup=" + archivalGroup + 364 ", objectRoot=" + objectRoot + 365 ", deleted=" + deleted + 366 ", contentPath='" + contentPath + '\'' + 367 ", headersVersion='" + headersVersion + '\'' + 368 '}'; 369 } 370 371}