class AzureStorageAccountTemplateBuilder {

    public String build(StorageAccountParameters storageAccountParameters) {
        try {
            Map<String, Object> model = new HashMap<>();
            model.put("storageAccountName", storageAccountParameters.getStorageAccountName());
            model.put("location", storageAccountParameters.getStorageLocation());
            model.put("skuName", storageAccountParameters.getStorageAccountSkuType().name().toString());
            model.put("encrypted", storageAccountParameters.getEncrypted());
            model.put("userDefinedTags", storageAccountParameters.getTags());
            String generatedTemplate = freeMarkerTemplateUtils.processTemplateIntoString(azureStorageAccoutTemplateProviderService.getTemplate(), model);
            LOGGER.info("Generated storage account Arm template: {}", generatedTemplate);
            return generatedTemplate;
        } catch (IOException | TemplateException e) {
            throw new CloudConnectorException("Failed to process the storage account ARM Template", e);
        }
    }

}