Skip to content

Instantly share code, notes, and snippets.

@atommarvel
Last active November 3, 2015 17:50
Show Gist options
  • Save atommarvel/029169b5d0c468e93c16 to your computer and use it in GitHub Desktop.
Save atommarvel/029169b5d0c468e93c16 to your computer and use it in GitHub Desktop.
addInstagramPosts
public void addInstagramPosts(List<InstagramPost> posts) {
if (posts == null) {
throw new IllegalArgumentException(String.format("Attemping to add a null posts to %s", DATABASE_NAME));
}
// Take a look at the helper methods addImage, addComment, etc as you implement this method
// It's also a good idea to do this work in a transaction
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
try {
for (InstagramPost post : posts) {
ContentValues pValues = new ContentValues();
pValues.put(KEY_POST_MEDIA_ID, post.mediaId);
pValues.put(KEY_POST_CAPTION, post.caption);
pValues.put(KEY_POST_LIKES_COUNT, post.likesCount);
pValues.put(KEY_POST_COMMENTS_COUNT, post.commentsCount);
pValues.put(KEY_POST_CREATED_TIME, post.createdTime);
pValues.put(KEY_POST_USER_ID_FK, addorUpdateUser(post.user));
pValues.put(KEY_POST_IMAGE_ID_FK, addImage(post.image));
long postId = db.insert(TABLE_POSTS, null, pValues);
if (post.comments != null) {
for (InstagramComment comment : post.comments) {
long commentId = addComment(comment, postId);
addPostCommentMapping(postId, commentId);
}
}
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
11-03 09:38:45.794 4617-4617/com.codepath.instagram E/SQLiteLog﹕ (1555) abort at 12 in [INSERT INTO postComments(commentId,postId) VALUES (?,?)]: UNIQUE constraint failed: postComments.postId, postComments.commentId
11-03 09:38:45.795 4617-4617/com.codepath.instagram E/SQLiteDatabase﹕ Error inserting commentId=1 postId=1
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: postComments.postId, postComments.commentId (code 1555)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
at com.codepath.instagram.persistence.InstagramClientDatabase.addPostCommentMapping(InstagramClientDatabase.java:303)
at com.codepath.instagram.persistence.InstagramClientDatabase.addInstagramPosts(InstagramClientDatabase.java:201)
at com.codepath.instagram.fragments.PostsFragment$1.onSuccess(PostsFragment.java:41)
at com.loopj.android.http.JsonHttpResponseHandler$1$1.run(JsonHttpResponseHandler.java:152)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
11-03 09:38:45.796 4617-4617/com.codepath.instagram E/SQLiteLog﹕ (1555) abort at 12 in [INSERT INTO postComments(commentId,postId) VALUES (?,?)]: UNIQUE constraint failed: postComments.postId, postComments.commentId
11-03 09:38:45.797 4617-4617/com.codepath.instagram E/SQLiteDatabase﹕ Error inserting commentId=2 postId=1
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: postComments.postId, postComments.commentId (code 1555)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
at com.codepath.instagram.persistence.InstagramClientDatabase.addPostCommentMapping(InstagramClientDatabase.java:303)
at com.codepath.instagram.persistence.InstagramClientDatabase.addInstagramPosts(InstagramClientDatabase.java:201)
at com.codepath.instagram.fragments.PostsFragment$1.onSuccess(PostsFragment.java:41)
at com.loopj.android.http.JsonHttpResponseHandler$1$1.run(JsonHttpResponseHandler.java:152)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment