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)
@JsonIgnoreProperties(value = { "transaction", "event", "registration" }, allowSetters = true)
@SortComparator(TransactionItemComparator.class)
private List<TransactionItem> transactionItems = Transaction.getEmptyTransactionItemSet();
private SortedSet<TransactionItem> transactionItems = Transaction.getEmptyTransactionItemSet();
@Transient
private UserAccount beneficiary;
@@ -152,11 +152,11 @@ public class Transaction implements Serializable {
return this;
}
public List<TransactionItem> getTransactionItems() {
public SortedSet<TransactionItem> getTransactionItems() {
return this.transactionItems;
}
public void setTransactionItems(List<TransactionItem> transactionItems) {
public void setTransactionItems(SortedSet<TransactionItem> transactionItems) {
if (this.transactionItems != null) {
this.transactionItems.forEach(i -> i.setTransaction(null));
}
@@ -166,7 +166,7 @@ public class Transaction implements Serializable {
this.transactionItems = transactionItems;
}
public Transaction transactionItems(List<TransactionItem> transactionItems) {
public Transaction transactionItems(SortedSet<TransactionItem> transactionItems) {
this.setTransactionItems(transactionItems);
return this;
}
@@ -213,7 +213,7 @@ public class Transaction implements Serializable {
"}";
}
public static List<TransactionItem> getEmptyTransactionItemSet() {
return new ArrayList();
public static SortedSet<TransactionItem> getEmptyTransactionItemSet() {
return new TreeSet<>(new TransactionItemComparator());
}
}
@@ -19,6 +19,21 @@ public class TransactionItemComparator implements Comparator<TransactionItem> {
private int compareUserAccounts(UserAccount ua1, UserAccount ua2) {
// 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;
public Transaction save(Transaction transaction) {
List<TransactionItem> items = transaction.getTransactionItems();
SortedSet<TransactionItem> items = transaction.getTransactionItems();
String beneficiaryAccountName = transaction.getBeneficiary() == null
? Account.Skarbiec.toString()
: transaction.getBeneficiary().getName();