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 @Override 065 public FedoraId getId() { 066 return id; 067 } 068 069 /** 070 * @param id the fedora id to set 071 */ 072 public void setId(final FedoraId id) { 073 this.id = id; 074 } 075 076 @Override 077 public FedoraId getParent() { 078 return parent; 079 } 080 081 /** 082 * @param parent the parent to set 083 */ 084 public void setParent(final FedoraId parent) { 085 this.parent = parent; 086 } 087 088 @Override 089 public FedoraId getArchivalGroupId() { 090 return archivalGroupId; 091 } 092 093 /** 094 * @param archivalGroupId the archivalGroupId to set 095 */ 096 public void setArchivalGroupId(final FedoraId archivalGroupId) { 097 this.archivalGroupId = archivalGroupId; 098 } 099 100 @Override 101 public String getStateToken() { 102 return stateToken; 103 } 104 105 /** 106 * @param stateToken the stateToken to set 107 */ 108 public void setStateToken(final String stateToken) { 109 this.stateToken = stateToken; 110 } 111 112 @Override 113 public String getInteractionModel() { 114 return interactionModel; 115 } 116 117 /** 118 * @param interactionModel the interactionModel to set 119 */ 120 public void setInteractionModel(final String interactionModel) { 121 this.interactionModel = interactionModel; 122 } 123 124 @Override 125 public String getMimeType() { 126 return mimeType; 127 } 128 129 /** 130 * @param mimeType the mimeType to set 131 */ 132 public void setMimeType(final String mimeType) { 133 this.mimeType = mimeType; 134 } 135 136 @Override 137 public String getFilename() { 138 return filename; 139 } 140 141 /** 142 * @param filename the filename to set 143 */ 144 public void setFilename(final String filename) { 145 this.filename = filename; 146 } 147 148 @Override 149 public long getContentSize() { 150 return contentSize; 151 } 152 153 /** 154 * @param contentSize the contentSize to set 155 */ 156 public void setContentSize(final long contentSize) { 157 this.contentSize = contentSize; 158 } 159 160 @Override 161 public Collection<URI> getDigests() { 162 return digests; 163 } 164 165 /** 166 * @param digests the digests to set 167 */ 168 public void setDigests(final Collection<URI> digests) { 169 this.digests = digests; 170 } 171 172 @Override 173 public String getExternalHandling() { 174 return externalHandling; 175 } 176 177 /** 178 * @param externalHandling the externalHandling to set 179 */ 180 public void setExternalHandling(final String externalHandling) { 181 this.externalHandling = externalHandling; 182 } 183 184 @Override 185 public Instant getCreatedDate() { 186 return createdDate; 187 } 188 189 /** 190 * @param createdDate the createdDate to set 191 */ 192 public void setCreatedDate(final Instant createdDate) { 193 this.createdDate = createdDate; 194 } 195 196 @Override 197 public String getCreatedBy() { 198 return createdBy; 199 } 200 201 /** 202 * @param createdBy the createdBy to set 203 */ 204 public void setCreatedBy(final String createdBy) { 205 this.createdBy = createdBy; 206 } 207 208 @Override 209 public Instant getLastModifiedDate() { 210 return lastModifiedDate; 211 } 212 213 /** 214 * @param lastModifiedDate the lastModifiedDate to set 215 */ 216 public void setLastModifiedDate(final Instant lastModifiedDate) { 217 this.lastModifiedDate = lastModifiedDate; 218 } 219 220 @Override 221 public String getLastModifiedBy() { 222 return lastModifiedBy; 223 } 224 225 /** 226 * @param lastModifiedby the lastModifiedby to set 227 */ 228 public void setLastModifiedBy(final String lastModifiedby) { 229 this.lastModifiedBy = lastModifiedby; 230 } 231 232 @Override 233 public Instant getMementoCreatedDate() { 234 return mementoCreatedDate; 235 } 236 237 /** 238 * @param mementoCreatedDate the mementoCreateDate to set 239 */ 240 public void setMementoCreatedDate(final Instant mementoCreatedDate) { 241 this.mementoCreatedDate = mementoCreatedDate; 242 } 243 244 /** 245 * @param externalUrl the externalUrl to set 246 */ 247 public void setExternalUrl(final String externalUrl) { 248 this.externalUrl = externalUrl; 249 } 250 251 @Override 252 public String getExternalUrl() { 253 return externalUrl; 254 } 255 256 /** 257 * 258 * @param flag boolean flag 259 */ 260 public void setArchivalGroup(final boolean flag) { 261 this.archivalGroup = flag; 262 } 263 264 @Override 265 public boolean isArchivalGroup() { 266 return archivalGroup; 267 } 268 269 /** 270 * @param flag boolean flag 271 */ 272 public void setObjectRoot(final boolean flag) { 273 this.objectRoot = flag; 274 } 275 276 @Override 277 public boolean isObjectRoot() { 278 if (isArchivalGroup()) { 279 return true; 280 } else { 281 return objectRoot; 282 } 283 } 284 285 /** 286 * Set deleted status flag. 287 * @param deleted true if deleted (a tombstone). 288 */ 289 public void setDeleted(final boolean deleted) { 290 this.deleted = deleted; 291 } 292 293 /** 294 * {@inheritDoc} 295 */ 296 @Override 297 public boolean isDeleted() { 298 return deleted; 299 } 300 301 /** 302 * {@inheritDoc} 303 */ 304 @Override 305 public String getContentPath() { 306 return contentPath; 307 } 308 309 /** 310 * Sets the path to the content file associated with the header file 311 * 312 * @param contentPath path to content file 313 */ 314 public void setContentPath(final String contentPath) { 315 this.contentPath = contentPath; 316 } 317 318 @Override 319 public String getHeadersVersion() { 320 return headersVersion; 321 } 322 323 /** 324 * @param headersVersion the headers version 325 */ 326 public void setHeadersVersion(final String headersVersion) { 327 this.headersVersion = headersVersion; 328 } 329 330 @Override 331 public String toString() { 332 return "ResourceHeadersImpl{" + 333 "id=" + id + 334 ", parent=" + parent + 335 ", archivalGroupId=" + archivalGroupId + 336 ", stateToken='" + stateToken + '\'' + 337 ", interactionModel='" + interactionModel + '\'' + 338 ", mimeType='" + mimeType + '\'' + 339 ", filename='" + filename + '\'' + 340 ", contentSize=" + contentSize + 341 ", digests=" + digests + 342 ", externalUrl='" + externalUrl + '\'' + 343 ", externalHandling='" + externalHandling + '\'' + 344 ", createdDate=" + createdDate + 345 ", createdBy='" + createdBy + '\'' + 346 ", lastModifiedDate=" + lastModifiedDate + 347 ", lastModifiedBy='" + lastModifiedBy + '\'' + 348 ", mementoCreatedDate=" + mementoCreatedDate + 349 ", archivalGroup=" + archivalGroup + 350 ", objectRoot=" + objectRoot + 351 ", deleted=" + deleted + 352 ", contentPath='" + contentPath + '\'' + 353 ", headersVersion='" + headersVersion + '\'' + 354 '}'; 355 } 356 357}