hi,
Document API.
*create()*
put the page on server. If the doc includes Objects post them as well.
(likely for comments tags, attatchments)
*
*
*update(int strategy)*
Update all things in Page. Throw XWikiException if page not yet created.
@param : strategy values={MERGE / FORCED } OR {ALL/ OBJECTS / TAGS/...}
ex: thing there are objects 0,1,2 in server page.
- merge (when local doc has objects 0,1 only)
- update obj 0,1
- forced (whne local doc has obj 0,1 only)
- delete obj 2 in server. Update obj 0,1.
usage:
doc.update(MERGE || OBJECTS || TAGS) means update page,
merge objects and tags. Leave the rest as it is
*delete() *
delete the whole document.
*get()*
load the doc from server
*save()*
save to local device
*load()*
load from local device
Document API is not exposed directly to Client Developers. All it's methods
are protected.
We have a BlogDocument [extension to Document] which is exposed to the
BlogClient developer.
BlogDocument knows what a blog post is and it knows that it only needs to
update the BlogPostClass object in the server page. It calls the super
update() method with the relevant strategy.
Any way the Document is not the real guy who does all these updates to
server and local saves and loads.
For local saves and loads it calls a DAO(data Access Object ) in our
persistence lib.This DAO will call a FAO (File Access Object ) to save the
documents bulk to the local file system and enter a light weight entry in
the SQLite DataBase.
For updating the server, Document delegate duties to
ReSTfulDocumentAdapter{implements ReSTfulAdapter}.We can configure which
ReST model to use in the adapter (currently only simpleXML model). Adapters
convert and adapt the Document model to a rest model and call the XWikiReST
API abstraction layer to update the remote server.
By the way, those ReSTfulAdapter(s) do a lot of things. Convert Document to
REST model.Choose an Update Strategy object for the document (passed by
param in doc.update(strat)) Calls REST api abstraction inside android
according to the Update strategy. They do a lot of things for an adapter.I
don't know what to call it :-).An Adapter or something else ??? :-O.
Also for automatic syncs with the server when the device is offline and
user have made a blog post, user should be given the option to select
whether to automatically do it or manually post it.
For automatic sync/posting we can make android Services.
Also currently the xwiki-androi-rest module does not use android native
services to call server.If a user gets a phone call or something when
uploading to server things might get messy.This is because android
Activities are stoped and may be destroyed on these occasions.I will see if
I can rectify it if I have time after the mid eval.(It may totally affect
how web services are called from upper layers)
Thanks
Best Regards.
Sasinda.
On Fri, Jun 22, 2012 at 7:33 AM, sasinda rukshan
<[email protected]>wrote:
> hi,
> PS:
> check the *p2 branch*. Not master. Did not merge yet. :-)
>
> Regards,
> Sasinda.
>
> On Fri, Jun 22, 2012 at 7:31 AM, sasinda rukshan <[email protected]
> > wrote:
>
>> Hi,
>> Pushed some initial scaffolding's of XWiki model to android, in to
>> https://github.com/xwiki-contrib/android-client
>> This is the basic idea.
>> The client app developers will be only exposed to a service layer. All
>> packages suffixed with "Svc" have these.
>> package: cmnSvc >> has the LoginFacade. called to log in to server and
>> system.(also update state of XWikiContext in the android and etc)
>> package blogSvc >> will have BlogDocument, CategoryDocument and etc which
>> can be used to create posts and update server.
>> The base class Document will handle all server updations(through a
>> ReSTfulAdapter, to decouple Document and underlying rest model: simple
>> XML/Gson) and etc.
>>
>> Please check whether approach to redesigning com.xpn....objects into
>> org.xwiki.android.xmodel.xobjects is correct.
>>
>> Thanks.
>> Best Regards.
>> Sasinda.
>>
>>
>>
>>
>> On Mon, Jun 18, 2012 at 3:20 PM, sasinda rukshan <
>> [email protected]> wrote:
>>
>>> Hi Thomas,
>>>
>>>
>>
>>> ---------- Forwarded message ----------
>>> From: Thomas Mortagne <[email protected]>
>>> Date: Mon, Jun 18, 2012 at 3:08 PM
>>> Subject: Re: [xwiki-devs] Fwd: [GSoc] XDroid Platform
>>> To: [email protected], XWiki Developers <[email protected]>
>>>
>>>
>>> On Mon, Jun 18, 2012 at 11:30 AM, sasinda rukshan
>>> <[email protected]> wrote:
>>> > ---------- Forwarded message ----------
>>> > From: sasinda rukshan <[email protected]>
>>> > Date: Mon, Jun 18, 2012 at 2:56 PM
>>> > Subject: Re: [xwiki-devs] [GSoc] XDroid Platform
>>> > To: XWiki Developers <[email protected]>
>>> >
>>> >
>>> > Hi Thomas,
>>> >
>>> > Thanks for the explanations.
>>> > The methods toXML , toEmbedXML are wrong.It was just an idea that came
>>> up
>>> > without much thinking. I will use a separate model
>>> > converter.(xwikitTosimpleModelConverter implements ModelConverter like
>>> > thing). So the model objects don't know about it at all.
>>> > By what you ment by "user" I think it is the client app developer is
>>> it?
>>>
>>> Yes I mean the user of the API.
>>>
>>> > you did not mean end user. I never reveal the xml representations to
>>> end
>>> > users.
>>> >
>>> > I came up with a simpler design. I will post diagram later tomorrow.
>>>
>>> Ok, this ASCII art here is not very easy to read ;)
>>>
>>> > To give a brief on it,
>>> > XObject : has protected property List<XProperty>
>>>
>>> A Map<XProperty> would probably make more sense here since each
>>> property as a unique name in an object and you will need to set some
>>> specific property very often.
>>>
>>> > |__XPoperty :<< all objects that can be added as a property of an
>>> objects
>>> > should extend this. Has an attribute list. cancels the
>>> > | property list of XObject
>>> > | |_____XString :
>>> > |__Abstract XDocObject :<< all documents should have an object of
>>> this.
>>> > This is the pages class. Has a object List<XObject>
>>> > | |____XBlog :<< all documents which are blogs should
>>> > have a object of this. This determines the class of the object.
>>> > | but this data is not posted
>>> > anywhere in <link rel="...../class"> . It is just kept for type checks.
>>> > That is like
>>> > | this page should include
>>> > XBlogPost objects.
>>> > |__XBlogPost : <<the BlogPostClass object.
>>> >
>>> > In my view I assume every page has an object of some class. And this
>>> object
>>> > holds the objects which you can get under .../pages/BlogPg1/objects/
>>>
>>> Well not exactly, you don't always have an object. A document can be
>>> just about content. Just a wiki page if you prefer.
>>>
>>> >
>>> > [
>>> > an added advantage:
>>> > I think we can make a ViewEngine to generate android View components
>>> from
>>> > the above model. Since the objects in the page carry rendering
>>> > descriptions.We can make a general model like a browser to
>>> > brows xwiki using generated the views. But the problem is some
>>> features in
>>> > specific spaces like blog do not seem to be totally defined by the
>>> XWiki
>>> > Object model behind them. Also this is just an idea (not suggesting I
>>> do
>>> > for the GSoc).Making it a usable reality is a little challenge.
>>> > ]
>>> >
>>> > So as you said if a document (I think it equivalent to a page) can have
>>> > many class types my assumption fails.
>>> > Why should a document be of multiple classes. I was thinking a page
>>> belongs
>>> > to a class. And the page is an instance of that class. If page can have
>>> > multiple classes my understanding should be wrong. Isn't it?
>>>
>>> I don't understand, what I said is that you can only have one class in
>>> a document but you can have several objects.
>>>
>>> >
>>> > Thanks
>>> > Best Regards
>>> > Sasinda.
>>> >
>>> >
>>> >
>>> >
>>>
>>
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs