package org.thoughtcrime.securesms.attachments;

import android.net.Uri;
import android.support.annotation.NonNull;

import org.thoughtcrime.securesms.mms.PartAuthority;

public class DatabaseAttachment extends Attachment {

  private final AttachmentId attachmentId;
  private final long         mmsId;
  private final boolean      hasData;

  public DatabaseAttachment(AttachmentId attachmentId, long mmsId,  boolean hasData,
                            String contentType, int transferProgress, long size,
                            String location, String key, String relay)
  {
    super(contentType, transferProgress, size, location, key, relay);
    this.attachmentId = attachmentId;
    this.hasData      = hasData;
    this.mmsId        = mmsId;
  }

  @Override
  @NonNull
  public Uri getDataUri() {
    return PartAuthority.getAttachmentDataUri(attachmentId);
  }

  @Override
  @NonNull
  public Uri getThumbnailUri() {
    return PartAuthority.getAttachmentThumbnailUri(attachmentId);
  }

  public AttachmentId getAttachmentId() {
    return attachmentId;
  }

  @Override
  public boolean equals(Object other) {
    return other != null &&
           other instanceof DatabaseAttachment &&
           ((DatabaseAttachment) other).attachmentId.equals(this.attachmentId);
  }

  @Override
  public int hashCode() {
    return attachmentId.hashCode();
  }

  public long getMmsId() {
    return mmsId;
  }

  public boolean hasData() {
    return hasData;
  }
}
