Skip to content

Commit 1652a35

Browse files
committed
boostcampth#1 주석 달기.
boostcampth#2 NetworkUtil 을 생성 및 BroadcastReceiver 를 이용한 Network 상태 Observe boostcampth#3 Strategy Pattern 을 이용한 현재 목록 정렬 ( OS Version 에 따라 다른 로직 수행 ) boostcampth#4 BasePresenter 에 Detached Method 추가
1 parent 25e0412 commit 1652a35

31 files changed

Lines changed: 425 additions & 16 deletions

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="com.example.yeseul.movieapp">
44

5-
<uses-permission android:name="android.permission.INTERNET"/>
5+
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
67

78
<application
89
android:allowBackup="true"
@@ -14,9 +15,11 @@
1415
<activity android:name=".view.main.MainActivity">
1516
<intent-filter>
1617
<action android:name="android.intent.action.MAIN" />
18+
1719
<category android:name="android.intent.category.LAUNCHER" />
1820
</intent-filter>
1921
</activity>
22+
<activity android:name=".view.custom.OrderSelectDialog"></activity>
2023
</application>
2124

2225
</manifest>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.os.Build;
4+
5+
import com.example.yeseul.movieapp.pojo.Movie;
6+
7+
import java.util.Collections;
8+
import java.util.Comparator;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
11+
12+
public class MovieSortByDictionary implements MovieSortStrategy {
13+
@Override
14+
public List<Movie> sort(List<Movie> list) {
15+
if(Build.VERSION_CODES.N <= Build.VERSION.SDK_INT) {
16+
list = list.stream().sorted(Comparator.comparing(Movie::getTitle)).collect(Collectors.toList());
17+
} else {
18+
Collections.sort(list, (o1, o2) -> (o1.getTitle().compareTo(o2.getTitle())));
19+
}
20+
return list;
21+
}
22+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.os.Build;
4+
5+
import com.example.yeseul.movieapp.pojo.Movie;
6+
7+
import java.util.Collections;
8+
import java.util.Comparator;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
11+
12+
public class MovieSortByHighestRating implements MovieSortStrategy {
13+
@Override
14+
public List<Movie> sort(List<Movie> list) {
15+
if(Build.VERSION_CODES.N <= Build.VERSION.SDK_INT) {
16+
list = list.stream().
17+
sorted((o1, o2) -> Double.compare(Double.parseDouble(o2.getUserRating()), Double.parseDouble(o1.getUserRating()))).
18+
collect(Collectors.toList());
19+
} else {
20+
Collections.sort(list, (o1, o2) -> (Double.compare(Double.parseDouble(o2.getUserRating()), Double.parseDouble(o1.getUserRating()))));
21+
}
22+
return list;
23+
}
24+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.os.Build;
4+
5+
import com.example.yeseul.movieapp.pojo.Movie;
6+
7+
import java.util.Collections;
8+
import java.util.Comparator;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
11+
12+
public class MovieSortByLatestPubDate implements MovieSortStrategy {
13+
@Override
14+
public List<Movie> sort(List<Movie> list) {
15+
if(Build.VERSION_CODES.N <= Build.VERSION.SDK_INT) {
16+
list = list.stream().sorted(Comparator.comparing(Movie::getPubDate).reversed()).collect(Collectors.toList());
17+
} else {
18+
Collections.sort(list, (o1, o2) -> (o2.getPubDate().compareTo(o1.getPubDate())));
19+
}
20+
return list;
21+
}
22+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.os.Build;
4+
5+
import com.example.yeseul.movieapp.pojo.Movie;
6+
7+
import java.util.Collections;
8+
import java.util.Comparator;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
11+
12+
public class MovieSortByLowestRating implements MovieSortStrategy {
13+
@Override
14+
public List<Movie> sort(List<Movie> list) {
15+
if(Build.VERSION_CODES.N <= Build.VERSION.SDK_INT) {
16+
list = list.stream().
17+
sorted((o1, o2) -> Double.compare(Double.parseDouble(o1.getUserRating()), Double.parseDouble(o2.getUserRating()))).
18+
collect(Collectors.toList());
19+
} else {
20+
Collections.sort(list, (o1, o2) -> (Double.compare(Double.parseDouble(o1.getUserRating()), Double.parseDouble(o2.getUserRating()))));
21+
}
22+
return list;
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.annotation.TargetApi;
4+
import android.os.Build;
5+
6+
import com.example.yeseul.movieapp.pojo.Movie;
7+
8+
import java.util.Arrays;
9+
import java.util.Collections;
10+
import java.util.Comparator;
11+
import java.util.List;
12+
import java.util.stream.Collectors;
13+
14+
public class MovieSortByOldPubDate implements MovieSortStrategy {
15+
@Override
16+
public List<Movie> sort(List<Movie> list) {
17+
if(Build.VERSION_CODES.N <= Build.VERSION.SDK_INT) {
18+
list = list.stream().sorted(Comparator.comparing(Movie::getPubDate)).collect(Collectors.toList());
19+
} else {
20+
Collections.sort(list, (o1, o2) -> (o2.getPubDate().compareTo(o1.getPubDate())));
21+
}
22+
return list;
23+
}
24+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import android.annotation.TargetApi;
4+
import android.os.Build;
5+
6+
import com.example.yeseul.movieapp.pojo.Movie;
7+
8+
import java.util.List;
9+
10+
public interface MovieSortStrategy {
11+
12+
public static final int DICTIONARY_ORDER = 0;
13+
public static final int LATEST_ORDER = 1;
14+
public static final int OLDEST_ORDER = 2;
15+
public static final int HIGHEST_RATING_ORDER = 3;
16+
public static final int LOWEST_RATING_ORDER = 4;
17+
18+
List<Movie> sort(List<Movie> list);
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.example.yeseul.movieapp.data.model;
2+
3+
import static com.example.yeseul.movieapp.data.model.MovieSortStrategy.*;
4+
5+
public class MovieStrategyFactory {
6+
public static MovieSortStrategy create(int idx) {
7+
8+
switch (idx) {
9+
case DICTIONARY_ORDER:
10+
return new MovieSortByDictionary();
11+
case LATEST_ORDER:
12+
return new MovieSortByLatestPubDate();
13+
case OLDEST_ORDER:
14+
return new MovieSortByOldPubDate();
15+
case HIGHEST_RATING_ORDER:
16+
return new MovieSortByHighestRating();
17+
case LOWEST_RATING_ORDER:
18+
return new MovieSortByLowestRating();
19+
}
20+
return null;
21+
}
22+
}

app/src/main/java/com/example/yeseul/movieapp/data/remote/RetrofitClient.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
public class RetrofitClient {
1616

1717
private static final String BASE_URL = "https://openapi.naver.com/v1/";
18-
1918
private static final String CLIENT_ID = "uMJDm4Jz6qzLyQPT5KK9";
2019
private static final String CLIENT_SECRET = "DxWswCSZ20";
2120

app/src/main/java/com/example/yeseul/movieapp/data/source/movie/MovieDataSource.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99
import io.reactivex.Single;
1010

11+
/*
12+
* Repository 에서 사용할 기능 선언 */
1113
public interface MovieDataSource {
1214

15+
/* API 가 유일한 데이터를 반환하는 경우 Single 이 유용하다.(한 번만 데이터를 발행) */
1316
Single<SearchMovieResponse> searchMovies(Map<String, String> request);
1417
}

0 commit comments

Comments
 (0)