/*
* 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.mapping.hash.comment;
import java.util.List;
import org.rf.ide.core.testdata.mapping.IHashCommentMapper;
import org.rf.ide.core.testdata.mapping.table.ParsingStateHelper;
import org.rf.ide.core.testdata.model.RobotFile;
import org.rf.ide.core.testdata.model.table.ARobotSectionTable;
import org.rf.ide.core.testdata.model.table.TableHeader;
import org.rf.ide.core.testdata.text.read.ParsingState;
import org.rf.ide.core.testdata.text.read.RobotLine;
import org.rf.ide.core.testdata.text.read.recognizer.RobotToken;
public class TableHeaderCommentMapper implements IHashCommentMapper {
private final ParsingStateHelper stateHelper;
public TableHeaderCommentMapper() {
this.stateHelper = new ParsingStateHelper();
}
@Override
public boolean isApplicable(final ParsingState state) {
return stateHelper.isTableState(state);
}
@Override
public void map(final RobotLine currentLine, final RobotToken rt, final ParsingState currentState,
final RobotFile fileModel) {
ARobotSectionTable table = null;
if (currentState == ParsingState.SETTING_TABLE_HEADER) {
table = fileModel.getSettingTable();
} else if (currentState == ParsingState.VARIABLE_TABLE_HEADER) {
table = fileModel.getVariableTable();
} else if (currentState == ParsingState.KEYWORD_TABLE_HEADER) {
table = fileModel.getKeywordTable();
} else if (currentState == ParsingState.TEST_CASE_TABLE_HEADER) {
table = fileModel.getTestCaseTable();
}
final List<TableHeader<? extends ARobotSectionTable>> headers = table.getHeaders();
if (!headers.isEmpty()) {
final TableHeader<?> header = headers.get(headers.size() - 1);
header.addCommentPart(rt);
} else {
// FIXME: it is not possible
}
}
}