Grundaufbau der App
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / database / NewsDatabaseHelper.java
1 package de.dhbwloe.campusapp.database;
2
3 import android.content.ContentValues;
4 import android.database.Cursor;
5 import android.database.sqlite.SQLiteDatabase;
6
7 import java.util.ArrayList;
8
9 import de.dhbwloe.campusapp.CampusAppContext;
10 import de.dhbwloe.campusapp.news.NewsItem;
11
12 /**
13  * Created by pk910 on 24.01.2016.
14  */
15 public class NewsDatabaseHelper {
16     private CampusAppContext AppContext;
17     private SQLiteDatabase database;
18
19     public NewsDatabaseHelper(CampusAppContext context, SQLiteDatabase database) {
20         this.database = database;
21         AppContext = context;
22     }
23
24     public void updateNewsItem(NewsItem news) {
25         boolean isExisting = false;
26         String[] whereArgs = new String[] {
27                 news.getSource(),
28                 news.getUniqueId()
29         };
30         Cursor resultSet = database.rawQuery("SELECT ChkSum FROM News WHERE Source = ? AND UniqueId = ?", whereArgs);
31         if(resultSet.moveToFirst()) {
32             long chksum = resultSet.getLong(0);
33             if (news.getChkSum() == chksum)
34                 return; // nothing to update
35             isExisting = true;
36         }
37         resultSet.close();
38
39         if(isExisting) {
40             try {
41                 ContentValues updateValues = new ContentValues();
42                 updateValues.put("ChkSum", news.getChkSum());
43                 updateValues.put("Title", news.getTitle());
44                 updateValues.put("Time", news.getTime());
45                 updateValues.put("Summary", news.getSummary());
46                 updateValues.put("Content", news.getContent());
47                 updateValues.put("Link", news.getLink());
48                 updateValues.put("Categories", news.getCategories());
49
50                 database.update("News", updateValues, "Source = ? AND UniqueId = ?", whereArgs);
51             } catch(Exception e) {
52                 e.printStackTrace();
53             }
54         } else {
55             try {
56                 ContentValues indexValues = new ContentValues();
57                 indexValues.put("Source", news.getSource());
58                 indexValues.put("UniqueId", news.getUniqueId());
59
60                 indexValues.put("ChkSum", news.getChkSum());
61                 indexValues.put("Title", news.getTitle());
62                 indexValues.put("Time", news.getTime());
63                 indexValues.put("Summary", news.getSummary());
64                 indexValues.put("Content", news.getContent());
65                 indexValues.put("Link", news.getLink());
66                 indexValues.put("Categories", news.getCategories());
67
68                 long newId = database.insertOrThrow("News", null, indexValues);
69                 news.setIsNew((int) newId);
70             } catch(Exception e) {
71                 e.printStackTrace();
72             }
73         }
74
75     }
76
77     public NewsItem[] getNewsItems(String source, long timeFrom, long timeTo) {
78         String[] whereArgs = new String[] {
79                 source,
80                 Long.toString(timeFrom),
81                 Long.toString(timeTo)
82         };
83         Cursor resultSet = database.rawQuery("SELECT Id, Source, Time, UniqueId, ChkSum, Title, Summary, Content, Link, Categories FROM News WHERE Source = ? AND Time >= ? AND Time <= ?", whereArgs);
84         ArrayList<NewsItem> results = new ArrayList<NewsItem>();
85         if(resultSet.moveToFirst()) {
86             int[] columnIndexes = {
87                     resultSet.getColumnIndex("Id"),
88                     resultSet.getColumnIndex("Source"),
89                     resultSet.getColumnIndex("Time"),
90                     resultSet.getColumnIndex("UniqueId"),
91                     resultSet.getColumnIndex("ChkSum"),
92                     resultSet.getColumnIndex("Title"),
93                     resultSet.getColumnIndex("Summary"),
94                     resultSet.getColumnIndex("Content"),
95                     resultSet.getColumnIndex("Link"),
96                     resultSet.getColumnIndex("Categories")
97             };
98             do {
99                 NewsItem news = new NewsItem(
100                         resultSet.getInt(columnIndexes[0]), resultSet.getString(columnIndexes[1]),
101                         resultSet.getLong(columnIndexes[2]), resultSet.getString(columnIndexes[3]),
102                         resultSet.getLong(columnIndexes[4]), resultSet.getString(columnIndexes[5]),
103                         resultSet.getString(columnIndexes[6]), resultSet.getString(columnIndexes[7]),
104                         resultSet.getString(columnIndexes[8]), resultSet.getString(columnIndexes[9])
105                 );
106
107                 results.add(news);
108             } while (resultSet.moveToNext());
109         }
110         resultSet.close();
111
112         NewsItem[] resultsArr = new NewsItem[results.size()];
113         resultsArr = results.toArray(resultsArr);
114         return resultsArr;
115     }
116
117 }