/**
* 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.ResourceId;
import com.microsoft.azure.management.resources.fluentcore.arm.collection.implementation.ReadableWrappersImpl;
import com.microsoft.azure.management.resources.fluentcore.model.implementation.WrapperImpl;
import com.microsoft.azure.management.resources.fluentcore.utils.PagedListConverter;
import com.microsoft.azure.management.sql.TransparentDataEncryption;
import com.microsoft.azure.management.sql.TransparentDataEncryptionActivity;
import com.microsoft.azure.management.sql.TransparentDataEncryptionStates;
import java.util.List;
/**
* Implementation for TransparentDataEncryption.
*/
@LangDefinition
class TransparentDataEncryptionImpl
extends WrapperImpl<TransparentDataEncryptionInner>
implements TransparentDataEncryption {
private final ResourceId resourceId;
private final DatabasesInner databasesInner;
protected TransparentDataEncryptionImpl(TransparentDataEncryptionInner innerObject, DatabasesInner databasesInner) {
super(innerObject);
this.resourceId = ResourceId.fromString(this.inner().id());
this.databasesInner = databasesInner;
}
@Override
public String name() {
return this.resourceId.name();
}
@Override
public String id() {
return this.resourceId.id();
}
@Override
public String resourceGroupName() {
return this.resourceId.resourceGroupName();
}
@Override
public String sqlServerName() {
return resourceId.parent().parent().name();
}
@Override
public String databaseName() {
return resourceId.parent().name();
}
@Override
public TransparentDataEncryptionStates status() {
return this.inner().status();
}
@Override
public TransparentDataEncryption updateStatus(TransparentDataEncryptionStates transparentDataEncryptionState) {
this.inner().withStatus(transparentDataEncryptionState);
this.setInner(this.databasesInner.createOrUpdateTransparentDataEncryptionConfiguration(
this.resourceGroupName(),
this.sqlServerName(),
this.databaseName(),
this.inner().status()));
return this;
}
@Override
public List<TransparentDataEncryptionActivity> listActivities() {
PagedListConverter<TransparentDataEncryptionActivityInner, TransparentDataEncryptionActivity> converter
= new PagedListConverter<TransparentDataEncryptionActivityInner, TransparentDataEncryptionActivity>() {
@Override
public TransparentDataEncryptionActivity typeConvert(TransparentDataEncryptionActivityInner transparentDataEncryptionActivityInner) {
return new TransparentDataEncryptionActivityImpl(transparentDataEncryptionActivityInner);
}
};
return converter.convert(ReadableWrappersImpl.convertToPagedList(
this.databasesInner.listTransparentDataEncryptionActivity(
this.resourceGroupName(),
this.sqlServerName(),
this.databaseName())));
}
}