package org.netbeans.gradle.project.properties; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Objects; import org.netbeans.gradle.project.NbStrings; import org.netbeans.gradle.project.api.config.ProfileDef; import org.netbeans.gradle.project.api.config.ProfileKey; import org.netbeans.gradle.project.util.StringUtils; import org.netbeans.spi.project.ProjectConfiguration; public final class NbGradleConfiguration implements ProjectConfiguration { public static final NbGradleConfiguration DEFAULT_CONFIG = new NbGradleConfiguration(null); private static final Comparator<NbGradleConfiguration> ALPHABETICAL_ORDER = new Comparator<NbGradleConfiguration>() { @Override public int compare(NbGradleConfiguration o1, NbGradleConfiguration o2) { if (DEFAULT_CONFIG.equals(o1)) { return DEFAULT_CONFIG.equals(o2) ? 0 : -1; } if (DEFAULT_CONFIG.equals(o2)) { return DEFAULT_CONFIG.equals(o1) ? 0 : 1; } return StringUtils.STR_CMP.compare(o1.getDisplayName(), o2.getDisplayName()); } }; private final ProfileDef profileDef; public NbGradleConfiguration(ProfileDef profileDef) { this.profileDef = profileDef; } public static void sortProfiles(NbGradleConfiguration[] profileArray) { Arrays.sort(profileArray, ALPHABETICAL_ORDER); } public static void sortProfiles(List<NbGradleConfiguration> profileList) { Collections.sort(profileList, ALPHABETICAL_ORDER); } public ProfileKey getProfileKey() { return ProfileKey.fromProfileDef(profileDef); } public ProfileDef getProfileDef() { return profileDef; } public String getProfileGroup() { return profileDef != null ? profileDef.getGroupName() : null; } @Override public String getDisplayName() { return profileDef != null ? profileDef.getDisplayName() : NbStrings.getDefaultProfileName(); } @Override public String toString() { return getDisplayName(); } @Override public int hashCode() { int hash = 5; hash = 79 * hash + Objects.hashCode(profileDef); return hash; } @Override public boolean equals(Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; final NbGradleConfiguration other = (NbGradleConfiguration)obj; return Objects.equals(this.profileDef, other.profileDef); } }