blob: 0acb20c55b698164091793a036a70aa7ec65dac0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.glacier.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Date;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.collect.ComparisonChain;
import com.google.gson.annotations.SerializedName;
/**
* Defines the attributes needed to describe a vault.
*/
public class VaultMetadata implements Comparable<VaultMetadata> {
@SerializedName("VaultName")
private final String vaultName;
@SerializedName("VaultARN")
private final String vaultARN;
@SerializedName("CreationDate")
private final Date creationDate;
@SerializedName("LastInventoryDate")
private final Date lastInventoryDate;
@SerializedName("NumberOfArchives")
private final long numberOfArchives;
@SerializedName("SizeInBytes")
private final long sizeInBytes;
@ConstructorProperties({ "VaultName", "VaultARN", "CreationDate", "LastInventoryDate", "NumberOfArchives",
"SizeInBytes" })
public VaultMetadata(String vaultName, String vaultARN, Date creationDate, @Nullable Date lastInventoryDate,
long numberOfArchives, long sizeInBytes) {
this.vaultName = checkNotNull(vaultName, "vaultName");
this.vaultARN = checkNotNull(vaultARN, "vaultARN");
this.creationDate = (Date) checkNotNull(creationDate, "creationDate").clone();
this.lastInventoryDate = lastInventoryDate;
this.numberOfArchives = numberOfArchives;
this.sizeInBytes = sizeInBytes;
}
public String getVaultName() {
return vaultName;
}
public String getVaultARN() {
return vaultARN;
}
public Date getCreationDate() {
return (Date) creationDate.clone();
}
public Date getLastInventoryDate() {
return lastInventoryDate;
}
public long getNumberOfArchives() {
return numberOfArchives;
}
public long getSizeInBytes() {
return sizeInBytes;
}
@Override
public int hashCode() {
return Objects.hashCode(this.vaultName, this.vaultARN, this.creationDate, this.lastInventoryDate,
this.numberOfArchives, this.sizeInBytes);
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
VaultMetadata other = (VaultMetadata) obj;
return Objects.equal(this.vaultName, other.vaultName) && Objects.equal(this.vaultARN, other.vaultARN)
&& Objects.equal(this.creationDate, other.creationDate)
&& Objects.equal(this.lastInventoryDate, other.lastInventoryDate)
&& Objects.equal(this.numberOfArchives, other.numberOfArchives)
&& Objects.equal(this.sizeInBytes, other.sizeInBytes);
}
@Override
public String toString() {
return "VaultMetadata [vaultName=" + vaultName + ", vaultARN=" + vaultARN + ", creationDate=" + creationDate
+ ", lastInventoryDate=" + lastInventoryDate + ", numberOfArchives=" + numberOfArchives + ", sizeInBytes="
+ sizeInBytes + "]";
}
@Override
public int compareTo(VaultMetadata o) {
return ComparisonChain.start().compare(this.vaultName, o.getVaultName()).result();
}
}