From bf15c04c68ed998f45bcfc7171059f3821f55b18 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Thu, 31 Jan 2019 21:28:11 +0000 Subject: [PATCH] Modifying item request to have feed name --- .../com/readrops/app/LocalFeedRepository.java | 11 +++-- .../java/com/readrops/app/MainActivity.java | 13 +++--- .../com/readrops/app/MainItemListAdapter.java | 40 +++++++++++-------- .../java/com/readrops/app/MainViewModel.java | 9 +++-- .../readrops/app/database/ItemWithFeed.java | 31 ++++++++++++++ .../readrops/app/database/dao/ItemDao.java | 6 ++- .../readrops/app/database/entities/Item.java | 27 +++---------- 7 files changed, 80 insertions(+), 57 deletions(-) create mode 100644 app/src/main/java/com/readrops/app/database/ItemWithFeed.java diff --git a/app/src/main/java/com/readrops/app/LocalFeedRepository.java b/app/src/main/java/com/readrops/app/LocalFeedRepository.java index c08fd835..fd60d829 100644 --- a/app/src/main/java/com/readrops/app/LocalFeedRepository.java +++ b/app/src/main/java/com/readrops/app/LocalFeedRepository.java @@ -6,6 +6,7 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; +import com.readrops.app.database.ItemWithFeed; import com.readrops.app.database.entities.Feed; import com.readrops.app.database.entities.Item; import com.readrops.readropslibrary.HtmlParser; @@ -28,18 +29,16 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { private static final String TAG = LocalFeedRepository.class.getSimpleName(); - private LiveData> items; - private List feeds; + private LiveData> itemsWhithFeed; public LocalFeedRepository(Application application) { super(application); - items = database.itemDao().getAll(); - //feeds = database.feedDao().getAllFeeds(); + itemsWhithFeed = database.itemDao().getAllItemWithFeeds(); } - public LiveData> getItems() { - return items; + public LiveData> getItemsWhithFeed() { + return itemsWhithFeed; } @Override diff --git a/app/src/main/java/com/readrops/app/MainActivity.java b/app/src/main/java/com/readrops/app/MainActivity.java index 8af570ad..524720b2 100644 --- a/app/src/main/java/com/readrops/app/MainActivity.java +++ b/app/src/main/java/com/readrops/app/MainActivity.java @@ -23,6 +23,7 @@ import android.widget.Toast; import com.bumptech.glide.Glide; import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader; import com.bumptech.glide.util.ViewPreloadSizeProvider; +import com.readrops.app.database.ItemWithFeed; import com.readrops.app.database.entities.Item; import com.readrops.readropslibrary.ParsingResult; @@ -44,7 +45,7 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S private NavigationView navigationView; private DrawerLayout drawerLayout; - private List newItems; + private List newItems; private TreeMap itemsMap; @@ -84,15 +85,11 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S itemsMap = new TreeMap<>(LocalDateTime::compareTo); newItems = new ArrayList<>(); - viewModel.getItems().observe(this, (List items) -> { - /*for (Item item : items) { - itemsMap.put(item.getFormatedDate(), item); - }*/ - - newItems = items; + viewModel.getItemsWithFeed().observe(this, (itemWithFeeds -> { + newItems = itemWithFeeds; if (!refreshLayout.isRefreshing()) adapter.submitList(newItems); - }); + })); refreshLayout = findViewById(R.id.swipe_refresh_layout); refreshLayout.setOnRefreshListener(this); diff --git a/app/src/main/java/com/readrops/app/MainItemListAdapter.java b/app/src/main/java/com/readrops/app/MainItemListAdapter.java index 4ac429b2..e30c0619 100644 --- a/app/src/main/java/com/readrops/app/MainItemListAdapter.java +++ b/app/src/main/java/com/readrops/app/MainItemListAdapter.java @@ -6,7 +6,6 @@ import android.support.annotation.Nullable; import android.support.v7.recyclerview.extensions.ListAdapter; import android.support.v7.util.DiffUtil; import android.support.v7.widget.RecyclerView; -import android.util.Patterns; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -22,13 +21,13 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.transition.DrawableCrossFadeFactory; import com.bumptech.glide.util.ViewPreloadSizeProvider; +import com.readrops.app.database.ItemWithFeed; import com.readrops.app.database.entities.Item; -import java.util.Collection; import java.util.Collections; import java.util.List; -public class MainItemListAdapter extends ListAdapter implements ListPreloader.PreloadModelProvider { +public class MainItemListAdapter extends ListAdapter implements ListPreloader.PreloadModelProvider { private RequestManager manager; private OnItemClickListener listener; @@ -41,16 +40,19 @@ public class MainItemListAdapter extends ListAdapter DIFF_CALLBACK = new DiffUtil.ItemCallback() { + private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { @Override - public boolean areItemsTheSame(@NonNull Item item, @NonNull Item t1) { - return item.getId() == t1.getId(); + public boolean areItemsTheSame(@NonNull ItemWithFeed item, @NonNull ItemWithFeed t1) { + return item.getItem().getId() == t1.getItem().getId(); } @Override - public boolean areContentsTheSame(@NonNull Item item, @NonNull Item t1) { - return item.getTitle().equals(t1.getTitle()) && - item.getDescription().equals(t1.getDescription()); + public boolean areContentsTheSame(@NonNull ItemWithFeed itemWithFeed, @NonNull ItemWithFeed t1) { + Item item = itemWithFeed.getItem(); + Item item1 = t1.getItem(); + + return item.getTitle().equals(item1.getTitle()) && + item.getDescription().equals(item1.getDescription()); } }; @@ -67,8 +69,8 @@ public class MainItemListAdapter extends ListAdapter getPreloadItems(int position) { - String url = getItem(position).getImageLink(); + String url = getItem(position).getItem().getImageLink(); return Collections.singletonList(url); } @@ -98,7 +100,7 @@ public class MainItemListAdapter extends ListAdapter> items; + private LiveData> itemsWithFeed; private LocalFeedRepository repository; public MainViewModel(@NonNull Application application) { @@ -22,11 +23,11 @@ public class MainViewModel extends AndroidViewModel { repository = new LocalFeedRepository(application); - items = repository.getItems(); + itemsWithFeed = repository.getItemsWhithFeed(); } - public LiveData> getItems() { - return items; + public LiveData> getItemsWithFeed() { + return itemsWithFeed; } public void setSimpleCallback(SimpleCallback simpleCallback) { diff --git a/app/src/main/java/com/readrops/app/database/ItemWithFeed.java b/app/src/main/java/com/readrops/app/database/ItemWithFeed.java new file mode 100644 index 00000000..26e41ed6 --- /dev/null +++ b/app/src/main/java/com/readrops/app/database/ItemWithFeed.java @@ -0,0 +1,31 @@ +package com.readrops.app.database; + +import android.arch.persistence.room.ColumnInfo; +import android.arch.persistence.room.Embedded; + +import com.readrops.app.database.entities.Item; + +public class ItemWithFeed { + + @Embedded + private Item item; + + @ColumnInfo(name = "name") + private String feedName; + + public Item getItem() { + return item; + } + + public void setItem(Item item) { + this.item = item; + } + + public String getFeedName() { + return feedName; + } + + public void setFeedName(String feedName) { + this.feedName = feedName; + } +} diff --git a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java index c15d3063..ce97a2db 100644 --- a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java +++ b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java @@ -6,6 +6,7 @@ import android.arch.persistence.room.Dao; import android.arch.persistence.room.Insert; import android.arch.persistence.room.Query; +import com.readrops.app.database.ItemWithFeed; import com.readrops.app.database.entities.Item; import java.util.List; @@ -16,9 +17,12 @@ public interface ItemDao { @Query("Select * from Item Where feed_id = :feedId") LiveData> getAllByFeed(int feedId); - @Query("Select * from Item Order By formatedDate DESC") + @Query("Select * from Item Order By pub_date DESC") LiveData> getAll(); + @Query("Select Item.id, title, Item.description, image_link, pub_date, name from Item Inner Join Feed on Item.feed_id = Feed.id Order By pub_date DESC, Item.id") + LiveData> getAllItemWithFeeds(); + @Query("Select case When :guid In (Select guid from Item) Then 'true' else 'false' end") String guidExist(String guid); diff --git a/app/src/main/java/com/readrops/app/database/entities/Item.java b/app/src/main/java/com/readrops/app/database/entities/Item.java index f77fcc4c..9c2cef39 100644 --- a/app/src/main/java/com/readrops/app/database/entities/Item.java +++ b/app/src/main/java/com/readrops/app/database/entities/Item.java @@ -5,14 +5,12 @@ import android.arch.persistence.room.*; import com.readrops.app.DateUtils; import com.readrops.readropslibrary.localfeed.atom.ATOMEntry; import com.readrops.readropslibrary.localfeed.json.JSONItem; -import com.readrops.readropslibrary.localfeed.rss.RSSChannel; import com.readrops.readropslibrary.localfeed.rss.RSSItem; import org.joda.time.LocalDateTime; import java.text.ParseException; import java.util.ArrayList; -import java.util.Date; import java.util.List; @@ -36,9 +34,7 @@ public class Item { private String author; @ColumnInfo(name = "pub_date") - private String pubDate; - - private LocalDateTime formatedDate; + private LocalDateTime pubDate; private String content; @@ -96,22 +92,14 @@ public class Item { this.author = author; } - public String getPubDate() { + public LocalDateTime getPubDate() { return pubDate; } - public void setPubDate(String pubDate) { + public void setPubDate(LocalDateTime pubDate) { this.pubDate = pubDate; } - public LocalDateTime getFormatedDate() { - return formatedDate; - } - - public void setFormatedDate(LocalDateTime formatedDate) { - this.formatedDate = formatedDate; - } - public String getContent() { return content; } @@ -149,8 +137,7 @@ public class Item { newItem.setTitle(item.getTitle()); newItem.setImageLink(item.getImageLink()); - newItem.setPubDate(item.getPubDate()); - newItem.setFormatedDate(DateUtils.stringToDateTime(item.getPubDate(), DateUtils.RSS_DATE_FORMAT)); + newItem.setPubDate(DateUtils.stringToDateTime(item.getPubDate(), DateUtils.RSS_DATE_FORMAT)); newItem.setLink(item.getLink()); newItem.setFeedId(feed.getId()); @@ -172,8 +159,7 @@ public class Item { dbItem.setGuid(item.getId()); dbItem.setTitle(item.getTitle()); - dbItem.setPubDate(item.getUpdated()); - dbItem.setFormatedDate(DateUtils.stringToDateTime(item.getUpdated(), DateUtils.ATOM_JSON_DATE_FORMAT)); + dbItem.setPubDate(DateUtils.stringToDateTime(item.getUpdated(), DateUtils.ATOM_JSON_DATE_FORMAT)); dbItem.setLink(item.getLink().getHref()); @@ -195,8 +181,7 @@ public class Item { dbItem.setGuid(item.getId()); dbItem.setTitle(item.getTitle()); - dbItem.setPubDate(item.getPubDate()); - dbItem.setFormatedDate(DateUtils.stringToDateTime(item.getPubDate(), DateUtils.ATOM_JSON_DATE_FORMAT)); + dbItem.setPubDate(DateUtils.stringToDateTime(item.getPubDate(), DateUtils.ATOM_JSON_DATE_FORMAT)); dbItem.setLink(item.getUrl());