---
schema_version: "1"
id: 2725d5061427cc22a656ac4cfb895bb38e9afaab8ef088249f14d026b1e9c9db
title: WaveTemplateConfigurationModifier Apex Examples
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/analytics/bi_dev_guide_wave_templates/guides/reference/bi-templatesdev-apex-class-examples.md
canonical_url: https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-apex-class-examples.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: e2b04c610bea1dcc7c4143a07cd5a2ae6756aef79724a17c87fa7e481d429dd1
products:
  - Analytics Templates Developer Guide
  - analytics
---

# WaveTemplateConfigurationModifier Apex Examples

Examples include setting computed values for questions, hiding a question, managing enum values, working with array type variables, and more.

## Example

**Create your class:**

```nolang
public class ExampleWaveTemplateConfigurationModifier
    extends wavetemplate.WaveTemplateConfigurationModifier
{
    public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
    {
        // Method implementation
    }
}
```

## Example

**Set the computed value for one of the questions:**

```nolang
public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
{
    Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();
    variables.get('Has_Product').setComputedValue('No');
}
```

## Example

**Hide one of the questions:**

```nolang
public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
{
    template.getUI().getPages().get(0).getVariables()
        .get('Has_Product').setVisibility(wavetemplate.VisibilityEnum.Hidden);
}

```

## Example

**Remove an enum value from the dropdown list box using the specified array index:**

```nolang
public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
{
    Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();
    wavetemplate.VariableDefinition hasProduct = variables.get('Has_Product');
    List<object> enums = hasProduct.getVariableType().getEnums();
    enums.remove(1);
    hasProduct.getVariableType().setEnums(enums);
}

```

## Example

**Populate the enum values in the dropdown list box (StringType variable):**

```nolang
public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
{
    Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();
    wavetemplate.VariableDefinition caseRecordTypes =
        variables.get('IncludeCaseRecordTypes');
    List<object> enums = caseRecordTypes.getVariableType().getEnums();
    RecordType [] results = [SELECT Name FROM RecordType where sobjectType = 'Case'];
    for (RecordType record : results){
        //adds the record type names to the drop down list
        enums.add((string)record.get('Name'));
    }
    caseRecordTypes.getVariableType().setEnums(enums);
}
```

## Example

**Given the following ArrayType variable:**

```nolang
"OpptyRecordType":
{
    "label": "Select OpptyRecordTypes that you want to bring in to Salesforce",
    "description": "Choose OpptyRecordTypes that you want to bring in to Salesforce.",
    "required": false,
    "variableType": {
        "type": "ArrayType",
        "itemsType": {
            "type": "StringType",
            "enums": ["Test", "Test2"]
        }
    }
}
```

**Add more values to the ArrayType variable enums:**

```nolang

    Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();
    wavetemplate.VariableDefinition enumsTest = variables.get('OpptyRecordType');
    List<object> enums = enumsTest.getVariableType().getItemsType().getEnums();
    //create an empty list if you want to overwrite the original enums.
    RecordType [] results = [SELECT Name FROM RecordType where sobjectType
        = 'Opportunity' AND IsActive = true];
    for ( RecordType record : results ) {
        enums.add((string)record.get('Name'));
    }
    enumsTest.getVariableType().getItemsType().setEnums(enums);

```

## Example

**Reduce the possible answers via the excludes:**

```nolang
public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)
{
    Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();
    wavetemplate.VariableDefinition hasProduct = variables.get('Has_Product');
    Set<string> excludes = new Set<string>();
    excludes.add('Foo');
    excludes.add('Bar');
    hasProduct.setExcludes(excludes);
}
```

## Example

**Set a variable answer before the app creates. Updating answers overwrites any value the user selected in the wizard:**

```nolang
public override void beforeAppCreate(wavetemplate.WaveTemplateInfo waveTemplate,
    wavetemplate.Answers answers)
{
    answers.put('Has_Product', 'No');
}
```

## Example

**Set a variable answer before the app updates. Updating answers overwrites any value the user selected in the wizard:**

```nolang
public override void beforeAppUpdate(wavetemplate.WaveTemplateInfo waveTemplate,
    String previousAppVersion, wavetemplate.Answers answers)
{
    answers.put('Has_Product', 'Yes');
}
```
