package co.smartreceipts.android.sync.model.impl;
import android.os.Parcel;
import android.support.annotation.NonNull;
import com.google.common.base.Preconditions;
import java.util.Date;
import co.smartreceipts.android.sync.model.RemoteBackupMetadata;
public class DefaultRemoteBackupMetadata implements RemoteBackupMetadata {
private final Identifier mIdentifier;
private final Identifier mSyncDeviceIdentifier;
private final String mSyncDeviceName;
private final Date mLastModifiedDate;
public DefaultRemoteBackupMetadata(@NonNull Identifier identifier, @NonNull Identifier syncDeviceIdentifier, @NonNull String syncDeviceName,
@NonNull Date lastModifiedDate) {
mIdentifier = Preconditions.checkNotNull(identifier);
mSyncDeviceIdentifier = Preconditions.checkNotNull(syncDeviceIdentifier);
mSyncDeviceName = Preconditions.checkNotNull(syncDeviceName);
mLastModifiedDate = Preconditions.checkNotNull(lastModifiedDate);
}
@NonNull
@Override
public Identifier getId() {
return mIdentifier;
}
@NonNull
@Override
public Identifier getSyncDeviceId() {
return mSyncDeviceIdentifier;
}
@NonNull
@Override
public String getSyncDeviceName() {
return mSyncDeviceName;
}
@NonNull
@Override
public Date getLastModifiedDate() {
return mLastModifiedDate;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof DefaultRemoteBackupMetadata)) return false;
DefaultRemoteBackupMetadata that = (DefaultRemoteBackupMetadata) o;
if (!mIdentifier.equals(that.mIdentifier)) return false;
if (!mSyncDeviceIdentifier.equals(that.mSyncDeviceIdentifier)) return false;
if (!mSyncDeviceName.equals(that.mSyncDeviceName)) return false;
return mLastModifiedDate.equals(that.mLastModifiedDate);
}
@Override
public int hashCode() {
int result = mIdentifier.hashCode();
result = 31 * result + mSyncDeviceIdentifier.hashCode();
result = 31 * result + mSyncDeviceName.hashCode();
result = 31 * result + mLastModifiedDate.hashCode();
return result;
}
@Override
public String toString() {
return "DefaultRemoteBackupMetadata{" +
"mIdentifier=" + mIdentifier +
", mSyncDeviceIdentifier=" + mSyncDeviceIdentifier +
", mSyncDeviceName='" + mSyncDeviceName + '\'' +
", mLastModifiedDate=" + mLastModifiedDate +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.mIdentifier, flags);
dest.writeParcelable(this.mSyncDeviceIdentifier, flags);
dest.writeString(this.mSyncDeviceName);
dest.writeLong(this.mLastModifiedDate.getTime());
}
public static final Creator<DefaultRemoteBackupMetadata> CREATOR = new Creator<DefaultRemoteBackupMetadata>() {
@Override
public DefaultRemoteBackupMetadata createFromParcel(@NonNull Parcel in) {
return new DefaultRemoteBackupMetadata((Identifier) in.readParcelable(Identifier.class.getClassLoader()),
(Identifier) in.readParcelable(Identifier.class.getClassLoader()), in.readString(), new Date(in.readLong()));
}
@Override
public DefaultRemoteBackupMetadata[] newArray(int size) {
return new DefaultRemoteBackupMetadata[size];
}
};
}