This commit is contained in:
2024-12-06 23:53:06 +01:00
parent 823ac56d8e
commit c94d4015eb
3 changed files with 23 additions and 8 deletions
@@ -43,7 +43,7 @@ public class Transaction implements Serializable {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "transaction", cascade = CascadeType.ALL, orphanRemoval = true) @OneToMany(fetch = FetchType.LAZY, mappedBy = "transaction", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnoreProperties(value = { "transaction", "event", "registration" }, allowSetters = true) @JsonIgnoreProperties(value = { "transaction", "event", "registration" }, allowSetters = true)
@SortComparator(TransactionItemComparator.class) @SortComparator(TransactionItemComparator.class)
private List<TransactionItem> transactionItems = Transaction.getEmptyTransactionItemSet(); private SortedSet<TransactionItem> transactionItems = Transaction.getEmptyTransactionItemSet();
@Transient @Transient
private UserAccount beneficiary; private UserAccount beneficiary;
@@ -152,11 +152,11 @@ public class Transaction implements Serializable {
return this; return this;
} }
public List<TransactionItem> getTransactionItems() { public SortedSet<TransactionItem> getTransactionItems() {
return this.transactionItems; return this.transactionItems;
} }
public void setTransactionItems(List<TransactionItem> transactionItems) { public void setTransactionItems(SortedSet<TransactionItem> transactionItems) {
if (this.transactionItems != null) { if (this.transactionItems != null) {
this.transactionItems.forEach(i -> i.setTransaction(null)); this.transactionItems.forEach(i -> i.setTransaction(null));
} }
@@ -166,7 +166,7 @@ public class Transaction implements Serializable {
this.transactionItems = transactionItems; this.transactionItems = transactionItems;
} }
public Transaction transactionItems(List<TransactionItem> transactionItems) { public Transaction transactionItems(SortedSet<TransactionItem> transactionItems) {
this.setTransactionItems(transactionItems); this.setTransactionItems(transactionItems);
return this; return this;
} }
@@ -213,7 +213,7 @@ public class Transaction implements Serializable {
"}"; "}";
} }
public static List<TransactionItem> getEmptyTransactionItemSet() { public static SortedSet<TransactionItem> getEmptyTransactionItemSet() {
return new ArrayList(); return new TreeSet<>(new TransactionItemComparator());
} }
} }
@@ -19,6 +19,21 @@ public class TransactionItemComparator implements Comparator<TransactionItem> {
private int compareUserAccounts(UserAccount ua1, UserAccount ua2) { private int compareUserAccounts(UserAccount ua1, UserAccount ua2) {
// Używamy naszego komparatora UserAccount // Używamy naszego komparatora UserAccount
return userAccountComparator.compare(ua1, ua2); int compare = userAccountComparator.compare(ua1, ua2);
if (compare == 0) {
// Porównanie id, uwzględniając null
if (ua1.getId() == null && ua2.getId() == null) {
return -1; // Jeśli oba id są null, to nie są równe, ale nie wiemy jak je uporządkować, więc zwracamy -1 (lub 1, zależnie od preferencji)
} else if (ua1.getId() == null) {
return -1; // Pusty ID jest "mniejszy" niż niepusty
} else if (ua2.getId() == null) {
return 1; // Pusty ID jest "mniejszy" niż niepusty
} else {
// Oba ID nie są null, więc porównujemy je normalnie
return ua1.getId().compareTo(ua2.getId());
}
} else {
return compare;
}
} }
} }
@@ -32,7 +32,7 @@ public class TransactionService {
private EventService eventService; private EventService eventService;
public Transaction save(Transaction transaction) { public Transaction save(Transaction transaction) {
List<TransactionItem> items = transaction.getTransactionItems(); SortedSet<TransactionItem> items = transaction.getTransactionItems();
String beneficiaryAccountName = transaction.getBeneficiary() == null String beneficiaryAccountName = transaction.getBeneficiary() == null
? Account.Skarbiec.toString() ? Account.Skarbiec.toString()
: transaction.getBeneficiary().getName(); : transaction.getBeneficiary().getName();