finance-analyzer/src/main/java/de/arminwolf/financeanalyzer/dao/model/OutputData.java

148 lines
3.3 KiB
Java

package de.arminwolf.financeanalyzer.dao.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.arminwolf.financeanalyzer.dao.TransactionDAO;
import de.arminwolf.financeanalyzer.util.DateUtil;
import de.arminwolf.financeanalyzer.util.NumberUtil;
import java.time.LocalDate;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
public class OutputData implements Comparable<OutputData> {
@JsonProperty("id")
public String id;
@JsonProperty("amount")
public String amount;
@JsonProperty("amountAsFloat")
public Float amountAsFloat;
@JsonProperty("contractTurnaround")
public String contractTurnaround;
@JsonProperty("contractTurnaround")
public String date;
@JsonProperty("recipient")
public String recipient;
@JsonProperty("purpose")
public String purpose;
public OutputData(final Map.Entry<String, TransactionDAO> order) {
this(order.getKey(), order.getValue());
}
public OutputData(final String id, final TransactionDAO transaction) {
this.id = id;
this.amount = transaction.getBetrag().concat(" ").concat(transaction.getWaehrung());
this.contractTurnaround = transaction.getAnalyseVertragsturnus().isBlank() ? "monatlich" : transaction.getAnalyseVertragsturnus();
this.amountAsFloat = Float.parseFloat(transaction.getBetrag());
this.date = DateUtil.prettyPrint(DateUtil.parse(transaction.getBuchungstag()));
this.purpose = transaction.getVerwendungszweck().trim().isEmpty() ?
"Überweisung an " + transaction.getBeguenstigterAuftraggeber() :
transaction.getVerwendungszweck();
this.recipient = transaction.getBeguenstigterAuftraggeber();
}
public OutputData(final TransactionDAO t) {
this(LocalDate.now().toString(), t);
}
public String getDate() {
return date;
}
public void setDate(final String date) {
this.date = date;
}
@Override
public int compareTo(final OutputData o) {
return getAmountAsFloat().compareTo(o.getAmountAsFloat());
}
public Float getAmountAsFloat() {
return NumberUtil.round(amountAsFloat);
}
public void setAmountAsFloat(final Float amountAsFloat) {
this.amountAsFloat = amountAsFloat;
}
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
public String getAmount() {
return amount;
}
public void setAmount(final String amount) {
this.amount = amount;
}
public String getContractTurnaround() {
return contractTurnaround;
}
public void setContractTurnaround(final String contractTurnaround) {
this.contractTurnaround = contractTurnaround;
}
public String getPurpose() {
return purpose;
}
public void setPurpose(final String purpose) {
this.purpose = purpose;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(final String recipient) {
this.recipient = recipient;
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
final OutputData outputData = (OutputData) o;
return Objects.equals(amount, outputData.amount) && Objects.equals(contractTurnaround, outputData.contractTurnaround) && Objects.equals(date, outputData.date) && Objects.equals(recipient, outputData.recipient) && Objects.equals(purpose, outputData.purpose);
}
@Override
public int hashCode() {
return Objects.hash(amount, contractTurnaround, date, recipient, purpose);
}
}