Package org.platformlayer.ops.postgres

Source Code of org.platformlayer.ops.postgres.DatabaseConnection

package org.platformlayer.ops.postgres;

import javax.inject.Inject;

import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.core.model.Secret;
import org.platformlayer.ops.BindingScope;
import org.platformlayer.ops.CustomRecursor;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OperationRecursor;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.databases.DatabaseServer;
import org.platformlayer.ops.databases.DatabaseTarget;
import org.platformlayer.ops.helpers.InstanceHelpers;
import org.platformlayer.ops.helpers.ProviderHelper;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.tree.OpsTreeBase;

public class DatabaseConnection extends OpsTreeBase implements CustomRecursor {
  public static final int POSTGRES_PORT = 5432;

  public PlatformLayerKey serverKey;
  public String username;
  public Secret password;
  public String databaseName;

  @Inject
  PlatformLayerHelpers platformLayer;

  @Inject
  InstanceHelpers instanceHelpers;

  @Inject
  ProviderHelper providers;

  public static DatabaseConnection build(PlatformLayerKey serverKey) throws OpsException {
    if (serverKey == null) {
      throw new IllegalArgumentException("serverKey cannot be null");
    }
    DatabaseConnection db = injected(DatabaseConnection.class);
    db.serverKey = serverKey;
    return db;
  }

  @Handler
  public void handler() {
  }

  @Override
  public void doRecurseOperation() throws OpsException {
    ItemBase server = platformLayer.getItem(serverKey);

    DatabaseServer database = providers.toInterface(server, DatabaseServer.class);

    String username = this.username;
    if (username == null) {
      username = database.getRootUsername();
    }

    if (username.equals("postgres") && password == null) {
      password = database.getRootPassword();
    }

    DatabaseTarget dbTarget = database.buildDatabaseTarget(username, password, databaseName);
    BindingScope scope = BindingScope.push(dbTarget);
    try {
      OpsContext opsContext = OpsContext.get();
      OperationRecursor.doRecurseChildren(opsContext, this);
    } finally {
      scope.pop();
    }
  }

  @Override
  protected void addChildren() throws OpsException {

  }

}
TOP

Related Classes of org.platformlayer.ops.postgres.DatabaseConnection

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.