package org.goko.gcode.rs274ngcv3.ui.workspace.modifierbuilder; import java.util.Comparator; import org.apache.commons.lang3.StringUtils; import org.goko.gcode.rs274ngcv3.ui.workspace.uiprovider.IModifierUiProvider; public class ModifierUiProviderSorter implements Comparator<IModifierUiProvider<?>>{ /** Sort methods*/ public enum EnumModifierUiProviderSort{ ALPHABETICAL, ALPHABETICAL_INVERSE; } /** The used sort */ private EnumModifierUiProviderSort sortType; /** * Constructor * @param sortType the type of sort used */ public ModifierUiProviderSorter(EnumModifierUiProviderSort sortType) { super(); this.sortType = sortType; } /** (inheritDoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ @Override public int compare(IModifierUiProvider<?> modifier1, IModifierUiProvider<?> modifier2) { int result = 0; switch (sortType) { case ALPHABETICAL: result = compareAlphabetical(modifier1, modifier2); break; case ALPHABETICAL_INVERSE: result = compareAlphabeticalInverse(modifier1, modifier2); break; default: result = compareAlphabetical(modifier1, modifier2); } return result; } /** * Compare the modifiers name using alphabetical order * @param modifier1 modifier 1 * @param modifier2 modifier 2 * @return int */ private int compareAlphabetical(IModifierUiProvider<?> modifier1, IModifierUiProvider<?> modifier2) { return StringUtils.defaultString(modifier1.getModifierName()).compareTo(modifier2.getModifierName()); } /** * Compare the modifiers name using inverse alphabetical order * @param modifier1 modifier 1 * @param modifier2 modifier 2 * @return int */ private int compareAlphabeticalInverse(IModifierUiProvider<?> modifier1, IModifierUiProvider<?> modifier2) { return StringUtils.defaultString(modifier2.getModifierName()).compareTo(modifier1.getModifierName()); } }