Hi Deepak
Regarding your second approach I would like to add new idea. You may have
been familiar with java frameworks like persistence or hibernate to access
database. Why can't we apply that concept to your approach. We have set of
entity classes in our android application (we say it model layer)  same as
the Models used in web service (If there is a model called Student in web
service we also create a entity called Student). Then the problem is how
can we exactly know the attributes of that entities . As a solution for
that we can write some test cases to check whether our model classes are
exactly compatible with models in the server. If a test fails then we know
some entity is not compatible with the server model. We can simply access
our entity classes to access domain classes in web service.

NOTE- This is exactly similar to your approach only difference is we can
use test cases to test compatibility instead doing it manually

Advantages.
1 It can be defined as a standard representation so users can easily get
used to it.
2 Because test cases are responsible for checking compatibility between
server and client models we don't need to go and check server models'
attributes manually. (Because I'm lazy to do such things :-) )

Disadvantages
1 As you mentioned, there could be some dependencies with web service.


On Sun, Apr 14, 2013 at 10:06 PM, Deepak Gopalakrishnan <dgk...@gmail.com>wrote:

> Hello Dimuthu,
>
> Iven't finalized my solution yet.
>
> The first method requires the user to generate the library from the server
> side instance. I will elaborate the advantages of this method later in this
> thread. The major disadvantage is that the library has to be generated each
> time the web services change.
>
> For the second method,  I think the best approach would be to return an
> instance of a BaseResponse class ( that extends HashMap ). This class can
> have a method that will clone the hashmap elements into a model class (
> defined by the user ) according to the names of the data members.
>
> Example :
>
> After the method returns the HashMap ( which is the BaseWebResponse class
> ) will contain ("firstName"-> "Deepak", "lastName"-> "K", 'age'->25)
>
> Suppose the user has defined a new model class called User { private
> String firstName, lastName; private int age; //and the accessor methods
> included }
>
> So the keys of the hashmap can directly correspond to the datamembers. We
> can have a Object baseWebResponse.toClassOfType(Class classType) method
> within the BaseWebResponse class which will do the conversion.
>
> Thanks,
> Deepak
>
>
>
>
>
>
>
>
>
> On Mon, Apr 15, 2013 at 10:10 AM, DImuthu Upeksha <
> dimuthu.upeks...@gmail.com> wrote:
>
>> Hi Deepak,
>> I was thinking about your two approaches regarding DAO for android
>> client. Using dependency injection to create those domain classes makes
>> sense and I need to do more reading about dependency injection
>> Regarding your second approach, having a generic DAO class and using
>> methods like GenericDao.getEntity("Student").getData("getPassedStudents")
>> leads to a problem I think. Basically what is the return type of this
>> method? It should be a set of Student entities. But we don't have a Student
>> class in our application. As a solution we can use a Hashmap like thing to
>> return attribute name and value pairs. But I'm not sure about the
>> applicability of it because attributes of Student class may have complex
>> objects.
>>
>>
>>
>>
>> --
>> Regards
>>
>> W.Dimuthu Upeksha
>> Undergraduate
>> Department of Computer Science And Engineering
>>
>> University of Moratuwa, Sri Lanka
>>
>
>
>
> --
> Regards,
> *Deepak Gopalakrishnan*
> *Mobile*:+918891509774
> *Skype* : deepakgk87
> http://myexps.blogspot.com
>
>


-- 
Regards

W.Dimuthu Upeksha
Undergraduate
Department of Computer Science And Engineering

University of Moratuwa, Sri Lanka

Reply via email to