/* * 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.keywords; import org.rf.ide.core.testdata.model.AModelElement; import org.rf.ide.core.testdata.model.ModelType; import org.rf.ide.core.testdata.model.presenter.update.ExecutablesStepsHolderMorphOperation; import org.rf.ide.core.testdata.model.table.keywords.KeywordArguments; import org.rf.ide.core.testdata.model.table.keywords.KeywordReturn; import org.rf.ide.core.testdata.model.table.keywords.KeywordUnknownSettings; import org.rf.ide.core.testdata.model.table.keywords.UserKeyword; import org.rf.ide.core.testdata.model.table.testcases.TestCaseUnknownSettings; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; import org.rf.ide.core.testdata.text.read.recognizer.RobotTokenType; public class TestCaseUnknownSettingMorphOperation extends ExecutablesStepsHolderMorphOperation<UserKeyword> { @Override public boolean isApplicable(final ModelType elementType) { return elementType == ModelType.TEST_CASE_SETTING_UNKNOWN; } @Override public AModelElement<?> insert(final UserKeyword keyword, final int index, final AModelElement<?> modelElement) { final TestCaseUnknownSettings tcSetting = (TestCaseUnknownSettings) modelElement; final RobotTokenType possibleSettingType = RobotTokenType .findTypeOfDeclarationForKeywordSettingTable(tcSetting.getDeclaration().getText()); if (possibleSettingType == RobotTokenType.KEYWORD_SETTING_ARGUMENTS) { final KeywordArguments arguments = keyword.newArguments(); arguments.getDeclaration().setText(tcSetting.getDeclaration().getText()); for (final RobotToken argument : tcSetting.getArguments()) { arguments.addArgument(argument); } for (final RobotToken comment : tcSetting.getComment()) { arguments.addCommentPart(comment); } return arguments; } else if (possibleSettingType == RobotTokenType.KEYWORD_SETTING_RETURN) { final KeywordReturn returnSetting = keyword.newReturn(); returnSetting.getDeclaration().setText(tcSetting.getDeclaration().getText()); for (final RobotToken argument : tcSetting.getArguments()) { returnSetting.addReturnValue(argument); } for (final RobotToken comment : tcSetting.getComment()) { returnSetting.addCommentPart(comment); } return returnSetting; } else { final KeywordUnknownSettings unkownSetting = keyword.newUnknownSettings(); unkownSetting.getDeclaration().setText(tcSetting.getDeclaration().getText()); for (final RobotToken arg : tcSetting.getArguments()) { unkownSetting.addArgument(arg.getText()); } for (final RobotToken comment : tcSetting.getComment()) { unkownSetting.addCommentPart(comment); } return unkownSetting; } } }