package it.demo.twitterlike.android.service.inmemory; import it.demo.twitterlike.android.service.TwitterLikeService; import it.demo.twitterlike.android.utils.ConfigurationUtil; import it.demo.twitterlike.android.utils.SerializeUtil; import it.demo.twitterlike.rest.api.TwitterLike; import it.demo.twitterlike.rest.api.UserProfile; import java.io.Serializable; import java.util.Date; import android.content.Context; public class InMemoryTwitterLikeService implements TwitterLikeService, Serializable { public static InMemoryTwitterLikeService getInstance(Context context, TwitterLike api) { InMemoryTwitterLikeService result = null; try { result = SerializeUtil.readObject(ConfigurationUtil .getCachedRepository(context)); } catch (Exception e) { } if (result == null) { result = new InMemoryTwitterLikeService(); } result.api = api; result.context = context; return result; } private static final long serialVersionUID = 1L; private transient TwitterLike api; private transient Context context; private Date lastUpdate; public Date getLastUpdate() { return lastUpdate; } private UserProfile userProfile; public synchronized void syncronize() { syncronizeUserProfile(); this.lastUpdate = new Date(); updateCache(); } protected void updateCache() { try { SerializeUtil.writeObject(this, ConfigurationUtil.getCachedRepository(context)); } catch (Exception e) { throw new RuntimeException("Error Storing cache", e); } } @Override public UserProfile getAuthenticatedUser() { return userProfile; } protected UserProfile syncronizeUserProfile() { this.userProfile = api.userOperations().getUserProfile().getContent(); return this.userProfile; } }