From 875eb13c2884a8b8521650bb5857ffc0d86f9c4c Mon Sep 17 00:00:00 2001 From: leeyh Date: Fri, 22 Feb 2019 23:00:28 +0900 Subject: [PATCH 1/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 채팅 버그 수정. DiffUtil 때문에, onBindViewHolder 제대로 불리지 않아 Position 이상 해결 --- .../chattingadapter/ChattingDiffUtil.java | 14 ++++++------- .../chattingadapter/ChattingListAdapter.java | 14 ++++++++----- .../ChattingListItemHolder.java | 6 +++--- .../catchhouse/data/model/Chatting.java | 13 ++++++------ .../catchhouse/data/model/Message.java | 20 +++++++++---------- 5 files changed, 36 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingDiffUtil.java b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingDiffUtil.java index 148bf1a..a096905 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingDiffUtil.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingDiffUtil.java @@ -1,8 +1,8 @@ package com.swsnack.catchhouse.adapter.chattingadapter; + import com.swsnack.catchhouse.adapter.BaseDiffUtil; import com.swsnack.catchhouse.data.model.Chatting; -import com.swsnack.catchhouse.data.model.Message; import java.util.List; @@ -12,13 +12,13 @@ public class ChattingDiffUtil extends BaseDiffUtil { super(mOldList, mNewList); } + @Override + public boolean areItemsTheSame(int oldListIndex, int newListIndex) { + return mOldList.get(oldListIndex).getRoomUid().equals(mNewList.get(newListIndex).getRoomUid()); + } + @Override public boolean areContentsTheSame(int oldMessageIndex, int newMessageIndex) { - if (mOldList.get(oldMessageIndex).getMessages() != null && mNewList.get(newMessageIndex).getMessages() != null) { - List oldMessages = mOldList.get(oldMessageIndex).getMessages(); - List newMessages = mNewList.get(newMessageIndex).getMessages(); - return oldMessages.get(oldMessages.size() -1).equals(newMessages.get(newMessages.size() -1)); - } return false; } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java index 4f9c880..476a031 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java @@ -1,13 +1,11 @@ package com.swsnack.catchhouse.adapter.chattingadapter; import android.content.Context; -import androidx.annotation.NonNull; -import com.google.android.material.snackbar.Snackbar; -import androidx.recyclerview.widget.DiffUtil; -import androidx.recyclerview.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.ViewGroup; +import com.google.android.material.snackbar.Snackbar; import com.swsnack.catchhouse.R; import com.swsnack.catchhouse.adapter.BaseRecyclerViewAdapter; import com.swsnack.catchhouse.data.model.Chatting; @@ -17,6 +15,10 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DiffUtil; +import androidx.recyclerview.widget.RecyclerView; + public class ChattingListAdapter extends BaseRecyclerViewAdapter { private ChattingViewModel mChattingViewModel; @@ -57,6 +59,8 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { super.onBindViewHolder(holder, position); + Log.d("포지션", position + ""); + ItemChattingListBinding binding = ((ChattingListItemHolder) holder).getBinding(); binding.setChattingData(arrayList.get(position)); mChattingViewModel.getUser(position, @@ -83,4 +87,4 @@ public void setList(List newChattingList) { this.arrayList = newChattingList; result.dispatchUpdatesTo(this); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListItemHolder.java b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListItemHolder.java index 783c803..ce0ba80 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListItemHolder.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListItemHolder.java @@ -1,13 +1,13 @@ package com.swsnack.catchhouse.adapter.chattingadapter; +import com.swsnack.catchhouse.databinding.ItemChattingListBinding; + +import androidx.annotation.NonNull; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; -import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.swsnack.catchhouse.databinding.ItemChattingListBinding; - public class ChattingListItemHolder extends RecyclerView.ViewHolder implements LifecycleOwner { private ItemChattingListBinding mBinding; diff --git a/app/src/main/java/com/swsnack/catchhouse/data/model/Chatting.java b/app/src/main/java/com/swsnack/catchhouse/data/model/Chatting.java index c878a25..b000d95 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/model/Chatting.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/model/Chatting.java @@ -1,11 +1,11 @@ package com.swsnack.catchhouse.data.model; -import androidx.annotation.Nullable; - import java.io.Serializable; import java.util.List; import java.util.Map; +import androidx.annotation.Nullable; + public class Chatting implements Serializable { private String roomUid; @@ -45,13 +45,14 @@ public boolean equals(Object obj) { return this.roomUid.equals(((Chatting) obj).getRoomUid()); } + @Override + public int hashCode() { + return roomUid.hashCode(); + } + @Nullable public List getMessages() { return messages; } - - public void setMessages(List messages) { - this.messages = messages; - } } diff --git a/app/src/main/java/com/swsnack/catchhouse/data/model/Message.java b/app/src/main/java/com/swsnack/catchhouse/data/model/Message.java index b4083b1..62638ff 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/model/Message.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/model/Message.java @@ -30,14 +30,6 @@ public String getContent() { return content; } - public void setTimestamp(String timestamp) { - this.timestamp = timestamp; - } - - public void setSendUuid(String sendUuid) { - this.sendUuid = sendUuid; - } - public void setContent(String content) { this.content = content; } @@ -45,8 +37,16 @@ public void setContent(String content) { @Override public boolean equals(Object obj) { if(!(obj instanceof Message)) { - return false; + return false; } - return this.timestamp.equals(((Message) obj).getTimestamp()); + Message compareObj = (Message) obj; + return this.timestamp.equals(((Message) obj).getTimestamp()) && + this.sendUuid.equals(compareObj.getSendUuid()) && + this.content.equals(compareObj.content); + } + + @Override + public int hashCode() { + return timestamp.hashCode(); } } \ No newline at end of file From 696b4cda14fd04903de2b96bd51dedb73c57df6e Mon Sep 17 00:00:00 2001 From: leeyh Date: Sat, 23 Feb 2019 09:10:20 +0900 Subject: [PATCH 2/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 채팅 버그 수정. position값 수정 --- .../bindingadapter/ChattingDataBinding.java | 3 + .../chattingadapter/ChattingListAdapter.java | 4 +- .../catchhouse/util/DataConverter.java | 89 ++++--------------- .../chattingviewmodel/ChattingViewModel.java | 5 +- 4 files changed, 23 insertions(+), 78 deletions(-) diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java b/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java index cd8d3f9..0b5edbb 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java @@ -1,9 +1,11 @@ package com.swsnack.catchhouse.adapter.bindingadapter; +import androidx.annotation.RequiresApi; import androidx.databinding.BindingAdapter; import android.net.Uri; import androidx.recyclerview.widget.RecyclerView; +import android.os.Build; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -25,6 +27,7 @@ public class ChattingDataBinding { + @RequiresApi(api = Build.VERSION_CODES.N) @BindingAdapter({"setChattingList"}) public static void setList(RecyclerView recyclerView, List chattingList) { ChattingListAdapter chattingListAdapter = (ChattingListAdapter) recyclerView.getAdapter(); diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java index 476a031..0a875d0 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/chattingadapter/ChattingListAdapter.java @@ -59,11 +59,9 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { super.onBindViewHolder(holder, position); - Log.d("포지션", position + ""); - ItemChattingListBinding binding = ((ChattingListItemHolder) holder).getBinding(); binding.setChattingData(arrayList.get(position)); - mChattingViewModel.getUser(position, + mChattingViewModel.getUser(arrayList.get(position).getUsers(), binding::setUserData, error -> Snackbar.make(binding.getRoot(), R.string.snack_failed_load_list, Snackbar.LENGTH_SHORT).show()); diff --git a/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java b/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java index a988408..b08def5 100644 --- a/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java +++ b/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java @@ -1,91 +1,34 @@ package com.swsnack.catchhouse.util; -import android.graphics.Bitmap; +import android.os.Build; -import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; import com.swsnack.catchhouse.data.model.Chatting; -import com.swsnack.catchhouse.data.model.Message; -import com.swsnack.catchhouse.data.model.Room; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; -public class DataConverter { - - public static Bitmap getScaledBitmap(Bitmap bitmap) { - return Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth()), (int) (bitmap.getHeight()), true); - } +import androidx.annotation.RequiresApi; - public static byte[] getByteArray(Bitmap bitmap) throws IOException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); - byte[] byteArrayFromBitmap = outputStream.toByteArray(); - outputStream.close(); - return byteArrayFromBitmap; - } +public class DataConverter { + @RequiresApi(api = Build.VERSION_CODES.N) public static List reOrderedListByTimeStamp(List chattingList) { if (chattingList == null) { return null; } - Collections.sort(chattingList, (rowIndexChatting, highIndexChatting) -> { - if (rowIndexChatting.getMessages() == null || highIndexChatting.getMessages() == null) { - return 0; - } - - Message rowIndexLastMessage = rowIndexChatting.getMessages().get(rowIndexChatting.getMessages().size() - 1); - Message highIndexLastMessage = highIndexChatting.getMessages().get(highIndexChatting.getMessages().size() - 1); + Comparator comparator = (c1, c2) -> { + assert c1.getMessages() != null; + assert c2.getMessages() != null; - return rowIndexLastMessage.getTimestamp().compareTo(highIndexLastMessage.getTimestamp()); - }); - - Collections.reverse(chattingList); - - return chattingList; - } - - public static FavoriteRoomEntity convertToRoomEntity(Room room) { - return new FavoriteRoomEntity(room.getKey(), - room.getPrice(), - room.getFrom(), - room.getTo(), - room.getTitle(), - room.getContent(), - room.getImages(), - room.getUuid(), - room.getAddress(), - room.getAddressName(), - room.getSize(), - room.isOptionStandard(), - room.isOptionGender(), - room.isOptionPet(), - room.isOptionSmoking(), - room.getLatitude(), - room.getLongitude(), - room.isDeleted()); - } + return (c1.getMessages().get(c1.getMessages().size() - 1).getTimestamp() + .compareTo(c2.getMessages().get(c2.getMessages().size() - 1).getTimestamp())); + }; + Comparator reverse = comparator.reversed(); - public static Room convertToRoom(FavoriteRoomEntity favoriteRoomEntity) { - return new Room(favoriteRoomEntity.getRoomUid(), - favoriteRoomEntity.getPrice(), - favoriteRoomEntity.getFrom(), - favoriteRoomEntity.getTo(), - favoriteRoomEntity.getTitle(), - favoriteRoomEntity.getContent(), - favoriteRoomEntity.getImages(), - favoriteRoomEntity.getUuid(), - favoriteRoomEntity.getAddress(), - favoriteRoomEntity.getAddressName(), - favoriteRoomEntity.getSize(), - favoriteRoomEntity.isOptionStandard(), - favoriteRoomEntity.isOptionGender(), - favoriteRoomEntity.isOptionPet(), - favoriteRoomEntity.isOptionSmoking(), - favoriteRoomEntity.getLatitude(), - favoriteRoomEntity.getLongitude(), - favoriteRoomEntity.isDeleted()); + return chattingList.stream() + .sorted(reverse) + .collect(Collectors.toList()); } } diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModel.java index fdb3dd8..e80b964 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModel.java @@ -20,6 +20,7 @@ import com.swsnack.catchhouse.viewmodel.ViewModelListener; import java.util.List; +import java.util.Map; import static com.swsnack.catchhouse.Constant.SuccessKey.SEND_MESSAGE_SUCCESS; @@ -57,8 +58,8 @@ public void cancelChattingListChangingListening() { .cancelObservingChattingList(); } - public void getUser(int position, OnSuccessListener onSuccessListener, OnFailureListener onFailureListener) { - for (String uuid : mChattingList.getValue().get(position).getUsers().keySet()) { + public void getUser(Map users, OnSuccessListener onSuccessListener, OnFailureListener onFailureListener) { + for (String uuid :users.keySet()) { if (!uuid.equals(FirebaseAuth.getInstance().getCurrentUser().getUid())) { getDataManager() .getUserFromSingleSnapShot(uuid, From 6a4bcc13052ea4ed83e85d5fe47491f8bbd79c2f Mon Sep 17 00:00:00 2001 From: leeyh Date: Sat, 23 Feb 2019 17:37:47 +0900 Subject: [PATCH 3/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AppCache 모듈화 --- .../bindingadapter/ChattingDataBinding.java | 2 +- .../catchhouse/data/db/AppDataCache.java | 25 +------ .../repository/room/RoomRepository.java | 4 + .../room/local/LocalRecentRoomImpl.java | 73 +++++++++++++------ .../catchhouse/util/DataConverter.java | 2 +- 5 files changed, 58 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java b/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java index 0b5edbb..775a822 100644 --- a/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java +++ b/app/src/main/java/com/swsnack/catchhouse/adapter/bindingadapter/ChattingDataBinding.java @@ -40,7 +40,7 @@ public static void setList(RecyclerView recyclerView, List chattingLis return; } - List orderedList = DataConverter.reOrderedListByTimeStamp(chattingList); + List orderedList = DataConverter.sortByTimeStamp(chattingList); chattingListAdapter.setList(orderedList); } diff --git a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDataCache.java b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDataCache.java index e6cc271..0b2282f 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDataCache.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDataCache.java @@ -1,28 +1,7 @@ package com.swsnack.catchhouse.data.db; -import com.swsnack.catchhouse.data.model.Room; +public interface AppDataCache{ -import java.util.HashMap; + int getCacheItemSize(); -public class AppDataCache { - - private static AppDataCache INSTANCE; - private HashMap mRecentRoomCache; - - public static AppDataCache getInstance() { - if(INSTANCE == null) { - synchronized (AppDataCache.class) { - INSTANCE = new AppDataCache(); - } - } - return INSTANCE; - } - - private AppDataCache() { - mRecentRoomCache = new HashMap<>(); - } - - public HashMap getRecentRoomCache() { - return mRecentRoomCache; - } } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java index 9ba69fb..e0423c8 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java @@ -1,6 +1,7 @@ package com.swsnack.catchhouse.repository.room; import android.net.Uri; +import android.os.Build; import com.swsnack.catchhouse.data.model.Room; import com.swsnack.catchhouse.repository.OnFailedListener; @@ -18,6 +19,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; public class RoomRepository implements RemoteRoomDataSource, FavoriteRoomDataSource, RecentRoomDataSource, SellRoomDataSource { @@ -108,11 +110,13 @@ public void updateRoom(Room room) { mLocalRoomDataManager.updateRoom(room); } + @RequiresApi(api = Build.VERSION_CODES.N) @Override public void setRecentRoom(Room room) { mRecentRoomDataManager.setRecentRoom(room); } + @RequiresApi(api = Build.VERSION_CODES.N) @Override public List getRecentRoom() { return mRecentRoomDataManager.getRecentRoom(); diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java index 469cfc9..27ff20a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java @@ -1,22 +1,29 @@ package com.swsnack.catchhouse.repository.room.local; +import android.os.Build; + import com.swsnack.catchhouse.data.db.AppDataCache; import com.swsnack.catchhouse.data.model.Room; -import java.util.ArrayList; -import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; -public class LocalRecentRoomImpl implements RecentRoomDataSource { +public class LocalRecentRoomImpl implements AppDataCache, RecentRoomDataSource { - private HashMap mRecentRoomCache; + private Map mRecentRoomCache; private static LocalRecentRoomImpl INSTANCE; public static LocalRecentRoomImpl getInstance() { - if (INSTANCE == null) { + if(INSTANCE == null) { synchronized (LocalRecentRoomImpl.class) { INSTANCE = new LocalRecentRoomImpl(); } @@ -25,42 +32,62 @@ public static LocalRecentRoomImpl getInstance() { } private LocalRecentRoomImpl() { - mRecentRoomCache = AppDataCache.getInstance().getRecentRoomCache(); + mRecentRoomCache = new HashMap<>(getCacheItemSize()); + } + + @Override + public int getCacheItemSize() { + return 5; } + @RequiresApi(api = Build.VERSION_CODES.N) @Override - public void setRecentRoom(Room room) { - if (mRecentRoomCache.size() < 5) { + public void setRecentRoom(@NonNull Room room) { + if(mRecentRoomCache.size() < getCacheItemSize()) { mRecentRoomCache.put(room, new Date().getTime()); return; } - List sortingList = sortByTimeStampRoom(); - mRecentRoomCache.remove(sortingList.get(0)); + + mRecentRoomCache.remove(ascSortByTimeStamp().get(0)); setRecentRoom(room); } - + @RequiresApi(api = Build.VERSION_CODES.N) + @Nullable @Override public List getRecentRoom() { - List reversedSortedRoom = sortByTimeStampRoom(); - Collections.reverse(reversedSortedRoom); - return reversedSortedRoom; + return desSortByTimeStamp(); } @Override - public void deleteRoom(Room room) { - mRecentRoomCache.remove(room); + public void deleteRecentRoomList() { + mRecentRoomCache.clear(); } @Override - public void deleteRecentRoomList() { - mRecentRoomCache.clear(); + public void deleteRoom(@NonNull Room room) { + mRecentRoomCache.remove(room); } - private List sortByTimeStampRoom() { - List sortingList = new ArrayList<>(mRecentRoomCache.keySet()); - Collections.sort(sortingList, (oldRoom, newRoom) -> - Objects.requireNonNull(mRecentRoomCache.get(oldRoom)).compareTo(Objects.requireNonNull(mRecentRoomCache.get(newRoom)))); - return sortingList; + @RequiresApi(api = Build.VERSION_CODES.N) + private List ascSortByTimeStamp() { + Comparator comparator = (r1, r2) -> + Objects.requireNonNull(mRecentRoomCache.get(r1)) + .compareTo(Objects.requireNonNull(mRecentRoomCache.get(r2))); + + return mRecentRoomCache.keySet().stream() + .sorted(comparator).collect(Collectors.toList()); + } + + @RequiresApi(api = Build.VERSION_CODES.N) + private List desSortByTimeStamp() { + Comparator comparator = (r1, r2) -> + Objects.requireNonNull(mRecentRoomCache.get(r1)) + .compareTo(Objects.requireNonNull(mRecentRoomCache.get(r2))); + + Comparator reverse = comparator.reversed(); + + return mRecentRoomCache.keySet().stream() + .sorted(reverse).collect(Collectors.toList()); } } diff --git a/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java b/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java index b08def5..ecdde8d 100644 --- a/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java +++ b/app/src/main/java/com/swsnack/catchhouse/util/DataConverter.java @@ -13,7 +13,7 @@ public class DataConverter { @RequiresApi(api = Build.VERSION_CODES.N) - public static List reOrderedListByTimeStamp(List chattingList) { + public static List sortByTimeStamp(List chattingList) { if (chattingList == null) { return null; } From 6465549f5dbf844e539e9034bc0192998b3be9ab Mon Sep 17 00:00:00 2001 From: leeyh Date: Sat, 23 Feb 2019 20:18:45 +0900 Subject: [PATCH 4/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FavoriteRoom Repository 추가 --- .../catchhouse/data/db/AppDatabase.java | 2 +- .../catchhouse/repository/APIManager.java | 6 +- .../catchhouse/repository/AppDataSource.java | 234 +++++++++++------- .../catchhouse/repository/DataSource.java | 13 +- .../FavoriteRoomDao.java | 2 +- .../FavoriteRoomDaoImpl.java} | 14 +- .../FavoriteRoomDataSource.java | 2 +- .../FavoriteRoomHelper.java | 2 +- .../favoriteroom/FavoriteRoomRepository.java | 20 ++ .../FavoriteRoomRepositoryImpl.java | 53 ++++ .../repository/room/RoomRepository.java | 147 +---------- .../repository/room/RoomRepositoryImpl.java | 76 ++++++ .../repository/room/RoomRepositoryImpl2.java | 158 ++++++++++++ .../{SellRoomImpl.java => SellRoomData.java} | 26 +- ...oomHelper.java => SellRoomDataHelper.java} | 2 +- ...{RoomDataImpl.java => RemoteRoomData.java} | 47 ++-- .../room/remote/RemoteRoomDataSource.java | 5 +- .../swsnack/catchhouse/view/BaseFragment.java | 19 +- .../view/fragment/MyPageFragment.java | 21 +- .../viewmodel/ReactiveViewModel.java | 4 + .../ChattingViewModelFactory.java | 5 - .../FavoriteRoomViewModel.java | 54 ++++ .../FavoriteRoomViewModelFactory.java | 26 ++ .../postviewmodel/PostViewModel.java | 12 +- .../roomsviewmodel/RoomsViewModel.java | 2 +- .../userviewmodel/UserViewModel.java | 26 +- app/src/main/res/layout/bottom_my_page.xml | 6 +- app/src/main/res/layout/fragment_my_page.xml | 5 + 28 files changed, 665 insertions(+), 324 deletions(-) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local => favoriteroom}/FavoriteRoomDao.java (94%) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local/FavoriteRoomImpl.java => favoriteroom/FavoriteRoomDaoImpl.java} (90%) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local => favoriteroom}/FavoriteRoomDataSource.java (85%) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local => favoriteroom}/FavoriteRoomHelper.java (98%) create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java rename app/src/main/java/com/swsnack/catchhouse/repository/room/local/{SellRoomImpl.java => SellRoomData.java} (74%) rename app/src/main/java/com/swsnack/catchhouse/repository/room/local/{SellRoomHelper.java => SellRoomDataHelper.java} (99%) rename app/src/main/java/com/swsnack/catchhouse/repository/room/remote/{RoomDataImpl.java => RemoteRoomData.java} (78%) create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModel.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModelFactory.java diff --git a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java index 10a9b51..7746f4e 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java @@ -3,7 +3,7 @@ import com.swsnack.catchhouse.AppApplication; import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; import com.swsnack.catchhouse.data.entity.SellRoomEntity; -import com.swsnack.catchhouse.repository.room.local.FavoriteRoomDao; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDao; import com.swsnack.catchhouse.repository.room.local.SellRoomDao; import com.swsnack.catchhouse.repository.room.local.TypeConverter; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/APIManager.java b/app/src/main/java/com/swsnack/catchhouse/repository/APIManager.java index 9753530..dff9341 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/APIManager.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/APIManager.java @@ -126,8 +126,8 @@ public void firebaseDeleteUser(@NonNull String uuid, mDataManager.cancelMessageModelObserving(); mDataManager.cancelObservingChattingList(); - mDataManager.deleteRecentRoomList(); - mDataManager.deleteFavoriteRoom(); +// mDataManager.deleteRecentRoomList(); +// mDataManager.deleteFavoriteRoom(); mDataManager.deleteUser(uuid, deleteUserSuccess -> deleteUser(onSuccessListener, onFailedListener), @@ -142,7 +142,7 @@ public void firebaseSignOut() { FirebaseAuth.getInstance().signOut(); mDataManager.cancelMessageModelObserving(); mDataManager.cancelObservingChattingList(); - mDataManager.deleteRecentRoomList(); +// mDataManager.deleteRecentRoomList(); } public void updatePassword(@NonNull String oldPassword, diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java index a77cf8a..8d6be19 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java @@ -10,14 +10,14 @@ import com.swsnack.catchhouse.data.model.User; import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; import com.swsnack.catchhouse.repository.chatting.remote.RemoteChattingImpl; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; import com.swsnack.catchhouse.repository.location.LocationDataSource; import com.swsnack.catchhouse.repository.location.remote.RemoteLocationImpl; import com.swsnack.catchhouse.repository.room.RoomRepository; -import com.swsnack.catchhouse.repository.room.local.FavoriteRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.RecentRoomDataSource; +import com.swsnack.catchhouse.repository.room.RoomRepositoryImpl; import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.SellRoomImpl; -import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; +import com.swsnack.catchhouse.repository.room.local.SellRoomData; import com.swsnack.catchhouse.repository.searching.SearchingDataSource; import com.swsnack.catchhouse.repository.searching.remote.SearchingDataImpl; import com.swsnack.catchhouse.repository.user.UserDataSource; @@ -33,9 +33,11 @@ public class AppDataSource implements DataSource { //FIXME : 이 클래스 삭제할겁니다. 사용해주지 마시고 레포에서 써주세요 private UserDataSource mUserDataSource; private ChattingDataSource mRemoteChattingDataSource; - private RemoteRoomDataSource mRemoteRoomDataSource; - private FavoriteRoomDataSource mFavoriteRoomDataSource; - private RecentRoomDataSource mRecentRoomDataManager; +// private RemoteRoomDataSource mRemoteRoomDataSource; +// private FavoriteRoomDataSource mFavoriteRoomDataSource; +// private RecentRoomDataSource mRecentRoomDataManager; + private FavoriteRoomRepository favoriteRoomRepository; + private RoomRepository roomRepository; private LocationDataSource mLocationDataSource; private SearchingDataSource mSearchingDataSource; private SellRoomDataSource mSellRoomDataSource; @@ -44,12 +46,14 @@ private AppDataSource() { mUserDataSource = UserDataImpl.getInstance(); mRemoteChattingDataSource = RemoteChattingImpl.getInstance(); - mRemoteRoomDataSource = RoomRepository.getInstance(); - mFavoriteRoomDataSource = RoomRepository.getInstance(); - mRecentRoomDataManager = RoomRepository.getInstance(); +// mRemoteRoomDataSource = RoomRepositoryImpl2.getInstance(); +// mFavoriteRoomDataSource = RoomRepositoryImpl2.getInstance(); +// mRecentRoomDataManager = RoomRepositoryImpl2.getInstance(); mLocationDataSource = RemoteLocationImpl.getInstance(); mSearchingDataSource = SearchingDataImpl.getInstance(); - mSellRoomDataSource = SellRoomImpl.getInstance(); + mSellRoomDataSource = SellRoomData.getInstance(); + roomRepository = RoomRepositoryImpl.getInstance(); + favoriteRoomRepository = FavoriteRoomRepositoryImpl.getInstance(); } private static AppDataSource INSTANCE; @@ -181,39 +185,39 @@ public void setChatMessage(int messagesLength, } - @Override - public String createKey() { - return mRemoteRoomDataSource.createKey(); - } - - @Override - public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, - @NonNull OnSuccessListener> onSuccessListener, - @NonNull OnFailedListener onFailedListener) { - - mRemoteRoomDataSource.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); - } - - @Override - public void setRoom(@NonNull String key, @NonNull Room room, - @NonNull OnSuccessListener onSuccessListener, - @NonNull OnFailedListener onFailedListener) { - - mRemoteRoomDataSource.setRoom(key, room, onSuccessListener, onFailedListener); - } - - - @Override - public void getRoom(@NonNull String key, - @NonNull OnSuccessListener onSuccessListener, - @NonNull OnFailedListener onFailedListener) { - mRemoteRoomDataSource.getRoom(key, onSuccessListener, onFailedListener); - } - - @Override - public void delete(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - mRemoteRoomDataSource.delete(key, room, onSuccessListener, onFailedListener); - } +// @Override +// public String createKey() { +// return mRemoteRoomDataSource.createKey(); +// } +// +// @Override +// public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, +// @NonNull OnSuccessListener> onSuccessListener, +// @NonNull OnFailedListener onFailedListener) { +// +// mRemoteRoomDataSource.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); +// } +// +// @Override +// public void setRoom(@NonNull String key, @NonNull Room room, +// @NonNull OnSuccessListener onSuccessListener, +// @NonNull OnFailedListener onFailedListener) { +// +// mRemoteRoomDataSource.setRoom(key, room, onSuccessListener, onFailedListener); +// } +// +// +// @Override +// public void getRoom(@NonNull String key, +// @NonNull OnSuccessListener onSuccessListener, +// @NonNull OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.getRoom(key, onSuccessListener, onFailedListener); +// } +// +// @Override +// public void delete(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.delete(key, room, onSuccessListener, onFailedListener); +// } @Override public void uploadLocationData(@NonNull String uuid, @NonNull Address address, @@ -234,79 +238,139 @@ public Single> getNearRoomList(@NonNull Filter filter) { } @Override - public void setFavoriteRoom(Room room) { - mFavoriteRoomDataSource.setFavoriteRoom(room); - } - - @Override - public void deleteFavoriteRoom(Room room) { - mFavoriteRoomDataSource.deleteFavoriteRoom(room); - - } - - @Override - public void deleteFavoriteRoom() { - mFavoriteRoomDataSource.deleteFavoriteRoom(); - } - - @Override - public List getFavoriteRoomList() { - return mFavoriteRoomDataSource.getFavoriteRoomList(); + public String createKey() { + return roomRepository.createKey(); } @Override - public Room getFavoriteRoom(String key) { - return mFavoriteRoomDataSource.getFavoriteRoom(key); + public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); } @Override - public void updateRoom(Room room) { - mFavoriteRoomDataSource.updateRoom(room); + public void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.setRoom(room, onSuccessListener, onFailedListener); } @Override - public void setRecentRoom(Room room) { - mRecentRoomDataManager.setRecentRoom(room); + public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.getRoom(key, onSuccessListener, onFailedListener); } @Override - public List getRecentRoom() { - return mRecentRoomDataManager.getRecentRoom(); + public void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.deleteRoom(room, onSuccessListener, onFailedListener); } @Override - public void deleteRecentRoomList() { - mRecentRoomDataManager.deleteRecentRoomList(); + public void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.updateRoom(room, onSuccessListener, onFailedListener); } @Override - public void deleteRoom(Room room) { - deleteRoom(room); + public void setFavoriteRoom(Room room) { + favoriteRoomRepository.setFavoriteRoom(room); } @Override - public void setSellRoom(Room room) { - mSellRoomDataSource.setSellRoom(room); + public void deleteFavoriteRoom(Room room) { + favoriteRoomRepository.deleteFavoriteRoom(room); } @Override - public void deleteSellRoom(Room room) { - mSellRoomDataSource.deleteSellRoom(room); + public List getFavoriteRoomList() { + return favoriteRoomRepository.getFavoriteRoomList(); } @Override - public List getSellRoomList() { - return mSellRoomDataSource.getSellRoomList(); + public void deleteFavoriteRoom() { + favoriteRoomRepository.deleteFavoriteRoom(); } @Override - public void deleteSellRoom() { - mSellRoomDataSource.deleteSellRoom(); + public Room getFavoriteRoom(String key) { + return favoriteRoomRepository.getFavoriteRoom(key); } @Override - public Room getSellRoom(String key) { - return mSellRoomDataSource.getSellRoom(key); - } + public void updateRoom(Room room) { + favoriteRoomRepository.updateRoom(room); + } + +// @Override +// public void setFavoriteRoom(Room room) { +// mFavoriteRoomDataSource.setFavoriteRoom(room); +// } +// +// @Override +// public void deleteFavoriteRoom(Room room) { +// mFavoriteRoomDataSource.deleteFavoriteRoom(room); +// +// } +// +// @Override +// public void deleteFavoriteRoom() { +// mFavoriteRoomDataSource.deleteFavoriteRoom(); +// } +// +// @Override +// public List getFavoriteRoomList() { +// return mFavoriteRoomDataSource.getFavoriteRoomList(); +// } +// +// @Override +// public Room getFavoriteRoom(String key) { +// return mFavoriteRoomDataSource.getFavoriteRoom(key); +// } +// +// @Override +// public void updateRoom(Room room) { +// mFavoriteRoomDataSource.updateRoom(room); +// } +// +// @Override +// public void setRecentRoom(Room room) { +// mRecentRoomDataManager.setRecentRoom(room); +// } +// +// @Override +// public List getRecentRoom() { +// return mRecentRoomDataManager.getRecentRoom(); +// } +// +// @Override +// public void deleteRecentRoomList() { +// mRecentRoomDataManager.deleteRecentRoomList(); +// } + +// @Override +// public void deleteRoom(Room room) { +// deleteRoom(room); +// } +// +// @Override +// public void setSellRoom(Room room) { +// mSellRoomDataSource.setSellRoom(room); +// } +// +// @Override +// public void deleteSellRoom(Room room) { +// mSellRoomDataSource.deleteSellRoom(room); +// } +// +// @Override +// public List getSellRoomList() { +// return mSellRoomDataSource.getSellRoomList(); +// } +// +// @Override +// public void deleteSellRoom() { +// mSellRoomDataSource.deleteSellRoom(); +// } +// +// @Override +// public Room getSellRoom(String key) { +// return mSellRoomDataSource.getSellRoom(key); +// } } \ No newline at end of file diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java index a5ad6bb..ac52edd 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java @@ -1,21 +1,16 @@ package com.swsnack.catchhouse.repository; import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; import com.swsnack.catchhouse.repository.location.LocationDataSource; -import com.swsnack.catchhouse.repository.room.local.FavoriteRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.RecentRoomDataSource; -import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; +import com.swsnack.catchhouse.repository.room.RoomRepository; import com.swsnack.catchhouse.repository.searching.SearchingDataSource; import com.swsnack.catchhouse.repository.user.UserDataSource; public interface DataSource extends UserDataSource, ChattingDataSource, - RemoteRoomDataSource, - FavoriteRoomDataSource, LocationDataSource, SearchingDataSource, - RecentRoomDataSource, - SellRoomDataSource { - + RoomRepository, + FavoriteRoomRepository { } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDao.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java similarity index 94% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDao.java rename to app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java index 463d40f..d1cd05f 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDao.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.favoriteroom; import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java similarity index 90% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java index 8209d69..2c1ff55 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.favoriteroom; import com.google.firebase.auth.FirebaseAuth; import com.swsnack.catchhouse.data.db.AppDatabase; @@ -13,21 +13,21 @@ import androidx.annotation.Nullable; -public class FavoriteRoomImpl implements FavoriteRoomDataSource { +public class FavoriteRoomDaoImpl implements FavoriteRoomDataSource { - private static FavoriteRoomImpl INSTANCE; + private static FavoriteRoomDaoImpl INSTANCE; private FavoriteRoomDao mRoomDao; - public static FavoriteRoomImpl getInstance() { + public static FavoriteRoomDaoImpl getInstance() { if (INSTANCE == null) { - synchronized (FavoriteRoomImpl.class) { - INSTANCE = new FavoriteRoomImpl(); + synchronized (FavoriteRoomDaoImpl.class) { + INSTANCE = new FavoriteRoomDaoImpl(); } } return INSTANCE; } - private FavoriteRoomImpl() { + private FavoriteRoomDaoImpl() { mRoomDao = AppDatabase.getInstance().getRoomDataAccessor(); } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java similarity index 85% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java index 9760b65..e8a757b 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.favoriteroom; import com.swsnack.catchhouse.data.model.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomHelper.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomHelper.java rename to app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java index f790389..813e97a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/FavoriteRoomHelper.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.favoriteroom; import android.os.AsyncTask; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java new file mode 100644 index 0000000..f074dd6 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java @@ -0,0 +1,20 @@ +package com.swsnack.catchhouse.repository.favoriteroom; + +import com.swsnack.catchhouse.data.model.Room; + +import java.util.List; + +public interface FavoriteRoomRepository { + + void setFavoriteRoom(Room room); + + void deleteFavoriteRoom(Room room); + + List getFavoriteRoomList(); + + void deleteFavoriteRoom(); + + Room getFavoriteRoom(String key); + + void updateRoom(Room room); +} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java new file mode 100644 index 0000000..e09a9fb --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java @@ -0,0 +1,53 @@ +package com.swsnack.catchhouse.repository.favoriteroom; + +import com.swsnack.catchhouse.data.model.Room; + +import java.util.List; + +public class FavoriteRoomRepositoryImpl implements FavoriteRoomRepository { + + private static FavoriteRoomRepositoryImpl INSTANCE; + private FavoriteRoomDaoImpl favoriteRoomDao; + + public static FavoriteRoomRepositoryImpl getInstance() { + if(INSTANCE == null) { + synchronized (FavoriteRoomRepositoryImpl.class) { + INSTANCE = new FavoriteRoomRepositoryImpl(); + } + } + return INSTANCE; + } + + private FavoriteRoomRepositoryImpl() { + favoriteRoomDao = FavoriteRoomDaoImpl.getInstance(); + } + @Override + public void setFavoriteRoom(Room room) { + favoriteRoomDao.setFavoriteRoom(room); + } + + @Override + public void deleteFavoriteRoom(Room room) { + favoriteRoomDao.deleteFavoriteRoom(room); + } + + @Override + public List getFavoriteRoomList() { + return favoriteRoomDao.getFavoriteRoomList(); + } + + @Override + public void deleteFavoriteRoom() { + favoriteRoomDao.deleteFavoriteRoom(); + } + + @Override + public Room getFavoriteRoom(String key) { + return favoriteRoomDao.getFavoriteRoom(key); + } + + @Override + public void updateRoom(Room room) { + favoriteRoomDao.updateRoom(room); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java index e0423c8..b6c8a1c 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java @@ -1,160 +1,27 @@ package com.swsnack.catchhouse.repository.room; import android.net.Uri; -import android.os.Build; import com.swsnack.catchhouse.data.model.Room; import com.swsnack.catchhouse.repository.OnFailedListener; import com.swsnack.catchhouse.repository.OnSuccessListener; -import com.swsnack.catchhouse.repository.room.local.FavoriteRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.FavoriteRoomImpl; -import com.swsnack.catchhouse.repository.room.local.LocalRecentRoomImpl; -import com.swsnack.catchhouse.repository.room.local.RecentRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.SellRoomImpl; -import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; -import com.swsnack.catchhouse.repository.room.remote.RoomDataImpl; import java.util.List; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; -public class RoomRepository implements RemoteRoomDataSource, FavoriteRoomDataSource, RecentRoomDataSource, SellRoomDataSource { +public interface RoomRepository { - private static RoomRepository INSTANCE; - private FavoriteRoomDataSource mLocalRoomDataManager; - private RemoteRoomDataSource mRemoteRoomDataSource; - private RecentRoomDataSource mRecentRoomDataManager; - private SellRoomDataSource mLocalSellRoomManager; + String createKey(); - public static RoomRepository getInstance() { - if (INSTANCE == null) { - synchronized (RoomRepository.class) { - INSTANCE = new RoomRepository(); - } - } - return INSTANCE; - } + void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener); - private RoomRepository() { + void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - mLocalRoomDataManager = FavoriteRoomImpl.getInstance(); - mRemoteRoomDataSource = RoomDataImpl.getInstance(); - mRecentRoomDataManager = LocalRecentRoomImpl.getInstance(); - mLocalSellRoomManager = SellRoomImpl.getInstance(); - } + void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - @Override - public String createKey() { - return mRemoteRoomDataSource.createKey(); - } + void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - @Override - public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { - mRemoteRoomDataSource.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); - } - - @Override - public void setRoom(@NonNull String key, @NonNull Room room, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { - mRemoteRoomDataSource.setRoom(key, room, success -> { - setSellRoom(room); - onSuccessListener.onSuccess(success); - } - , onFailedListener); - } - - @Override - public void getRoom(@NonNull String key, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { - mRemoteRoomDataSource.getRoom(key, onSuccessListener, onFailedListener); - } - - @Override - public void delete(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - mRemoteRoomDataSource.delete(key, room, success -> { - deleteSellRoom(room); - mRecentRoomDataManager.deleteRoom(room); - onSuccessListener.onSuccess(success); - } - , onFailedListener); - } - - @Override - public void setFavoriteRoom(Room room) { - mLocalRoomDataManager.setFavoriteRoom(room); - } - - @Override - public void deleteFavoriteRoom(Room room) { - mLocalRoomDataManager.deleteFavoriteRoom(room); - } - - @Override - public List getFavoriteRoomList() { - return mLocalRoomDataManager.getFavoriteRoomList(); - } - - @Override - public void deleteFavoriteRoom() { - mLocalRoomDataManager.deleteFavoriteRoom(); - } - - @Override - public Room getFavoriteRoom(String key) { - return mLocalRoomDataManager.getFavoriteRoom(key); - } - - @Override - public void updateRoom(Room room) { - mLocalRoomDataManager.updateRoom(room); - } - - @RequiresApi(api = Build.VERSION_CODES.N) - @Override - public void setRecentRoom(Room room) { - mRecentRoomDataManager.setRecentRoom(room); - } - - @RequiresApi(api = Build.VERSION_CODES.N) - @Override - public List getRecentRoom() { - return mRecentRoomDataManager.getRecentRoom(); - } - - @Override - public void deleteRecentRoomList() { - mRecentRoomDataManager.deleteRecentRoomList(); - } - - @Override - public void deleteRoom(Room room) { - mRecentRoomDataManager.deleteRoom(room); - } - - @Override - public void setSellRoom(Room room) { - mLocalSellRoomManager.setSellRoom(room); - } - - @Override - public void deleteSellRoom(Room room) { - mLocalSellRoomManager.deleteSellRoom(room); - } - - @Override - public List getSellRoomList() { - return mLocalSellRoomManager.getSellRoomList(); - } - - @Override - public void deleteSellRoom() { - mLocalSellRoomManager.deleteSellRoom(); - } - - @Override - public Room getSellRoom(String key) { - return mLocalSellRoomManager.getSellRoom(key); - } + void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java new file mode 100644 index 0000000..63c37ca --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java @@ -0,0 +1,76 @@ +package com.swsnack.catchhouse.repository.room; + +import android.net.Uri; + +import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.repository.OnFailedListener; +import com.swsnack.catchhouse.repository.OnSuccessListener; +import com.swsnack.catchhouse.repository.room.local.SellRoomData; +import com.swsnack.catchhouse.repository.room.remote.RemoteRoomData; + +import java.util.List; + +import androidx.annotation.NonNull; + +public class RoomRepositoryImpl implements RoomRepository { + + private static RoomRepositoryImpl INSTANCE; + private RemoteRoomData mRemoteRoom; + private SellRoomData mLocalRoom; + + + public static RoomRepositoryImpl getInstance() { + if (INSTANCE == null) { + synchronized (RoomRepositoryImpl.class) { + INSTANCE = new RoomRepositoryImpl(); + } + } + return INSTANCE; + } + + private RoomRepositoryImpl() { + mRemoteRoom = RemoteRoomData.getInstance(); + mLocalRoom = SellRoomData.getInstance(); + } + + + @Override + public String createKey() { + return mRemoteRoom.createKey(); + } + + @Override + public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { + mRemoteRoom.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); + } + + @Override + public void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + mRemoteRoom.setRoom(room, success -> { + mLocalRoom.setSellRoom(room); + onSuccessListener.onSuccess(success); + }, onFailedListener); + } + + @Override + public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + mRemoteRoom.getRoom(key, onSuccessListener, onFailedListener); + } + + @Override + public void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + mRemoteRoom.delete(room, success -> { + mLocalRoom.deleteSellRoom(room); + onSuccessListener.onSuccess(success); + }, onFailedListener); + + } + + @Override + public void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + updateRoom(room, success -> { + mLocalRoom.updateRoom(room); + onSuccessListener.onSuccess(success); + }, onFailedListener); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java new file mode 100644 index 0000000..367e69d --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java @@ -0,0 +1,158 @@ +//package com.swsnack.catchhouse.repository.room; +// +//import android.net.Uri; +//import android.os.Build; +// +//import com.swsnack.catchhouse.data.model.Room; +//import com.swsnack.catchhouse.repository.OnFailedListener; +//import com.swsnack.catchhouse.repository.OnSuccessListener; +//import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDataSource; +//import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDaoImpl; +//import com.swsnack.catchhouse.repository.room.local.LocalRecentRoomImpl; +//import com.swsnack.catchhouse.repository.room.local.RecentRoomDataSource; +//import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; +//import com.swsnack.catchhouse.repository.room.local.SellRoomData; +//import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; +//import com.swsnack.catchhouse.repository.room.remote.RemoteRoomData; +// +//import java.util.List; +// +//import androidx.annotation.NonNull; +//import androidx.annotation.Nullable; +//import androidx.annotation.RequiresApi; +// +//public class RoomRepositoryImpl2 implements RemoteRoomDataSource, FavoriteRoomDataSource, RecentRoomDataSource, SellRoomDataSource { +// +// private static RoomRepositoryImpl2 INSTANCE; +// private FavoriteRoomDataSource mLocalRoomDataManager; +// private RecentRoomDataSource mRecentRoomDataManager; +// private SellRoomDataSource mLocalSellRoomManager; +// +// public static RoomRepositoryImpl2 getInstance() { +// if (INSTANCE == null) { +// synchronized (RoomRepositoryImpl2.class) { +// INSTANCE = new RoomRepositoryImpl2(); +// } +// } +// return INSTANCE; +// } +// +// private RoomRepositoryImpl2() { +// +// mLocalRoomDataManager = FavoriteRoomDaoImpl.getInstance(); +// mRecentRoomDataManager = LocalRecentRoomImpl.getInstance(); +// mLocalSellRoomManager = SellRoomData.getInstance(); +// } +// +// @Override +// public String createKey() { +// return mRemoteRoomDataSource.createKey(); +// } +// +// @Override +// public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); +// } +// +// @Override +// public void setRoom(@NonNull String key, @NonNull Room room, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.setRoom(key, room, success -> { +// setSellRoom(room); +// onSuccessListener.onSuccess(success); +// } +// , onFailedListener); +// } +// +// @Override +// public void getRoom(@NonNull String key, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.getRoom(key, onSuccessListener, onFailedListener); +// } +// +// @Override +// public void delete(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { +// mRemoteRoomDataSource.delete(key, room, success -> { +// deleteSellRoom(room); +// mRecentRoomDataManager.deleteRoom(room); +// onSuccessListener.onSuccess(success); +// } +// , onFailedListener); +// } +// +// @Override +// public void setFavoriteRoom(Room room) { +// mLocalRoomDataManager.setFavoriteRoom(room); +// } +// +// @Override +// public void deleteFavoriteRoom(Room room) { +// mLocalRoomDataManager.deleteFavoriteRoom(room); +// } +// +// @Override +// public List getFavoriteRoomList() { +// return mLocalRoomDataManager.getFavoriteRoomList(); +// } +// +// @Override +// public void deleteFavoriteRoom() { +// mLocalRoomDataManager.deleteFavoriteRoom(); +// } +// +// @Override +// public Room getFavoriteRoom(String key) { +// return mLocalRoomDataManager.getFavoriteRoom(key); +// } +// +// @Override +// public void updateRoom(Room room) { +// mLocalRoomDataManager.updateRoom(room); +// } +// +// @RequiresApi(api = Build.VERSION_CODES.N) +// @Override +// public void setRecentRoom(Room room) { +// mRecentRoomDataManager.setRecentRoom(room); +// } +// +// @RequiresApi(api = Build.VERSION_CODES.N) +// @Override +// public List getRecentRoom() { +// return mRecentRoomDataManager.getRecentRoom(); +// } +// +// @Override +// public void deleteRecentRoomList() { +// mRecentRoomDataManager.deleteRecentRoomList(); +// } +// +// @Override +// public void deleteRoom(Room room) { +// mRecentRoomDataManager.deleteRoom(room); +// } +// +// @Override +// public void setSellRoom(Room room) { +// mLocalSellRoomManager.setSellRoom(room); +// } +// +// @Override +// public void deleteSellRoom(Room room) { +// mLocalSellRoomManager.deleteSellRoom(room); +// } +// +// @Override +// public List getSellRoomList() { +// return mLocalSellRoomManager.getSellRoomList(); +// } +// +// @Override +// public void deleteSellRoom() { +// mLocalSellRoomManager.deleteSellRoom(); +// } +// +// @Override +// public Room getSellRoom(String key) { +// return mLocalSellRoomManager.getSellRoom(key); +// } +// +//} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java similarity index 74% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java index 0c7b0e4..e2acae9 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java @@ -2,9 +2,7 @@ import com.google.firebase.auth.FirebaseAuth; import com.swsnack.catchhouse.data.db.AppDatabase; -import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; import com.swsnack.catchhouse.data.entity.SellRoomEntity; -import com.swsnack.catchhouse.data.mapper.RoomMapperFromFavorite; import com.swsnack.catchhouse.data.mapper.RoomMapperFromSell; import com.swsnack.catchhouse.data.mapper.SellRoomMapper; import com.swsnack.catchhouse.data.model.Room; @@ -15,21 +13,21 @@ import androidx.annotation.Nullable; -public class SellRoomImpl implements SellRoomDataSource { +public class SellRoomData implements SellRoomDataSource { - private static SellRoomImpl INSTANCE; + private static SellRoomData INSTANCE; private SellRoomDao mRoomDao; - public static SellRoomImpl getInstance() { + public static SellRoomData getInstance() { if (INSTANCE == null) { - synchronized (SellRoomImpl.class) { - INSTANCE = new SellRoomImpl(); + synchronized (SellRoomData.class) { + INSTANCE = new SellRoomData(); } } return INSTANCE; } - private SellRoomImpl() { + private SellRoomData() { mRoomDao = AppDatabase.getInstance().getSellRoomDataAccessor(); } @@ -41,7 +39,7 @@ public void setSellRoom(Room room) { SellRoomEntity sellRoomEntity = new SellRoomMapper().map(room); sellRoomEntity.setFirebaseUuid(FirebaseAuth.getInstance().getCurrentUser().getUid()); - new SellRoomHelper.AsyncSetSellRoom(mRoomDao).execute(sellRoomEntity); + new SellRoomDataHelper.AsyncSetSellRoom(mRoomDao).execute(sellRoomEntity); } @Override @@ -52,7 +50,7 @@ public void deleteSellRoom(Room room) { SellRoomEntity sellRoomEntity = new SellRoomMapper().map(room); sellRoomEntity.setFirebaseUuid(FirebaseAuth.getInstance().getCurrentUser().getUid()); - new SellRoomHelper.AsyncDeleteSellRoom(mRoomDao).execute(sellRoomEntity); + new SellRoomDataHelper.AsyncDeleteSellRoom(mRoomDao).execute(sellRoomEntity); } @@ -63,7 +61,7 @@ public List getSellRoomList() { } try { - List roomEntityList = new SellRoomHelper + List roomEntityList = new SellRoomDataHelper .AsyncLoadSellRoomList(mRoomDao) .execute(FirebaseAuth.getInstance().getCurrentUser().getUid()) .get(); @@ -82,7 +80,7 @@ public void deleteSellRoom() { return; } - new SellRoomHelper.AsyncDeleteUserSellRoom(mRoomDao).execute(FirebaseAuth.getInstance().getCurrentUser().getUid()); + new SellRoomDataHelper.AsyncDeleteUserSellRoom(mRoomDao).execute(FirebaseAuth.getInstance().getCurrentUser().getUid()); } @@ -94,7 +92,7 @@ public Room getSellRoom(String key) { } try { - SellRoomEntity sellRoomEntity = new SellRoomHelper.AsyncLoadSellRoom(mRoomDao).execute(key, FirebaseAuth.getInstance().getCurrentUser().getUid()).get(); + SellRoomEntity sellRoomEntity = new SellRoomDataHelper.AsyncLoadSellRoom(mRoomDao).execute(key, FirebaseAuth.getInstance().getCurrentUser().getUid()).get(); if(sellRoomEntity != null) { return new RoomMapperFromSell().map(sellRoomEntity); } @@ -111,7 +109,7 @@ public void updateRoom(Room room) { } SellRoomEntity sellRoomEntity = new SellRoomMapper().map(room); sellRoomEntity.setFirebaseUuid(FirebaseAuth.getInstance().getCurrentUser().getUid()); - new SellRoomHelper.AsyncUpdateSellRoom(mRoomDao).execute(sellRoomEntity); + new SellRoomDataHelper.AsyncUpdateSellRoom(mRoomDao).execute(sellRoomEntity); } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomHelper.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java similarity index 99% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomHelper.java rename to app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java index 131797a..f2ee28f 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomHelper.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java @@ -6,7 +6,7 @@ import java.util.List; -class SellRoomHelper { +class SellRoomDataHelper { public static class AsyncSetSellRoom extends AsyncTask { diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RoomDataImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java similarity index 78% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RoomDataImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java index eaa056b..03716fe 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RoomDataImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java @@ -1,6 +1,5 @@ package com.swsnack.catchhouse.repository.room.remote; -import android.app.Application; import android.net.Uri; import com.google.firebase.database.DataSnapshot; @@ -11,7 +10,6 @@ import com.google.firebase.database.ValueEventListener; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; -import com.swsnack.catchhouse.AppApplication; import com.swsnack.catchhouse.data.mapper.FirebaseRoomMapper; import com.swsnack.catchhouse.data.model.Room; import com.swsnack.catchhouse.firebase.DBValueHelper; @@ -20,41 +18,39 @@ import com.swsnack.catchhouse.repository.OnSuccessListener; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import androidx.annotation.NonNull; import static com.swsnack.catchhouse.Constant.FirebaseKey.DB_ROOM; import static com.swsnack.catchhouse.Constant.FirebaseKey.STORAGE_ROOM_IMAGE; -public class RoomDataImpl implements RemoteRoomDataSource { +public class RemoteRoomData implements RemoteRoomDataSource{ private DatabaseReference db; private StorageReference fs; - private Application mApplication; - private static RoomDataImpl INSTANCE; + private static RemoteRoomData INSTANCE; - public static synchronized RoomDataImpl getInstance() { + public static synchronized RemoteRoomData getInstance() { if (INSTANCE == null) { - INSTANCE = new RoomDataImpl(); + INSTANCE = new RemoteRoomData(); } return INSTANCE; } - private RoomDataImpl() { + private RemoteRoomData() { db = FirebaseDatabase.getInstance().getReference().child(DB_ROOM); fs = FirebaseStorage.getInstance().getReference().child(STORAGE_ROOM_IMAGE); - mApplication = AppApplication.getAppContext(); } - @Override public String createKey() { return db.push().getKey(); } int uploadCheckCount = 0; - @Override public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { @@ -83,16 +79,15 @@ synchronized void uploadImageCountPlus() { uploadCheckCount++; } - @Override - public void setRoom(@NonNull String key, @NonNull Room room, + public void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - db.child(key).setValue(room) + + db.child(createKey()).setValue(room) .addOnSuccessListener(onSuccessListener::onSuccess) .addOnFailureListener(onFailedListener::onFailed); } - @Override public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { @@ -120,14 +115,26 @@ public void onCancelled(@NonNull DatabaseError databaseError) { onFailedListener)); } - @Override - public void delete(@NonNull String key, - @NonNull Room room, + public void delete(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - room.setDeleted(true); - setRoom(key, room, onSuccessListener, onFailedListener); + Map updateFields = new HashMap<>(); + updateFields.put("deleted", false); + + db.child(room.getKey()) + .updateChildren(updateFields) + .addOnSuccessListener(onSuccessListener::onSuccess) + .addOnFailureListener(onFailedListener::onFailed); + } + + public void updateRoom(@NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener) { + db.child(room.getKey()) + .setValue(room) + .addOnSuccessListener(onSuccessListener::onSuccess) + .addOnFailureListener(onFailedListener::onFailed); } } \ No newline at end of file diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java index daa339c..40b38f1 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java @@ -19,7 +19,7 @@ void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener); - void setRoom(@NonNull String key, @NonNull Room room, + void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); @@ -28,8 +28,7 @@ void getRoom(@NonNull String key, @NonNull OnFailedListener onFailedListener); //FIXME 용현's 가 추가함. 확인 부탁이요. Key는 필요 없을 것 같아요. 내부에서 동작하게 하면 Room객체만 던져줘도 될것 같습니다. 나중에 수정 부탁드려요 - void delete(@NonNull String key, - @NonNull Room room, + void delete(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); } diff --git a/app/src/main/java/com/swsnack/catchhouse/view/BaseFragment.java b/app/src/main/java/com/swsnack/catchhouse/view/BaseFragment.java index 492056a..ba9951c 100644 --- a/app/src/main/java/com/swsnack/catchhouse/view/BaseFragment.java +++ b/app/src/main/java/com/swsnack/catchhouse/view/BaseFragment.java @@ -4,28 +4,39 @@ import androidx.lifecycle.ViewModelProviders; import androidx.databinding.DataBindingUtil; import androidx.databinding.ViewDataBinding; + import android.os.Bundle; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; + import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -public abstract class BaseFragment extends Fragment { +public abstract class BaseFragment + extends Fragment { private B mBinding; protected V mViewModel; @Nullable @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mBinding = DataBindingUtil.inflate(inflater, getLayout(), container, false); + public View onCreateView(@NonNull LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + + mBinding = DataBindingUtil.inflate(inflater, + getLayout(), + container, + false); return mBinding.getRoot(); } @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(@NonNull View view, + @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (getActivity() != null) { diff --git a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java index ff0e75c..df2c407 100644 --- a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java +++ b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java @@ -17,8 +17,11 @@ import com.swsnack.catchhouse.databinding.DialogChangeNickNameBinding; import com.swsnack.catchhouse.databinding.DialogChangePasswordBinding; import com.swsnack.catchhouse.databinding.FragmentMyPageBinding; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; import com.swsnack.catchhouse.view.BaseFragment; import com.swsnack.catchhouse.view.activitity.PostActivity; +import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModel; +import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModelFactory; import com.swsnack.catchhouse.viewmodel.userviewmodel.UserViewModel; import com.yalantis.ucrop.UCrop; @@ -28,6 +31,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; import static android.app.Activity.RESULT_OK; @@ -42,6 +46,8 @@ public class MyPageFragment extends BaseFragment { + private FavoriteRoomViewModel mFavoriteRoomViewModel; + @Override protected int getLayout() { return R.layout.fragment_my_page; @@ -61,10 +67,12 @@ public void onCreate(Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + init(); + getBinding().setHandler(getViewModel()); + getBinding().setFavoriteRoom(mFavoriteRoomViewModel); getViewModel().getUserData(); - init(); for (String signInMethod : FirebaseAuth.getInstance().getCurrentUser().getProviders()) { if (signInMethod.equals(FACEBOOK) || signInMethod.equals(GOOGLE)) { getBinding().tvMyPageChangePassword.setVisibility(View.GONE); @@ -118,6 +126,10 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat private void init() { getBinding().ctlMyPage.setExpandedTitleColor(Color.TRANSPARENT); getBinding().ctlMyPage.setCollapsedTitleTextColor(getResources().getColor(R.color.colorPrimary)); + + mFavoriteRoomViewModel = ViewModelProviders.of(this, + new FavoriteRoomViewModelFactory(FavoriteRoomRepositoryImpl.getInstance())) + .get(FavoriteRoomViewModel.class); } private void onChangeNickNameBtnClicked() { @@ -179,9 +191,10 @@ private void onSignOutBtnClicked() { @Override public void onStart() { super.onStart(); - getViewModel().getFavoriteRoom(); - getViewModel().getRecentRoom(); - getViewModel().getSellRoom(); + mFavoriteRoomViewModel.getFavoriteRoom(); +// getViewModel().getFavoriteRoom(); +// getViewModel().getRecentRoom(); +// getViewModel().getSellRoom(); } diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/ReactiveViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/ReactiveViewModel.java index 661114c..b212b8b 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/ReactiveViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/ReactiveViewModel.java @@ -19,6 +19,10 @@ public ReactiveViewModel(DataSource dataManager, APIManager apiManager) { mApiManager = apiManager; } + public ReactiveViewModel() { + + } + @Override protected void onCleared() { super.onCleared(); diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModelFactory.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModelFactory.java index fd50ddc..f1e12f4 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModelFactory.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/chattingviewmodel/ChattingViewModelFactory.java @@ -2,11 +2,6 @@ import com.swsnack.catchhouse.repository.APIManager; import com.swsnack.catchhouse.repository.AppDataSource; -import com.swsnack.catchhouse.repository.chatting.remote.RemoteChattingImpl; -import com.swsnack.catchhouse.repository.location.remote.RemoteLocationImpl; -import com.swsnack.catchhouse.repository.room.RoomRepository; -import com.swsnack.catchhouse.repository.searching.remote.SearchingDataImpl; -import com.swsnack.catchhouse.repository.user.remote.UserDataImpl; import com.swsnack.catchhouse.viewmodel.ViewModelListener; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModel.java new file mode 100644 index 0000000..6323908 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModel.java @@ -0,0 +1,54 @@ +package com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel; + +import com.google.firebase.auth.FirebaseAuth; +import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; +import com.swsnack.catchhouse.viewmodel.ReactiveViewModel; + +import java.util.List; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +public class FavoriteRoomViewModel extends ReactiveViewModel { + + private FavoriteRoomRepository mFavoriteRoomRepository; + private MutableLiveData> mFavoriteRoomList; + private MutableLiveData mIsFavorite; + + FavoriteRoomViewModel(FavoriteRoomRepository favoriteRoomRepository) { + this.mFavoriteRoomRepository = favoriteRoomRepository; + this.mFavoriteRoomList = new MutableLiveData<>(); + this.mIsFavorite = new MutableLiveData<>(); + this.mIsFavorite.setValue(false); + } + + public void getFavoriteRoom() { + mFavoriteRoomList. + setValue(mFavoriteRoomRepository.getFavoriteRoomList()); + } + + public void setFavoriteRoom(Room room) { + mFavoriteRoomRepository.setFavoriteRoom(room); + } + + public void isFavorite(Room room) { + if (FirebaseAuth.getInstance().getCurrentUser() == null) { + return; + } + + if (!mIsFavorite.getValue()) { + mFavoriteRoomRepository + .setFavoriteRoom(room); + mIsFavorite.setValue(true); + } else { + mFavoriteRoomRepository + .deleteFavoriteRoom(room); + mIsFavorite.setValue(false); + } + } + + public LiveData> getFavoriteRoomList() { + return mFavoriteRoomList; + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModelFactory.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModelFactory.java new file mode 100644 index 0000000..154ca6d --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/favoriteroomviewmodel/FavoriteRoomViewModelFactory.java @@ -0,0 +1,26 @@ +package com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel; + +import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +public class FavoriteRoomViewModelFactory extends ViewModelProvider.NewInstanceFactory { + + private FavoriteRoomRepository mFavoriteRoomRepository; + + public FavoriteRoomViewModelFactory(FavoriteRoomRepository favoriteRoomRepository) { + this.mFavoriteRoomRepository = favoriteRoomRepository; + } + + @NonNull + @Override + public T create(@NonNull Class modelClass) { + if (modelClass.isAssignableFrom(FavoriteRoomViewModel.class)) { + return (T) new FavoriteRoomViewModel(this.mFavoriteRoomRepository); + } + throw new Fragment.InstantiationException("not viewModel class", null); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java index 1fc5a03..6f340b7 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java @@ -144,15 +144,15 @@ public void onClickDeleteButton(View view) { Room deletingRoom = room.getValue(); deletingRoom.setDeleted(true); - getDataManager().delete(deletingRoom.getKey(), deletingRoom, - __ -> mListener.onSuccess(""), - error -> mListener.onError(error.getMessage()) - ); +// getDataManager().delete(deletingRoom.getKey(), deletingRoom, +// __ -> mListener.onSuccess(""), +// error -> mListener.onError(error.getMessage()) +// ); } private void visitNewRoom() { - getDataManager() - .setRecentRoom(room.getValue()); +// getDataManager() +// .setRecentRoom(room.getValue()); } public LiveData isFavorite() { diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/roomsviewmodel/RoomsViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/roomsviewmodel/RoomsViewModel.java index fa1294f..2c34823 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/roomsviewmodel/RoomsViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/roomsviewmodel/RoomsViewModel.java @@ -225,7 +225,7 @@ private void push(String key, List urls, ) ); - getDataManager().setRoom(key, room.getValue(), onSuccessListener, onFailedListener); + getDataManager().setRoom(room.getValue(), onSuccessListener, onFailedListener); } private Single> searchAddress(String keyword) { diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java index 178c4b9..7e3d54c 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java @@ -47,7 +47,6 @@ public class UserViewModel extends ReactiveViewModel { private Application mAppContext; private ViewModelListener mListener; public MutableLiveData mProfileUri; - private MutableLiveData> mFavoriteRoomList; private MutableLiveData> mSellRoomList; private MutableLiveData> mRecentRoomList; private MutableLiveData mGender; @@ -62,7 +61,6 @@ public class UserViewModel extends ReactiveViewModel { this.mAppContext = application; this.mProfileUri = new MutableLiveData<>(); this.mSellRoomList = new MutableLiveData<>(); - this.mFavoriteRoomList = new MutableLiveData<>(); this.mRecentRoomList = new MutableLiveData<>(); this.mUser = new MutableLiveData<>(); this.mGender = new MutableLiveData<>(); @@ -184,8 +182,6 @@ public void signInWithEmail(View v) { } mListener.isWorking(); - User user = new User(mEmail.getValue(), mNickName.getValue(), mGender.getValue()); - getApiManager() .firebaseSignIn(mEmail.getValue(), mPassword.getValue(), @@ -269,26 +265,22 @@ public void updateProfile(Uri uri) { error -> mListener.onError(getStringFromResource(R.string.snack_update_profile_failed))); } - public void getSellRoom() { - mSellRoomList.setValue(getDataManager().getSellRoomList()); - } +// public void getSellRoom() { +// mSellRoomList.setValue(getDataManager().getSellRoomList()); +// } - public void getFavoriteRoom() { - mFavoriteRoomList.setValue(getDataManager().getFavoriteRoomList()); - } +// public void getFavoriteRoom() { +// mFavoriteRoomList.setValue(getDataManager().getFavoriteRoomList()); +// } - public void getRecentRoom() { - mRecentRoomList.setValue(getDataManager().getRecentRoom()); - } +// public void getRecentRoom() { +// mRecentRoomList.setValue(getDataManager().getRecentRoom()); +// } public LiveData getUser() { return mUser; } - public LiveData> getFavoriteRoomList() { - return mFavoriteRoomList; - } - public LiveData> getRecentRoomList() { return mRecentRoomList; } diff --git a/app/src/main/res/layout/bottom_my_page.xml b/app/src/main/res/layout/bottom_my_page.xml index 0ca94a8..8e653d7 100644 --- a/app/src/main/res/layout/bottom_my_page.xml +++ b/app/src/main/res/layout/bottom_my_page.xml @@ -10,6 +10,10 @@ + + + bind:setFavoriteRoom="@{favoriteRoom.favoriteRoomList}" /> diff --git a/app/src/main/res/layout/fragment_my_page.xml b/app/src/main/res/layout/fragment_my_page.xml index c61ec34..a569985 100644 --- a/app/src/main/res/layout/fragment_my_page.xml +++ b/app/src/main/res/layout/fragment_my_page.xml @@ -8,6 +8,10 @@ + + @@ -92,6 +96,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:handler="@{handler}" + app:favoriteRoom="@{favoriteRoom}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> From 739263dfcf9d0fa6985418ab105eed8085619dda Mon Sep 17 00:00:00 2001 From: leeyh Date: Sat, 23 Feb 2019 23:22:17 +0900 Subject: [PATCH 5/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit recentroom repository 추가 --- .../catchhouse/repository/AppDataSource.java | 24 ++++++++++ .../catchhouse/repository/DataSource.java | 4 +- .../RecentRoomDao.java} | 22 ++++----- .../RecentRoomRepository.java} | 4 +- .../recentroom/RecentRoomRepositoryImpl.java | 48 +++++++++++++++++++ .../repository/room/RoomRepositoryImpl2.java | 6 +-- .../view/fragment/MyPageFragment.java | 11 +++++ .../postviewmodel/PostViewModel.java | 4 +- .../RecentRoomViewModel.java | 35 ++++++++++++++ .../RecentRoomViewModelFactory.java | 27 +++++++++++ .../userviewmodel/UserViewModel.java | 20 -------- app/src/main/res/layout/bottom_my_page.xml | 6 ++- app/src/main/res/layout/fragment_my_page.xml | 5 ++ 13 files changed, 174 insertions(+), 42 deletions(-) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local/LocalRecentRoomImpl.java => recentroom/RecentRoomDao.java} (80%) rename app/src/main/java/com/swsnack/catchhouse/repository/{room/local/RecentRoomDataSource.java => recentroom/RecentRoomRepository.java} (69%) create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModel.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModelFactory.java diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java index 8d6be19..99ebfc5 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java @@ -14,6 +14,8 @@ import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; import com.swsnack.catchhouse.repository.location.LocationDataSource; import com.swsnack.catchhouse.repository.location.remote.RemoteLocationImpl; +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepositoryImpl; import com.swsnack.catchhouse.repository.room.RoomRepository; import com.swsnack.catchhouse.repository.room.RoomRepositoryImpl; import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; @@ -36,6 +38,7 @@ public class AppDataSource implements DataSource { // private RemoteRoomDataSource mRemoteRoomDataSource; // private FavoriteRoomDataSource mFavoriteRoomDataSource; // private RecentRoomDataSource mRecentRoomDataManager; + private RecentRoomRepository recentRoomRepository; private FavoriteRoomRepository favoriteRoomRepository; private RoomRepository roomRepository; private LocationDataSource mLocationDataSource; @@ -54,6 +57,7 @@ private AppDataSource() { mSellRoomDataSource = SellRoomData.getInstance(); roomRepository = RoomRepositoryImpl.getInstance(); favoriteRoomRepository = FavoriteRoomRepositoryImpl.getInstance(); + recentRoomRepository = RecentRoomRepositoryImpl.getInstance(); } private static AppDataSource INSTANCE; @@ -297,6 +301,26 @@ public void updateRoom(Room room) { favoriteRoomRepository.updateRoom(room); } + @Override + public void setRecentRoom(Room room) { + recentRoomRepository.setRecentRoom(room); + } + + @Override + public List getRecentRoom() { + return recentRoomRepository.getRecentRoom(); + } + + @Override + public void deleteRecentRoomList() { + recentRoomRepository.deleteRecentRoomList(); + } + + @Override + public void deleteRoom(Room room) { + recentRoomRepository.deleteRoom(room); + } + // @Override // public void setFavoriteRoom(Room room) { // mFavoriteRoomDataSource.setFavoriteRoom(room); diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java index ac52edd..3ede0a2 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java @@ -3,6 +3,7 @@ import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; import com.swsnack.catchhouse.repository.location.LocationDataSource; +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; import com.swsnack.catchhouse.repository.room.RoomRepository; import com.swsnack.catchhouse.repository.searching.SearchingDataSource; import com.swsnack.catchhouse.repository.user.UserDataSource; @@ -12,5 +13,6 @@ public interface DataSource extends UserDataSource, LocationDataSource, SearchingDataSource, RoomRepository, - FavoriteRoomRepository { + FavoriteRoomRepository, + RecentRoomRepository { } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java similarity index 80% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java index 27ff20a..7b0b72a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/LocalRecentRoomImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.recentroom; import android.os.Build; @@ -17,21 +17,21 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; -public class LocalRecentRoomImpl implements AppDataCache, RecentRoomDataSource { +public class RecentRoomDao implements AppDataCache { private Map mRecentRoomCache; - private static LocalRecentRoomImpl INSTANCE; + private static RecentRoomDao INSTANCE; - public static LocalRecentRoomImpl getInstance() { - if(INSTANCE == null) { - synchronized (LocalRecentRoomImpl.class) { - INSTANCE = new LocalRecentRoomImpl(); + public static RecentRoomDao getInstance() { + if (INSTANCE == null) { + synchronized (RecentRoomDao.class) { + INSTANCE = new RecentRoomDao(); } } return INSTANCE; } - private LocalRecentRoomImpl() { + private RecentRoomDao() { mRecentRoomCache = new HashMap<>(getCacheItemSize()); } @@ -41,9 +41,8 @@ public int getCacheItemSize() { } @RequiresApi(api = Build.VERSION_CODES.N) - @Override public void setRecentRoom(@NonNull Room room) { - if(mRecentRoomCache.size() < getCacheItemSize()) { + if (mRecentRoomCache.size() < getCacheItemSize()) { mRecentRoomCache.put(room, new Date().getTime()); return; } @@ -54,17 +53,14 @@ public void setRecentRoom(@NonNull Room room) { @RequiresApi(api = Build.VERSION_CODES.N) @Nullable - @Override public List getRecentRoom() { return desSortByTimeStamp(); } - @Override public void deleteRecentRoomList() { mRecentRoomCache.clear(); } - @Override public void deleteRoom(@NonNull Room room) { mRecentRoomCache.remove(room); } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/RecentRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java similarity index 69% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/RecentRoomDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java index eb6ffe0..bdd4bce 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/RecentRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java @@ -1,10 +1,10 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.repository.recentroom; import com.swsnack.catchhouse.data.model.Room; import java.util.List; -public interface RecentRoomDataSource { +public interface RecentRoomRepository { void setRecentRoom(Room room); diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java new file mode 100644 index 0000000..d659b63 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java @@ -0,0 +1,48 @@ +package com.swsnack.catchhouse.repository.recentroom; + +import android.os.Build; + +import com.swsnack.catchhouse.data.model.Room; + +import java.util.List; + +import androidx.annotation.RequiresApi; + +public class RecentRoomRepositoryImpl implements RecentRoomRepository{ + + private static RecentRoomRepositoryImpl INSTANCE; + private RecentRoomDao mRecentRoomDao; + + public static RecentRoomRepositoryImpl getInstance() { + if(INSTANCE == null) { + INSTANCE = new RecentRoomRepositoryImpl(); + } + return INSTANCE; + } + + private RecentRoomRepositoryImpl() { + this.mRecentRoomDao = RecentRoomDao.getInstance(); + } + + @RequiresApi(api = Build.VERSION_CODES.N) + @Override + public void setRecentRoom(Room room) { + mRecentRoomDao.setRecentRoom(room); + } + + @RequiresApi(api = Build.VERSION_CODES.N) + @Override + public List getRecentRoom() { + return mRecentRoomDao.getRecentRoom(); + } + + @Override + public void deleteRecentRoomList() { + mRecentRoomDao.deleteRecentRoomList(); + } + + @Override + public void deleteRoom(Room room) { + mRecentRoomDao.deleteRoom(room); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java index 367e69d..9d2d7fa 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java @@ -8,8 +8,8 @@ //import com.swsnack.catchhouse.repository.OnSuccessListener; //import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDataSource; //import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDaoImpl; -//import com.swsnack.catchhouse.repository.room.local.LocalRecentRoomImpl; -//import com.swsnack.catchhouse.repository.room.local.RecentRoomDataSource; +//import com.swsnack.catchhouse.repository.recentroom.RecentRoomDao; +//import com.swsnack.catchhouse.repository.recentroom.RecentRoomDataSource; //import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; //import com.swsnack.catchhouse.repository.room.local.SellRoomData; //import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; @@ -40,7 +40,7 @@ // private RoomRepositoryImpl2() { // // mLocalRoomDataManager = FavoriteRoomDaoImpl.getInstance(); -// mRecentRoomDataManager = LocalRecentRoomImpl.getInstance(); +// mRecentRoomDataManager = RecentRoomDao.getInstance(); // mLocalSellRoomManager = SellRoomData.getInstance(); // } // diff --git a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java index df2c407..eda2df6 100644 --- a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java +++ b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java @@ -18,10 +18,13 @@ import com.swsnack.catchhouse.databinding.DialogChangePasswordBinding; import com.swsnack.catchhouse.databinding.FragmentMyPageBinding; import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepositoryImpl; import com.swsnack.catchhouse.view.BaseFragment; import com.swsnack.catchhouse.view.activitity.PostActivity; import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModel; import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModelFactory; +import com.swsnack.catchhouse.viewmodel.recentroomviewmodel.RecentRoomViewModel; +import com.swsnack.catchhouse.viewmodel.recentroomviewmodel.RecentRoomViewModelFactory; import com.swsnack.catchhouse.viewmodel.userviewmodel.UserViewModel; import com.yalantis.ucrop.UCrop; @@ -47,6 +50,8 @@ public class MyPageFragment extends BaseFragment { private FavoriteRoomViewModel mFavoriteRoomViewModel; + private RecentRoomViewModel mRecentRoomViewModel; + private UserViewModel mUserViewModel; @Override protected int getLayout() { @@ -71,6 +76,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat getBinding().setHandler(getViewModel()); getBinding().setFavoriteRoom(mFavoriteRoomViewModel); + getBinding().setRecentRoom(mRecentRoomViewModel); getViewModel().getUserData(); for (String signInMethod : FirebaseAuth.getInstance().getCurrentUser().getProviders()) { @@ -130,6 +136,10 @@ private void init() { mFavoriteRoomViewModel = ViewModelProviders.of(this, new FavoriteRoomViewModelFactory(FavoriteRoomRepositoryImpl.getInstance())) .get(FavoriteRoomViewModel.class); + + mRecentRoomViewModel = ViewModelProviders.of(this, + new RecentRoomViewModelFactory(RecentRoomRepositoryImpl.getInstance())) + .get(RecentRoomViewModel.class); } private void onChangeNickNameBtnClicked() { @@ -192,6 +202,7 @@ private void onSignOutBtnClicked() { public void onStart() { super.onStart(); mFavoriteRoomViewModel.getFavoriteRoom(); + mRecentRoomViewModel.getRecentRoom(); // getViewModel().getFavoriteRoom(); // getViewModel().getRecentRoom(); // getViewModel().getSellRoom(); diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java index 6f340b7..eb195e3 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/postviewmodel/PostViewModel.java @@ -151,8 +151,8 @@ public void onClickDeleteButton(View view) { } private void visitNewRoom() { -// getDataManager() -// .setRecentRoom(room.getValue()); + getDataManager() + .setRecentRoom(room.getValue()); } public LiveData isFavorite() { diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModel.java new file mode 100644 index 0000000..c61b992 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModel.java @@ -0,0 +1,35 @@ +package com.swsnack.catchhouse.viewmodel.recentroomviewmodel; + +import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; +import com.swsnack.catchhouse.viewmodel.ReactiveViewModel; + +import java.util.List; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +public class RecentRoomViewModel extends ReactiveViewModel { + + private RecentRoomRepository mRecentRoomRepository; + private MutableLiveData> mRecentRoomList; + + RecentRoomViewModel(RecentRoomRepository recentRoomRepository) { + this.mRecentRoomRepository = recentRoomRepository; + this.mRecentRoomList = new MutableLiveData<>(); + } + + public void getRecentRoom() { + mRecentRoomList.setValue( + mRecentRoomRepository.getRecentRoom() + ); + } + + public void addRecentRoom(Room room) { + mRecentRoomRepository.setRecentRoom(room); + } + + public LiveData> getRecentRoomList() { + return mRecentRoomList; + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModelFactory.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModelFactory.java new file mode 100644 index 0000000..b19d099 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/recentroomviewmodel/RecentRoomViewModelFactory.java @@ -0,0 +1,27 @@ +package com.swsnack.catchhouse.viewmodel.recentroomviewmodel; + + +import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +public class RecentRoomViewModelFactory extends ViewModelProvider.NewInstanceFactory { + + private RecentRoomRepository mRecentRoomRepository; + + public RecentRoomViewModelFactory(RecentRoomRepository recentRoomRepository) { + this.mRecentRoomRepository = recentRoomRepository; + } + + @NonNull + @Override + public T create(@NonNull Class modelClass) { + if (modelClass.isAssignableFrom(RecentRoomViewModel.class)) { + return (T) new RecentRoomViewModel(mRecentRoomRepository); + } + throw new Fragment.InstantiationException("not viewModel class", null); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java index 7e3d54c..65ed428 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java @@ -44,11 +44,9 @@ public class UserViewModel extends ReactiveViewModel { - private Application mAppContext; private ViewModelListener mListener; public MutableLiveData mProfileUri; private MutableLiveData> mSellRoomList; - private MutableLiveData> mRecentRoomList; private MutableLiveData mGender; private MutableLiveData mUser; public MutableLiveData mIsSigned; @@ -58,10 +56,8 @@ public class UserViewModel extends ReactiveViewModel { UserViewModel(Application application, DataSource dataManager, APIManager apiManager, ViewModelListener listener) { super(dataManager, apiManager); - this.mAppContext = application; this.mProfileUri = new MutableLiveData<>(); this.mSellRoomList = new MutableLiveData<>(); - this.mRecentRoomList = new MutableLiveData<>(); this.mUser = new MutableLiveData<>(); this.mGender = new MutableLiveData<>(); this.mIsSigned = new MutableLiveData<>(); @@ -265,26 +261,10 @@ public void updateProfile(Uri uri) { error -> mListener.onError(getStringFromResource(R.string.snack_update_profile_failed))); } -// public void getSellRoom() { -// mSellRoomList.setValue(getDataManager().getSellRoomList()); -// } - -// public void getFavoriteRoom() { -// mFavoriteRoomList.setValue(getDataManager().getFavoriteRoomList()); -// } - -// public void getRecentRoom() { -// mRecentRoomList.setValue(getDataManager().getRecentRoom()); -// } - public LiveData getUser() { return mUser; } - public LiveData> getRecentRoomList() { - return mRecentRoomList; - } - public LiveData> getSellRoomList() { return mSellRoomList; } diff --git a/app/src/main/res/layout/bottom_my_page.xml b/app/src/main/res/layout/bottom_my_page.xml index 8e653d7..c62ae28 100644 --- a/app/src/main/res/layout/bottom_my_page.xml +++ b/app/src/main/res/layout/bottom_my_page.xml @@ -14,6 +14,10 @@ + + + bind:setRecentRoom="@{recentRoom.recentRoomList}" /> diff --git a/app/src/main/res/layout/fragment_my_page.xml b/app/src/main/res/layout/fragment_my_page.xml index a569985..7ab1e0a 100644 --- a/app/src/main/res/layout/fragment_my_page.xml +++ b/app/src/main/res/layout/fragment_my_page.xml @@ -12,6 +12,10 @@ + + @@ -97,6 +101,7 @@ android:layout_height="wrap_content" app:handler="@{handler}" app:favoriteRoom="@{favoriteRoom}" + app:recentRoom="@{recentRoom}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> From cf1382b694e7f01515696317d123245a549b2bfe Mon Sep 17 00:00:00 2001 From: leeyh Date: Sun, 24 Feb 2019 03:54:02 +0900 Subject: [PATCH 6/6] feature/R-125 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SellList Repository 추가 --- .../catchhouse/data/db/AppDatabase.java | 6 +- .../data/entity/FavoriteRoomEntity.java | 2 +- .../data/entity/SellRoomEntity.java | 2 +- .../source}/chatting/ChattingDataSource.java | 2 +- .../chatting/remote/RemoteChattingImpl.java | 4 +- .../source}/favoriteroom/FavoriteRoomDao.java | 2 +- .../favoriteroom/FavoriteRoomDaoImpl.java | 2 +- .../favoriteroom/FavoriteRoomDataSource.java | 2 +- .../favoriteroom/FavoriteRoomHelper.java | 2 +- .../source}/location/LocationDataSource.java | 2 +- .../location/remote/RemoteLocationImpl.java | 4 +- .../source}/recentroom/RecentRoomDao.java | 2 +- .../recentroom/RecentRoomRepository.java | 2 +- .../recentroom/RecentRoomRepositoryImpl.java | 2 +- .../source}/room/local/SellRoomDao.java | 2 +- .../source}/room/local/SellRoomData.java | 2 +- .../room/local/SellRoomDataHelper.java | 2 +- .../room/local/SellRoomDataSource.java | 2 +- .../source}/room/local/TypeConverter.java | 2 +- .../source}/room/remote/RemoteRoomData.java | 35 ++-- .../room/remote/RemoteRoomDataSource.java | 8 +- .../searching/SearchingDataSource.java | 2 +- .../searching/remote/SearchingDataImpl.java | 11 +- .../source}/user/UserDataSource.java | 2 +- .../source}/user/remote/UserDataImpl.java | 4 +- .../catchhouse/repository/AppDataSource.java | 41 ++--- .../catchhouse/repository/DataSource.java | 12 +- .../FavoriteRoomRepository.java | 2 +- .../FavoriteRoomRepositoryImpl.java | 3 +- .../catchhouse/repository/RoomRepository.java | 41 +++++ .../{room => }/RoomRepositoryImpl.java | 31 ++-- .../repository/room/RoomRepository.java | 27 --- .../repository/room/RoomRepositoryImpl2.java | 158 ------------------ .../view/activitity/BottomNavActivity.java | 3 +- .../view/fragment/MyPageFragment.java | 18 +- .../viewmodel/ReactiveViewModel.java | 4 +- .../FavoriteRoomViewModel.java | 2 +- .../FavoriteRoomViewModelFactory.java | 2 +- .../RecentRoomViewModel.java | 2 +- .../RecentRoomViewModelFactory.java | 2 +- .../roomsviewmodel/RoomsViewModel.java | 2 +- .../sellroomviewmodel/SellRoomViewModel.java | 30 ++++ .../SellRoomViewModelFactory.java | 26 +++ .../userviewmodel/UserViewModel.java | 14 +- .../userviewmodel/UserViewModelFactory.java | 17 +- app/src/main/res/layout/bottom_my_page.xml | 6 +- app/src/main/res/layout/fragment_my_page.xml | 5 + 47 files changed, 233 insertions(+), 323 deletions(-) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/chatting/ChattingDataSource.java (96%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/chatting/remote/RemoteChattingImpl.java (98%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/favoriteroom/FavoriteRoomDao.java (94%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/favoriteroom/FavoriteRoomDaoImpl.java (98%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/favoriteroom/FavoriteRoomDataSource.java (85%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/favoriteroom/FavoriteRoomHelper.java (98%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/location/LocationDataSource.java (90%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/location/remote/RemoteLocationImpl.java (92%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/recentroom/RecentRoomDao.java (97%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/recentroom/RecentRoomRepository.java (82%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/recentroom/RecentRoomRepositoryImpl.java (95%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/local/SellRoomDao.java (94%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/local/SellRoomData.java (98%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/local/SellRoomDataHelper.java (98%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/local/SellRoomDataSource.java (85%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/local/TypeConverter.java (92%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/remote/RemoteRoomData.java (82%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/room/remote/RemoteRoomDataSource.java (86%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/searching/SearchingDataSource.java (88%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/searching/remote/SearchingDataImpl.java (95%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/user/UserDataSource.java (97%) rename app/src/main/java/com/swsnack/catchhouse/{repository => data/source}/user/remote/UserDataImpl.java (97%) rename app/src/main/java/com/swsnack/catchhouse/repository/{favoriteroom => }/FavoriteRoomRepository.java (85%) rename app/src/main/java/com/swsnack/catchhouse/repository/{favoriteroom => }/FavoriteRoomRepositoryImpl.java (91%) create mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/RoomRepository.java rename app/src/main/java/com/swsnack/catchhouse/repository/{room => }/RoomRepositoryImpl.java (69%) delete mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java delete mode 100644 app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModel.java create mode 100644 app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModelFactory.java diff --git a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java index 7746f4e..08aa2ee 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/db/AppDatabase.java @@ -3,9 +3,9 @@ import com.swsnack.catchhouse.AppApplication; import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; import com.swsnack.catchhouse.data.entity.SellRoomEntity; -import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDao; -import com.swsnack.catchhouse.repository.room.local.SellRoomDao; -import com.swsnack.catchhouse.repository.room.local.TypeConverter; +import com.swsnack.catchhouse.data.source.favoriteroom.FavoriteRoomDao; +import com.swsnack.catchhouse.data.source.room.local.SellRoomDao; +import com.swsnack.catchhouse.data.source.room.local.TypeConverter; import androidx.room.Database; import androidx.room.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/data/entity/FavoriteRoomEntity.java b/app/src/main/java/com/swsnack/catchhouse/data/entity/FavoriteRoomEntity.java index 3bf43fe..7cb112a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/entity/FavoriteRoomEntity.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/entity/FavoriteRoomEntity.java @@ -1,6 +1,6 @@ package com.swsnack.catchhouse.data.entity; -import com.swsnack.catchhouse.repository.room.local.TypeConverter; +import com.swsnack.catchhouse.data.source.room.local.TypeConverter; import java.util.List; diff --git a/app/src/main/java/com/swsnack/catchhouse/data/entity/SellRoomEntity.java b/app/src/main/java/com/swsnack/catchhouse/data/entity/SellRoomEntity.java index 9c59197..642a4b1 100644 --- a/app/src/main/java/com/swsnack/catchhouse/data/entity/SellRoomEntity.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/entity/SellRoomEntity.java @@ -1,7 +1,7 @@ package com.swsnack.catchhouse.data.entity; -import com.swsnack.catchhouse.repository.room.local.TypeConverter; +import com.swsnack.catchhouse.data.source.room.local.TypeConverter; import java.util.List; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/chatting/ChattingDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/chatting/ChattingDataSource.java similarity index 96% rename from app/src/main/java/com/swsnack/catchhouse/repository/chatting/ChattingDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/chatting/ChattingDataSource.java index 9501051..7888479 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/chatting/ChattingDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/chatting/ChattingDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.chatting; +package com.swsnack.catchhouse.data.source.chatting; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/chatting/remote/RemoteChattingImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/chatting/remote/RemoteChattingImpl.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/chatting/remote/RemoteChattingImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/chatting/remote/RemoteChattingImpl.java index a7e0656..c96f5c1 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/chatting/remote/RemoteChattingImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/chatting/remote/RemoteChattingImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.chatting.remote; +package com.swsnack.catchhouse.data.source.chatting.remote; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DatabaseException; @@ -13,7 +13,7 @@ import com.swsnack.catchhouse.firebase.DBListValueHelper; import com.swsnack.catchhouse.repository.OnFailedListener; import com.swsnack.catchhouse.repository.OnSuccessListener; -import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; +import com.swsnack.catchhouse.data.source.chatting.ChattingDataSource; import java.util.HashMap; import java.util.List; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDao.java similarity index 94% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDao.java index d1cd05f..0529c48 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDao.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDao.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.data.source.favoriteroom; import com.swsnack.catchhouse.data.entity.FavoriteRoomEntity; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDaoImpl.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDaoImpl.java index 2c1ff55..90cd256 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDaoImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDaoImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.data.source.favoriteroom; import com.google.firebase.auth.FirebaseAuth; import com.swsnack.catchhouse.data.db.AppDatabase; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDataSource.java similarity index 85% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDataSource.java index e8a757b..7159595 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.data.source.favoriteroom; import com.swsnack.catchhouse.data.model.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomHelper.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomHelper.java index 813e97a..db90b78 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomHelper.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/favoriteroom/FavoriteRoomHelper.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.data.source.favoriteroom; import android.os.AsyncTask; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/location/LocationDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/location/LocationDataSource.java similarity index 90% rename from app/src/main/java/com/swsnack/catchhouse/repository/location/LocationDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/location/LocationDataSource.java index 95c1203..81e73da 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/location/LocationDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/location/LocationDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.location; +package com.swsnack.catchhouse.data.source.location; import com.swsnack.catchhouse.data.model.Address; import com.swsnack.catchhouse.repository.OnFailedListener; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/location/remote/RemoteLocationImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/location/remote/RemoteLocationImpl.java similarity index 92% rename from app/src/main/java/com/swsnack/catchhouse/repository/location/remote/RemoteLocationImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/location/remote/RemoteLocationImpl.java index cf0c7c3..6ce6043 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/location/remote/RemoteLocationImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/location/remote/RemoteLocationImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.location.remote; +package com.swsnack.catchhouse.data.source.location.remote; import com.firebase.geofire.GeoFire; import com.firebase.geofire.GeoLocation; @@ -6,7 +6,7 @@ import com.swsnack.catchhouse.data.model.Address; import com.swsnack.catchhouse.repository.OnFailedListener; import com.swsnack.catchhouse.repository.OnSuccessListener; -import com.swsnack.catchhouse.repository.location.LocationDataSource; +import com.swsnack.catchhouse.data.source.location.LocationDataSource; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomDao.java similarity index 97% rename from app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomDao.java index 7b0b72a..9725f95 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomDao.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomDao.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.recentroom; +package com.swsnack.catchhouse.data.source.recentroom; import android.os.Build; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepository.java similarity index 82% rename from app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepository.java index bdd4bce..f687668 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepository.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepository.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.recentroom; +package com.swsnack.catchhouse.data.source.recentroom; import com.swsnack.catchhouse.data.model.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepositoryImpl.java similarity index 95% rename from app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepositoryImpl.java index d659b63..c9ee148 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/recentroom/RecentRoomRepositoryImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/recentroom/RecentRoomRepositoryImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.recentroom; +package com.swsnack.catchhouse.data.source.recentroom; import android.os.Build; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDao.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDao.java similarity index 94% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDao.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDao.java index 04bc11c..d6f6ea4 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDao.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDao.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.data.source.room.local; import com.swsnack.catchhouse.data.entity.SellRoomEntity; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomData.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomData.java index e2acae9..ea2811a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomData.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomData.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.data.source.room.local; import com.google.firebase.auth.FirebaseAuth; import com.swsnack.catchhouse.data.db.AppDatabase; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataHelper.java similarity index 98% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataHelper.java index f2ee28f..bfe4fd0 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataHelper.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataHelper.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.data.source.room.local; import android.os.AsyncTask; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataSource.java similarity index 85% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataSource.java index dc7fe20..e89a747 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/SellRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/SellRoomDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.data.source.room.local; import com.swsnack.catchhouse.data.model.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/TypeConverter.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/TypeConverter.java similarity index 92% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/local/TypeConverter.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/local/TypeConverter.java index a194881..cd00e51 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/local/TypeConverter.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/local/TypeConverter.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.local; +package com.swsnack.catchhouse.data.source.room.local; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomData.java similarity index 82% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomData.java index 03716fe..f6db32a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomData.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomData.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.remote; +package com.swsnack.catchhouse.data.source.room.remote; import android.net.Uri; @@ -18,9 +18,7 @@ import com.swsnack.catchhouse.repository.OnSuccessListener; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import androidx.annotation.NonNull; @@ -46,11 +44,13 @@ private RemoteRoomData() { fs = FirebaseStorage.getInstance().getReference().child(STORAGE_ROOM_IMAGE); } + @Override public String createKey() { return db.push().getKey(); } int uploadCheckCount = 0; + @Override public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { @@ -79,15 +79,16 @@ synchronized void uploadImageCountPlus() { uploadCheckCount++; } - public void setRoom(@NonNull Room room, + @Override + public void setRoom(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - - db.child(createKey()).setValue(room) + db.child(key).setValue(room) .addOnSuccessListener(onSuccessListener::onSuccess) .addOnFailureListener(onFailedListener::onFailed); } + @Override public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { @@ -115,26 +116,14 @@ public void onCancelled(@NonNull DatabaseError databaseError) { onFailedListener)); } - public void delete(@NonNull Room room, + @Override + public void delete(@NonNull String key, + @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - Map updateFields = new HashMap<>(); - updateFields.put("deleted", false); - - db.child(room.getKey()) - .updateChildren(updateFields) - .addOnSuccessListener(onSuccessListener::onSuccess) - .addOnFailureListener(onFailedListener::onFailed); - } - - public void updateRoom(@NonNull Room room, - @NonNull OnSuccessListener onSuccessListener, - @NonNull OnFailedListener onFailedListener) { + room.setDeleted(true); + setRoom(key, room, onSuccessListener, onFailedListener); - db.child(room.getKey()) - .setValue(room) - .addOnSuccessListener(onSuccessListener::onSuccess) - .addOnFailureListener(onFailedListener::onFailed); } } \ No newline at end of file diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomDataSource.java similarity index 86% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomDataSource.java index 40b38f1..13c7fce 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/remote/RemoteRoomDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/room/remote/RemoteRoomDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.room.remote; +package com.swsnack.catchhouse.data.source.room.remote; import android.net.Uri; @@ -9,7 +9,6 @@ import java.util.List; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; public interface RemoteRoomDataSource { @@ -19,7 +18,7 @@ void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener); - void setRoom(@NonNull Room room, + void setRoom(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); @@ -28,7 +27,8 @@ void getRoom(@NonNull String key, @NonNull OnFailedListener onFailedListener); //FIXME 용현's 가 추가함. 확인 부탁이요. Key는 필요 없을 것 같아요. 내부에서 동작하게 하면 Room객체만 던져줘도 될것 같습니다. 나중에 수정 부탁드려요 - void delete(@NonNull Room room, + void delete(@NonNull String key, + @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/searching/SearchingDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/searching/SearchingDataSource.java similarity index 88% rename from app/src/main/java/com/swsnack/catchhouse/repository/searching/SearchingDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/searching/SearchingDataSource.java index 8250641..81b019e 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/searching/SearchingDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/searching/SearchingDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.searching; +package com.swsnack.catchhouse.data.source.searching; import com.skt.Tmap.TMapPOIItem; import com.swsnack.catchhouse.data.model.Filter; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/searching/remote/SearchingDataImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/searching/remote/SearchingDataImpl.java similarity index 95% rename from app/src/main/java/com/swsnack/catchhouse/repository/searching/remote/SearchingDataImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/searching/remote/SearchingDataImpl.java index c18547e..00db5c9 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/searching/remote/SearchingDataImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/searching/remote/SearchingDataImpl.java @@ -1,12 +1,7 @@ -package com.swsnack.catchhouse.repository.searching.remote; +package com.swsnack.catchhouse.data.source.searching.remote; -import android.graphics.Bitmap; import android.util.Log; -import android.util.Pair; -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; -import com.bumptech.glide.request.transition.Transition; import com.firebase.geofire.GeoFire; import com.firebase.geofire.GeoLocation; import com.firebase.geofire.GeoQuery; @@ -18,11 +13,10 @@ import com.google.firebase.database.ValueEventListener; import com.skt.Tmap.TMapData; import com.skt.Tmap.TMapPOIItem; -import com.swsnack.catchhouse.AppApplication; import com.swsnack.catchhouse.Constant; import com.swsnack.catchhouse.data.model.Filter; import com.swsnack.catchhouse.data.model.Room; -import com.swsnack.catchhouse.repository.searching.SearchingDataSource; +import com.swsnack.catchhouse.data.source.searching.SearchingDataSource; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -164,6 +158,7 @@ public void onKeyEntered(String key, GeoLocation location) { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { Room room = dataSnapshot.getValue(Room.class); + Log.d("여기", dataSnapshot.getKey()); room.setKey(dataSnapshot.getKey()); room.setLatitude(location.latitude); room.setLongitude(location.longitude); diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/user/UserDataSource.java b/app/src/main/java/com/swsnack/catchhouse/data/source/user/UserDataSource.java similarity index 97% rename from app/src/main/java/com/swsnack/catchhouse/repository/user/UserDataSource.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/user/UserDataSource.java index 1c6d74f..1bd6e30 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/user/UserDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/user/UserDataSource.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.user; +package com.swsnack.catchhouse.data.source.user; import android.net.Uri; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/user/remote/UserDataImpl.java b/app/src/main/java/com/swsnack/catchhouse/data/source/user/remote/UserDataImpl.java similarity index 97% rename from app/src/main/java/com/swsnack/catchhouse/repository/user/remote/UserDataImpl.java rename to app/src/main/java/com/swsnack/catchhouse/data/source/user/remote/UserDataImpl.java index fbc1f64..41c23c2 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/user/remote/UserDataImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/data/source/user/remote/UserDataImpl.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.user.remote; +package com.swsnack.catchhouse.data.source.user.remote; import android.net.Uri; @@ -11,7 +11,7 @@ import com.swsnack.catchhouse.firebase.StorageHelper; import com.swsnack.catchhouse.repository.OnFailedListener; import com.swsnack.catchhouse.repository.OnSuccessListener; -import com.swsnack.catchhouse.repository.user.UserDataSource; +import com.swsnack.catchhouse.data.source.user.UserDataSource; import java.util.HashMap; import java.util.Map; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java index 99ebfc5..3027638 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/AppDataSource.java @@ -8,22 +8,18 @@ import com.swsnack.catchhouse.data.model.Message; import com.swsnack.catchhouse.data.model.Room; import com.swsnack.catchhouse.data.model.User; -import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; -import com.swsnack.catchhouse.repository.chatting.remote.RemoteChattingImpl; -import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; -import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; -import com.swsnack.catchhouse.repository.location.LocationDataSource; -import com.swsnack.catchhouse.repository.location.remote.RemoteLocationImpl; -import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; -import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepositoryImpl; -import com.swsnack.catchhouse.repository.room.RoomRepository; -import com.swsnack.catchhouse.repository.room.RoomRepositoryImpl; -import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; -import com.swsnack.catchhouse.repository.room.local.SellRoomData; -import com.swsnack.catchhouse.repository.searching.SearchingDataSource; -import com.swsnack.catchhouse.repository.searching.remote.SearchingDataImpl; -import com.swsnack.catchhouse.repository.user.UserDataSource; -import com.swsnack.catchhouse.repository.user.remote.UserDataImpl; +import com.swsnack.catchhouse.data.source.chatting.ChattingDataSource; +import com.swsnack.catchhouse.data.source.chatting.remote.RemoteChattingImpl; +import com.swsnack.catchhouse.data.source.location.LocationDataSource; +import com.swsnack.catchhouse.data.source.location.remote.RemoteLocationImpl; +import com.swsnack.catchhouse.data.source.recentroom.RecentRoomRepository; +import com.swsnack.catchhouse.data.source.recentroom.RecentRoomRepositoryImpl; +import com.swsnack.catchhouse.data.source.room.local.SellRoomDataSource; +import com.swsnack.catchhouse.data.source.room.local.SellRoomData; +import com.swsnack.catchhouse.data.source.searching.SearchingDataSource; +import com.swsnack.catchhouse.data.source.searching.remote.SearchingDataImpl; +import com.swsnack.catchhouse.data.source.user.UserDataSource; +import com.swsnack.catchhouse.data.source.user.remote.UserDataImpl; import java.util.List; @@ -252,8 +248,8 @@ public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, } @Override - public void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - roomRepository.setRoom(room, onSuccessListener, onFailedListener); + public void setRoom(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.setRoom(key, room, onSuccessListener, onFailedListener); } @Override @@ -262,8 +258,8 @@ public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSucc } @Override - public void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - roomRepository.deleteRoom(room, onSuccessListener, onFailedListener); + public void deleteRoom(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { + roomRepository.deleteRoom(key, room, onSuccessListener, onFailedListener); } @Override @@ -271,6 +267,11 @@ public void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSu roomRepository.updateRoom(room, onSuccessListener, onFailedListener); } + @Override + public List getSellList() { + return roomRepository.getSellList(); + } + @Override public void setFavoriteRoom(Room room) { favoriteRoomRepository.setFavoriteRoom(room); diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java index 3ede0a2..1d8eef5 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/DataSource.java @@ -1,12 +1,10 @@ package com.swsnack.catchhouse.repository; -import com.swsnack.catchhouse.repository.chatting.ChattingDataSource; -import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepository; -import com.swsnack.catchhouse.repository.location.LocationDataSource; -import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepository; -import com.swsnack.catchhouse.repository.room.RoomRepository; -import com.swsnack.catchhouse.repository.searching.SearchingDataSource; -import com.swsnack.catchhouse.repository.user.UserDataSource; +import com.swsnack.catchhouse.data.source.chatting.ChattingDataSource; +import com.swsnack.catchhouse.data.source.location.LocationDataSource; +import com.swsnack.catchhouse.data.source.recentroom.RecentRoomRepository; +import com.swsnack.catchhouse.data.source.searching.SearchingDataSource; +import com.swsnack.catchhouse.data.source.user.UserDataSource; public interface DataSource extends UserDataSource, ChattingDataSource, diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepository.java similarity index 85% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java rename to app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepository.java index f074dd6..203af92 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepository.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepository.java @@ -1,4 +1,4 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.repository; import com.swsnack.catchhouse.data.model.Room; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepositoryImpl.java similarity index 91% rename from app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepositoryImpl.java index e09a9fb..c432f49 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/favoriteroom/FavoriteRoomRepositoryImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/FavoriteRoomRepositoryImpl.java @@ -1,6 +1,7 @@ -package com.swsnack.catchhouse.repository.favoriteroom; +package com.swsnack.catchhouse.repository; import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.data.source.favoriteroom.FavoriteRoomDaoImpl; import java.util.List; diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/RoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/RoomRepository.java new file mode 100644 index 0000000..2ecff15 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/repository/RoomRepository.java @@ -0,0 +1,41 @@ +package com.swsnack.catchhouse.repository; + +import android.net.Uri; + +import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.repository.OnFailedListener; +import com.swsnack.catchhouse.repository.OnSuccessListener; + +import java.util.List; + +import androidx.annotation.NonNull; + +public interface RoomRepository { + + String createKey(); + + void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, + @NonNull OnSuccessListener> onSuccessListener, + @NonNull OnFailedListener onFailedListener); + + void setRoom(@NonNull String key, @NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener); + + void getRoom(@NonNull String key, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener); + + //FIXME 용현's 가 추가함. 확인 부탁이요. Key는 필요 없을 것 같아요. 내부에서 동작하게 하면 Room객체만 던져줘도 될것 같습니다. 나중에 수정 부탁드려요 + void deleteRoom(@NonNull String key, + @NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener); + + void updateRoom(@NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener); + + List getSellList(); + +} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java b/app/src/main/java/com/swsnack/catchhouse/repository/RoomRepositoryImpl.java similarity index 69% rename from app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java rename to app/src/main/java/com/swsnack/catchhouse/repository/RoomRepositoryImpl.java index 63c37ca..fb55c4b 100644 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl.java +++ b/app/src/main/java/com/swsnack/catchhouse/repository/RoomRepositoryImpl.java @@ -1,12 +1,10 @@ -package com.swsnack.catchhouse.repository.room; +package com.swsnack.catchhouse.repository; import android.net.Uri; import com.swsnack.catchhouse.data.model.Room; -import com.swsnack.catchhouse.repository.OnFailedListener; -import com.swsnack.catchhouse.repository.OnSuccessListener; -import com.swsnack.catchhouse.repository.room.local.SellRoomData; -import com.swsnack.catchhouse.repository.room.remote.RemoteRoomData; +import com.swsnack.catchhouse.data.source.room.local.SellRoomData; +import com.swsnack.catchhouse.data.source.room.remote.RemoteRoomData; import java.util.List; @@ -33,7 +31,6 @@ private RoomRepositoryImpl() { mLocalRoom = SellRoomData.getInstance(); } - @Override public String createKey() { return mRemoteRoom.createKey(); @@ -45,8 +42,12 @@ public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, } @Override - public void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - mRemoteRoom.setRoom(room, success -> { + public void setRoom(@NonNull String key, + @NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener) { + + mRemoteRoom.setRoom(key, room, success -> { mLocalRoom.setSellRoom(room); onSuccessListener.onSuccess(success); }, onFailedListener); @@ -58,12 +59,15 @@ public void getRoom(@NonNull String key, @NonNull OnSuccessListener onSucc } @Override - public void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { - mRemoteRoom.delete(room, success -> { + public void deleteRoom(@NonNull String key, + @NonNull Room room, + @NonNull OnSuccessListener onSuccessListener, + @NonNull OnFailedListener onFailedListener) { + + mRemoteRoom.delete(key, room, success -> { mLocalRoom.deleteSellRoom(room); onSuccessListener.onSuccess(success); }, onFailedListener); - } @Override @@ -73,4 +77,9 @@ public void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSu onSuccessListener.onSuccess(success); }, onFailedListener); } + + @Override + public List getSellList() { + return mLocalRoom.getSellRoomList(); + } } diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java deleted file mode 100644 index b6c8a1c..0000000 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.swsnack.catchhouse.repository.room; - -import android.net.Uri; - -import com.swsnack.catchhouse.data.model.Room; -import com.swsnack.catchhouse.repository.OnFailedListener; -import com.swsnack.catchhouse.repository.OnSuccessListener; - -import java.util.List; - -import androidx.annotation.NonNull; - -public interface RoomRepository { - - String createKey(); - - void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener); - - void setRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - - void getRoom(@NonNull String key, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - - void deleteRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - - void updateRoom(@NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener); - -} diff --git a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java b/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java deleted file mode 100644 index 9d2d7fa..0000000 --- a/app/src/main/java/com/swsnack/catchhouse/repository/room/RoomRepositoryImpl2.java +++ /dev/null @@ -1,158 +0,0 @@ -//package com.swsnack.catchhouse.repository.room; -// -//import android.net.Uri; -//import android.os.Build; -// -//import com.swsnack.catchhouse.data.model.Room; -//import com.swsnack.catchhouse.repository.OnFailedListener; -//import com.swsnack.catchhouse.repository.OnSuccessListener; -//import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDataSource; -//import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomDaoImpl; -//import com.swsnack.catchhouse.repository.recentroom.RecentRoomDao; -//import com.swsnack.catchhouse.repository.recentroom.RecentRoomDataSource; -//import com.swsnack.catchhouse.repository.room.local.SellRoomDataSource; -//import com.swsnack.catchhouse.repository.room.local.SellRoomData; -//import com.swsnack.catchhouse.repository.room.remote.RemoteRoomDataSource; -//import com.swsnack.catchhouse.repository.room.remote.RemoteRoomData; -// -//import java.util.List; -// -//import androidx.annotation.NonNull; -//import androidx.annotation.Nullable; -//import androidx.annotation.RequiresApi; -// -//public class RoomRepositoryImpl2 implements RemoteRoomDataSource, FavoriteRoomDataSource, RecentRoomDataSource, SellRoomDataSource { -// -// private static RoomRepositoryImpl2 INSTANCE; -// private FavoriteRoomDataSource mLocalRoomDataManager; -// private RecentRoomDataSource mRecentRoomDataManager; -// private SellRoomDataSource mLocalSellRoomManager; -// -// public static RoomRepositoryImpl2 getInstance() { -// if (INSTANCE == null) { -// synchronized (RoomRepositoryImpl2.class) { -// INSTANCE = new RoomRepositoryImpl2(); -// } -// } -// return INSTANCE; -// } -// -// private RoomRepositoryImpl2() { -// -// mLocalRoomDataManager = FavoriteRoomDaoImpl.getInstance(); -// mRecentRoomDataManager = RecentRoomDao.getInstance(); -// mLocalSellRoomManager = SellRoomData.getInstance(); -// } -// -// @Override -// public String createKey() { -// return mRemoteRoomDataSource.createKey(); -// } -// -// @Override -// public void uploadRoomImage(@NonNull String uuid, @NonNull List imageList, @NonNull OnSuccessListener> onSuccessListener, @NonNull OnFailedListener onFailedListener) { -// mRemoteRoomDataSource.uploadRoomImage(uuid, imageList, onSuccessListener, onFailedListener); -// } -// -// @Override -// public void setRoom(@NonNull String key, @NonNull Room room, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { -// mRemoteRoomDataSource.setRoom(key, room, success -> { -// setSellRoom(room); -// onSuccessListener.onSuccess(success); -// } -// , onFailedListener); -// } -// -// @Override -// public void getRoom(@NonNull String key, @Nullable OnSuccessListener onSuccessListener, @Nullable OnFailedListener onFailedListener) { -// mRemoteRoomDataSource.getRoom(key, onSuccessListener, onFailedListener); -// } -// -// @Override -// public void delete(@NonNull String key, @NonNull Room room, @NonNull OnSuccessListener onSuccessListener, @NonNull OnFailedListener onFailedListener) { -// mRemoteRoomDataSource.delete(key, room, success -> { -// deleteSellRoom(room); -// mRecentRoomDataManager.deleteRoom(room); -// onSuccessListener.onSuccess(success); -// } -// , onFailedListener); -// } -// -// @Override -// public void setFavoriteRoom(Room room) { -// mLocalRoomDataManager.setFavoriteRoom(room); -// } -// -// @Override -// public void deleteFavoriteRoom(Room room) { -// mLocalRoomDataManager.deleteFavoriteRoom(room); -// } -// -// @Override -// public List getFavoriteRoomList() { -// return mLocalRoomDataManager.getFavoriteRoomList(); -// } -// -// @Override -// public void deleteFavoriteRoom() { -// mLocalRoomDataManager.deleteFavoriteRoom(); -// } -// -// @Override -// public Room getFavoriteRoom(String key) { -// return mLocalRoomDataManager.getFavoriteRoom(key); -// } -// -// @Override -// public void updateRoom(Room room) { -// mLocalRoomDataManager.updateRoom(room); -// } -// -// @RequiresApi(api = Build.VERSION_CODES.N) -// @Override -// public void setRecentRoom(Room room) { -// mRecentRoomDataManager.setRecentRoom(room); -// } -// -// @RequiresApi(api = Build.VERSION_CODES.N) -// @Override -// public List getRecentRoom() { -// return mRecentRoomDataManager.getRecentRoom(); -// } -// -// @Override -// public void deleteRecentRoomList() { -// mRecentRoomDataManager.deleteRecentRoomList(); -// } -// -// @Override -// public void deleteRoom(Room room) { -// mRecentRoomDataManager.deleteRoom(room); -// } -// -// @Override -// public void setSellRoom(Room room) { -// mLocalSellRoomManager.setSellRoom(room); -// } -// -// @Override -// public void deleteSellRoom(Room room) { -// mLocalSellRoomManager.deleteSellRoom(room); -// } -// -// @Override -// public List getSellRoomList() { -// return mLocalSellRoomManager.getSellRoomList(); -// } -// -// @Override -// public void deleteSellRoom() { -// mLocalSellRoomManager.deleteSellRoom(); -// } -// -// @Override -// public Room getSellRoom(String key) { -// return mLocalSellRoomManager.getSellRoom(key); -// } -// -//} diff --git a/app/src/main/java/com/swsnack/catchhouse/view/activitity/BottomNavActivity.java b/app/src/main/java/com/swsnack/catchhouse/view/activitity/BottomNavActivity.java index c2b201e..4538c00 100644 --- a/app/src/main/java/com/swsnack/catchhouse/view/activitity/BottomNavActivity.java +++ b/app/src/main/java/com/swsnack/catchhouse/view/activitity/BottomNavActivity.java @@ -113,8 +113,7 @@ protected void onCreate(Bundle savedInstanceState) { } private void createViewModels() { - createViewModel(UserViewModel.class, new UserViewModelFactory(getApplication(), - AppDataSource.getInstance(), + createViewModel(UserViewModel.class, new UserViewModelFactory(AppDataSource.getInstance(), APIManager.getInstance(), this)); createViewModel(SearchingViewModel.class, new SearchingViewModelFactory(getApplication(), diff --git a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java index eda2df6..f4e672d 100644 --- a/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java +++ b/app/src/main/java/com/swsnack/catchhouse/view/fragment/MyPageFragment.java @@ -14,17 +14,20 @@ import com.swsnack.catchhouse.R; import com.swsnack.catchhouse.adapter.roomadapter.RoomListAdapter; import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.data.source.recentroom.RecentRoomRepositoryImpl; import com.swsnack.catchhouse.databinding.DialogChangeNickNameBinding; import com.swsnack.catchhouse.databinding.DialogChangePasswordBinding; import com.swsnack.catchhouse.databinding.FragmentMyPageBinding; -import com.swsnack.catchhouse.repository.favoriteroom.FavoriteRoomRepositoryImpl; -import com.swsnack.catchhouse.repository.recentroom.RecentRoomRepositoryImpl; +import com.swsnack.catchhouse.repository.FavoriteRoomRepositoryImpl; +import com.swsnack.catchhouse.repository.RoomRepositoryImpl; import com.swsnack.catchhouse.view.BaseFragment; import com.swsnack.catchhouse.view.activitity.PostActivity; import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModel; import com.swsnack.catchhouse.viewmodel.favoriteroomviewmodel.FavoriteRoomViewModelFactory; import com.swsnack.catchhouse.viewmodel.recentroomviewmodel.RecentRoomViewModel; import com.swsnack.catchhouse.viewmodel.recentroomviewmodel.RecentRoomViewModelFactory; +import com.swsnack.catchhouse.viewmodel.sellroomviewmodel.SellRoomViewModel; +import com.swsnack.catchhouse.viewmodel.sellroomviewmodel.SellRoomViewModelFactory; import com.swsnack.catchhouse.viewmodel.userviewmodel.UserViewModel; import com.yalantis.ucrop.UCrop; @@ -34,6 +37,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; @@ -51,6 +55,7 @@ public class MyPageFragment extends BaseFragment urls, ) ); - getDataManager().setRoom(room.getValue(), onSuccessListener, onFailedListener); + getDataManager().setRoom(key, room.getValue(), onSuccessListener, onFailedListener); } private Single> searchAddress(String keyword) { diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModel.java new file mode 100644 index 0000000..21de9e2 --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModel.java @@ -0,0 +1,30 @@ +package com.swsnack.catchhouse.viewmodel.sellroomviewmodel; + +import com.swsnack.catchhouse.data.model.Room; +import com.swsnack.catchhouse.repository.RoomRepository; +import com.swsnack.catchhouse.viewmodel.ReactiveViewModel; + +import java.util.List; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +public class SellRoomViewModel extends ReactiveViewModel { + + private RoomRepository mRoomRepository; + private MutableLiveData> mSellRoomList; + + SellRoomViewModel(RoomRepository roomRepository) { + this.mRoomRepository = roomRepository; + this.mSellRoomList = new MutableLiveData<>(); + } + + public void getSellList() { + mSellRoomList.setValue( + mRoomRepository.getSellList()); + } + + public LiveData> getMySellList() { + return mSellRoomList; + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModelFactory.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModelFactory.java new file mode 100644 index 0000000..edf145c --- /dev/null +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/sellroomviewmodel/SellRoomViewModelFactory.java @@ -0,0 +1,26 @@ +package com.swsnack.catchhouse.viewmodel.sellroomviewmodel; + +import com.swsnack.catchhouse.repository.RoomRepository; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +public class SellRoomViewModelFactory extends ViewModelProvider.NewInstanceFactory { + + private RoomRepository mRoomRepository; + + public SellRoomViewModelFactory(RoomRepository roomRepository) { + this.mRoomRepository = roomRepository; + } + + @NonNull + @Override + public T create(@NonNull Class modelClass) { + if (modelClass.isAssignableFrom(SellRoomViewModel.class)) { + return (T) new SellRoomViewModel(mRoomRepository); + } + throw new Fragment.InstantiationException("not viewModel Class", null); + } +} diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java index 65ed428..e35990a 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModel.java @@ -1,6 +1,5 @@ package com.swsnack.catchhouse.viewmodel.userviewmodel; -import android.app.Application; import android.content.Intent; import android.net.Uri; import android.view.View; @@ -18,15 +17,12 @@ import com.google.firebase.auth.FirebaseAuthUserCollisionException; import com.google.firebase.auth.GoogleAuthProvider; import com.swsnack.catchhouse.R; -import com.swsnack.catchhouse.data.model.Room; import com.swsnack.catchhouse.data.model.User; import com.swsnack.catchhouse.repository.APIManager; import com.swsnack.catchhouse.repository.DataSource; import com.swsnack.catchhouse.viewmodel.ReactiveViewModel; import com.swsnack.catchhouse.viewmodel.ViewModelListener; -import java.util.List; - import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -45,19 +41,17 @@ public class UserViewModel extends ReactiveViewModel { private ViewModelListener mListener; + public MutableLiveData mIsSigned; public MutableLiveData mProfileUri; - private MutableLiveData> mSellRoomList; private MutableLiveData mGender; private MutableLiveData mUser; - public MutableLiveData mIsSigned; public MutableLiveData mEmail; public MutableLiveData mPassword; public MutableLiveData mNickName; - UserViewModel(Application application, DataSource dataManager, APIManager apiManager, ViewModelListener listener) { + UserViewModel(DataSource dataManager, APIManager apiManager, ViewModelListener listener) { super(dataManager, apiManager); this.mProfileUri = new MutableLiveData<>(); - this.mSellRoomList = new MutableLiveData<>(); this.mUser = new MutableLiveData<>(); this.mGender = new MutableLiveData<>(); this.mIsSigned = new MutableLiveData<>(); @@ -265,10 +259,6 @@ public LiveData getUser() { return mUser; } - public LiveData> getSellRoomList() { - return mSellRoomList; - } - private LiveData getProfileUri() { return mProfileUri; } diff --git a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModelFactory.java b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModelFactory.java index 8c7dc40..cfee70f 100644 --- a/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModelFactory.java +++ b/app/src/main/java/com/swsnack/catchhouse/viewmodel/userviewmodel/UserViewModelFactory.java @@ -1,24 +1,21 @@ package com.swsnack.catchhouse.viewmodel.userviewmodel; -import android.app.Application; -import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProvider; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; - import com.swsnack.catchhouse.repository.APIManager; import com.swsnack.catchhouse.repository.DataSource; import com.swsnack.catchhouse.viewmodel.ViewModelListener; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + public class UserViewModelFactory extends ViewModelProvider.NewInstanceFactory { - private Application mApplication; private DataSource mDatamanager; private APIManager mApiManager; private ViewModelListener mListener; - public UserViewModelFactory(@NonNull Application application, DataSource dataManager, APIManager apiManager, ViewModelListener listener) { - this.mApplication = application; + public UserViewModelFactory(DataSource dataManager, APIManager apiManager, ViewModelListener listener) { this.mDatamanager = dataManager; this.mApiManager = apiManager; this.mListener = listener; @@ -28,7 +25,7 @@ public UserViewModelFactory(@NonNull Application application, DataSource dataMan @Override public T create(@NonNull Class modelClass) { if (modelClass.isAssignableFrom(UserViewModel.class)) { - return (T) new UserViewModel(mApplication, mDatamanager, mApiManager, mListener); + return (T) new UserViewModel(mDatamanager, mApiManager, mListener); } throw new Fragment.InstantiationException("not viewModel class", null); } diff --git a/app/src/main/res/layout/bottom_my_page.xml b/app/src/main/res/layout/bottom_my_page.xml index c62ae28..9469c92 100644 --- a/app/src/main/res/layout/bottom_my_page.xml +++ b/app/src/main/res/layout/bottom_my_page.xml @@ -18,6 +18,10 @@ + + + bind:setSellList="@{sellRoom.mySellList}" /> diff --git a/app/src/main/res/layout/fragment_my_page.xml b/app/src/main/res/layout/fragment_my_page.xml index 7ab1e0a..2353dc2 100644 --- a/app/src/main/res/layout/fragment_my_page.xml +++ b/app/src/main/res/layout/fragment_my_page.xml @@ -16,6 +16,10 @@ + + @@ -102,6 +106,7 @@ app:handler="@{handler}" app:favoriteRoom="@{favoriteRoom}" app:recentRoom="@{recentRoom}" + app:sellRoom="@{sellRoom}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />