/* * 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.table.keywords; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.rf.ide.core.testdata.model.AModelElement; import org.rf.ide.core.testdata.model.FilePosition; import org.rf.ide.core.testdata.model.ICommentHolder; import org.rf.ide.core.testdata.model.ModelType; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; import org.rf.ide.core.testdata.text.read.recognizer.RobotTokenType; public class KeywordUnknownSettings extends AModelElement<UserKeyword> implements ICommentHolder, Serializable { private static final long serialVersionUID = 2770331045137517832L; private final RobotToken declaration; private final List<RobotToken> arguments = new ArrayList<>(0); private final List<RobotToken> comment = new ArrayList<>(); public KeywordUnknownSettings(final RobotToken declaration) { this.declaration = declaration; fixForTheType(declaration, RobotTokenType.KEYWORD_SETTING_UNKNOWN_DECLARATION); } public void addArgument(final String argument) { addArgument(arguments.size(), argument); } public void addArgument(final int index, final String argument) { updateOrCreateTokenInside(arguments, index, argument, RobotTokenType.KEYWORD_SETTING_UNKNOWN_ARGUMENTS); } public void addArgument(final RobotToken arg) { fixForTheType(arg, RobotTokenType.KEYWORD_SETTING_UNKNOWN_ARGUMENTS); this.arguments.add(arg); } public List<RobotToken> getArguments() { return Collections.unmodifiableList(arguments); } @Override public boolean isPresent() { return (declaration != null); } @Override public List<RobotToken> getComment() { return Collections.unmodifiableList(comment); } @Override public void addCommentPart(final RobotToken rt) { fixComment(getComment(), rt); this.comment.add(rt); } @Override public ModelType getModelType() { return ModelType.USER_KEYWORD_SETTING_UNKNOWN; } @Override public FilePosition getBeginPosition() { return getDeclaration().getFilePosition(); } @Override public List<RobotToken> getElementTokens() { final List<RobotToken> elems = new LinkedList<>(); if (isPresent()) { elems.add(declaration); elems.addAll(arguments); elems.addAll(comment); } return elems; } @Override public void setComment(final String comment) { final RobotToken tok = new RobotToken(); tok.setText(comment); setComment(tok); } @Override public void setComment(final RobotToken comment) { this.comment.clear(); addCommentPart(comment); } @Override public void removeCommentPart(final int index) { this.comment.remove(index); } @Override public void clearComment() { this.comment.clear(); } @Override public RobotToken getDeclaration() { return this.declaration; } @Override public boolean removeElementToken(final int index) { return super.removeElementFromList(arguments, index); } }