Package: SortFarbDruckTyp$1
SortFarbDruckTyp$1
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compare(Maschine, Maschine) |
|
|
|
|
|
||||||||||||||||||||
{...} |
|
|
|
|
|
Coverage
1: package rollenbelegung.SortierParameter.MaschinenSortierParameter;
2:
3: import java.util.Comparator;
4: import java.util.List;
5:
6: import maschine.Maschine;
7: import rollenbelegung.SortierParameter.SortierReihenfolge;
8:
9: /**
10: * {@link MaschinenSortierParameter} zum Sortieren von {@link Maschine Maschinen} nach FarbDruckTyp.
11: */
12: public final class SortFarbDruckTyp extends MaschinenSortierParameter {
13:         
14:         private static SortFarbDruckTyp instanceAbsteigend;
15:         private static SortFarbDruckTyp instanceAufsteigend;
16:         
17:         private SortFarbDruckTyp(final SortierReihenfolge sortierReihenfolge) {
18:                 super(sortierReihenfolge);
19:         }
20:         
21:         /**
22:          * @return die instance, die aufsteigend sortiert.
23:          */
24:         public static SortFarbDruckTyp getInstanceAufsteigend() {
25:                 if (SortFarbDruckTyp.instanceAufsteigend == null) {
26:                         SortFarbDruckTyp.instanceAufsteigend = new SortFarbDruckTyp(SortierReihenfolge.AUFSTEIGEND);
27:                 }
28:                 return SortFarbDruckTyp.instanceAufsteigend;
29:         }
30:         
31:         /**
32:          * @return die instance, die absteigend sortiert.
33:          */
34:         public static SortFarbDruckTyp getInstanceAbsteigend() {
35:                 if (SortFarbDruckTyp.instanceAbsteigend == null) {
36:                         SortFarbDruckTyp.instanceAbsteigend = new SortFarbDruckTyp(SortierReihenfolge.ABSTEIGEND);
37:                 }
38:                 return SortFarbDruckTyp.instanceAbsteigend;
39:         }
40:         
41:         private Comparator<Maschine> getComparator() {
42:                 return new Comparator<Maschine>() {
43:                         @Override
44:                         public int compare(final Maschine m1, final Maschine m2) {
45:•                                if (!m1.getDruckEigenschaften().isPresent()) {
46:                                         return -1;
47:                                 }
48:•                                if (!m2.getDruckEigenschaften().isPresent()) {
49:                                         return 1;
50:                                 }
51:                                 return m1.getDruckEigenschaften().get().getUnterstuetzteFarbdruckTypen().stream().max(Comparator.naturalOrder()).map(Enum::ordinal)
52:                                                 .orElse(-1).compareTo(
53:                                                                 m2.getDruckEigenschaften().get().getUnterstuetzteFarbdruckTypen().stream().max(Comparator.naturalOrder())
54:                                                                 .map(Enum::ordinal).orElse(-1));
55:                         }
56:                 };
57:         }
58:         
59:         @Override
60:         public void specialSort(final List<Maschine> maschinen) {
61:                 maschinen.sort(this.getComparator());
62:         }
63:         
64: }