/*
* 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.text.write.tables;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.rf.ide.core.testdata.model.AModelElement;
import org.rf.ide.core.testdata.model.ModelType;
import org.rf.ide.core.testdata.model.table.ARobotSectionTable;
import org.rf.ide.core.testdata.model.table.IExecutableStepsHolder;
import org.rf.ide.core.testdata.model.table.RobotExecutableRow;
import org.rf.ide.core.testdata.model.table.TableHeader;
import org.rf.ide.core.testdata.model.table.UserKeywordTableElementsComparator;
import org.rf.ide.core.testdata.model.table.keywords.UserKeyword;
import org.rf.ide.core.testdata.text.write.DumperHelper;
import org.rf.ide.core.testdata.text.write.SectionBuilder.SectionType;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordArgumentsDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordDocumentationDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordExecutionRowDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordReturnDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordTagsDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordTeardownDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordTimeoutDumper;
import org.rf.ide.core.testdata.text.write.tables.keywords.KeywordUnknownSettingDumper;
public class KeywordsSectionTableDumper extends AExecutableTableDumper {
private final static ModelType MY_TYPE = ModelType.KEYWORDS_TABLE_HEADER;
public KeywordsSectionTableDumper(final DumperHelper aDumpHelper) {
super(aDumpHelper, getDumpers(aDumpHelper));
}
private static List<IExecutableSectionElementDumper> getDumpers(final DumperHelper aDumpHelper) {
final List<IExecutableSectionElementDumper> dumpers = new ArrayList<>();
dumpers.add(new KeywordDocumentationDumper(aDumpHelper));
dumpers.add(new KeywordTagsDumper(aDumpHelper));
dumpers.add(new KeywordArgumentsDumper(aDumpHelper));
dumpers.add(new KeywordReturnDumper(aDumpHelper));
dumpers.add(new KeywordTeardownDumper(aDumpHelper));
dumpers.add(new KeywordTimeoutDumper(aDumpHelper));
dumpers.add(new KeywordUnknownSettingDumper(aDumpHelper));
dumpers.add(new KeywordExecutionRowDumper(aDumpHelper));
return dumpers;
}
@Override
public boolean isServedType(final TableHeader<? extends ARobotSectionTable> header) {
return (header.getModelType() == MY_TYPE);
}
@Override
public SectionType getSectionType() {
return SectionType.KEYWORDS;
}
@SuppressWarnings("unchecked")
@Override
public List<AModelElement<? extends IExecutableStepsHolder<?>>> getSortedUnits(
final IExecutableStepsHolder<?> execHolder) {
final List<AModelElement<? extends IExecutableStepsHolder<?>>> sorted = new ArrayList<>(0);
final List<AModelElement<UserKeyword>> sortedTemp = new ArrayList<>(0);
for (final RobotExecutableRow<?> execRow : execHolder.getExecutionContext()) {
sortedTemp.add((AModelElement<UserKeyword>) execRow);
}
for (final AModelElement<?> setting : execHolder.getUnitSettings()) {
sortedTemp.add((AModelElement<UserKeyword>) setting);
}
Collections.sort(sortedTemp, new UserKeywordTableElementsComparator());
sorted.addAll(sortedTemp);
revertExecutableRowToCorrectPlace(sorted, execHolder);
return sorted;
}
}