package model.parsers;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import model.UWDatabaseModel;
import model.daoModels.Book;
import model.daoModels.Version;
/**
* Created by PJ Fechner on 6/22/15.
* Class to parse JSON for Books
*/
public class BookParser extends UWDataParser{
private static final String DESCRIPTION_JSON_KEY = "desc";
private static final String MODIFIED_JSON_KEY = "mod";
private static final String SLUG_JSON_KEY = "slug";
private static final String SOURCE_URL_JSON_KEY = "src";
private static final String SIGNATURE_URL_JSON_KEY = "src_sig";
private static final String TITLE_JSON_KEY = "title";
public static final String MEDIA_JSON_KEY = "media";
public static final String AUDIO_JSON_KEY = "audio";
public static final String VIDEO_JSON_KEY = "video";
public static Book parseBook(JSONObject jsonObject, UWDatabaseModel parent) throws JSONException{
Book newModel = new Book();
newModel.setDescription(jsonObject.getString(DESCRIPTION_JSON_KEY));
newModel.setModified(getDateFromSecondString(jsonObject.getString(MODIFIED_JSON_KEY)));
newModel.setSlug(jsonObject.getString(SLUG_JSON_KEY));
newModel.setUniqueSlug(parent.getUniqueSlug() + newModel.getSlug());
newModel.setSourceUrl(jsonObject.getString(SOURCE_URL_JSON_KEY));
newModel.setSignatureUrl(jsonObject.getString(SIGNATURE_URL_JSON_KEY));
newModel.setTitle(jsonObject.getString(TITLE_JSON_KEY));
newModel.setVersionId(((Version) parent).getId());
return newModel;
}
public static JSONArray getBooksJsonForVersion(Version version) throws JSONException{
JSONArray jsonArray = new JSONArray();
for(Book book : version.getBooks()){
jsonArray.put(getBookAsJson(book));
}
return jsonArray;
}
public static JSONObject getBookAsJson(Book model) throws JSONException{
JSONObject jsonModel = new JSONObject();
jsonModel.put(DESCRIPTION_JSON_KEY, model.getDescription());
jsonModel.put(MODIFIED_JSON_KEY, model.getModified().getTime());
jsonModel.put(SLUG_JSON_KEY, model.getSlug());
jsonModel.put(SOURCE_URL_JSON_KEY, model.getSourceUrl());
jsonModel.put(SIGNATURE_URL_JSON_KEY, model.getSignatureUrl());
jsonModel.put(TITLE_JSON_KEY, model.getTitle());
jsonModel.put(MEDIA_JSON_KEY, getMediaJson(model));
return jsonModel;
}
private static JSONObject getMediaJson(Book model) throws JSONException{
JSONObject jsonModel = new JSONObject();
jsonModel.put(AUDIO_JSON_KEY, AudioBookParser.getAudioBookAsJson(model.getAudioBook()));
jsonModel.put(VIDEO_JSON_KEY, new JSONObject());
return jsonModel;
}
}