/* * Copyright 2015 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.table.exec.descs.impl; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.rf.ide.core.testdata.model.RobotFileOutput.BuildMessage; import org.rf.ide.core.testdata.model.table.RobotExecutableRow; import org.rf.ide.core.testdata.model.table.exec.descs.IExecutableRowDescriptor; import org.rf.ide.core.testdata.model.table.exec.descs.RobotAction; import org.rf.ide.core.testdata.model.table.exec.descs.ast.mapping.IElementDeclaration; import org.rf.ide.core.testdata.model.table.exec.descs.ast.mapping.VariableDeclaration; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; public class SimpleRowDescriptor<T> implements IExecutableRowDescriptor<T> { private final List<VariableDeclaration> createdVariables = new ArrayList<>(); private RobotAction action = new RobotAction(new RobotToken(), new ArrayList<IElementDeclaration>()); private final List<VariableDeclaration> commentedVariables = new ArrayList<>(); private final List<VariableDeclaration> usedVariables = new ArrayList<>(); private final List<IElementDeclaration> textParameters = new ArrayList<>(); private final List<RobotToken> keywordArguments = new ArrayList<>(0); private final IRowType type = ERowType.UNKONWN; private final List<BuildMessage> messages = new ArrayList<>(); private final RobotExecutableRow<T> row; public SimpleRowDescriptor(final RobotExecutableRow<T> row) { this.row = row; } @Override public List<VariableDeclaration> getCreatedVariables() { return Collections.unmodifiableList(createdVariables); } public void addCreatedVariable(final VariableDeclaration variable) { this.createdVariables.add(variable); } @Override public RobotAction getAction() { return action; } public void setAction(final RobotAction action) { this.action = action; } public void moveCreatedVariablesToUsedVariables() { usedVariables.addAll(createdVariables); createdVariables.clear(); } @Override public List<VariableDeclaration> getUsedVariables() { return Collections.unmodifiableList(usedVariables); } public void addUsedVariable(final VariableDeclaration usedVar) { usedVariables.add(usedVar); } public void addUsedVariables(final List<VariableDeclaration> usedVars) { for (final VariableDeclaration usedVar : usedVars) { addUsedVariable(usedVar); } } @Override public List<VariableDeclaration> getCommentedVariables() { return Collections.unmodifiableList(commentedVariables); } public void addCommentedVariable(final VariableDeclaration variable) { this.commentedVariables.add(variable); } public void addCommentedVariables(final List<VariableDeclaration> commentedVars) { for (final VariableDeclaration var : commentedVars) { addCommentedVariable(var); } } @Override public List<IElementDeclaration> getTextParameters() { return Collections.unmodifiableList(textParameters); } public void addTextParameter(final IElementDeclaration text) { textParameters.add(text); } public void addTextParameters(final List<IElementDeclaration> texts) { for (final IElementDeclaration text : texts) { addTextParameter(text); } } @Override public List<RobotToken> getKeywordArguments() { return Collections.unmodifiableList(keywordArguments); } public void addKeywordArgument(final RobotToken argument) { keywordArguments.add(argument); } public void addKeywordArguments(final List<RobotToken> arguments) { for (final RobotToken keywordArgument : arguments) { addKeywordArgument(keywordArgument); } } @Override public List<BuildMessage> getMessages() { return Collections.unmodifiableList(messages); } public void addMessages(final List<BuildMessage> msgs) { for (final BuildMessage bm : msgs) { addMessage(bm); } } public void addMessage(final BuildMessage bm) { messages.add(bm); } @Override public IRowType getRowType() { IRowType correctType = type; if (correctType == ERowType.UNKONWN) { if (row.isExecutable()) { correctType = ERowType.SIMPLE; } else { correctType = ERowType.COMMENTED_HASH; } } return correctType; } @Override public RobotExecutableRow<T> getRow() { return row; } @Override public String toString() { return String.format( "SimpleRowDescriptor [createdVariables=%s, action=%s, rowType=%s, usedVariables=%s, textParameters=%s, messages=%s, row=%s]", createdVariables, action, type, usedVariables, textParameters, messages, row); } }