import java.util.Map;
import rx.Observable;
-import adullact.publicrowdfunding.model.local.cache.Cache;
import adullact.publicrowdfunding.model.local.cache.CacheSet;
import adullact.publicrowdfunding.model.local.callback.HoldAllToDo;
import adullact.publicrowdfunding.model.local.callback.HoldToDo;
import adullact.publicrowdfunding.model.server.entities.RowAffected;
import adullact.publicrowdfunding.model.server.entities.ServerBookmark;
import adullact.publicrowdfunding.model.server.entities.ServerFunding;
+import adullact.publicrowdfunding.model.server.entities.ServerProject;
import adullact.publicrowdfunding.model.server.entities.ServerUser;
import adullact.publicrowdfunding.model.server.entities.Service;
import adullact.publicrowdfunding.model.server.entities.SimpleServerResponse;
import adullact.publicrowdfunding.model.server.event.DeleteEvent;
/**
- *
- * @author Ferrand
- *
+ * @author Ferrand and Nelaupe
*/
public class User extends Resource<User, ServerUser, DetailedServerUser> {
private String m_pseudo;
private String m_city;
private String m_gender;
// private String m_email;
+ private CacheSet<Project> m_proposedProjects;
private CacheSet<Bookmark> m_bookmarks;
private CacheSet<Funding> m_funding;
user.m_firstName = serverUser.firstName;
user.m_city = serverUser.city;
user.m_gender = serverUser.sexe;
+ user.m_proposedProjects = new CacheSet<Project>();
user.m_bookmarks = new CacheSet<Bookmark>();
user.m_funding = new CacheSet<Funding>();
this.m_city = detailedServerUser.city;
//this.m_email = detailedServerUser.mail;
this.m_gender = detailedServerUser.sexe;
-
+
+ this.m_proposedProjects = new CacheSet<Project>();
+
+ for(final ServerProject serverProject : detailedServerUser.proposedProjects) {
+ m_proposedProjects.add(new Project().makeCopyFromServer(serverProject).getCache());
+ }
+
this.m_bookmarks = new CacheSet<Bookmark>();
for(final ServerBookmark serverBookmark : detailedServerUser.bookmarkedProjects) {
- final Cache<Bookmark> bookmarks = new Bookmark().getCache(Integer.toString(serverBookmark.id)).declareUpToDate();
- bookmarks.toResource(new HoldToDo<Bookmark>() {
- @Override
- public void hold(Bookmark resource) {
- resource.syncFromServer(serverBookmark);
- m_bookmarks.add(bookmarks);
- }
- });
+ m_bookmarks.add(new Bookmark().makeCopyFromServer(serverBookmark).getCache());
}
this.m_funding = new CacheSet<Funding>();
for(final ServerFunding serverFunding : detailedServerUser.fundedProjects) {
- final Cache<Funding> funded = new Funding().getCache(Integer.toString(serverFunding.id)).declareUpToDate();
- funded.toResource(new HoldToDo<Funding>() {
- @Override
- public void hold(Funding resource) {
- resource.syncFromServer(serverFunding);
- m_funding.add(funded);
- }
- });
+ //m_funding.add(new Funding().makeCopyFromServer(serverFunding).getCache(Integer.toString(serverFunding.id)));
}
return this;
}
@Override
public void onCreate(Bookmark resource) {
- m_bookmarks.add(resource);
+ m_bookmarks.add(resource.getCache().declareUpToDate());
bookmarkCreateEvent.onCreate(resource);
}
public void errorNetwork() {
bookmarkCreateEvent.errorNetwork();
}
+
+ @Override
+ public void errorServer() {
+ bookmarkCreateEvent.errorServer();
+ }
});
}
public void removeBookmark(final Project project, final DeleteEvent<Bookmark> bookmarkDeleteEvent) {
- System.out.println("remove bookmark"+m_bookmarks.toString());
- System.out.println("project id : "+project.getResourceId());
m_bookmarks.forEach(new HoldToDo<Bookmark>() {
@Override
public void hold(Bookmark bookmark) {
- System.out.println("Loop : id "+bookmark.getProject().getResourceId());
if(bookmark.getProject().getResourceId().equals(project.getResourceId())) {
m_bookmarks.stopForEach();
bookmark.serverDelete(new DeleteEvent<Bookmark>() {
@Override
public void onDelete(Bookmark resource) {
- System.out.println("On supprime le bookmark depuis user");
- m_bookmarks.remove(resource);
+ m_bookmarks.remove(resource.getCache().declareUpToDate());
bookmarkDeleteEvent.onDelete(resource);
}
public void errorNetwork() {
bookmarkDeleteEvent.errorNetwork();
}
+
+ @Override
+ public void errorServer() {
+ bookmarkDeleteEvent.errorServer();
+ }
});
}
}
});
}
+ public void getProposedProjects(final WhatToDo<Project> projectWhatToDo) {
+ m_proposedProjects.forEach(projectWhatToDo);
+ }
+
public void getBookmarkedProjects(final WhatToDo<Project> projectWhatToDo) {
m_bookmarks.forEach(new HoldAllToDo<Bookmark>() {