Package org.springframework.data.simpledb.core

Source Code of org.springframework.data.simpledb.core.SimpleDb

package org.springframework.data.simpledb.core;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.data.simpledb.core.domain.DomainManagementPolicy;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.simpledb.AmazonSimpleDB;
import com.amazonaws.services.simpledb.AmazonSimpleDBClient;

/**
* A configuration class to create and instance of {@link AmazonSimpleDB} from user credentials and to hold few extra
* configuration options: {@link DomainManagementPolicy},
* {@link org.springframework.data.simpledb.annotation.DomainPrefix}, consistentRead and dev
*/
public class SimpleDb implements InitializingBean {

  private AmazonSimpleDB simpleDbClient;

  private String accessID;
  private String secretKey;

  private DomainManagementPolicy domainManagementPolicy = DomainManagementPolicy.UPDATE;
  private boolean consistentRead = false;

  private int unavailableServiceRetries = 1;

  private String domainPrefix;

  private SimpleDbDomain simpleDbDomain = new SimpleDbDomain();

  public SimpleDb() {
    // for spring bean injection
  }

  public SimpleDb(String accessID, String secretKey) {
    // to be used in Java configuration when bean is not read from config
    this.accessID = accessID;
    this.secretKey = secretKey;
  }

  public AmazonSimpleDB getSimpleDbClient() {
    return simpleDbClient;
  }

  /**
   * Set the Amazon AWS access key ID
   *
   * @param accessID
   */
  public void setAccessID(String accessID) {
    this.accessID = accessID;
  }

  /**
   * Set the Amazon AWS secret key
   *
   * @param secretKey
   */
  public void setSecretKey(String secretKey) {
    this.secretKey = secretKey;
  }

  /**
   * Set the domain management policy. This can be one of:
   * <ul>
   * <li><b>DROP_CREATE</b>: The domain will be dropped if it exists and created again
   * <li><b>UPDATE</b>: The domain will be created if it does not exist, this is the default policy
   * <li><b>NONE</b>: No action taken, domain must be created by separate API call
   * </ul>
   *
   * @param domainManagementPolicy
   */
  public void setDomainManagementPolicy(DomainManagementPolicy domainManagementPolicy) {
    this.domainManagementPolicy = domainManagementPolicy;
  }

  public DomainManagementPolicy getDomainManagementPolicy() {
    return this.domainManagementPolicy;
  }

  public String getDomainPrefix() {
    return this.domainPrefix;
  }

  /**
   * Set the domain prefix. All domains created will be of format <tt>$domainPrefix.$domainName</tt>.<br/>
   * If not set, no domain prefix is used and the domain will be of format <tt>$domainName</tt>.
   *
   * @param domainPrefix
   */
  public void setDomainPrefix(String domainPrefix) {
    this.domainPrefix = domainPrefix;
  }

  public boolean isConsistentRead() {
    return consistentRead;
  }

  /**
   * Amazon SimpleDB uses an eventual consistency model by default. This means
   * a <i>create</i> or an <i>update</i> followed by an immediate <i>select</i>
   * may not reflect the changes. By setting a <tt>true</tt> value, this can
   * be avoided, however, this carries a performance penalty as every create and
   * update is followed by an implicit consistent select operation; defaults to
   * <b>false</b>.
   *
   * @param consistentRead
   */
  public void setConsistentRead(boolean consistentRead) {
    this.consistentRead = consistentRead;
  }

  public SimpleDbDomain getSimpleDbDomain() {
    return simpleDbDomain;
  }

  /**
   * Set the number of attempts to retry ALL SimpleDB operations in case of
   * service unavailability. Defaults to 1, which means, operations are NOT
   * retried by default.
   *
   * @param unavailableServiceRetries
   */
  public void setUnavailableServiceRetries(int unavailableServiceRetries) {
    this.unavailableServiceRetries = unavailableServiceRetries;
  }

  public int getUnavailableServiceRetries() {
    return unavailableServiceRetries;
  }

  @Override
  public final void afterPropertiesSet() {
    final AWSCredentials awsCredentials = new AWSCredentials() {

      @Override
      public String getAWSAccessKeyId() {
        return accessID;
      }

      @Override
      public String getAWSSecretKey() {
        return secretKey;
      }
    };

    this.simpleDbClient = new AmazonSimpleDBClient(awsCredentials);

    simpleDbDomain = new SimpleDbDomain(domainPrefix);
  }

  public String getDomain(Class<?> clazz) {
    return simpleDbDomain.getDomain(clazz);
  }

}
TOP

Related Classes of org.springframework.data.simpledb.core.SimpleDb

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.