/*
* 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.model.table;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import org.rf.ide.core.testdata.model.AModelElement;
import org.rf.ide.core.testdata.model.FilePosition;
import org.rf.ide.core.testdata.model.ModelType;
public class TableHeaderComparator<T extends AModelElement<?>> implements Comparator<T> {
private final static Map<ModelType, Integer> POSITION = new LinkedHashMap<>();
static {
int startPosition = 1;
POSITION.put(ModelType.SETTINGS_TABLE_HEADER, startPosition);
POSITION.put(ModelType.VARIABLES_TABLE_HEADER, ++startPosition);
POSITION.put(ModelType.TEST_CASE_TABLE_HEADER, ++startPosition);
POSITION.put(ModelType.KEYWORDS_TABLE_HEADER, ++startPosition);
}
@Override
public int compare(T modelElement1, T modelElement2) {
int result = ECompareResult.EQUAL_TO.getValue();
FilePosition filePos1 = modelElement1.getBeginPosition();
FilePosition filePos2 = modelElement2.getBeginPosition();
if (filePos1.isNotSet() || filePos2.isNotSet()) {
result = Integer.compare(POSITION.get(modelElement1.getModelType()),
POSITION.get(modelElement2.getModelType()));
} else {
result = filePos1.compare(filePos2);
}
return result;
}
}