All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cosmicpush.common.clients.Domain Maven / Gradle / Ivy

/*
 * Copyright (c) 2014 Jacob D. Parr
 *
 * This software may not be used without permission.
 */

package com.cosmicpush.common.clients;

import com.cosmicpush.common.accounts.DomainStore;
import com.cosmicpush.common.actions.CreateDomainAction;
import com.cosmicpush.common.actions.UpdateDomainAction;
import com.cosmicpush.pub.internal.CpIdGenerator;
import com.cosmicpush.pub.internal.RequestErrors;
import com.couchace.annotations.CouchEntity;
import com.couchace.annotations.CouchId;
import com.couchace.annotations.CouchRevision;
import com.fasterxml.jackson.annotation.JacksonInject;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;

@CouchEntity(DomainStore.DOMAIN_DESIGN_NAME)
public class Domain {

  private String domainId;
  private String revision;

  private String domainKey;
  private String domainPassword;

  private int retentionDays;

  private final List accountIds = new ArrayList<>();

  @JsonCreator
  public Domain(@JacksonInject("domainId") String domainId,
                @JacksonInject("revision") String revision,
                @JsonProperty("domainKey") String domainKey,
                @JsonProperty("domainPassword") String domainPassword,
                @JsonProperty("retentionDays") int retentionDays,
                @JsonProperty("accountIds") List accountIds) {

    this.domainId = domainId;
    this.revision = revision;

    this.domainKey = domainKey;
    this.domainPassword = domainPassword;

    this.retentionDays = retentionDays;

    if (accountIds != null) {
      this.accountIds.addAll(accountIds);
    }
  }

  public Domain (CreateDomainAction action) {
    action.validate(new RequestErrors()).assertNoErrors();

    this.retentionDays = 7;
    this.domainId = CpIdGenerator.newId();
    this.accountIds.add(action.getAccountId());
    this.domainKey = action.getDomainKey();
    this.domainPassword = action.getDomainPassword();
  }

  @CouchId
  public String getDomainId() {
    return domainId;
  }

  @CouchRevision
  public String getRevision() {
    return revision;
  }

  public int getRetentionDays() {
    return retentionDays;
  }

  public List getAccountIds() {
    return accountIds;
  }

  public String getDomainKey() {
    return domainKey;
  }

  public String getDomainPassword() {
    return domainPassword;
  }

  public void apply(UpdateDomainAction action) {
    action.validate(new RequestErrors()).assertNoErrors();

    this.domainKey = action.getDomainKey();
    this.domainPassword = action.getDomainPassword();
    this.retentionDays = action.getRetentionDays();
  }

  public boolean equals(Object object) {
    if (object instanceof Domain) {
      Domain that = (Domain)object;
      return this.domainId.equals(that.domainId);
    }
    return false;
  }

  public String toString() {
    return domainKey;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy