public function getById($id) { $cluster = new Cluster($id); $filename = $this->basepath . $id . '.json'; if (!file_exists($filename)) { throw new RuntimeException("Cluster config jsonfile not found: " . $filename); } $json = file_get_contents($filename); $data = json_decode($json, true); $cluster->setComment($data['comment']); foreach ($data['servers'] as $serverdata) { $serverid = $serverdata['id']; $server = new Server($serverid); $server->setAddress($serverdata['address']); $server->setPort($serverdata['port']); $cluster->addServer($server); } foreach ($data['accounts'] as $accountdata) { $accountid = $accountdata['id']; $account = new Account($accountid); $account->setUsername($accountdata['username']); $account->setPassword($accountdata['password']); $cluster->addAccount($account); } foreach ($data['connections'] as $connectiondata) { $connectionid = $connectiondata['id']; $connection = new Connection($connectionid); $server = $cluster->getServerById($connectiondata['server']); $connection->setServer($server); $account = $cluster->getAccountById($connectiondata['account']); $connection->setAccount($account); $cluster->addConnection($connection); } return $cluster; }
protected function getByArray($id, $data) { $database = new Database($id); if (isset($data['cluster'])) { $cluster = $this->clusterrepository->getById($data['cluster']); $database->setCluster($cluster); } else { $connection = new Connection('local'); if (isset($data['username'])) { $account = new Account('local'); $account->setUsername($data['username']); if (isset($data['password'])) { $account->setPassword($data['password']); } $connection->setAccount($account); } if (isset($data['server'])) { $server = new Server('local'); $server->setAddress($data['server']); if (isset($data['port'])) { $server->setPort($data['port']); } $connection->setServer($server); } $database->addConnection($connection); } return $database; }