package name.abuchen.portfolio.model;
import java.io.Serializable;
import java.util.Comparator;
/**
* A pair of transaction owner (account or portfolio) and a transaction.
*/
public class TransactionPair<T extends Transaction> implements Adaptable
{
public static final class ByDate implements Comparator<TransactionPair<?>>, Serializable
{
private static final long serialVersionUID = 1L;
@Override
public int compare(TransactionPair<?> t1, TransactionPair<?> t2)
{
return t1.getTransaction().getDate().compareTo(t2.getTransaction().getDate());
}
}
private final TransactionOwner<T> owner;
private final T transaction;
public TransactionPair(TransactionOwner<T> owner, T transaction)
{
this.owner = owner;
this.transaction = transaction;
}
public TransactionOwner<T> getOwner()
{
return owner;
}
public T getTransaction()
{
return transaction;
}
/**
* Deletes the transaction from the transaction owner, e.g. the portfolio or
* account.
*/
public void deleteTransaction(Client client)
{
owner.deleteTransaction(transaction, client);
}
@Override
public <A> A adapt(Class<A> type)
{
if (type == Annotated.class)
return type.cast(transaction);
else
return null;
}
}