I get the data in this form:
{ "duration": 5, "intervals": 60, "time_work_start": 540, "time_work_end": 1080, "lunch_start": 780, "lunch_end": 840, "workweek": { "1": "Понедельник", "2": "Вторник" }, "time_delay": 15 }
The request body looks like this:
public class BodyUserSettings implements Serializable { @SerializedName("duration") @Expose private String duration; @SerializedName("intervals") @Expose private String intervals; @SerializedName("time_work_start") @Expose private String timeWorkStart; @SerializedName("time_work_end") @Expose private String timeWorkEnd; @SerializedName("lunch_start") @Expose private String lunchStart; @SerializedName("lunch_end") @Expose private String lunchEnd; @SerializedName("workweek") @Expose private Workweek workweek; @SerializedName("time_delay") @Expose private String timeDelay; public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public BodyUserSettings withDuration(String duration) { this.duration = duration; return this; } public String getIntervals() { return intervals; } public void setIntervals(String intervals) { this.intervals = intervals; } public BodyUserSettings withIntervals(String intervals) { this.intervals = intervals; return this; } public String getTimeWorkStart() { return timeWorkStart; } public void setTimeWorkStart(String timeWorkStart) { this.timeWorkStart = timeWorkStart; } public BodyUserSettings withTimeWorkStart(String timeWorkStart) { this.timeWorkStart = timeWorkStart; return this; } public String getTimeWorkEnd() { return timeWorkEnd; } public void setTimeWorkEnd(String timeWorkEnd) { this.timeWorkEnd = timeWorkEnd; } public BodyUserSettings withTimeWorkEnd(String timeWorkEnd) { this.timeWorkEnd = timeWorkEnd; return this; } public String getLunchStart() { return lunchStart; } public void setLunchStart(String lunchStart) { this.lunchStart = lunchStart; } public BodyUserSettings withLunchStart(String lunchStart) { this.lunchStart = lunchStart; return this; } public String getLunchEnd() { return lunchEnd; } public void setLunchEnd(String lunchEnd) { this.lunchEnd = lunchEnd; } public BodyUserSettings withLunchEnd(String lunchEnd) { this.lunchEnd = lunchEnd; return this; } public Workweek getWorkweek() { return workweek; } public void setWorkweek(Workweek workweek) { this.workweek = workweek; } public BodyUserSettings withWorkweek(Workweek workweek) { this.workweek = workweek; return this; } public String getTimeDelay() { return timeDelay; } public void setTimeDelay(String timeDelay) { this.timeDelay = timeDelay; } public BodyUserSettings withTimeDelay(String timeDelay) { this.timeDelay = timeDelay; return this; } public class Workweek implements Serializable { @SerializedName("1") @Expose private String _1; @SerializedName("2") @Expose private String _2; public Workweek(String _1, String _2) { super(); this._1 = _1; this._2 = _2; } public String getId() { return _1; } public void setId(String id) { this._1 = id; } public Workweek withId(String _1) { this._1 = _1; return this; } public String getTitle() { return _2; } public void setTitle(String _2) { this._2 = _2; } public Workweek withTitle(String _2) { this._2 = _2; return this; } }
}
POST request:
@POST("/settings") Call<BodyUserSettings> postIdToken(@Body BodyIdToken id_token);
In mainactivity:
private void sendRequestIdTokenToServer() { BodyIdToken hexPost = new BodyIdToken(); hexPost.idToken = mIdToken; Call<BodyUserSettings> call = mService.postIdToken(hexPost); call.enqueue(new Callback<BodyUserSettings>() { @Override public void onResponse(@NonNull Call<BodyUserSettings> call, @NonNull Response<BodyUserSettings> response) { mBodyUserSettings = response.body(); mMainDatabase.saveSettings(mBodyUserSettings); mMainDatabase.saveWorkweekDays(mBodyWorkweek); } @Override public void onFailure(@NonNull Call<BodyUserSettings> call, @NonNull Throwable t) { } }); }
Tables in SQLite:
private final String CREATE_SETTINGS_TABLE = "CREATE TABLE IF NOT EXISTS " + SETTINGS_TABLE + "(" + _id + " INTEGER PRIMARY KEY AUTOINCREMENT," + DURATION + "INTEGER," + INTERVALS + " INTEGER," + TIME_WORK_START + " INTEGER," + TIME_WORK_END + " INTEGER," + LAUNCH_START + " INTEGER," + LAUNCH_END + " INTEGER," + WORKWEEK + " INTEGER," + TIME_DELAY + " INTEGER" + ")"; private final String CREATE_WORKWEEK_TABLE = "CREATE TABLE IF NOT EXISTS " + WORKWEEK_TABLE + "(" + _id + " INTEGER PRIMARY KEY," + ID_DAY + " TEXT," + TITLE_DAY + " TEXT" + ")";
Saving to SQLite
public void saveSettings(BodyUserSettings settings) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(DURATION, settings.getDuration()); cv.put(INTERVALS, settings.getIntervals()); cv.put(TIME_WORK_START, settings.getTimeWorkStart()); cv.put(TIME_WORK_END, settings.getTimeWorkEnd()); cv.put(LAUNCH_START, settings.getLunchStart()); cv.put(LAUNCH_END, settings.getLunchEnd()); cv.put(WORKWEEK, String.valueOf(settings.getWorkweek())); cv.put(TIME_DELAY, settings.getTimeDelay()); db.insert(SETTINGS_TABLE, null, cv); Log.d("LOG_TAG_saveSettings ", "save: " + settings.getDuration() + "; " + settings.getIntervals() + "; " + settings.getTimeWorkStart() + "; " + settings.getTimeWorkEnd() + "; " + settings.getLunchStart() + "; " + settings.getLunchEnd() + "; " + settings.getWorkweek() + "; " + settings.getTimeDelay() + "."); db.close(); } public void saveWorkweekDays(BodyUserSettings.Workweek workweek) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(ID_DAY, workweek.getId()); cv.put(TITLE_DAY, workweek.getTitle()); db.insert(WORKWEEK_TABLE, null, cv); Log.d("LOG_TAG_saveWorkweek", "save " + workweek.getId() + "; " + workweek.getTitle() + "."); db.close(); }
}
And in the end I get the data in this form:
D / LOG_TAG_saveSettings: save: 5; 60; 540; 1080; 780; 840; com.example.myApp.data.network.entities.BodyUserSettings$Workweek@3ed84f07; 15.
I don’t understand how to correctly display data from workweek. Maybe they are generally incorrectly saved. What am I doing wrong?
If you use JSON parsing, how can you save it in SQLite?
toString()
method inpublic class Workweek
? - Farkhod DaniyarovsendRequestIdTokenToServer
for some reason, it seems to me that you need to start savingmMainDatabase.saveWorkweekDays(mBodyWorkweek);
- Farkhod DaniyarovtoString()
or write the contents of the fields to the log. - woesss