Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Storing and comparing against objects from a database

Tags:

java

android

I am working on an android app that loads in a list of students to display in a list based activity. There are two components to the app. There is a server which responds via xml with the list of current active students and a database on the app end which stores theses students with some details (name,age etc). I would like a way to sync these two data sources. When the app starts, I would like to check against the xml to see if students on the server were added/deleted and update the db accordingly.

I would be parsing the xml list into a student object at login. Is there any way to store/retrieve an entire object into an android supported db so I can do a direct comparison to see what to update/delete? It would end up being something like

if (serverStudent[0].name == dbStudent[0].name)
   //overwrite dbStudent object with serverStudent fields

What is the most efficient/lightweight way to achieve object persistance and then comparison in Android?

like image 905
John Baum Avatar asked Oct 05 '22 02:10

John Baum


1 Answers

Here's a method I have used in the past:

Anytime an object in the database is changed, use a timestamp column to store that time. When the app connects on startup, simply check each timestamp in the app db against the timestamp in the server db for each object. If the timestamps match, do nothing. If the timestamps don't match, retrieve the updated record from the server. Make sure you're using a detail enough timestamp (usually down to milli- or micro- seconds).

The nice thing about timestamps is that if you don't want the server data to override the app data, you could look at which is newer and keep that object if they've both been edited. Just adding some additional thoughts!

like image 159
D.R. Avatar answered Oct 16 '22 08:10

D.R.