1 /* NewsDatabaseHelper.java
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 package de.dhbwloe.campusapp.database;
18 import android.content.ContentValues;
19 import android.database.Cursor;
20 import android.database.sqlite.SQLiteDatabase;
22 import java.util.ArrayList;
24 import de.dhbwloe.campusapp.CampusAppContext;
25 import de.dhbwloe.campusapp.news.NewsItem;
28 * Created by pk910 on 24.01.2016.
30 public class NewsDatabaseHelper {
31 private CampusAppContext AppContext;
32 private SQLiteDatabase database;
34 public NewsDatabaseHelper(CampusAppContext context, SQLiteDatabase database) {
35 this.database = database;
39 public void updateNewsItem(NewsItem news) {
40 boolean isExisting = false;
41 String[] whereArgs = new String[] {
45 Cursor resultSet = database.rawQuery("SELECT ChkSum FROM News WHERE Source = ? AND UniqueId = ?", whereArgs);
46 if(resultSet.moveToFirst()) {
47 long chksum = resultSet.getLong(0);
48 if (news.getChkSum() == chksum)
49 return; // nothing to update
56 ContentValues updateValues = new ContentValues();
57 updateValues.put("ChkSum", news.getChkSum());
58 updateValues.put("Title", news.getTitle());
59 updateValues.put("Time", news.getTime());
60 updateValues.put("Summary", news.getSummary());
61 updateValues.put("Content", news.getContent());
62 updateValues.put("Link", news.getLink());
63 updateValues.put("Categories", news.getCategories());
65 database.update("News", updateValues, "Source = ? AND UniqueId = ?", whereArgs);
66 } catch(Exception e) {
71 ContentValues indexValues = new ContentValues();
72 indexValues.put("Source", news.getSource());
73 indexValues.put("UniqueId", news.getUniqueId());
75 indexValues.put("ChkSum", news.getChkSum());
76 indexValues.put("Title", news.getTitle());
77 indexValues.put("Time", news.getTime());
78 indexValues.put("Summary", news.getSummary());
79 indexValues.put("Content", news.getContent());
80 indexValues.put("Link", news.getLink());
81 indexValues.put("Categories", news.getCategories());
83 long newId = database.insertOrThrow("News", null, indexValues);
84 news.setIsNew((int) newId);
85 } catch(Exception e) {
92 public NewsItem[] getNewsItems(String source, long timeFrom, long timeTo) {
93 String[] whereArgs = new String[] {
95 Long.toString(timeTo),
96 Long.toString(timeFrom)
98 Cursor resultSet = database.rawQuery("SELECT Id, Source, Time, UniqueId, ChkSum, Title, Summary, Content, Link, Categories FROM News WHERE Source = ? AND Time >= ? AND Time <= ?", whereArgs);
99 ArrayList<NewsItem> results = new ArrayList<NewsItem>();
100 if(resultSet.moveToFirst()) {
101 int[] columnIndexes = {
102 resultSet.getColumnIndex("Id"),
103 resultSet.getColumnIndex("Source"),
104 resultSet.getColumnIndex("Time"),
105 resultSet.getColumnIndex("UniqueId"),
106 resultSet.getColumnIndex("ChkSum"),
107 resultSet.getColumnIndex("Title"),
108 resultSet.getColumnIndex("Summary"),
109 resultSet.getColumnIndex("Content"),
110 resultSet.getColumnIndex("Link"),
111 resultSet.getColumnIndex("Categories")
114 NewsItem news = new NewsItem(
115 resultSet.getInt(columnIndexes[0]), resultSet.getString(columnIndexes[1]),
116 resultSet.getLong(columnIndexes[2]), resultSet.getString(columnIndexes[3]),
117 resultSet.getLong(columnIndexes[4]), resultSet.getString(columnIndexes[5]),
118 resultSet.getString(columnIndexes[6]), resultSet.getString(columnIndexes[7]),
119 resultSet.getString(columnIndexes[8]), resultSet.getString(columnIndexes[9])
123 } while (resultSet.moveToNext());
127 NewsItem[] resultsArr = new NewsItem[results.size()];
128 resultsArr = results.toArray(resultsArr);