Package org.platformlayer.service.platformlayer.ops.backend.db

Source Code of org.platformlayer.service.platformlayer.ops.backend.db.PlatformLayerDatabaseController

package org.platformlayer.service.platformlayer.ops.backend.db;

import java.io.IOException;
import java.util.Map;

import javax.inject.Inject;

import org.platformlayer.InetAddressChooser;
import org.platformlayer.ResourceUtils;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.ops.Bound;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.databases.DatabaseServer;
import org.platformlayer.ops.helpers.ProviderHelper;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.postgres.CreateDatabase;
import org.platformlayer.ops.postgres.CreateUser;
import org.platformlayer.ops.postgres.DatabaseConnection;
import org.platformlayer.ops.postgres.RunScript;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.ops.uses.LinkConsumer;
import org.platformlayer.ops.uses.LinkTarget;
import org.platformlayer.service.platformlayer.model.PlatformLayerDatabase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PlatformLayerDatabaseController extends OpsTreeBase implements LinkTarget {

  private static final Logger log = LoggerFactory.getLogger(PlatformLayerDatabaseController.class);

  @Bound
  PlatformLayerDatabase model;

  @Inject
  PlatformLayerHelpers platformLayer;

  @Inject
  ProviderHelper providers;

  @Handler
  public void handler() {
  }

  @Override
  protected void addChildren() throws OpsException {
    DatabaseConnection dbConnection;
    {
      dbConnection = addChild(DatabaseConnection.build(model.server));

      dbConnection.databaseName = model.databaseName;
      // We need to run as superuser
      // dbConnection.username = template.getAuthDatabaseUsername();
      // dbConnection.password = template.getAuthDatabasePassword();
    }

    {
      CreateDatabase db = dbConnection.addChild(CreateDatabase.class);
      db.databaseName = model.databaseName;
    }

    {
      CreateUser db = dbConnection.addChild(CreateUser.class);
      db.grantDatabaseName = model.databaseName;
      db.databaseUser = model.username;
      db.databasePassword = model.password;
    }

    {
      RunScript script = dbConnection.addChild(RunScript.class);
      try {
        script.sql = ResourceUtils.get(getClass(), "schema.sql");
      } catch (IOException e) {
        throw new OpsException("Error loading SQL script resource", e);
      }
    }
  }

  @Override
  public Map<String, String> buildLinkTargetConfiguration(LinkConsumer consumer) throws OpsException {
    ItemBase serverItem = platformLayer.getItem(model.server);
    DatabaseServer databaseServer = providers.toInterface(serverItem, DatabaseServer.class);

    InetAddressChooser inetAddressChooser = consumer.getInetAddressChooser();

    return databaseServer.buildTargetConfiguration(model.username, model.password, model.databaseName,
        inetAddressChooser);
  }

  @Override
  public PlatformLayerKey getCaForClientKey() {
    return null;
  }
}
TOP

Related Classes of org.platformlayer.service.platformlayer.ops.backend.db.PlatformLayerDatabaseController

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.