I use Retrofit library for getting and parsing JSON from server. All methods I run in MainActivity when Application is starting. And I have trouble when I check is Object(parsed from JSON) already exist in Data Base or not. Application is not responsing. What can I do?
here is methods from MainActivity:
final MYDBHelperFromApi DBHelperAPI = new MYDBHelperFromApi(this);
MYapi myapi = (MYapi) new Builder().setLogLevel(LogLevel.FULL).setEndpoint(MYurl.BASE_URL).build().create(MYapi.class);
myapi.getAsanas(new Callback<Asanas>() {
public void success(Asanas asanas,
Response response) {
DBHelperAPI.addAsanas(asanas);
List<Integer> listDB = DBHelperAPI.getAsanasIds();
DBHelperAPI.checkForDeletedAsanas(asanas, listDB);
for (AsanaPOJO a : asanas.getAsanas()) {
Log.d("AsanaPROGRAM LOGS", BuildConfig.FLAVOR + a.getName());
}
}
public void failure(RetrofitError error) {
Log.d("FAILURE", "Failure");
}
});
myapi.getPrograms(new Callback<Programs>() {
@Override
public void success(Programs programs, Response response) {
DBHelperAPI.addPrograms(programs);
for (ProgramPOJO p : programs.getPrograms()) {
Log.d("PROGRAMs LOGS", BuildConfig.FLAVOR + p.getName());
}
}
@Override
public void failure(RetrofitError error) {
}
});
and methods from DBhelper:
public void addPrograms(Programs programs){
open();
ContentValues values = new ContentValues();
for (ProgramPOJO p : programs.getPrograms()) {
values.put(KEY_ID,p.getId());
values.put(KEY_DURATION,p.getDuration());
values.put(KEY_MAX_AGE,p.getMax_age());
values.put(KEY_MIN_AGE,p.getMin_age());
values.put(KEY_ISPAID,p.checkBool(p.getIs_paid()));
values.put(KEY_IS_QUICK_RECEIPT,p.checkBool(p.getIs_quick_receipt()));
values.put(KEY_BACKGROUND_SOUND_ID,p.getBackground_sound_id());
values.put(KEY_IMGLARGE,p.getImgLarge());
values.put(KEY_IMGTHUMB,p.getImgThumb());
values.put(KEY_NAME,p.getName());
values.put(KEY_GOAL_ID,p.getGoal_id());
values.put(KEY_LEVEL_ID,p.getLevel_id());
values.put(KEY_OLDPK,p.getOld_pk());
if (checkById(TABLE_PROGRAMS, KEY_ID, p.getId())) {
Log.d("LOGSPROGRAMOnly", " allready exist");
} else {
this.dbase.insert(TABLE_PROGRAMS, null, values);
Log.d("LOGSPROGRAMOnly", p.getName() + " added");
}
for (Poses poses :p.getPoses()){
ContentValues valuesForPose = new ContentValues();
valuesForPose.put(KEY_ID,poses.getId());
valuesForPose.put(KEY_POSITION,poses.getPosition());
valuesForPose.put(KEY_DURATION,poses.getDuration());
valuesForPose.put(KEY_VOICE,poses.getVoice());
valuesForPose.put(KEY_ASANA_ID,poses.getAsana_id());
valuesForPose.put(KEY_OLDPK,poses.getOld_pk());
if (checkById(TABLE_POSES, KEY_ID, poses.getId())) {
Log.d("LOGSPose", " allready exist");
} else {
this.dbase.insert(TABLE_POSES, null, valuesForPose);
Log.d("LOGSPose", p.getName() + " added");
}
ContentValues valuesForPoseProgram = new ContentValues();
valuesForPoseProgram.put(KEY_PROGRAM_ID, p.getId());
valuesForPoseProgram.put(KEY_POSE_ID, poses.getId());
if (checkPoseById(p.getId(), poses.getId())) {
Log.d("LOGSPROGRAMPose", " allready exist");
} else {
this.dbase.insert(TABLE_POSES_PROGRAMS, null, valuesForPoseProgram);
Log.d("LOGSPROGRAMPose", p.getName() + " added");
}
}
}
}
public void addAsanas(Asanas asanas) {
open();
ContentValues values = new ContentValues();
for (AsanaPOJO a : asanas.getAsanas()) {
values.put(KEY_ID, Integer.valueOf(a.getId()));
values.put(KEY_NAME, a.getName());
values.put(KEY_IMGLARGE, a.getImgLarge());
values.put(KEY_IMGTHUMB, a.getImgThumb());
values.put(KEY_LEVELID, Integer.valueOf(a.getLevel_id()));
values.put(KEY_TYPEID, Integer.valueOf(a.getType_id()));
values.put(KEY_AUDIO, a.getAudio());
values.put(KEY_TITLEAUDIO, a.getTitle_audio());
values.put(KEY_DURATION, Integer.valueOf(a.getDuration()));
values.put(KEY_SHORTDESC, a.getShortDesc());
values.put(KEY_FULLDESC, a.getFullDesc());
values.put(KEY_PHOTO, a.getPhoto());
values.put(KEY_SANSKRITNAME, a.getSanskrit_name());
values.put(KEY_SANSKRITAUDIOTITLE, a.getSanskrit_audio_title());
values.put(KEY_BREATHINGVIDEO, a.getBreathing_video());
values.put(KEY_ISBREATHING, Integer.valueOf(a.checkBool(a.getIs_breathing())));
values.put(KEY_ISPAID, Integer.valueOf(a.checkBool(a.getIs_paid())));
values.put(KEY_OLDIDENTIFIER, a.getName());
values.put(KEY_OLDPK, a.getName());
values.put(KEY_VIDEO, a.getVideo());
if (checkById(TABLE_ASANAS, KEY_ID, a.getId())) {
Log.d("LOGSASANA", " allready exist");
} else {
this.dbase.insert(TABLE_ASANAS, null, values);
Log.d("LOGSASANA", a.getName() + " added");
}
}
close();
}
public boolean checkById(String TableName, String dbfield, int id){
Cursor cursor = this.dbase.rawQuery("SELECT * FROM " + TableName + " WHERE " + dbfield + " = " + id , null);
if (cursor.getCount() <= 0) {
cursor.close();
return false;
}
cursor.close();
return true;
}
Aucun commentaire:
Enregistrer un commentaire