Represents an Azure Sql Database Import/Export request
        /// <summary>
        /// Creates a new import request
        /// </summary>
        /// <param name="entity">Import Request Model</param>
        /// <returns>Import Request Response</returns>
        protected override AzureSqlDatabaseImportExportBaseModel PersistChanges(AzureSqlDatabaseImportExportBaseModel entity)
        {
            AzureSqlDatabaseImportModel importModel = entity as AzureSqlDatabaseImportModel;
            if (importModel == null)
            {
                throw new ArgumentNullException("importModel");
            }
            return ModelAdapter.Import(importModel);

        }
 /// <summary>
 /// Updates the given model element with the cmdlet specific operation 
 /// </summary>
 /// <param name="model">A model object</param>
 protected override AzureSqlDatabaseImportExportBaseModel ApplyUserInputToModel(AzureSqlDatabaseImportExportBaseModel model)
 {
     AzureSqlDatabaseImportExportBaseModel exportRequest = new AzureSqlDatabaseImportExportBaseModel()
     {
         ResourceGroupName = ResourceGroupName,
         AdministratorLogin = AdministratorLogin,
         AdministratorLoginPassword = AdministratorLoginPassword,
         AuthenticationType = AuthenticationType,
         DatabaseName = DatabaseName,
         ServerName = ServerName,
         StorageKey = StorageKey,
         StorageKeyType = StorageKeyType,
         StorageUri = StorageUri
     };
     return exportRequest;
 }
        /// <summary>
        /// Creates a new export request
        /// </summary>
        /// <param name="exportRequest">Export request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExportBaseModel exportRequest)
        {
            ExportRequestParameters parameters = new ExportRequestParameters()
            {
                AdministratorLogin = exportRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(exportRequest.AdministratorLoginPassword),
                StorageKey = exportRequest.StorageKey,
                StorageKeyType = exportRequest.StorageKeyType.ToString(),
                StorageUri = exportRequest.StorageUri
            };

            if (exportRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = exportRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            ImportExportResponse response = Communicator.Export(exportRequest.ResourceGroupName, exportRequest.ServerName,
                exportRequest.DatabaseName, parameters, Util.GenerateTracingId());
            return CreateImportExportResponse(response, exportRequest);
        }
 /// <summary>
 /// Creates the response model given server response
 /// </summary>
 /// <param name="response">Server Response</param>
 /// <returns>Response Model</returns>
 private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportResponse response, AzureSqlDatabaseImportExportBaseModel originalModel)
 {
     AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy();
     model.OperationStatusLink = response.OperationStatusLink;
     model.Status = response.Status.ToString();
     model.ErrorMessage = response.Error == null ? "" : response.Error.Message;
     return model;
 }
 /// <summary>
 /// Creates a new export request
 /// </summary>
 /// <param name="entity">Import Request Model</param>
 /// <returns>Import Request Response</returns>
 protected override AzureSqlDatabaseImportExportBaseModel PersistChanges(AzureSqlDatabaseImportExportBaseModel entity)
 {
     return ModelAdapter.Export(entity);
 }