/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.testdata.model.presenter.update.variables;
import java.util.List;
import org.rf.ide.core.testdata.model.presenter.update.IVariableTableElementOperation;
import org.rf.ide.core.testdata.model.table.variables.AVariable;
import org.rf.ide.core.testdata.model.table.variables.DictionaryVariable;
import org.rf.ide.core.testdata.model.table.variables.DictionaryVariable.DictionaryKeyValuePair;
import org.rf.ide.core.testdata.text.read.recognizer.RobotToken;
public class DictionaryVariableModelUpdater implements IVariableTableElementOperation<DictionaryKeyValuePair> {
@Override
public boolean ableToHandle(final AVariable dst) {
return (dst instanceof DictionaryVariable);
}
@Override
public List<DictionaryKeyValuePair> convert(final List<?> p) {
return VariablesValueConverter.convert(p, DictionaryKeyValuePair.class);
}
@Override
public void addOrSet(final AVariable dst, final int startIndexForModification,
final List<DictionaryKeyValuePair> toAdd) {
final DictionaryVariable var = (DictionaryVariable) dst;
final List<DictionaryKeyValuePair> items = var.getItems();
while (startIndexForModification > items.size()) {
var.put(new RobotToken(), new RobotToken(), new RobotToken());
}
int nrOfEntriesToModify = toAdd.size();
for (int i = 0; i < nrOfEntriesToModify; i++) {
DictionaryKeyValuePair dVPtoAdd = toAdd.get(i);
if (items.size() > startIndexForModification + i) {
DictionaryKeyValuePair dVP = var.getItems().get(startIndexForModification + i);
dVP.getRaw().setText(dVPtoAdd.getRaw().getText());
dVP.getKey().setText(dVPtoAdd.getKey().getText());
dVP.getValue().setText(dVPtoAdd.getValue().getText());
} else {
var.put(dVPtoAdd.getRaw(), dVPtoAdd.getKey(), dVPtoAdd.getValue());
}
}
}
}