/*
* The MIT License (MIT)
*
* Copyright (c) 2014 Devcon Contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.devconmyanmar.apps.devcon.utils;
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.devconmyanmar.apps.devcon.db.MyScheduleDao;
import org.devconmyanmar.apps.devcon.db.SpeakerDao;
import org.devconmyanmar.apps.devcon.db.SponsorDao;
import org.devconmyanmar.apps.devcon.db.TalkDao;
import org.devconmyanmar.apps.devcon.model.MySchedule;
import org.devconmyanmar.apps.devcon.model.Speaker;
import org.devconmyanmar.apps.devcon.model.Sponsor;
import org.devconmyanmar.apps.devcon.model.Talk;
import static org.devconmyanmar.apps.devcon.utils.LogUtils.LOGD;
import static org.devconmyanmar.apps.devcon.utils.LogUtils.makeLogTag;
/**
* Created by Ye Lin Aung on 14/10/14.
*/
public class DataUtils {
private static final String TAG = makeLogTag(DataUtils.class);
private Context mContext;
private SpeakerDao mSpeakerDao;
private TalkDao mTalkDao;
private MyScheduleDao mFavDao;
private SponsorDao mSponsorDao;
private Gson gson = new Gson();
public DataUtils(Context context) {
this.mContext = context;
mSpeakerDao = new SpeakerDao(mContext);
mTalkDao = new TalkDao(mContext);
mFavDao = new MyScheduleDao(mContext);
mSponsorDao = new SponsorDao(mContext);
}
public void loadFromAssets() {
try {
InputStream json = mContext.getAssets().open("bootstrapdata.json");
JsonParser parser = new JsonParser();
JsonReader reader = new JsonReader(new InputStreamReader(json));
reader.setLenient(true);
JsonObject data = parser.parse(reader).getAsJsonObject();
JsonArray sessionsArray = data.getAsJsonArray("sessions");
JsonArray speakerArray = data.getAsJsonArray("speakers");
JsonArray favArray = data.getAsJsonArray("my_schedules");
LOGD(TAG, "sessions : " + sessionsArray.size());
LOGD(TAG, "speakers : " + speakerArray.size());
LOGD(TAG, "my_schedules : " + favArray.size());
for (JsonElement k : speakerArray) {
Speaker speaker = gson.fromJson(k, Speaker.class);
mSpeakerDao.create(speaker);
}
for (JsonElement j : sessionsArray) {
Talk talk = new Talk();
talk.setId(j.getAsJsonObject().get("id").getAsInt());
talk.setTitle(j.getAsJsonObject().get("title").getAsString());
talk.setDescription(j.getAsJsonObject().get("description").getAsString());
talk.setPhoto(j.getAsJsonObject().get("photo").getAsString());
talk.setDate(j.getAsJsonObject().get("date").getAsString());
talk.setFavourite(j.getAsJsonObject().get("favourite").getAsBoolean());
talk.setTalk_type(j.getAsJsonObject().get("talk_type").getAsInt());
talk.setRoom(j.getAsJsonObject().get("room").getAsString());
talk.setFrom_time(j.getAsJsonObject().get("from_time").getAsString());
talk.setTo_time(j.getAsJsonObject().get("to_time").getAsString());
JsonArray speakers = j.getAsJsonObject().getAsJsonArray("speakers");
talk.setSpeakers(speakers.toString());
mTalkDao.create(talk);
}
for (JsonElement l : favArray) {
MySchedule mySchedule = new MySchedule();
mySchedule.setTitle(l.getAsJsonObject().get("title").getAsString());
mySchedule.setSubTitle(l.getAsJsonObject().get("sub_title").getAsString());
mySchedule.setStart(l.getAsJsonObject().get("start").getAsString());
mySchedule.setEnd(l.getAsJsonObject().get("end").getAsString());
mySchedule.setClickBlock(l.getAsJsonObject().get("click_block").getAsBoolean());
mySchedule.setDate(l.getAsJsonObject().get("date").getAsInt());
mySchedule.setId(l.getAsJsonObject().get("id").getAsInt());
JsonArray talkIds = l.getAsJsonObject().getAsJsonArray("associated_talk");
mySchedule.setAssociatedTalkId(talkIds.toString());
mySchedule.setHasFavorite(false);
mySchedule.setFavoriteTalkId(0);
mFavDao.create(mySchedule);
}
InputStream sponsorJson = mContext.getAssets().open("sponsors.json");
JsonParser sponsorParser = new JsonParser();
JsonReader sponsorReader = new JsonReader(new InputStreamReader(sponsorJson));
reader.setLenient(true);
JsonObject sponsorData = sponsorParser.parse(sponsorReader).getAsJsonObject();
JsonArray sponsorArray = sponsorData.getAsJsonArray("sponsors");
for (JsonElement k : sponsorArray) {
Sponsor sponsor = gson.fromJson(k, Sponsor.class);
mSponsorDao.create(sponsor);
}
LOGD(TAG, "I am done ~ ");
} catch (IOException e) {
e.printStackTrace();
}
}
}