From 0e90b61ed93de5b7d14f6fd9f7d6822cf75716c0 Mon Sep 17 00:00:00 2001 From: Maulana Wisnu <wisnu1291@gmail.com> Date: Wed, 26 Jul 2017 10:32:22 +0700 Subject: [PATCH 01/21] model and task notification --- .../ac/ui/cs/myui/model/NotificationItem.java | 56 ++++++++++ .../cs/myui/model/NotificationItemTest.java | 104 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java create mode 100644 app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java new file mode 100644 index 00000000..e090b50d --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java @@ -0,0 +1,56 @@ +package id.ac.ui.cs.myui.model; + +/** + * Created by maulana.wisnu on 26/07/17. + */ + +public class NotificationItem { + private static final String TIPE_NEWS = "news"; + private static final String TIPE_CALENDAR = "calendar"; + String title; + String description; + String type; + String date; + + public NotificationItem(String title, String description, String type, String date) { + this.title = title; + this.description = description; + this.type = type; + this.date = date; + } + + public NotificationItem() { + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } +} \ No newline at end of file diff --git a/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java new file mode 100644 index 00000000..ca4b530d --- /dev/null +++ b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java @@ -0,0 +1,104 @@ +package id.ac.ui.cs.myui.model; + +import org.junit.Before; +import org.junit.Test; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; + +/** + * Created by maulana.wisnu on 26/07/17. + */ + +public class NotificationItemTest { + String title; + String description; + String type; + String date; + + String titleReset; + String descriptionReset; + String typeReset; + String dateReset; + + NotificationItem notificationItem; + + + @Before + public void setUp(){ + title = "titleTest"; + description = "descriptionTest"; + type = "typeTest"; + date = "dateTest"; + + titleReset = "titleTestReset"; + descriptionReset = "descriptionTestReset"; + typeReset = "typeTestReset"; + dateReset = "dateTestReset"; + + notificationItem = new NotificationItem(title, description, type, date); + + } + + @Test + public void constructor1Test(){ + NotificationItem notificationItem1 = new NotificationItem(title, description, type, date); + assertNotNull(notificationItem1); + } + + @Test + public void constructor2Test(){ + NotificationItem notificationItem2 = new NotificationItem(); + assertNotNull(notificationItem2); + } + + @Test + public void getTitleTest(){ + assertEquals(title, notificationItem.getTitle()); + } + + @Test + public void getDescriptionTest(){ + assertEquals(description, notificationItem.getDescription()); + } + + @Test + public void getTypeTest(){ + assertEquals(type, notificationItem.getType()); + } + + @Test + public void getDateTest(){ + assertEquals(date, notificationItem.getDate()); + } + + @Test + public void setTitleTest(){ + notificationItem.setTitle(titleReset); + assertEquals(titleReset, notificationItem.getTitle()); + + } + + @Test + public void setDescriptionTest(){ + notificationItem.setDescription(descriptionReset); + assertEquals(descriptionReset, notificationItem.getDescription()); + } + + @Test + public void setTypeTest(){ + notificationItem.setType(typeReset); + assertEquals(typeReset, notificationItem.getType()); + } + + @Test + public void setDateTest(){ + notificationItem.setDate(dateReset); + assertEquals(dateReset, notificationItem.getDate()); + + } + + + + +} -- GitLab From 6c3b9c4d7bf5f66f14fdfc50c9f8ab2f5451ff88 Mon Sep 17 00:00:00 2001 From: Maulana Wisnu <wisnu1291@gmail.com> Date: Wed, 26 Jul 2017 10:33:41 +0700 Subject: [PATCH 02/21] model and task notification Ina-Wisnu --- app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java | 2 +- .../test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java index e090b50d..2114098a 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java +++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java @@ -1,7 +1,7 @@ package id.ac.ui.cs.myui.model; /** - * Created by maulana.wisnu on 26/07/17. + * Created by maulana.wisnu & ina sakinah on 26/07/17. */ public class NotificationItem { diff --git a/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java index ca4b530d..1599581e 100644 --- a/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java +++ b/app/src/test/java/id/ac/ui/cs/myui/model/NotificationItemTest.java @@ -7,7 +7,7 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; /** - * Created by maulana.wisnu on 26/07/17. + * Created by maulana.wisnu & ina sakinah on 26/07/17. */ public class NotificationItemTest { -- GitLab From 006922d0e37d2a75c16767abe34cf02e7b0c6c41 Mon Sep 17 00:00:00 2001 From: ayuannisa <ayunisa.annisa@gmail.com> Date: Wed, 26 Jul 2017 10:39:19 +0700 Subject: [PATCH 03/21] Add NotificationActivity and NotificationTask (Ivan, Ayu) --- .../myui/activity/NotificationActivity.java | 43 ++++++ .../ac/ui/cs/myui/task/NotificationTask.java | 125 ++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java create mode 100644 app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java new file mode 100644 index 00000000..b4c486e0 --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java @@ -0,0 +1,43 @@ +package id.ac.ui.cs.myui.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.FrameLayout; + +import com.crashlytics.android.Crashlytics; + +import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.task.NotificationTask; +import io.fabric.sdk.android.Fabric; + +/** + * Created by ayu.annisa41 and muhammad.ivan41 on 26/07/17. + */ + +public class NotificationActivity extends DrawerActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Fabric.with(this, new Crashlytics()); + setTitle("Notifications"); + //setContentView(R.layout.activity_news_home); + + //id nya diganti disesuaikan dengan layout notification + FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml + getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout); + + + new NotificationTask(this).execute(); + + } + + @Override + public void onBackPressed() { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + + } +} diff --git a/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java new file mode 100644 index 00000000..4cfbe299 --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java @@ -0,0 +1,125 @@ +package id.ac.ui.cs.myui.task; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; + +import java.io.IOException; +import java.util.ArrayList; + +import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.activity.NewsDetailActivity; +import id.ac.ui.cs.myui.adapter.NewsAdapter; +import id.ac.ui.cs.myui.database.DatabaseHandler; +import id.ac.ui.cs.myui.model.ItemNews; +import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.model.NewsScele; +import id.ac.ui.cs.myui.service.NewsService; +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.simplexml.SimpleXmlConverterFactory; + +/** + * Created by ayu.annisa41 and muhammad.ivan41 on 26/07/17. + */ + +public class NotificationTask extends AsyncTask<Object,Object,ArrayList<News>> { + private Context context; + private DatabaseHandler dbhandler; + + public NotificationTask(Context context) { + this.context = context; + this.dbhandler = new DatabaseHandler(context); + } + + @Override + protected ArrayList<News> doInBackground(Object... objects) { + Retrofit client = new Retrofit.Builder() + .baseUrl("https://scele.cs.ui.ac.id/") + .addConverterFactory(SimpleXmlConverterFactory.create()) + .build(); + + NewsService service = client.create(NewsService.class); + + Call<NewsScele> call = service.listNewsScele(); + + Response<NewsScele> posts = null; + + + try { + posts = call.execute(); + + ArrayList<ItemNews> itemNews = posts.body().getChannel().item; + + ArrayList<News> news = new ArrayList<>(); + + + for (int i=0; i<itemNews.size(); i++){ + String title = itemNews.get(i).getTitle(); + String desc = itemNews.get(i).getContent(); + String link = itemNews.get(i).getLink(); + String date = itemNews.get(i).getPubdate(); + String author = itemNews.get(i).getAuthor(); + + if (dbhandler.findNews(title)) { + break; + } else { + news.add(new News(title, desc, link, date, author)); + + } + Log.d("newsfeed", news.toString()+"news"); + } + + return news; + + } catch (IOException e) { + e.printStackTrace(); + } + + return new ArrayList<News>(); + + } + + @Override + protected void onPostExecute(ArrayList<News> newsSceles) { + Activity newsHome = (Activity) context; + final ListView listView = (ListView) newsHome.findViewById(R.id.list_news); + if(newsSceles.size()!=0){ + dbhandler.insertNewsItem(newsSceles); + } + + ArrayList<News> listMenuItems = dbhandler.getAllNews(); + + + final NewsAdapter listMenuAdapter = new NewsAdapter(context, R.layout.news_item_layout, listMenuItems); + listView.setAdapter(listMenuAdapter); + final Intent intent = new Intent(context, NewsDetailActivity.class); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { + String title = listMenuAdapter.getItem(i).getTitle(); + String description = listMenuAdapter.getItem(i).getDescription(); + String date = listMenuAdapter.getItem(i).getDate(); + String author = listMenuAdapter.getItem(i).getAuthor(); + String link = listMenuAdapter.getItem(i).getLink(); + intent.putExtra("Description", description); + intent.putExtra("Date", date); + intent.putExtra("Author", author); + intent.putExtra("Title", title); + intent.putExtra("link", link); + intent.putExtra("contextParent", "newsHome"); + + context.startActivity(intent); + } + }); + + + } +} -- GitLab From 3fc4253445696940632c49f394d77fd0e14a47ef Mon Sep 17 00:00:00 2001 From: ayuannisa <ayunisa.annisa@gmail.com> Date: Wed, 26 Jul 2017 10:55:35 +0700 Subject: [PATCH 04/21] Add NotificationSchema and edit NotificationItem, DatabaseHandler (Ivan, Ayu) --- .../ui/cs/myui/database/DatabaseHandler.java | 29 +++++++++++++++---- .../ac/ui/cs/myui/model/NotificationItem.java | 7 ++--- .../ui/cs/myui/schema/NotificationSchema.java | 19 ++++++++++++ 3 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index 23569b3b..de06d1ce 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -20,6 +20,7 @@ import id.ac.ui.cs.myui.model.CalendarItem; import id.ac.ui.cs.myui.model.News; import id.ac.ui.cs.myui.schema.CalendarSchema; import id.ac.ui.cs.myui.schema.NewsSchema; +import id.ac.ui.cs.myui.schema.NotificationSchema; /** * Created by muhammad.ghozi41 on 18/07/17. @@ -69,6 +70,17 @@ public class DatabaseHandler extends SQLiteOpenHelper { private static final String SQL_DROP_TABLE = "DROP TABLE IF EXIST " + CalendarSchema.CalendarTable.TABLE_NAME; + private static final String SQL_CREATE_NOTIFICATIONS_TABLE = + "CREATE TABLE " + NotificationSchema.NotificationTable.TABLE_NAME + "(" + + NotificationSchema.NotificationTable._ID + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "+ + NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + " TEXT, " + + NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION + " TEXT, " + + NotificationSchema.NotificationTable.COLUMN_NAME_DATE + " TEXT, " + + NotificationSchema.NotificationTable.COLUMN_NAME_TYPE + " TEXT)"; + + private static final String SQL_DROP_NOTIFICATIONS_TABLE = + "DROP TABLE IF EXIST " + NotificationSchema.NotificationTable.TABLE_NAME; + private SQLiteDatabase db; private String databasePath; @@ -86,6 +98,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_NEWS_TABLE); db.execSQL(SQL_SCHEDULE_TABLE); + db.execSQL(SQL_CREATE_NOTIFICATIONS_TABLE); Log.d("buatdb","buat db"); } @@ -93,8 +106,10 @@ public class DatabaseHandler extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - //Drop User Table if exist + //Drop User Table if exists db.execSQL(DROP_NEWS_TABLE); + db.execSQL(SQL_DROP_TABLE); //punya table schedule + db.execSQL(SQL_DROP_NOTIFICATIONS_TABLE); // Create tables again onCreate(db); @@ -114,15 +129,19 @@ public class DatabaseHandler extends SQLiteOpenHelper { if(!checkTable(CalendarSchema.CalendarTable.TABLE_NAME)) { Log.d("DEBUG", "Table is not exist, create new one"); db.execSQL(SQL_SCHEDULE_TABLE); - } - else + } else + Log.d("DEBUG", "Table exists"); + + if(!checkTable(NotificationSchema.NotificationTable.TABLE_NAME)) { + Log.d("DEBUG", "Table is not exist, create new one"); + db.execSQL(SQL_CREATE_NOTIFICATIONS_TABLE); + } else Log.d("DEBUG", "Table exists"); if(!checkTable(TABLE_NEWS)) { Log.d("DEBUG", "Table is not exist, create new one"); db.execSQL(CREATE_NEWS_TABLE); - } - else + } else Log.d("DEBUG", "Table exists"); } diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java index 2114098a..323cbe9b 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java +++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java @@ -5,8 +5,8 @@ package id.ac.ui.cs.myui.model; */ public class NotificationItem { - private static final String TIPE_NEWS = "news"; - private static final String TIPE_CALENDAR = "calendar"; + private static final String NEWS_TYPE = "news"; + private static final String CALENDAR_TYPE = "calendar"; String title; String description; String type; @@ -19,8 +19,7 @@ public class NotificationItem { this.date = date; } - public NotificationItem() { - } + public NotificationItem() { } public String getTitle() { return title; diff --git a/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java new file mode 100644 index 00000000..7be3263d --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java @@ -0,0 +1,19 @@ +package id.ac.ui.cs.myui.schema; + +import android.provider.BaseColumns; + +/** + * Created by ayu.annisa41 on 26/07/17. + */ + +public class NotificationSchema { + private NotificationSchema() {} + + public static class NotificationTable implements BaseColumns { + public static final String TABLE_NAME = "notifications_item"; + public static final String COLUMN_NAME_TITLE = "title"; + public static final String COLUMN_NAME_DESCRIPTION = "description"; + public static final String COLUMN_NAME_TYPE = "type"; + public static final String COLUMN_NAME_DATE = "date"; + } +} -- GitLab From 22551ca40e7512f77f514f62f07e6593955f3ddb Mon Sep 17 00:00:00 2001 From: ayuannisa <ayunisa.annisa@gmail.com> Date: Wed, 26 Jul 2017 11:07:48 +0700 Subject: [PATCH 05/21] Add addNotification function in DatabaseHandler (Ivan, Ayu) --- .../id/ac/ui/cs/myui/database/DatabaseHandler.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index de06d1ce..bdfa14cf 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -18,6 +18,7 @@ import java.util.List; import id.ac.ui.cs.myui.model.CalendarItem; import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.model.NotificationItem; import id.ac.ui.cs.myui.schema.CalendarSchema; import id.ac.ui.cs.myui.schema.NewsSchema; import id.ac.ui.cs.myui.schema.NotificationSchema; @@ -515,7 +516,18 @@ public class DatabaseHandler extends SQLiteOpenHelper { return counter; } + public void addNotification(NotificationItem notificationItem) { + SQLiteDatabase db = this.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, notificationItem.getTitle()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION, notificationItem.getDescription()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, notificationItem.getDate()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, notificationItem.getType()); + // Inserting Row + db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values); + db.close(); + } } -- GitLab From 4e75f0e7ebb0f0daea0359e34b1191b6c9d8af96 Mon Sep 17 00:00:00 2001 From: ayuannisa <ayunisa.annisa@gmail.com> Date: Wed, 26 Jul 2017 11:42:04 +0700 Subject: [PATCH 06/21] Add addAllNotification and getAllNotification function in DatabaseHandler (Ivan, Ayu) --- .../ui/cs/myui/database/DatabaseHandler.java | 41 ++++++++++++++++--- .../cs/myui/database/DatabaseHandlerTest.java | 5 +++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index bdfa14cf..1b894fee 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -207,7 +207,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { // DONE // Insert a News into databse public void addNews(News news){ - SQLiteDatabase db = this.getWritableDatabase(); + db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, news.getTitle()); @@ -226,8 +226,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { // DONE // Set bookmark on a News public void setBookmark(News news){ - - SQLiteDatabase db = this.getWritableDatabase(); + db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_BOOKMARKED, 1); @@ -242,7 +241,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { } public void deleteBookmark(News news){ - SQLiteDatabase db = this.getWritableDatabase(); + db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_BOOKMARKED, 0); @@ -258,7 +257,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { // DONE // Update bookmark on a News public void updateBookmark(News news){ - SQLiteDatabase db = this.getWritableDatabase(); + db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, news.getTitle()); @@ -530,4 +529,36 @@ public class DatabaseHandler extends SQLiteOpenHelper { db.close(); } + public void addAllNotification(List<NotificationItem> notificationItems) { + for (NotificationItem item : notificationItems) { + addNotification(item); + } + } + + public List<NotificationItem> getAllNotification() { + db = this.getReadableDatabase(); + List<NotificationItem> notificationItemList = new ArrayList<NotificationItem>(); + String query = "SELECT * FROM "+ NotificationSchema.NotificationTable.TABLE_NAME; + Cursor cur = db.rawQuery(query, null); + Log.d("DEBUG ALL PARENT", "Total Menu = "+cur.getCount()); + if(cur.getCount() > 0) { + if(cur.moveToFirst()) { + Log.i("tes", "masuk ke 1"); + while(!cur.isAfterLast()) { + + NotificationItem item = new NotificationItem(); + item.setTitle(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE))); + item.setDate(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DATE))); + item.setDescription(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION))); + item.setType(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE))); + notificationItemList.add(item); + cur.moveToNext(); + } + } + } + cur.close(); + db.close(); + return notificationItemList; + } + } diff --git a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java index d32f4138..6f470272 100644 --- a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java +++ b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java @@ -167,4 +167,9 @@ public class DatabaseHandlerTest { assertEquals(true, dbhandler.findNews(news3.getTitle())); } + + @Test + public void addNotificationTest() { + + } } -- GitLab From d44c902ded59bd025e5986a5ef237f3c080b88b9 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 11:58:39 +0700 Subject: [PATCH 07/21] add background service agni&irma --- app/src/main/AndroidManifest.xml | 6 ++ .../ui/cs/myui/activity/CalendarActivity.java | 7 +- .../ui/cs/myui/activity/NewsHomeActivity.java | 59 ++++++++++- .../ui/cs/myui/database/DatabaseHandler.java | 47 +++++++++ .../ac/ui/cs/myui/model/NotificationItem.java | 56 +++++++++++ .../ui/cs/myui/schema/NotificationSchema.java | 23 +++++ .../BackgroundServiceNewsSchedule.java | 55 +++++++++++ .../ac/ui/cs/myui/task/NotificationTask.java | 99 +++++++++++++++++++ 8 files changed, 348 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java create mode 100644 app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java create mode 100644 app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java create mode 100644 app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c2c8dca6..060e9e42 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,6 +52,12 @@ </intent-filter> </service> + <service + android:name=".service.BackgroundServiceNewsSchedule" + android:enabled="true" + > + </service> + <meta-data android:name="io.fabric.ApiKey" diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java index bedefc76..bed68b1d 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/CalendarActivity.java @@ -3,6 +3,7 @@ package id.ac.ui.cs.myui.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; import android.util.Log; import android.view.View; import android.widget.AdapterView; @@ -12,12 +13,16 @@ import android.widget.ListView; import java.util.ArrayList; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; import id.ac.ui.cs.myui.R; import id.ac.ui.cs.myui.adapter.ListCalendarAdapter; import id.ac.ui.cs.myui.database.DatabaseHandler; import id.ac.ui.cs.myui.model.CalendarItem; +import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule; import id.ac.ui.cs.myui.task.CalendarTask; +import id.ac.ui.cs.myui.task.NewsSceleTask; public class CalendarActivity extends DrawerActivity { @@ -43,8 +48,6 @@ public class CalendarActivity extends DrawerActivity { - - } diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java index 14adbc02..1434759d 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java @@ -4,11 +4,24 @@ import android.content.Intent; import android.os.Bundle; +import android.os.Handler; +import android.view.View; +import android.widget.AdapterView; import android.widget.FrameLayout; +import android.widget.ListView; import com.crashlytics.android.Crashlytics; + +import java.util.ArrayList; +import java.util.Timer; +import java.util.TimerTask; + import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.adapter.NewsAdapter; +import id.ac.ui.cs.myui.database.DatabaseHandler; +import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule; import id.ac.ui.cs.myui.task.NewsSceleTask; import io.fabric.sdk.android.Fabric; @@ -23,9 +36,51 @@ public class NewsHomeActivity extends DrawerActivity { FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout); - - new NewsSceleTask(this).execute(); + final Handler handler = new Handler(); + + TimerTask timertask = new TimerTask() { + @Override + public void run() { + handler.post(new Runnable() { + public void run() { + startService(new Intent(getApplicationContext(), BackgroundServiceNewsSchedule.class)); + } + }); + } + }; + Timer timer = new Timer(); + timer.schedule(timertask, 0, 10000); + + //new NewsSceleTask(this).execute(); + + DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext()); + ArrayList<News> listMenuItems = dbhandler.getAllNews(); + final ListView listView = (ListView) findViewById(R.id.list_news); + + final NewsAdapter listMenuAdapter = new NewsAdapter(NewsHomeActivity.this, R.layout.news_item_layout, listMenuItems); + listView.setAdapter(listMenuAdapter); + final Intent intent = new Intent(NewsHomeActivity.this, NewsDetailActivity.class); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { + String title = listMenuAdapter.getItem(i).getTitle(); + String description = listMenuAdapter.getItem(i).getDescription(); + String date = listMenuAdapter.getItem(i).getDate(); + String author = listMenuAdapter.getItem(i).getAuthor(); + String link = listMenuAdapter.getItem(i).getLink(); + intent.putExtra("Description", description); + intent.putExtra("Date", date); + intent.putExtra("Author", author); + intent.putExtra("Title", title); + intent.putExtra("link", link); + intent.putExtra("contextParent", "newsHome"); + + startActivity(intent); + } + }); + } diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index 23569b3b..84e76c60 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -18,8 +18,10 @@ import java.util.List; import id.ac.ui.cs.myui.model.CalendarItem; import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.model.NotificationItem; import id.ac.ui.cs.myui.schema.CalendarSchema; import id.ac.ui.cs.myui.schema.NewsSchema; +import id.ac.ui.cs.myui.schema.NotificationSchema; /** * Created by muhammad.ghozi41 on 18/07/17. @@ -66,6 +68,13 @@ public class DatabaseHandler extends SQLiteOpenHelper { CalendarSchema.CalendarTable.COLUMN_NAME_EXECUTOR + " TEXT, " + CalendarSchema.CalendarTable.COLUMN_NAME_EVENT_NAME + " TEXT"+")"; + private String CREATE_NOTIFICATION_TABLE = "CREATE TABLE " + NotificationSchema.NotificationTable.TABLE_NAME + + "("+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + " TEXT," + + NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION + " TEXT," + + NotificationSchema.NotificationTable.COLUMN_NAME_DATE + " TEXT," + + NotificationSchema.NotificationTable.COLUMN_NAME_TYPE +" TEXT"+")"; + private static final String SQL_DROP_TABLE = "DROP TABLE IF EXIST " + CalendarSchema.CalendarTable.TABLE_NAME; @@ -85,6 +94,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_NEWS_TABLE); + db.execSQL(CREATE_NOTIFICATION_TABLE); db.execSQL(SQL_SCHEDULE_TABLE); Log.d("buatdb","buat db"); } @@ -287,9 +297,11 @@ public class DatabaseHandler extends SQLiteOpenHelper { List<News> currNewsList= getAllNews(); for (News currNews : currNewsList) { if (currNews.getTitle().equalsIgnoreCase(title)) { + Log.d("newsnotif","true"+currNewsList.size()); return true; } } + Log.d("newsnotif","false"); return false; } @@ -497,6 +509,41 @@ public class DatabaseHandler extends SQLiteOpenHelper { } + // Insert a News into databse + public void addNotification(NotificationItem item){ + SQLiteDatabase db = this.getWritableDatabase(); + + ContentValues values = new ContentValues(); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, item.getTitle()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION , item.getDescription()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, item.getDate()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, item.getType()); + + // Inserting Row + db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values); + db.close(); + } + + public int getSizeNotificationDB (){ + db = this.getReadableDatabase(); + int counter =0; + + Cursor c = db.rawQuery("SELECT * FROM notification_item", null); + if(c.moveToFirst()){ + do{ + //assing values + String column1 = c.getString(0); + //Do something Here with values + counter++; + + + }while(c.moveToNext()); + } + c.close(); + db.close(); + + return counter; + } } diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java new file mode 100644 index 00000000..9c4a64fd --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java @@ -0,0 +1,56 @@ +package id.ac.ui.cs.myui.model; + +/** + * Created by maulana.wisnu & ina sakinah on 26/07/17. + */ + +public class NotificationItem { + public static final String TIPE_NEWS = "news"; + public static final String TIPE_CALENDAR = "calendar"; + String title; + String description; + String type; + String date; + + public NotificationItem(String title, String description, String type, String date) { + this.title = title; + this.description = description; + this.type = type; + this.date = date; + } + + public NotificationItem() { + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } +} \ No newline at end of file diff --git a/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java new file mode 100644 index 00000000..47788fe5 --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java @@ -0,0 +1,23 @@ +package id.ac.ui.cs.myui.schema; + +import android.provider.BaseColumns; + +/** + * Created by agni.wira on 26/07/17. + */ + +public class NotificationSchema { + + public NotificationSchema() { + } + + public static class NotificationTable implements BaseColumns { + public static final String TABLE_NAME = "notification_item"; + public static final String COLUMN_NAME_TITLE = "title"; + public static final String COLUMN_NAME_DESCRIPTION = "description"; + public static final String COLUMN_NAME_DATE = "date"; + public static final String COLUMN_NAME_TYPE = "type"; + + + } +} diff --git a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java new file mode 100644 index 00000000..08c41ce0 --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java @@ -0,0 +1,55 @@ +package id.ac.ui.cs.myui.service; + +import android.app.IntentService; +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Intent; +import android.support.annotation.Nullable; +import android.support.v4.app.NotificationCompat; +import android.util.Log; + +import java.util.Date; + +import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.activity.NewsHomeActivity; +import id.ac.ui.cs.myui.database.DatabaseHandler; +import id.ac.ui.cs.myui.task.NotificationTask; + +/** + * Created by agni.wira dan irma on 26/07/17. + */ + +public class BackgroundServiceNewsSchedule extends IntentService { + + public BackgroundServiceNewsSchedule() { + super("MyService"); + // TODO Auto-generated constructor stub + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Log.d("coba service", new Date().toString()); + Intent notificationIntent = new Intent(this, BackgroundServiceNewsSchedule.class); + DatabaseHandler db = new DatabaseHandler(getApplicationContext()); + + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, + notificationIntent, 0); + + Notification notification = new NotificationCompat.Builder(this) + .setSmallIcon(R.mipmap.ic_launcher) + .setContentTitle("My Awesome App") + .setContentText(db.getSizeNotificationDB()+"") + .setContentIntent(pendingIntent).build(); + startForeground(1337, notification); + + new NotificationTask(getApplicationContext()).execute(); + return START_STICKY; + } + + @Override + protected void onHandleIntent(Intent intent) { + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java new file mode 100644 index 00000000..36e0c32b --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java @@ -0,0 +1,99 @@ +package id.ac.ui.cs.myui.task; + +/** + * Created by agni.wira on 26/07/17. + */ + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; + +import java.io.IOException; +import java.util.ArrayList; + +import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.activity.NewsDetailActivity; +import id.ac.ui.cs.myui.adapter.NewsAdapter; +import id.ac.ui.cs.myui.database.DatabaseHandler; +import id.ac.ui.cs.myui.model.ItemNews; +import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.model.NewsScele; +import id.ac.ui.cs.myui.model.NotificationItem; +import id.ac.ui.cs.myui.service.NewsService; +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.simplexml.SimpleXmlConverterFactory; +/** + * Created by agni.wira on 17/07/17. + */ + +public class NotificationTask extends AsyncTask<Object,Object,ArrayList<News>> { + private Context context; + private DatabaseHandler dbhandler; + + public NotificationTask(Context context) { + this.context = context; + this.dbhandler = new DatabaseHandler(context); + } + + @Override + protected ArrayList<News> doInBackground(Object... objects) { + Retrofit client = new Retrofit.Builder() + .baseUrl("https://scele.cs.ui.ac.id/") + .addConverterFactory(SimpleXmlConverterFactory.create()) + .build(); + + NewsService service = client.create(NewsService.class); + + Call<NewsScele> call = service.listNewsScele(); + + Response<NewsScele> posts = null; + + + try { + posts = call.execute(); + + ArrayList<ItemNews> itemNews = posts.body().getChannel().item; + + ArrayList<News> news = new ArrayList<>(); + + + for (int i=0; i<itemNews.size(); i++){ + String title = itemNews.get(i).getTitle(); + String desc = itemNews.get(i).getContent(); + String link = itemNews.get(i).getLink(); + String date = itemNews.get(i).getPubdate(); + String author = itemNews.get(i).getAuthor(); + + if (!dbhandler.findNews(title)) { + news.add(new News(title, desc, link, date, author)); + dbhandler.addNotification(new NotificationItem(title,desc,NotificationItem.TIPE_NEWS,date)); + Log.d("newsnotif", "insert notif news" + dbhandler.getSizeNotificationDB()); + } + + } + + dbhandler.insertNewsItem(news); + return news; + + } catch (IOException e) { + e.printStackTrace(); + } + + return new ArrayList<News>(); + + } + + @Override + protected void onPostExecute(ArrayList<News> newsSceles) { + + + } +} + -- GitLab From 7403c72a04392889cdfa4ca2e91cd750f5795e96 Mon Sep 17 00:00:00 2001 From: Muhammad Ghozi <ghozi.mghozi@gmail.com> Date: Wed, 26 Jul 2017 13:02:23 +0700 Subject: [PATCH 08/21] fungsi delete -rifki ghozi --- .../ac/ui/cs/myui/database/DatabaseHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index 1b894fee..1e502bd2 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -251,6 +251,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { // db.insert(TABLE_NEWS, null, values); db.update(TABLE_NEWS,values, COLUMN_TITLE + " = '"+news.getTitle()+"'", null); // String "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue; + db.close(); } @@ -560,5 +561,19 @@ public class DatabaseHandler extends SQLiteOpenHelper { db.close(); return notificationItemList; } + public void deleteNotification(List<NotificationItem> notificationItemList){ + db = this.getWritableDatabase(); + for (NotificationItem ni:notificationItemList) { + db.delete(NotificationSchema.NotificationTable.TABLE_NAME,NotificationSchema.NotificationTable.COLUMN_NAME_TITLE +" = '"+ni.getTitle()+"'",null); + } + db.close(); + } + + public void deleteAllNotification(){ + db = this.getWritableDatabase(); + db.execSQL("delete from "+ NotificationSchema.NotificationTable.TABLE_NAME); + db.close(); + } + } -- GitLab From 00b0f40b183b27f25feb00bc4f47b1e7a61eee15 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 13:14:04 +0700 Subject: [PATCH 09/21] add background service notification --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 61 ++++++++++--------- .../ui/cs/myui/activity/NewsHomeActivity.java | 20 ++---- .../ui/cs/myui/activity/SplashActivity.java | 47 ++++++++++++++ .../BackgroundServiceNewsSchedule.java | 10 +-- .../ac/ui/cs/myui/task/NotificationTask.java | 2 + .../res/drawable-xhdpi/background_splash.xml | 14 +++++ app/src/main/res/layout/activity_splash.xml | 9 +++ app/src/main/res/values/styles.xml | 4 ++ 9 files changed, 120 insertions(+), 49 deletions(-) create mode 100644 app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java create mode 100644 app/src/main/res/drawable-xhdpi/background_splash.xml create mode 100644 app/src/main/res/layout/activity_splash.xml diff --git a/app/build.gradle b/app/build.gradle index c625ae84..e8617ea5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -59,7 +59,7 @@ dependencies { exclude group: 'stax', module: 'stax-api' exclude group: 'stax', module: 'stax' } - + compile 'com.android.support:support-annotations:' + rootProject.supportLibVersion; // Force usage of support annotations in the test app, since it is internally used by the runner module. androidTestCompile 'com.android.support:support-annotations:' + rootProject.supportLibVersion; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 060e9e42..3075ce00 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="id.ac.ui.cs.myui"> + <uses-permission android:name="android.permission.INTERNET" /> <application @@ -10,58 +11,60 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - <activity android:name=".activity.LoginActivity" - android:theme="@style/Theme.AppCompat.Light.NoActionBar" - android:fullBackupContent="true"> - </activity> + <activity + android:name=".activity.LoginActivity" + android:fullBackupContent="true" + android:theme="@style/Theme.AppCompat.Light.NoActionBar"></activity> <activity android:name=".activity.HomeActivity" /> <activity android:name=".activity.DetailActivity" /> - <activity android:name=".activity.NewsDetailActivity" - android:label="Detail News"/> - <activity android:name=".activity.NewsHomeActivity" - android:theme="@style/AppTheme.NoActionBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name=".activity.CalendarActivity" + <activity + android:name=".activity.NewsDetailActivity" + android:label="Detail News" /> + <activity + android:name=".activity.NewsHomeActivity" + android:theme="@style/AppTheme.NoActionBar"></activity> + <activity + android:name=".activity.CalendarActivity" android:exported="true" android:theme="@style/AppTheme.NoActionBar"> - - </activity>> - <activity android:name=".activity.CalendarDetailActivity"/> - <activity android:name=".activity.BookmarkNewsActivity" - android:theme="@style/AppTheme.NoActionBar"> </activity> + > + <activity android:name=".activity.CalendarDetailActivity" /> + <activity + android:name=".activity.BookmarkNewsActivity" + android:theme="@style/AppTheme.NoActionBar"></activity> <activity android:name=".activity.DrawerActivity" android:label="@string/title_activity_bookmark" - android:theme="@style/AppTheme.NoActionBar"> - </activity> + android:theme="@style/AppTheme.NoActionBar"></activity> <service android:name=".firebase_notification.MyFirebaseMessagingService"> <intent-filter> - <action android:name="com.google.firebase.MESSAGING_EVENT"/> + <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> - <service android:name=".firebase_notification.FirebaseIDService"> <intent-filter> - <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> + <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> - <service android:name=".service.BackgroundServiceNewsSchedule" - android:enabled="true" - > - </service> - + android:enabled="true"></service> <meta-data android:name="io.fabric.ApiKey" android:value="99acc7a22ccc8b155fab53154477e9752b4604ba" /> + + <activity android:name=".activity.SplashActivity" + android:theme="@style/SplashTheme"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + + </activity> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java index 1434759d..427be67c 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsHomeActivity.java @@ -23,8 +23,11 @@ import id.ac.ui.cs.myui.database.DatabaseHandler; import id.ac.ui.cs.myui.model.News; import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule; import id.ac.ui.cs.myui.task.NewsSceleTask; +import id.ac.ui.cs.myui.task.NotificationTask; import io.fabric.sdk.android.Fabric; - +/** + * modified by agni.wira dan irma on 26/07/17. + */ public class NewsHomeActivity extends DrawerActivity { @Override @@ -37,25 +40,12 @@ public class NewsHomeActivity extends DrawerActivity { FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout); - final Handler handler = new Handler(); - - TimerTask timertask = new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - public void run() { - startService(new Intent(getApplicationContext(), BackgroundServiceNewsSchedule.class)); - } - }); - } - }; - Timer timer = new Timer(); - timer.schedule(timertask, 0, 10000); //new NewsSceleTask(this).execute(); DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext()); ArrayList<News> listMenuItems = dbhandler.getAllNews(); + final ListView listView = (ListView) findViewById(R.id.list_news); final NewsAdapter listMenuAdapter = new NewsAdapter(NewsHomeActivity.this, R.layout.news_item_layout, listMenuItems); diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java new file mode 100644 index 00000000..beb349ea --- /dev/null +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java @@ -0,0 +1,47 @@ +package id.ac.ui.cs.myui.activity; + +import android.content.Intent; +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +import java.util.Timer; +import java.util.TimerTask; + +import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.service.BackgroundServiceNewsSchedule; +/** + * Created by agni.wira dan irma on 26/07/17. + */ +public class SplashActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + Intent intent = new Intent(SplashActivity.this, NewsHomeActivity.class); + startActivity(intent); + finish(); + } + }, 2000); + + + TimerTask timertask = new TimerTask() { + @Override + public void run() { + handler.post(new Runnable() { + public void run() { + startService(new Intent(getApplicationContext(), BackgroundServiceNewsSchedule.class)); + } + }); + } + }; + Timer timer = new Timer(); + timer.schedule(timertask, 0, 10000); + + } +} diff --git a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java index 08c41ce0..2866134a 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java +++ b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java @@ -28,7 +28,9 @@ public class BackgroundServiceNewsSchedule extends IntentService { @Override public int onStartCommand(Intent intent, int flags, int startId) { - Log.d("coba service", new Date().toString()); + + new NotificationTask(getApplicationContext()).execute(); + Intent notificationIntent = new Intent(this, BackgroundServiceNewsSchedule.class); DatabaseHandler db = new DatabaseHandler(getApplicationContext()); @@ -37,12 +39,12 @@ public class BackgroundServiceNewsSchedule extends IntentService { Notification notification = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) - .setContentTitle("My Awesome App") - .setContentText(db.getSizeNotificationDB()+"") + .setContentTitle("Notification MyUI") + .setContentText(db.getSizeNotificationDB()+" notifications") .setContentIntent(pendingIntent).build(); startForeground(1337, notification); - new NotificationTask(getApplicationContext()).execute(); + return START_STICKY; } diff --git a/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java index 36e0c32b..85431607 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java +++ b/app/src/main/java/id/ac/ui/cs/myui/task/NotificationTask.java @@ -36,6 +36,7 @@ import retrofit2.converter.simplexml.SimpleXmlConverterFactory; public class NotificationTask extends AsyncTask<Object,Object,ArrayList<News>> { private Context context; private DatabaseHandler dbhandler; + public static boolean finished =false; public NotificationTask(Context context) { this.context = context; @@ -86,6 +87,7 @@ public class NotificationTask extends AsyncTask<Object,Object,ArrayList<News>> { e.printStackTrace(); } + finished = true; return new ArrayList<News>(); } diff --git a/app/src/main/res/drawable-xhdpi/background_splash.xml b/app/src/main/res/drawable-xhdpi/background_splash.xml new file mode 100644 index 00000000..32402ba8 --- /dev/null +++ b/app/src/main/res/drawable-xhdpi/background_splash.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:drawable="@color/colorAccent"/> + + <item> + <bitmap + android:gravity="center" + android:src="@mipmap/ic_launcher"/> + </item> + +</layer-list> + diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 00000000..239854df --- /dev/null +++ b/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="id.ac.ui.cs.myui.activity.SplashActivity"> + +</android.support.constraint.ConstraintLayout> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 545b9c6d..0ed96a85 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -17,4 +17,8 @@ <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> + <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> + <item name="android:windowBackground">@drawable/background_splash</item> + </style> + </resources> -- GitLab From d1eafaa8a9ae26d6abc073c8dc5b7b51faaa0453 Mon Sep 17 00:00:00 2001 From: EKANARADHIPA DEYNAGAMA DJACARIA - 1406569806 <ekanaradhipad@gmail.com> Date: Wed, 26 Jul 2017 13:14:50 +0700 Subject: [PATCH 10/21] create base for notification test eka, emon --- .../cs/myui/NotificationInstrumentedTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java diff --git a/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java new file mode 100644 index 00000000..f2f7dc54 --- /dev/null +++ b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java @@ -0,0 +1,44 @@ +package id.ac.ui.cs.myui; + +import android.support.test.rule.ActivityTestRule; + +import org.junit.Rule; +import org.junit.Test; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.assertion.ViewAssertions.matches; +import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withId; + + +/** + * Created by ekanaradhipa.d on 26/07/17. + */ + +public class NotificationInstrumentedTest { + + @Rule + public ActivityTestRule<NotificationActivity> mActivityRule = new ActivityTestRule(NotificationActivity.class); + + @Test + public void testNotificationActivity() { + onView(withId(R.id.)).check(matches(isDisplayed())); + onView(withId(R.id.)).check(matches(isDisplayed())); + onView(withId(R.id.)).check(matches(isDisplayed())); + onView(withId(R.id.)).check(matches(isDisplayed())); + onView(withId(R.id.)).check(matches(isDisplayed())); + onView(withId(R.id.)).check(matches(isDisplayed())); + } + + @Test + public void deleteNotification() { + onView(withId(R.id.)).perform(click()); + } + + @Test + public void clickNotification() { + onView(withId(R.id.)).perform(click()); + } + +} -- GitLab From 13847276f076a0967fd989363932b682ff228a23 Mon Sep 17 00:00:00 2001 From: Muhammad Ghozi <ghozi.mghozi@gmail.com> Date: Wed, 26 Jul 2017 13:17:57 +0700 Subject: [PATCH 11/21] -rifki ghozi --- .../ui/cs/myui/database/DatabaseHandler.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index 23569b3b..a007d002 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -496,6 +496,62 @@ public class DatabaseHandler extends SQLiteOpenHelper { return counter; } +<<<<<<< Updated upstream +======= + public void addNotification(NotificationItem notificationItem) { + SQLiteDatabase db = this.getWritableDatabase(); + + ContentValues values = new ContentValues(); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, notificationItem.getTitle()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION, notificationItem.getDescription()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, notificationItem.getDate()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, notificationItem.getType()); + + // Inserting Row + db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values); + db.close(); + } + + public void addAllNotification(List<NotificationItem> notificationItems) { + for (NotificationItem item : notificationItems) { + addNotification(item); + } + } + + public List<NotificationItem> getAllNotification() { + db = this.getReadableDatabase(); + List<NotificationItem> notificationItemList = new ArrayList<NotificationItem>(); + String query = "SELECT * FROM "+ NotificationSchema.NotificationTable.TABLE_NAME; + Cursor cur = db.rawQuery(query, null); + Log.d("DEBUG ALL PARENT", "Total Menu = "+cur.getCount()); + if(cur.getCount() > 0) { + if(cur.moveToFirst()) { + Log.i("tes", "masuk ke 1"); + while(!cur.isAfterLast()) { + + NotificationItem item = new NotificationItem(); + item.setTitle(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE))); + item.setDate(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DATE))); + item.setDescription(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION))); + item.setType(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE))); + notificationItemList.add(item); + cur.moveToNext(); + } + } + } + cur.close(); + db.close(); + return notificationItemList; + } + public void deleteNotification(List<NotificationItem> notificationItemList){ + db = this.getWritableDatabase(); + for (NotificationItem ni:notificationItemList) { + db.delete(NotificationSchema.NotificationTable.TABLE_NAME,NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + +" = '"+ni.getTitle()+"'",null); + } + db.close(); + } +>>>>>>> Stashed changes -- GitLab From 274d823fad725b86e76dfed918a77ea25d6ad6e7 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 13:21:38 +0700 Subject: [PATCH 12/21] merge with userstory calendar agni & irma --- .../ui/cs/myui/database/DatabaseHandler.java | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index cd4d8f94..c7383dd4 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -508,27 +508,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { return counter; } -<<<<<<< Updated upstream -======= - public void addNotification(NotificationItem notificationItem) { - SQLiteDatabase db = this.getWritableDatabase(); - ContentValues values = new ContentValues(); - values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, notificationItem.getTitle()); - values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION, notificationItem.getDescription()); - values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, notificationItem.getDate()); - values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, notificationItem.getType()); - - // Inserting Row - db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values); - db.close(); - } - - public void addAllNotification(List<NotificationItem> notificationItems) { - for (NotificationItem item : notificationItems) { - addNotification(item); - } - } public List<NotificationItem> getAllNotification() { db = this.getReadableDatabase(); @@ -563,7 +543,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { } db.close(); } ->>>>>>> Stashed changes + // Insert a News into databse public void addNotification(NotificationItem item){ -- GitLab From f43117d8fe94fa6d62eb1c477e5ab7b816eafda1 Mon Sep 17 00:00:00 2001 From: Muhammad Ghozi <ghozi.mghozi@gmail.com> Date: Wed, 26 Jul 2017 13:22:36 +0700 Subject: [PATCH 13/21] merge -ghozi rifki --- .../main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index a007d002..07a74ce5 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -496,8 +496,6 @@ public class DatabaseHandler extends SQLiteOpenHelper { return counter; } -<<<<<<< Updated upstream -======= public void addNotification(NotificationItem notificationItem) { SQLiteDatabase db = this.getWritableDatabase(); @@ -551,7 +549,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { } db.close(); } ->>>>>>> Stashed changes + -- GitLab From 0a8621ef5ce97fcd1aac855523d37dec705b9416 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 13:42:00 +0700 Subject: [PATCH 14/21] resolve conflict notification task irma&agni --- .../id/ac/ui/cs/myui/activity/NotificationActivity.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java index b4c486e0..850fb99f 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java @@ -1,12 +1,17 @@ package id.ac.ui.cs.myui.activity; +import android.app.Notification; import android.content.Intent; import android.os.Bundle; import android.widget.FrameLayout; import com.crashlytics.android.Crashlytics; +import java.util.ArrayList; + import id.ac.ui.cs.myui.R; +import id.ac.ui.cs.myui.database.DatabaseHandler; +import id.ac.ui.cs.myui.model.NotificationItem; import id.ac.ui.cs.myui.task.NotificationTask; import io.fabric.sdk.android.Fabric; @@ -27,8 +32,10 @@ public class NotificationActivity extends DrawerActivity { FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_bookmark); //Remember this is the FrameLayout area within your activity_main.xml getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout); + DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext()); + ArrayList<NotificationItem> listMenuItems = (ArrayList) dbhandler.getAllNotification(); + - new NotificationTask(this).execute(); } -- GitLab From b1058de91e0a68fca07dcc55404755e0f2b79131 Mon Sep 17 00:00:00 2001 From: Muhammad Ghozi <ghozi.mghozi@gmail.com> Date: Wed, 26 Jul 2017 13:43:34 +0700 Subject: [PATCH 15/21] add todo delete function -ghozi rifki --- .../ui/cs/myui/database/DatabaseHandler.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index b652a2a7..cb9aaa2a 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -28,8 +28,8 @@ import id.ac.ui.cs.myui.schema.NotificationSchema; */ /** * modified by Agni wira Buana on 24/07/17 15:23. - * modified by M Ivan & Ekanaradhipa on 25/07/17 15:23. - * + * modified by M Ivan & Ekanaradhipa on 25/07/17 + * modifid by M Ghozi & Rifki Adrian on 25/07017 add delete notification */ public class DatabaseHandler extends SQLiteOpenHelper { @@ -576,6 +576,31 @@ public class DatabaseHandler extends SQLiteOpenHelper { db.execSQL("delete from "+ NotificationSchema.NotificationTable.TABLE_NAME); db.close(); } - + // TODO: 26/07/17 check tanggalnya jika sudah lebih dari 3 hari maka hapus dari database +// public void cleanNotification(){ +// db=this.getWritableDatabase(); +// List<NotificationItem> notificationItemList = new ArrayList<NotificationItem>(); +// String query = "SELECT * FROM "+ NotificationSchema.NotificationTable.TABLE_NAME; +// Cursor cur = db.rawQuery(query, null); +// if(cur.getCount() > 0) { +// if(cur.moveToFirst()) { +// +// while(!cur.isAfterLast()) { +// NotificationItem item = new NotificationItem(); +// item.setTitle(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE))); +// item.setDate(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DATE))); +// item.setDescription(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION))); +// item.setType(cur.getString(cur.getColumnIndex(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE))); +// if(item.getDate()- this date > 3){ +// notificationItemList.add(item); +// } +// cur.moveToNext(); +// } +// } +// } +// deleteNotification(notificationItemList); +// cur.close(); +// db.close(); +// } } -- GitLab From 3bce0b63d4667a08f33ed6f09bf06b2993a2692d Mon Sep 17 00:00:00 2001 From: idiotme <meityadianti@gmail.com> Date: Wed, 26 Jul 2017 14:05:55 +0700 Subject: [PATCH 16/21] Adding and fixing database handler test -Haryo&Meitya- --- .../cs/myui/database/DatabaseHandlerTest.java | 148 ++++++++++-------- 1 file changed, 82 insertions(+), 66 deletions(-) diff --git a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java index 6f470272..a3132dfa 100644 --- a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java +++ b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java @@ -1,18 +1,9 @@ package id.ac.ui.cs.myui.database; -import android.app.Activity; -import android.content.Context; -import android.test.RenamingDelegatingContext; -import android.util.Log; - -import junit.framework.Assert; - import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.robolectric.Robolectric; -import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -22,11 +13,9 @@ import java.util.List; import id.ac.ui.cs.myui.BuildConfig; import id.ac.ui.cs.myui.model.CalendarItem; -import id.ac.ui.cs.myui.database.DatabaseHandler; import id.ac.ui.cs.myui.model.News; +import id.ac.ui.cs.myui.model.NotificationItem; -import static android.os.Build.VERSION_CODES.LOLLIPOP; -import static java.security.AccessController.getContext; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; @@ -34,6 +23,8 @@ import static junit.framework.Assert.assertNotNull; * Created by muhammad.ghozi41 on 18/07/17. * * modified by M Ivan & Ekanaradhipa on 25/07/17 15:23. + * + * modified by Haryo & Meitya on 26/07/17 */ @@ -41,23 +32,26 @@ import static junit.framework.Assert.assertNotNull; @Config(constants = BuildConfig.class) public class DatabaseHandlerTest { - DatabaseHandler dbhandler; + /*Modified by haryo-meitya 26/07 */ @Before public void setUp() { - dbhandler = new DatabaseHandler(RuntimeEnvironment.application); - } - @After - public void tearDown(){ + //Setup for notification testing + NotificationItem ni1 = new NotificationItem("test1", "", "", ""); + NotificationItem ni2 = new NotificationItem("test2", "", "", ""); + NotificationItem ni3 = new NotificationItem("test3", "", "", ""); - dbhandler.close(); - } + List<NotificationItem> lni = new ArrayList<NotificationItem>(); + lni.add(ni1); + lni.add(ni2); + lni.add(ni3); - @Test - public void calenderTest(){ + dbhandler.addAllNotification(lni); + + //Setup for calendar testing CalendarItem ci1 = new CalendarItem(1,"","",1,"","test1"); CalendarItem ci2 = new CalendarItem(2,"","",2,"","test2"); CalendarItem ci3 = new CalendarItem(3,"","",3,"","test3"); @@ -68,21 +62,18 @@ public class DatabaseHandlerTest { lci.add(ci3); dbhandler.insertMenu(lci); - assertNotNull(dbhandler.getAllParentMenu()); - List<CalendarItem> dariDatabase = dbhandler.getAllParentMenu(); - assertEquals("test1",dariDatabase.get(0).getEventName()); - assertEquals("test2",dariDatabase.get(1).getEventName()); - assertEquals("test3",dariDatabase.get(2).getEventName()); - } - @Test - public void bookmarkTest(){ + + //Setup for news testing News news1 = new News(); News news2 = new News(); News news3 = new News(); news1.setTitle("test1"); + news1.setLink("linkTest1"); news2.setTitle("test2"); + news2.setLink("linkTest2"); news3.setTitle("test3"); + news3.setLink("linkTest3"); dbhandler.addNews(news1); dbhandler.addNews(news2); @@ -90,6 +81,29 @@ public class DatabaseHandlerTest { dbhandler.setBookmark(news1); dbhandler.setBookmark(news2); dbhandler.setBookmark(news3); + } + + @After + public void tearDown(){ + dbhandler.close(); + } + + /*Modified by haryo-meitya 26/07 */ + @Test + public void calenderTest(){ + assertNotNull(dbhandler.getAllParentMenu()); + List<CalendarItem> dariDatabase = dbhandler.getAllParentMenu(); + assertEquals("test1",dariDatabase.get(0).getEventName()); + assertEquals("test2",dariDatabase.get(1).getEventName()); + assertEquals("test3",dariDatabase.get(2).getEventName()); + } + + /*Modified by haryo-meitya 26/07 */ + @Test + public void bookmarkTest(){ + News news1 = dbhandler.getAllNews().get(0); + News news2 = dbhandler.getAllNews().get(1); + News news3 = dbhandler.getAllNews().get(2); //Test in model: is bookmarked should be true assertEquals(news1.isBookmarked(), true); @@ -103,27 +117,15 @@ public class DatabaseHandlerTest { assertEquals(listBookmark.get(0).getTitle().equals("test1"), true); assertEquals(listBookmark.get(1).getTitle().equals("test2"), true); assertEquals(listBookmark.get(2).getTitle().equals("test3"), true); - } + /*Modified by haryo-meitya 26/07 */ @Test public void unBookmarkTest(){ - News news1 = new News(); - News news2 = new News(); - News news3 = new News(); - - news1.setTitle("test1"); - news1.setLink("linkTest1"); - news2.setTitle("test2"); - news2.setLink("linkTest2"); - news3.setTitle("test3"); - news3.setLink("linkTest3"); + News news1 = dbhandler.getAllNews().get(0); + News news2 = dbhandler.getAllNews().get(1); + News news3 = dbhandler.getAllNews().get(2); - dbhandler.addNews(news1); - dbhandler.addNews(news2); - dbhandler.addNews(news3); - dbhandler.setBookmark(news2); - dbhandler.setBookmark(news3); dbhandler.deleteBookmark(news1); //Test in model: is bookmarked should be true, except news1 @@ -138,38 +140,52 @@ public class DatabaseHandlerTest { assertEquals(listBookmark.get(0).getTitle().equals("test2"), true); assertEquals(listBookmark.get(1).getTitle().equals("test3"), true); dbhandler.updateBookmark(news2); - listBookmark = dbhandler.getAllBookmarkedNews(); - + listBookmark = dbhandler.getAllBookmarkedNews(); assertEquals(listBookmark.size(), 1); } + + /*Modified by haryo-meitya 26/07 */ @Test - public void findNewsTest(){ - News news1 = new News("test1","a","a","a","a"); - News news2 = new News("test2","","","",""); - News news3 = new News("test3","","","",""); - - List<News> newsList = new ArrayList<>(); - newsList.add(news1); - newsList.add(news2); - dbhandler.insertNewsItem(newsList); - List<News> currentList = new ArrayList<>(); -// dbhandler.findNews("tes1t"); + public void successFindNewsTest(){ + News news1 = dbhandler.getAllNews().get(0); + News news2 = dbhandler.getAllNews().get(1); + News news3 = dbhandler.getAllNews().get(2); + assertEquals(true, dbhandler.findNews(news1.getTitle())); - assertEquals(false, dbhandler.findNews(news3.getTitle())); - currentList = dbhandler.getAllNews(); - assertEquals(currentList.size(), 2); - // newsList.add(news3); - dbhandler.addNews(news3); + assertEquals(true, dbhandler.findNews(news2.getTitle())); + assertEquals(true, dbhandler.findNews(news3.getTitle())); - currentList = dbhandler.getAllNews(); - assertEquals(currentList.size(), 3); + } - assertEquals(true, dbhandler.findNews(news3.getTitle())); + /*Modified by haryo-meitya 26/07 */ + @Test + public void failedFindNewsTest() { + News news4 = new News("test4", "", "", "", ""); + assertEquals(false, dbhandler.findNews(news4.getTitle())); } + /*Created by haryo-meitya 26/07 */ @Test public void addNotificationTest() { + assertNotNull(dbhandler.getAllNotification()); + } + /*Created by haryo-meitya 26/07 */ + @Test + public void deleteNotificationTest() { + assertEquals(dbhandler.getAllNotification().size(), 3); + List<NotificationItem> delTarget = new ArrayList<NotificationItem>(); + delTarget.add(dbhandler.getAllNotification().get(0)); + dbhandler.deleteNotification(delTarget); + assertEquals(dbhandler.getAllNotification().size(), 2); + } + + /*Created by haryo-meitya 26/07 */ + @Test + public void deleteAllNotificationTest() { + assertEquals(dbhandler.getAllNotification().size(), 3); + dbhandler.deleteAllNotification(); + assertEquals(dbhandler.getAllNotification().size(), 0); } } -- GitLab From 07f92e946707636ccf2c7c0ead8e611d0ed06d06 Mon Sep 17 00:00:00 2001 From: idiotme <meityadianti@gmail.com> Date: Wed, 26 Jul 2017 14:09:51 +0700 Subject: [PATCH 17/21] Resolved conflict for pushing at userstory -Haryo&Meitya- --- .../id/ac/ui/cs/myui/database/DatabaseHandlerTest.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java index a3132dfa..67b9d309 100644 --- a/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java +++ b/app/src/test/java/id/ac/ui/cs/myui/database/DatabaseHandlerTest.java @@ -44,12 +44,9 @@ public class DatabaseHandlerTest { NotificationItem ni2 = new NotificationItem("test2", "", "", ""); NotificationItem ni3 = new NotificationItem("test3", "", "", ""); - List<NotificationItem> lni = new ArrayList<NotificationItem>(); - lni.add(ni1); - lni.add(ni2); - lni.add(ni3); - - dbhandler.addAllNotification(lni); + dbhandler.addNotification(ni1); + dbhandler.addNotification(ni2); + dbhandler.addNotification(ni3); //Setup for calendar testing CalendarItem ci1 = new CalendarItem(1,"","",1,"","test1"); -- GitLab From 9305b4442c0817384f0f1b3081d256bcca9d41f9 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 14:21:28 +0700 Subject: [PATCH 18/21] add intent on notification agni&irma --- app/src/main/AndroidManifest.xml | 7 ++++++- .../ac/ui/cs/myui/activity/SplashActivity.java | 2 +- .../service/BackgroundServiceNewsSchedule.java | 17 +++++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3075ce00..98b0df6b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,7 +28,12 @@ android:exported="true" android:theme="@style/AppTheme.NoActionBar"> </activity> - > + <activity + android:name=".activity.NotificationActivity" + android:exported="true" + android:theme="@style/AppTheme.NoActionBar"> + </activity> + <activity android:name=".activity.CalendarDetailActivity" /> <activity android:name=".activity.BookmarkNewsActivity" diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java index beb349ea..eca10b20 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/SplashActivity.java @@ -35,7 +35,7 @@ public class SplashActivity extends AppCompatActivity { public void run() { handler.post(new Runnable() { public void run() { - startService(new Intent(getApplicationContext(), BackgroundServiceNewsSchedule.class)); + startService(new Intent(SplashActivity.this, BackgroundServiceNewsSchedule.class)); } }); } diff --git a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java index 2866134a..6d2292d4 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java +++ b/app/src/main/java/id/ac/ui/cs/myui/service/BackgroundServiceNewsSchedule.java @@ -2,7 +2,9 @@ package id.ac.ui.cs.myui.service; import android.app.IntentService; import android.app.Notification; +import android.app.NotificationManager; import android.app.PendingIntent; +import android.content.Context; import android.content.Intent; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; @@ -12,6 +14,7 @@ import java.util.Date; import id.ac.ui.cs.myui.R; import id.ac.ui.cs.myui.activity.NewsHomeActivity; +import id.ac.ui.cs.myui.activity.NotificationActivity; import id.ac.ui.cs.myui.database.DatabaseHandler; import id.ac.ui.cs.myui.task.NotificationTask; @@ -31,18 +34,28 @@ public class BackgroundServiceNewsSchedule extends IntentService { new NotificationTask(getApplicationContext()).execute(); - Intent notificationIntent = new Intent(this, BackgroundServiceNewsSchedule.class); + Intent notificationIntent = new Intent(this, NotificationActivity.class); + notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP + | Intent.FLAG_ACTIVITY_SINGLE_TOP); + DatabaseHandler db = new DatabaseHandler(getApplicationContext()); + NotificationManager notificationManager = (NotificationManager) getApplicationContext() + .getSystemService(Context.NOTIFICATION_SERVICE); + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, - notificationIntent, 0); + notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("Notification MyUI") .setContentText(db.getSizeNotificationDB()+" notifications") .setContentIntent(pendingIntent).build(); + + notification.flags |= Notification.FLAG_AUTO_CANCEL; + startForeground(1337, notification); + //notificationManager.notify(0, notification); return START_STICKY; -- GitLab From 7a090fa8207e26258d87433e511fbbf378e956f9 Mon Sep 17 00:00:00 2001 From: EKANARADHIPA DEYNAGAMA DJACARIA - 1406569806 <ekanaradhipad@gmail.com> Date: Wed, 26 Jul 2017 14:24:28 +0700 Subject: [PATCH 19/21] unfinished instrumented task --- .../cs/myui/NotificationInstrumentedTest.java | 36 +++++++++++-------- .../cs/myui/activity/NewsDetailActivity.java | 7 ++-- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java index f2f7dc54..b878cffc 100644 --- a/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java +++ b/app/src/androidTest/java/id/ac/ui/cs/myui/NotificationInstrumentedTest.java @@ -5,11 +5,16 @@ import android.support.test.rule.ActivityTestRule; import org.junit.Rule; import org.junit.Test; +import id.ac.ui.cs.myui.activity.NotificationActivity; + +import static android.support.test.espresso.Espresso.onData; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.action.ViewActions.swipeLeft; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; +import static org.hamcrest.Matchers.anything; /** @@ -23,22 +28,23 @@ public class NotificationInstrumentedTest { @Test public void testNotificationActivity() { - onView(withId(R.id.)).check(matches(isDisplayed())); - onView(withId(R.id.)).check(matches(isDisplayed())); - onView(withId(R.id.)).check(matches(isDisplayed())); - onView(withId(R.id.)).check(matches(isDisplayed())); - onView(withId(R.id.)).check(matches(isDisplayed())); - onView(withId(R.id.)).check(matches(isDisplayed())); - } +// onView(withId(R.id.)).check(matches(isDisplayed())); +// onView(withId(R.id.)).check(matches(isDisplayed())); +// onView(withId(R.id.)).check(matches(isDisplayed())); +// onView(withId(R.id.)).check(matches(isDisplayed())); +// onView(withId(R.id.)).check(matches(isDisplayed())); +// onView(withId(R.id.)).check(matches(isDisplayed())); - @Test - public void deleteNotification() { - onView(withId(R.id.)).perform(click()); } - @Test - public void clickNotification() { - onView(withId(R.id.)).perform(click()); - } - +// @Test +// public void deleteNotification() { +// onData(anything()).inAdapterView(withId(R.id.list_notification)).atPosition(0).perform(swipeLeft()); +// } +// +// @Test +// public void clickNotification() { +// onView(withId(R.id.)).perform(click()); +// } + } diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java index d5c2aaa8..cb189a44 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java @@ -37,7 +37,7 @@ public class NewsDetailActivity extends AppCompatActivity { ImageButton ibShareWA; DatabaseHandler databaseHandler; - String parent; //Activity that showed before this activity. It can be bookmark activity or news home activity. + String parent = ""; //Activity that showed before this activity. It can be bookmark activity or news home activity. //If former activity was bookmark: parent.equals("bookmark"), otherwise: parent.equals("newsHome"). @Override @@ -55,14 +55,15 @@ public class NewsDetailActivity extends AppCompatActivity { final String author = intent.getStringExtra("Author"); final String title = intent.getStringExtra("Title"); final String link = intent.getStringExtra("link"); - parent = getIntent().getStringExtra("contextParent"); + parent = intent.getStringExtra("contextParent"); + // System.out.println("parent : " + parent); ibShareLine = (ImageButton) findViewById(R.id.button_line); ibShare = (ImageButton) findViewById(R.id.button_share); ibShareWA = (ImageButton) findViewById(R.id.button_wa); - Log.d("desc",description); + //Log.d("desc",description); final TextView pubDate = (TextView) findViewById(R.id.pubdate); final TextView news_title = (TextView) findViewById(R.id.news_title); final TextView news_author = (TextView) findViewById(R.id.news_author); -- GitLab From b95c1a0c081058175a03b15a404009f9ffce8609 Mon Sep 17 00:00:00 2001 From: "agni.wira" <agniwp1@live.com> Date: Wed, 26 Jul 2017 14:37:49 +0700 Subject: [PATCH 20/21] update notification bar agni&irma --- .../myui/activity/NotificationActivity.java | 7 +++++- .../ui/cs/myui/database/DatabaseHandler.java | 24 +++++++++++++++++-- .../ac/ui/cs/myui/model/NotificationItem.java | 10 ++++++++ .../ui/cs/myui/schema/NotificationSchema.java | 1 + 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java index 850fb99f..8d915573 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NotificationActivity.java @@ -33,7 +33,12 @@ public class NotificationActivity extends DrawerActivity { getLayoutInflater().inflate(R.layout.activity_news_home, contentFrameLayout); DatabaseHandler dbhandler = new DatabaseHandler(getApplicationContext()); - ArrayList<NotificationItem> listMenuItems = (ArrayList) dbhandler.getAllNotification(); + ArrayList<NotificationItem> items = (ArrayList) dbhandler.getAllNotification(); + + for(int i=0; i<items.size();i++){ + dbhandler.updateNotification(items.get(i)); + } + diff --git a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java index a319a5f4..498889ad 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java +++ b/app/src/main/java/id/ac/ui/cs/myui/database/DatabaseHandler.java @@ -84,7 +84,8 @@ public class DatabaseHandler extends SQLiteOpenHelper { NotificationSchema.NotificationTable.COLUMN_NAME_TITLE + " TEXT, " + NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION + " TEXT, " + NotificationSchema.NotificationTable.COLUMN_NAME_DATE + " TEXT, " + - NotificationSchema.NotificationTable.COLUMN_NAME_TYPE + " TEXT)"; + NotificationSchema.NotificationTable.COLUMN_NAME_TYPE + " TEXT," + + NotificationSchema.NotificationTable.COLUMN_NAME_SEEN + " INT)"; private static final String SQL_DROP_NOTIFICATIONS_TABLE = "DROP TABLE IF EXIST " + NotificationSchema.NotificationTable.TABLE_NAME; @@ -579,6 +580,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION , item.getDescription()); values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, item.getDate()); values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, item.getType()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_SEEN, item.getSeen()); // Inserting Row db.insert(NotificationSchema.NotificationTable.TABLE_NAME, null, values); @@ -589,7 +591,7 @@ public class DatabaseHandler extends SQLiteOpenHelper { db = this.getReadableDatabase(); int counter =0; - Cursor c = db.rawQuery("SELECT * FROM notifications_item", null); + Cursor c = db.rawQuery("SELECT * FROM notifications_item WHERE seen=0", null); if(c.moveToFirst()){ do{ //assing values @@ -606,6 +608,24 @@ public class DatabaseHandler extends SQLiteOpenHelper { return counter; } + public void updateNotification(NotificationItem item){ + db = this.getWritableDatabase(); + + ContentValues values = new ContentValues(); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TITLE, item.getTitle()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DESCRIPTION , item.getDescription()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_DATE, item.getDate()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_TYPE, item.getType()); + values.put(NotificationSchema.NotificationTable.COLUMN_NAME_SEEN, 1); + + // updating row + db.update(NotificationSchema.NotificationTable.TABLE_NAME, values, COLUMN_TITLE + " = '" + item.getTitle() + "'", null); + db.close(); + } + + + + // TODO: 26/07/17 check tanggalnya jika sudah lebih dari 3 hari maka hapus dari database // public void cleanNotification(){ diff --git a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java index 54c36cb9..0da4df48 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java +++ b/app/src/main/java/id/ac/ui/cs/myui/model/NotificationItem.java @@ -13,18 +13,28 @@ public class NotificationItem { String description; String type; String date; + int seen; public NotificationItem(String title, String description, String type, String date) { this.title = title; this.description = description; this.type = type; this.date = date; + this.seen = 0; } public NotificationItem() { } + public int getSeen() { + return seen; + } + + public void setSeen(int seen) { + this.seen = seen; + } + public String getTitle() { return title; } diff --git a/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java index 8a0952af..6931c941 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java +++ b/app/src/main/java/id/ac/ui/cs/myui/schema/NotificationSchema.java @@ -12,6 +12,7 @@ public class NotificationSchema { public static final String COLUMN_NAME_DESCRIPTION = "description"; public static final String COLUMN_NAME_TYPE = "type"; public static final String COLUMN_NAME_DATE = "date"; + public static final String COLUMN_NAME_SEEN = "seen"; } } -- GitLab From 3f9300c30879e75627669c5b975042ba2f383f27 Mon Sep 17 00:00:00 2001 From: EKANARADHIPA DEYNAGAMA DJACARIA - 1406569806 <ekanaradhipad@gmail.com> Date: Wed, 26 Jul 2017 16:07:29 +0700 Subject: [PATCH 21/21] fixing NewsDetailInstrumentedTest --- .../cs/myui/NewsDetailInstrumentedTest.java | 35 +++++++++++++++++-- .../cs/myui/activity/NewsDetailActivity.java | 6 ++-- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java b/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java index 03747417..cd0cc499 100644 --- a/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java +++ b/app/src/androidTest/java/id/ac/ui/cs/myui/NewsDetailInstrumentedTest.java @@ -1,5 +1,9 @@ package id.ac.ui.cs.myui; +import android.content.Context; +import android.content.Intent; +import android.support.test.InstrumentationRegistry; +import android.support.test.espresso.action.ViewActions; import android.support.test.filters.LargeTest; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; @@ -10,8 +14,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import id.ac.ui.cs.myui.activity.NewsDetailActivity; +import id.ac.ui.cs.myui.activity.NewsHomeActivity; import id.ac.ui.cs.myui.helper.AppsHelper; +import static android.support.test.espresso.Espresso.onData; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard; @@ -21,9 +27,17 @@ import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withResourceName; import static android.support.test.espresso.matcher.ViewMatchers.withText; +import static java.lang.Thread.sleep; +import static org.hamcrest.Matchers.anything; + /** * Created by Ivan on 7/19/17. */ + +/** + * modified by muhmmad.yusuf43 and eka naradhipa on 26/07/17 15:59. + */ + @RunWith(AndroidJUnit4.class) @LargeTest public class NewsDetailInstrumentedTest { @@ -33,14 +47,19 @@ public class NewsDetailInstrumentedTest { @Before public void initValidString() { // Specify a valid string. - } @Rule - public ActivityTestRule<NewsDetailActivity> mActivityRule = new ActivityTestRule(NewsDetailActivity.class); + public ActivityTestRule<NewsHomeActivity> mActivityRule = new ActivityTestRule(NewsHomeActivity.class); + + @Test + public void testNewsHomeActivity() { + onView(withId(R.id.list_news)).check(matches(isDisplayed())); + } @Test public void testNewsDetailActivity() { + onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click()); onView(withId(R.id.pubdate)).check(matches(isDisplayed())); onView(withId(R.id.button_wa)).check(matches(isDisplayed())); onView(withId(R.id.button_line)).check(matches(isDisplayed())); @@ -51,13 +70,25 @@ public class NewsDetailInstrumentedTest { @Test public void testShareButtonLine() { + onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click()); + ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description onView(withId(R.id.button_line)).perform(click()); AppsHelper.isAppRunning(NewsDetailActivity.context, PACKAGE_LINE); } @Test public void testShareButtonWA() { + onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click()); + ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description onView(withId(R.id.button_wa)).perform(click()); AppsHelper.isAppRunning(NewsDetailActivity.context, PACKAGE_WA); } + + @Test + public void testBookmarkButton() { + onData(anything()).inAdapterView(withId(R.id.list_news)).atPosition(0).perform(click()); + ViewActions.scrollTo(); // scroll to the bottom screen in case it has a long description + onView(withId(R.id.button_bookmark)).perform(click()); + // TODO perform check toast message + } } diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java index d5c2aaa8..dd18ac67 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/NewsDetailActivity.java @@ -62,7 +62,7 @@ public class NewsDetailActivity extends AppCompatActivity { ibShare = (ImageButton) findViewById(R.id.button_share); ibShareWA = (ImageButton) findViewById(R.id.button_wa); - Log.d("desc",description); + // Log.d("desc",description); final TextView pubDate = (TextView) findViewById(R.id.pubdate); final TextView news_title = (TextView) findViewById(R.id.news_title); final TextView news_author = (TextView) findViewById(R.id.news_author); @@ -80,12 +80,10 @@ public class NewsDetailActivity extends AppCompatActivity { news_title.setText(title); news_author.setText(author); - - news_author.setText(intent.getStringExtra("author")); news_author.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Log.d("CLICK", "Next update can see author profile"); + Toast.makeText(context,"Next update can see author profile",Toast.LENGTH_SHORT).show(); } }); -- GitLab