/* * 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.TestCaseTableElementsComparator; import org.rf.ide.core.testdata.model.table.testcases.TestCase; 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.testcases.TestCaseDocumentationDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseExecutionRowDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseSetupDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseTagsDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseTeardownDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseTemplateDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseTimeoutDumper; import org.rf.ide.core.testdata.text.write.tables.testcases.TestCaseUnknownSettingDumper; public class TestCasesSectionTableDumper extends AExecutableTableDumper { private final static ModelType MY_TYPE = ModelType.TEST_CASE_TABLE_HEADER; public TestCasesSectionTableDumper(final DumperHelper aDumpHelper) { super(aDumpHelper, getDumpers(aDumpHelper)); } private static List<IExecutableSectionElementDumper> getDumpers(final DumperHelper aDumpHelper) { final List<IExecutableSectionElementDumper> dumpers = new ArrayList<>(); dumpers.add(new TestCaseDocumentationDumper(aDumpHelper)); dumpers.add(new TestCaseTagsDumper(aDumpHelper)); dumpers.add(new TestCaseSetupDumper(aDumpHelper)); dumpers.add(new TestCaseTeardownDumper(aDumpHelper)); dumpers.add(new TestCaseTemplateDumper(aDumpHelper)); dumpers.add(new TestCaseTimeoutDumper(aDumpHelper)); dumpers.add(new TestCaseUnknownSettingDumper(aDumpHelper)); dumpers.add(new TestCaseExecutionRowDumper(aDumpHelper)); return dumpers; } @Override public boolean isServedType(final TableHeader<? extends ARobotSectionTable> header) { return (header.getModelType() == MY_TYPE); } @Override public SectionType getSectionType() { return SectionType.TEST_CASES; } @SuppressWarnings("unchecked") @Override public List<AModelElement<? extends IExecutableStepsHolder<?>>> getSortedUnits( final IExecutableStepsHolder<?> execHolder) { final List<AModelElement<? extends IExecutableStepsHolder<?>>> sorted = new ArrayList<>(0); final List<AModelElement<TestCase>> sortedTemp = new ArrayList<>(0); for (final RobotExecutableRow<?> execRow : execHolder.getExecutionContext()) { sortedTemp.add((AModelElement<TestCase>) execRow); } for (final AModelElement<?> setting : execHolder.getUnitSettings()) { sortedTemp.add((AModelElement<TestCase>) setting); } Collections.sort(sortedTemp, new TestCaseTableElementsComparator()); sorted.addAll(sortedTemp); revertExecutableRowToCorrectPlace(sorted, execHolder); return sorted; } }