Using the MVP pattern
gwt, gwt-platform, java, mvp
Solution
In your services you can inject `DAO` objects that deal with your data (model). You usually have an interface and its implementation.
public interface IMyDao {
List<String> getAllObject();
}
public class MyDao implements IMyDao {
public List<String> getAllObject() {
List<String> os = new ArrayList<String>();
// DB access or Datastore (Sample code)
os = datastore.query(...);
return os;
}
}
and in your service
public class ServiceImpl implements Service {
private final MyDao dao;
@Inject
public ServiceImpl(final MyDao dao) {
this.dao = dao;
}
public List<String> getAllObject() {
// Some processing
return dao.getAllObject();
}
}
Your service will be called by the presenter. So the workflow is Presenter -> Dao (Model) -> View (updated by the presenter).
Have a look at that ebook, it will give you some ideas.
Problem
I have this web application which I have made with MVC pattern, however I am trying to adapt the MVP pattern. I am using the GWTPlatform library which I have migrated some of the codes already, mainly to the `Presenter` and the `View`. However I have not seen any comprehensive material to explain how to actually deal with the `Model` part. In my MVC pattern I have the model in the controller (in MVC) and the Views listen to changes in the Model to update the views. The model is updated by the controller, e.g `fireUpdateUser()` function is fired as a result of opening the "user page" for example which then updates the model. How to I actually deal with the model in MVP if I already have remote services RPC (e.g UserService, UserServiceImpl); With Gwtplatform, I can just put a RPC call in the onReset() function of a presenter then essentially do a `getView().getSomething().setValue(something)` to update the View associated. In this case I did not have to use any model at all? Also, what are the purposes of EventHandler and Activities?