/*
* 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.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 abstract class AModelTypeComparator<T extends AModelElement<?>> implements Comparator<T> {
private final Map<ModelType, Integer> position;
public AModelTypeComparator(final Map<ModelType, Integer> position) {
this.position = position;
}
@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 if (filePos1.isNotSet()) {
result = ECompareResult.GREATER_THAN.getValue();
} else if (filePos2.isNotSet()) {
result = ECompareResult.LESS_THAN.getValue();
} else {
result = filePos1.compare(filePos2);
}
return result;
}
}