com.azure.resourcemanager.sql.implementation.SqlDatabaseImportRequestImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-resourcemanager-sql Show documentation
Show all versions of azure-resourcemanager-sql Show documentation
This package contains Microsoft Azure Sql Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt
The newest version!
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.resourcemanager.sql.implementation;
import com.azure.resourcemanager.resources.fluentcore.dag.FunctionalTaskItem;
import com.azure.resourcemanager.resources.fluentcore.model.Indexable;
import com.azure.resourcemanager.resources.fluentcore.model.implementation.ExecutableImpl;
import com.azure.resourcemanager.sql.SqlServerManager;
import com.azure.resourcemanager.sql.models.AuthenticationType;
import com.azure.resourcemanager.sql.models.ImportExistingDatabaseDefinition;
import com.azure.resourcemanager.sql.models.SqlDatabase;
import com.azure.resourcemanager.sql.models.SqlDatabaseImportExportResponse;
import com.azure.resourcemanager.sql.models.SqlDatabaseImportRequest;
import com.azure.resourcemanager.sql.models.StorageKeyType;
import com.azure.resourcemanager.storage.models.StorageAccount;
import reactor.core.publisher.Mono;
import java.util.Objects;
/** Implementation for SqlDatabaseImportRequest. */
public class SqlDatabaseImportRequestImpl extends ExecutableImpl
implements SqlDatabaseImportRequest, SqlDatabaseImportRequest.SqlDatabaseImportRequestDefinition {
private final SqlDatabaseImpl sqlDatabase;
private final SqlServerManager sqlServerManager;
private ImportExistingDatabaseDefinition inner;
SqlDatabaseImportRequestImpl(SqlDatabaseImpl sqlDatabase, SqlServerManager sqlServerManager) {
this.sqlDatabase = sqlDatabase;
this.sqlServerManager = sqlServerManager;
this.inner = new ImportExistingDatabaseDefinition();
}
@Override
public SqlDatabase parent() {
return null;
}
@Override
public ImportExistingDatabaseDefinition innerModel() {
return this.inner;
}
@Override
public Mono executeWorkAsync() {
final SqlDatabaseImportRequestImpl self = this;
return this
.sqlServerManager
.serviceClient()
.getDatabases()
.importMethodAsync(
this.sqlDatabase.resourceGroupName,
this.sqlDatabase.sqlServerName,
this.sqlDatabase.name(),
this.innerModel())
.flatMap(
importExportResponseInner ->
self
.sqlDatabase
.refreshAsync()
.map(sqlDatabase -> new SqlDatabaseImportExportResponseImpl(importExportResponseInner)));
}
private Mono getOrCreateStorageAccountContainer(
final StorageAccount storageAccount,
final String containerName,
final String fileName,
final FunctionalTaskItem.Context context) {
final SqlDatabaseImportRequestImpl self = this;
return storageAccount
.getKeysAsync()
.flatMap(storageAccountKeys -> Mono.justOrEmpty(storageAccountKeys.stream().findFirst()))
.flatMap(
storageAccountKey -> {
self
.inner
.withStorageUri(
String
.format(
"%s%s/%s", storageAccount.endPoints().primary().blob(), containerName, fileName));
self.inner.withStorageKeyType(StorageKeyType.STORAGE_ACCESS_KEY);
self.inner.withStorageKey(storageAccountKey.value());
return context.voidMono();
});
}
@Override
public SqlDatabaseImportRequestImpl importFrom(String storageUri) {
if (this.inner == null) {
this.inner = new ImportExistingDatabaseDefinition();
}
this.inner.withStorageUri(storageUri);
return this;
}
@Override
public SqlDatabaseImportRequestImpl importFrom(
final StorageAccount storageAccount, final String containerName, final String fileName) {
Objects.requireNonNull(storageAccount);
Objects.requireNonNull(containerName);
Objects.requireNonNull(fileName);
if (this.inner == null) {
this.inner = new ImportExistingDatabaseDefinition();
}
this
.addDependency(
context -> getOrCreateStorageAccountContainer(storageAccount, containerName, fileName, context));
return this;
}
@Override
public SqlDatabaseImportRequestImpl withStorageAccessKey(String storageAccessKey) {
this.inner.withStorageKeyType(StorageKeyType.STORAGE_ACCESS_KEY);
this.inner.withStorageKey(storageAccessKey);
return this;
}
@Override
public SqlDatabaseImportRequestImpl withSharedAccessKey(String sharedAccessKey) {
this.inner.withStorageKeyType(StorageKeyType.SHARED_ACCESS_KEY);
this.inner.withStorageKey(sharedAccessKey);
return this;
}
@Override
public SqlDatabaseImportRequestImpl withSqlAdministratorLoginAndPassword(
String administratorLogin, String administratorPassword) {
this.inner.withAuthenticationType(AuthenticationType.SQL.toString());
return this.withLoginAndPassword(administratorLogin, administratorPassword);
}
@Override
public SqlDatabaseImportRequestImpl withActiveDirectoryLoginAndPassword(
String administratorLogin, String administratorPassword) {
this.inner.withAuthenticationType(AuthenticationType.ADPASSWORD.toString());
return this.withLoginAndPassword(administratorLogin, administratorPassword);
}
SqlDatabaseImportRequestImpl withLoginAndPassword(String administratorLogin, String administratorPassword) {
this.inner.withAdministratorLogin(administratorLogin);
this.inner.withAdministratorLoginPassword(administratorPassword);
return this;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy