package name.abuchen.portfolio.datatransfer; import name.abuchen.portfolio.model.Account; import name.abuchen.portfolio.model.AccountTransaction; import name.abuchen.portfolio.model.AccountTransferEntry; import name.abuchen.portfolio.model.BuySellEntry; import name.abuchen.portfolio.model.Portfolio; import name.abuchen.portfolio.model.PortfolioTransaction; import name.abuchen.portfolio.model.PortfolioTransferEntry; import name.abuchen.portfolio.model.Security; public interface ImportAction { public interface Context { Account getAccount(); Portfolio getPortfolio(); Account getSecondaryAccount(); Portfolio getSecondaryPortfolio(); } static class Status { public enum Code { OK, WARNING, ERROR; public boolean isHigherSeverityAs(Code other) { return ordinal() > other.ordinal(); } } public static final Status OK_STATUS = new Status(Code.OK, null); private Code code; private String message; public Status(Code code, String message) { this.code = code; this.message = message; } public Code getCode() { return code; } public String getMessage() { return message; } } Status process(Security security); Status process(AccountTransaction transaction, Account account); Status process(PortfolioTransaction transaction, Portfolio portfolio); Status process(BuySellEntry entry, Account account, Portfolio portfolio); Status process(AccountTransferEntry entry, Account source, Account target); Status process(PortfolioTransferEntry entry, Portfolio source, Portfolio target); }