/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */ package com.microsoft.azure.management.sql.implementation; import com.microsoft.azure.PagedList; import com.microsoft.azure.management.apigeneration.LangDefinition; import com.microsoft.azure.management.resources.fluentcore.arm.Region; import com.microsoft.azure.management.resources.fluentcore.arm.collection.SupportsGettingByParent; import com.microsoft.azure.management.resources.fluentcore.arm.collection.SupportsListingByParent; import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.IndependentChildResourcesImpl; import com.microsoft.azure.management.sql.SqlElasticPool; import com.microsoft.azure.management.sql.SqlElasticPools; import com.microsoft.azure.management.sql.SqlServer; import rx.Completable; import rx.Observable; import rx.functions.Func1; import java.util.List; /** * Implementation for SQLElasticPools and its parent interfaces. */ @LangDefinition class SqlElasticPoolsImpl extends IndependentChildResourcesImpl< SqlElasticPool, SqlElasticPoolImpl, ElasticPoolInner, ElasticPoolsInner, SqlServerManager, SqlServer> implements SqlElasticPools.SqlElasticPoolsCreatable, SupportsGettingByParent<SqlElasticPool, SqlServer, SqlServerManager>, SupportsListingByParent<SqlElasticPool, SqlServer, SqlServerManager> { private final DatabasesImpl databasesImpl; protected SqlElasticPoolsImpl(SqlServerManager manager, DatabasesImpl databasesImpl) { super(manager.inner().elasticPools(), manager); this.databasesImpl = databasesImpl; } @Override protected SqlElasticPoolImpl wrapModel(String name) { ElasticPoolInner inner = new ElasticPoolInner(); return new SqlElasticPoolImpl( name, inner, this.databasesImpl, this.manager()); } @Override public Observable<SqlElasticPool> getByParentAsync(String resourceGroup, String parentName, String name) { return this.innerCollection.getAsync(resourceGroup, parentName, name).map(new Func1<ElasticPoolInner, SqlElasticPool>() { @Override public SqlElasticPool call(ElasticPoolInner elasticPoolInner) { return wrapModel(elasticPoolInner); } }); } @Override public PagedList<SqlElasticPool> listByParent(String resourceGroupName, String parentName) { return wrapList(this.innerCollection.listByServer(resourceGroupName, parentName)); } @Override protected SqlElasticPoolImpl wrapModel(ElasticPoolInner inner) { if (inner == null) { return null; } return new SqlElasticPoolImpl( inner.name(), inner, this.databasesImpl, this.manager()); } @Override public SqlElasticPool.DefinitionStages.Blank define(String name) { return wrapModel(name); } @Override public Completable deleteByParentAsync(String groupName, String parentName, String name) { return this.innerCollection.deleteAsync(groupName, parentName, name).toCompletable(); } @Override public SqlElasticPool getBySqlServer(String resourceGroup, String sqlServerName, String name) { return this.getByParent(resourceGroup, sqlServerName, name); } @Override public SqlElasticPool getBySqlServer(SqlServer sqlServer, String name) { return this.getByParent(sqlServer, name); } @Override public List<SqlElasticPool> listBySqlServer(String resourceGroupName, String sqlServerName) { return this.listByParent(resourceGroupName, sqlServerName); } @Override public List<SqlElasticPool> listBySqlServer(SqlServer sqlServer) { return this.listByParent(sqlServer); } @Override public SqlElasticPool.DefinitionStages.Blank definedWithSqlServer(String resourceGroupName, String sqlServerName, String elasticPoolName, Region region) { ElasticPoolInner inner = new ElasticPoolInner(); inner.withLocation(region.name()); return new SqlElasticPoolImpl( elasticPoolName, inner, this.databasesImpl, this.manager()).withExistingParentResource(resourceGroupName, sqlServerName); } }