Package com.cosmicpush.app.system

Source Code of com.cosmicpush.app.system.CpCouchServer

package com.cosmicpush.app.system;

import com.cosmicpush.app.domain.accounts.Account;
import com.cosmicpush.app.domain.accounts.AccountStore;
import com.cosmicpush.app.domain.accounts.actions.CreateAccountAction;
import com.couchace.core.api.CouchDatabase;
import com.couchace.core.api.CouchSetup;
import com.couchace.jersey.JerseyCouchHttpClient;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import org.crazyyak.dev.common.exceptions.ExceptionUtils;
import org.crazyyak.dev.common.id.TimeUuidIdGenerator;
import org.crazyyak.dev.couchace.DefaultCouchServer;
import org.crazyyak.dev.couchace.YakJacksonCouchJsonStrategy;
import org.crazyyak.dev.couchace.support.CouchUtils;
import org.crazyyak.dev.jackson.YakJacksonModule;
import org.joda.time.DateTimeZone;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@Component
public class CpCouchServer extends DefaultCouchServer {

  private final String databaseName;

  private static final List<String> designNames = Arrays.asList("account", "api-request");
  private static final String prefix = "/push-server/design-docs/";
  private static final String suffix = "-design.json";

  @Autowired
  public CpCouchServer(@Value("${couchdb.name}") String databaseName) {
    super(new Module[]{
      new JodaModule(),
      new YakJacksonModule(),
      new CpJacksonModule()});

    this.databaseName = ExceptionUtils.assertNotZeroLength(databaseName, "databaseName");
  }

  public String getDatabaseName() {
    return databaseName;
  }

  public CouchDatabase database() {
    return super.database(databaseName);
  }

  @PostConstruct
  public void validateDatabases() throws IOException {
    CouchDatabase database = database();
    CouchUtils.createDatabase(database, new TimeUuidIdGenerator(), "/push-server/json/account.json");
    CouchUtils.validateDesign(database, designNames, prefix, suffix);
  }
}
TOP

Related Classes of com.cosmicpush.app.system.CpCouchServer

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.