package fr.ydelouis.selfoss.sync; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import fr.ydelouis.selfoss.entity.Article; import fr.ydelouis.selfoss.entity.Success; import fr.ydelouis.selfoss.model.ArticleSyncActionDao; import fr.ydelouis.selfoss.rest.SelfossRest; @DatabaseTable(daoClass = ArticleSyncActionDao.class) public class ArticleSyncAction { public enum Action { MarkRead { @Override public Success execute(SelfossRest rest, int articleId) { return rest.markRead(articleId); } @Override public void execute(Article article) { article.setUnread(false); } }, MarkUnread { @Override public Success execute(SelfossRest rest, int articleId) { return rest.markUnread(articleId); } @Override public void execute(Article article) { article.setUnread(true); } }, MarkStarred { @Override public Success execute(SelfossRest rest, int articleId) { return rest.markStarred(articleId); } @Override public void execute(Article article) { article.setStarred(true); } }, MarkUnstarred { @Override public Success execute(SelfossRest rest, int articleId) { return rest.markUnstarred(articleId); } @Override public void execute(Article article) { article.setStarred(false); } }; public abstract Success execute(SelfossRest rest, int articleId); public abstract void execute(Article article); } @DatabaseField(generatedId = true) private int id; @DatabaseField(columnName = ArticleSyncActionDao.COLUMN_ARTICLEID) private int articleId; @DatabaseField(columnName = ArticleSyncActionDao.COLUMN_ACTION) private Action action; public ArticleSyncAction() { } public ArticleSyncAction(Article article, Action action) { this.articleId = article.getId(); this.action = action; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getArticleId() { return articleId; } public void setArticleId(int articleId) { this.articleId = articleId; } public Action getAction() { return action; } public void setAction(Action action) { this.action = action; } public void execute(SelfossRest rest) { action.execute(rest, articleId); } }