/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.model;
import java.util.List;
import java.util.Map.Entry;
import org.rf.ide.core.testdata.model.table.VariableTable;
import org.rf.ide.core.testdata.model.table.variables.AVariable;
import org.rf.ide.core.testdata.model.table.variables.AVariable.VariableType;
import com.google.common.collect.Lists;
public class RobotVariablesSection extends RobotSuiteFileSection {
public static final String SECTION_NAME = "Variables";
RobotVariablesSection(final RobotSuiteFile parent, final VariableTable variableTable) {
super(parent, SECTION_NAME, variableTable);
}
@Override
public void link() {
for (final AVariable variableHolder : getLinkedElement().getVariables()) {
final RobotVariable variable = new RobotVariable(this, variableHolder);
elements.add(variable);
}
}
@Override
public VariableTable getLinkedElement() {
return (VariableTable) super.getLinkedElement();
}
@SuppressWarnings("unchecked")
@Override
public List<RobotVariable> getChildren() {
return (List<RobotVariable>) super.getChildren();
}
public RobotVariable createVariable(final VariableType variableType, final String name) {
return createVariable(getChildren().size(), variableType, name);
}
public RobotVariable createVariable(final int index, final VariableType variableType, final String name) {
AVariable var;
if (variableType == VariableType.SCALAR) {
var = getLinkedElement().createScalarVariable(index, name, Lists.<String> newArrayList());
} else if (variableType == VariableType.LIST) {
var = getLinkedElement().createListVariable(index, name, Lists.<String> newArrayList());
} else if (variableType == VariableType.DICTIONARY) {
var = getLinkedElement().createDictionaryVariable(index, name,
Lists.<Entry<String, String>> newArrayList());
} else {
throw new IllegalArgumentException("Unable to create variable of type " + variableType.name());
}
final RobotVariable robotVariable = new RobotVariable(this, var);
elements.add(index, robotVariable);
return robotVariable;
}
public void addVariable(final RobotVariable variable) {
addVariable(elements.size(), variable);
}
public void addVariable(final int index, final RobotVariable variable) {
variable.setParent(this);
elements.add(index, variable);
getLinkedElement().addVariable(index, variable.getLinkedElement());
}
}