package fr.keemto.provider.social; import fr.keemto.core.Account; import fr.keemto.core.AccountKey; import fr.keemto.core.Event; import fr.keemto.core.RevocationHanlder; import fr.keemto.core.fetching.Fetcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.social.connect.Connection; import java.util.ArrayList; import java.util.List; public class SocialAccount implements Account { private static final Logger log = LoggerFactory.getLogger(SocialAccount.class); private final AccountKey key; private final Fetcher<Connection<?>> fetcher; private final RevocationHanlder revocationHanlder; private final Connection<?> connection; public SocialAccount(AccountKey key, Fetcher<Connection<?>> fetcher, Connection<?> connection, RevocationHanlder revocationHanlder) { this.key = key; this.connection = connection; this.fetcher = fetcher; this.revocationHanlder = revocationHanlder; } @Override public List<Event> fetch(long newerThan) { List<Event> events = new ArrayList<Event>(); List<EventData> datas = fetcher.fetch(connection, newerThan); for (EventData data : datas) { Event event = new Event(data.getTimestamp(), data.getMessage(), this); events.add(event); } return events; } @Override public void revoke() { revocationHanlder.revoke(key); log.info("Social Account {} has been revoked", key); } @Override public String getDisplayName() { return connection.getDisplayName(); } @Override public String getProfileUrl() { return connection.getProfileUrl(); } @Override public String getImageUrl() { return connection.getImageUrl(); } @Override public AccountKey getKey() { return key; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof SocialAccount)) return false; SocialAccount that = (SocialAccount) o; if (key != null ? !key.equals(that.key) : that.key != null) return false; return true; } @Override public int hashCode() { return key != null ? key.hashCode() : 0; } }