/**
* 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.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.resources.fluentcore.arm.Region;
import com.microsoft.azure.management.resources.fluentcore.arm.models.IndependentChild;
import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.IndependentChildImpl;
import com.microsoft.azure.management.sql.SqlFirewallRule;
import com.microsoft.azure.management.sql.SqlServer;
import rx.Observable;
import rx.functions.Func1;
/**
* Implementation for SqlFirewallRule and its parent interfaces.
*/
@LangDefinition
class SqlFirewallRuleImpl
extends IndependentChildImpl<
SqlFirewallRule,
SqlServer,
ServerFirewallRuleInner,
SqlFirewallRuleImpl,
SqlServerManager>
implements SqlFirewallRule,
SqlFirewallRule.Definition,
SqlFirewallRule.Update,
IndependentChild.DefinitionStages.WithParentResource<SqlFirewallRule, SqlServer> {
private final ServersInner innerCollection;
protected SqlFirewallRuleImpl(String name,
ServerFirewallRuleInner innerObject,
ServersInner innerCollection,
SqlServerManager manager) {
super(name, innerObject, manager);
this.innerCollection = innerCollection;
}
@Override
public String sqlServerName() {
return this.parentName;
}
@Override
public String startIPAddress() {
return this.inner().startIpAddress();
}
@Override
public String endIPAddress() {
return this.inner().endIpAddress();
}
@Override
public String kind() {
return this.inner().kind();
}
@Override
public Region region() {
return Region.findByLabelOrName(this.inner().location());
}
@Override
public void delete() {
this.innerCollection.deleteFirewallRule(this.resourceGroupName(), this.sqlServerName(), this.name());
}
@Override
protected Observable<ServerFirewallRuleInner> getInnerAsync() {
return this.innerCollection.getFirewallRuleAsync(this.resourceGroupName(), this.sqlServerName(), this.name());
}
@Override
protected Observable<SqlFirewallRule> createChildResourceAsync() {
final SqlFirewallRule self = this;
return this.innerCollection.createOrUpdateFirewallRuleAsync(this.resourceGroupName(), this.sqlServerName(), this.name(), this.inner())
.map(new Func1<ServerFirewallRuleInner, SqlFirewallRule>() {
@Override
public SqlFirewallRule call(ServerFirewallRuleInner serverFirewallRuleInner) {
setInner(serverFirewallRuleInner);
return self;
}
});
}
@Override
public SqlFirewallRuleImpl withStartIPAddress(String startIPAddress) {
this.inner().withStartIpAddress(startIPAddress);
return this;
}
@Override
public SqlFirewallRuleImpl withEndIPAddress(String endIPAddress) {
this.inner().withEndIpAddress(endIPAddress);
return this;
}
@Override
public String id() {
if (this.inner() != null) {
return this.inner().id();
}
return null;
}
@Override
public SqlFirewallRuleImpl withIPAddressRange(String startIPAddress, String endIPAddress) {
this.withStartIPAddress(startIPAddress).withEndIPAddress(endIPAddress);
return this;
}
@Override
public SqlFirewallRuleImpl withIPAddress(String ipAddress) {
this.inner().withStartIpAddress(ipAddress).withEndIpAddress(ipAddress);
return this;
}
}