Hallo,
folgender Code dupliziert Code für jedes mittels einem Comparator zu vergleichendes Kriterium. Wie vermeidet man so etwas am besten?
folgender Code dupliziert Code für jedes mittels einem Comparator zu vergleichendes Kriterium. Wie vermeidet man so etwas am besten?
Java:
import java.util.Comparator;
public class Vali implements Comparator<Vali> {
private Integer size;
private Integer volume;
private Integer buckets;
private Integer nuOfContents;
@Override
public int compare(final Vali o1, final Vali o2) {
int sizeCompare = anylseSize(o1, o2);
if (sizeCompare != 0) {
return sizeCompare;
} else {
int volumeCompare = analyseVolume(o1, o2);
if (volumeCompare != 0) {
return volumeCompare;
} else {
return compareBuckets(o1, o2);
}
}
}
private int anylseSize(final Vali o1, final Vali o2) {
int sizeCompare = 0;
if (o1.getSize() != null && o2.getSize() != null) {
sizeCompare = o1.getSize().compareTo(o2.getSize());
} else if (o1.getSize() != null && o2.getSize() == null) {
sizeCompare = -1;
} else if (o1.getSize() == null && o2.getSize() != null) {
sizeCompare = 1;
} else {
sizeCompare = 0;
}
return sizeCompare;
}
private int analyseVolume(final Vali o1, final Vali o2) {
int volumeCompare;
if (o1.getVolume() != null && o2.getVolume() != null) {
volumeCompare = o1.getVolume().compareTo(o2.getVolume());
} else if (o1.getVolume() != null && o2.getVolume() == null) {
volumeCompare = -1;
} else if (o1.getVolume() == null && o2.getVolume() != null) {
volumeCompare = 1;
} else {
volumeCompare = 0;
}
return volumeCompare;
}
private int compareBuckets(final Vali o1, final Vali o2) {
int bucketsCompare = 0;
if (o1.getBuckets() != null && o2.getBuckets() != null) {
bucketsCompare = o1.getBuckets().compareTo(o2.getBuckets());
} else if (o1.getBuckets() != null && o2.getBuckets() == null) {
bucketsCompare = -1;
} else if (o1.getBuckets() == null && o2.getBuckets() != null) {
bucketsCompare = 1;
} else {
bucketsCompare = 0;
}
return bucketsCompare;
}
public Integer getSize() {
return size;
}
public void setSize(final Integer size) {
this.size = size;
}
public Integer getVolume() {
return volume;
}
public void setVolume(final Integer volume) {
this.volume = volume;
}
public Integer getNuOfContents() {
return nuOfContents;
}
public void setNuOfContents(final Integer nuOfContents) {
this.nuOfContents = nuOfContents;
}
public Integer getBuckets() {
return buckets;
}
public void setBuckets(final Integer buckets) {
this.buckets = buckets;
}
}