@@ -635,60 +635,68 @@ class EntryQueries(private val conn: SQLiteConnection) {
635635 return stmt.getColumnNames().indexOf(name)
636636 }
637637
638+ private fun SQLiteStatement.getTextSafe (index : Int ): String? {
639+ return try {
640+ if (index < 0 ) null else getText(index)
641+ } catch (e: NullPointerException ) {
642+ null
643+ }
644+ }
645+
638646 private fun statementToEntriesAdapterRow (stmt : SQLiteStatement ): EntriesAdapterRow {
639647 return EntriesAdapterRow (
640- id = stmt.getText (getColumnIndex(stmt, " id" )),
641- feedId = stmt.getText (getColumnIndex(stmt, " feed_id" )),
648+ id = stmt.getTextSafe (getColumnIndex(stmt, " id" )) ? : " " ,
649+ feedId = stmt.getTextSafe (getColumnIndex(stmt, " feed_id" )) ? : " " ,
642650 extBookmarked = stmt.getInt(getColumnIndex(stmt, " ext_bookmarked" )) == 1 ,
643651 extShowPreviewImages = stmt.getInt(getColumnIndex(stmt, " ext_show_preview_images" )) == 1 ,
644- extOpenGraphImageUrl = stmt.getText (getColumnIndex(stmt, " ext_og_image_url" )),
652+ extOpenGraphImageUrl = stmt.getTextSafe (getColumnIndex(stmt, " ext_og_image_url" )) ? : " " ,
645653 extOpenGraphImageWidth = stmt.getInt(getColumnIndex(stmt, " ext_og_image_width" )),
646654 extOpenGraphImageHeight = stmt.getInt(getColumnIndex(stmt, " ext_og_image_height" )),
647- title = stmt.getText (getColumnIndex(stmt, " title" )),
648- feedTitle = stmt.getText (getColumnIndex(stmt, " feed_title" )),
649- published = OffsetDateTime .parse(stmt.getText (getColumnIndex(stmt, " published" ))),
650- summary = stmt.getText (getColumnIndex(stmt, " summary" )) ? : " " ,
655+ title = stmt.getTextSafe (getColumnIndex(stmt, " title" )) ? : " " ,
656+ feedTitle = stmt.getTextSafe (getColumnIndex(stmt, " feed_title" )) ? : " " ,
657+ published = runCatching { OffsetDateTime .parse(stmt.getTextSafe (getColumnIndex(stmt, " published" ))) }.getOrDefault( OffsetDateTime .now( )),
658+ summary = stmt.getTextSafe (getColumnIndex(stmt, " summary" )) ? : " " ,
651659 extRead = stmt.getInt(getColumnIndex(stmt, " ext_read" )) == 1 ,
652660 extOpenEntriesInBrowser = stmt.getInt(getColumnIndex(stmt, " ext_open_entries_in_browser" )) == 1 ,
653- links = jsonToLinks(stmt.getText (getColumnIndex(stmt, " links" )))
661+ links = jsonToLinks(stmt.getTextSafe (getColumnIndex(stmt, " links" )))
654662 )
655663 }
656664
657665 private fun statementToSelectByQuery (stmt : SQLiteStatement ): SelectByQuery {
658666 return SelectByQuery (
659- id = stmt.getText (0 ),
667+ id = stmt.getTextSafe (0 ) ? : " " ,
660668 extShowPreviewImages = stmt.getInt(1 ) == 1 ,
661- extOpenGraphImageUrl = stmt.getText (2 ),
669+ extOpenGraphImageUrl = stmt.getTextSafe (2 ) ? : " " ,
662670 extOpenGraphImageWidth = stmt.getInt(3 ),
663671 extOpenGraphImageHeight = stmt.getInt(4 ),
664- title = stmt.getText (5 ),
665- feedTitle = stmt.getText (6 ),
666- published = OffsetDateTime .parse(stmt.getText( 7 )),
667- summary = stmt.getText (8 ),
672+ title = stmt.getTextSafe (5 ) ? : " " ,
673+ feedTitle = stmt.getTextSafe (6 ) ? : " " ,
674+ published = runCatching { OffsetDateTime .parse(stmt.getTextSafe( 7 )) }.getOrDefault( OffsetDateTime .now( )),
675+ summary = stmt.getTextSafe (8 ) ? : " " ,
668676 extRead = stmt.getInt(9 ) == 1 ,
669677 extOpenEntriesInBrowser = stmt.getInt(10 ) == 1 ,
670- links = jsonToLinks(stmt.getText (11 ))
678+ links = jsonToLinks(stmt.getTextSafe (11 ))
671679 )
672680 }
673681
674682 private fun statementToEntryWithoutContent (stmt : SQLiteStatement ): EntryWithoutContent {
675683 return EntryWithoutContent (
676- links = jsonToLinks(stmt.getText (0 )),
677- summary = stmt.getText (1 ),
678- id = stmt.getText (2 ),
679- feedId = stmt.getText (3 ),
680- title = stmt.getText (4 ),
681- published = OffsetDateTime .parse(stmt.getText( 5 )),
682- updated = OffsetDateTime .parse(stmt.getText( 6 )),
683- authorName = stmt.getText (7 ),
684+ links = jsonToLinks(stmt.getTextSafe (0 )),
685+ summary = stmt.getTextSafe (1 ),
686+ id = stmt.getTextSafe (2 ) ? : " " ,
687+ feedId = stmt.getTextSafe (3 ) ? : " " ,
688+ title = stmt.getTextSafe (4 ) ? : " " ,
689+ published = runCatching { OffsetDateTime .parse(stmt.getTextSafe( 5 )) }.getOrDefault( OffsetDateTime .now( )),
690+ updated = runCatching { OffsetDateTime .parse(stmt.getTextSafe( 6 )) }.getOrDefault( OffsetDateTime .now( )),
691+ authorName = stmt.getTextSafe (7 ) ? : " " ,
684692 extRead = stmt.getInt(8 ) == 1 ,
685693 extReadSynced = stmt.getInt(9 ) == 1 ,
686694 extBookmarked = stmt.getInt(10 ) == 1 ,
687695 extBookmarkedSynced = stmt.getInt(11 ) == 1 ,
688- extNextcloudGuidHash = stmt.getText (12 ),
689- extCommentsUrl = stmt.getText (13 ),
696+ extNextcloudGuidHash = stmt.getTextSafe (12 ) ? : " " ,
697+ extCommentsUrl = stmt.getTextSafe (13 ) ? : " " ,
690698 extOpenGraphImageChecked = stmt.getInt(14 ) == 1 ,
691- extOpenGraphImageUrl = stmt.getText (15 ),
699+ extOpenGraphImageUrl = stmt.getTextSafe (15 ) ? : " " ,
692700 extOpenGraphImageWidth = stmt.getInt(16 ),
693701 extOpenGraphImageHeight = stmt.getInt(17 )
694702 )
0 commit comments