package org.molgenis.data.mapper.algorithmgenerator.rules;
import com.google.auto.value.AutoValue;
import org.molgenis.data.mapper.algorithmgenerator.bean.Category;
import org.molgenis.data.mapper.algorithmgenerator.rules.quality.Quality;
import org.molgenis.gson.AutoGson;
import javax.annotation.Nullable;
@AutoValue
@AutoGson(autoValueClass = AutoValue_CategoryMatchQuality.class)
public abstract class CategoryMatchQuality<T> implements Comparable<CategoryMatchQuality<T>>
{
public abstract boolean isRuleApplied();
@Nullable
public abstract Quality<T> getQuality();
public abstract Category getTargetCategory();
public abstract Category getSourceCategory();
public static <T> CategoryMatchQuality<T> create(boolean ruleApplied, Quality<T> quality, Category targetCategory,
Category sourceCategory)
{
return new AutoValue_CategoryMatchQuality<T>(ruleApplied, quality, targetCategory, sourceCategory);
}
@Override
public int compareTo(CategoryMatchQuality<T> categoryMatchQuality)
{
return getQuality().compareTo(categoryMatchQuality.getQuality());
}
}