diff --git a/app-mvp/build.gradle b/app-mvp/build.gradle index 01e8cd9..d33ec8e 100644 --- a/app-mvp/build.gradle +++ b/app-mvp/build.gradle @@ -31,6 +31,7 @@ dependencies { compile dependencies.picasso compile dependencies.rxAndroid compile dependencies.circleImageView + compile project(':model') testCompile dependencies.jUnit testCompile dependencies.mockito diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/ArchiApplication.java b/app-mvp/src/main/java/uk/ivanc/archimvp/ArchiApplication.java index 59d5c44..3fdd4ef 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/ArchiApplication.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/ArchiApplication.java @@ -5,7 +5,7 @@ import rx.Scheduler; import rx.schedulers.Schedulers; -import uk.ivanc.archimvp.model.GithubService; +import uk.ivanc.archi.model.GithubService; public class ArchiApplication extends Application { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/RepositoryAdapter.java b/app-mvp/src/main/java/uk/ivanc/archimvp/RepositoryAdapter.java index bf29c57..5196465 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/RepositoryAdapter.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/RepositoryAdapter.java @@ -10,7 +10,7 @@ import java.util.Collections; import java.util.List; -import uk.ivanc.archimvp.model.Repository; +import uk.ivanc.archi.model.Repository; public class RepositoryAdapter extends RecyclerView.Adapter { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/model/GithubService.java b/app-mvp/src/main/java/uk/ivanc/archimvp/model/GithubService.java deleted file mode 100644 index 21e74b0..0000000 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/model/GithubService.java +++ /dev/null @@ -1,32 +0,0 @@ -package uk.ivanc.archimvp.model; - -import java.util.List; - -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; -import retrofit2.http.GET; -import retrofit2.http.Path; -import retrofit2.http.Url; -import rx.Observable; - -public interface GithubService { - - @GET("users/{username}/repos") - Observable> publicRepositories(@Path("username") String username); - - @GET - Observable userFromUrl(@Url String userUrl); - - - class Factory { - public static GithubService create() { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) - .build(); - return retrofit.create(GithubService.class); - } - } -} diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/model/Repository.java b/app-mvp/src/main/java/uk/ivanc/archimvp/model/Repository.java deleted file mode 100644 index 6d9e723..0000000 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/model/Repository.java +++ /dev/null @@ -1,115 +0,0 @@ -package uk.ivanc.archimvp.model; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.google.gson.annotations.SerializedName; - -public class Repository implements Parcelable { - public long id; - public String name; - public String description; - public int forks; - public int watchers; - @SerializedName("stargazers_count") - public int stars; - public String language; - public String homepage; - public User owner; - public boolean fork; - - public Repository() { - } - - public boolean hasHomepage() { - return homepage != null && !homepage.isEmpty(); - } - - public boolean hasLanguage() { - return language != null && !language.isEmpty(); - } - - public boolean isFork() { - return fork; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(this.id); - dest.writeString(this.name); - dest.writeString(this.description); - dest.writeInt(this.forks); - dest.writeInt(this.watchers); - dest.writeInt(this.stars); - dest.writeString(this.language); - dest.writeString(this.homepage); - dest.writeParcelable(this.owner, 0); - dest.writeByte(fork ? (byte) 1 : (byte) 0); - } - - protected Repository(Parcel in) { - this.id = in.readLong(); - this.name = in.readString(); - this.description = in.readString(); - this.forks = in.readInt(); - this.watchers = in.readInt(); - this.stars = in.readInt(); - this.language = in.readString(); - this.homepage = in.readString(); - this.owner = in.readParcelable(User.class.getClassLoader()); - this.fork = in.readByte() != 0; - } - - public static final Creator CREATOR = new Creator() { - public Repository createFromParcel(Parcel source) { - return new Repository(source); - } - - public Repository[] newArray(int size) { - return new Repository[size]; - } - }; - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Repository that = (Repository) o; - - if (id != that.id) return false; - if (forks != that.forks) return false; - if (watchers != that.watchers) return false; - if (stars != that.stars) return false; - if (fork != that.fork) return false; - if (name != null ? !name.equals(that.name) : that.name != null) return false; - if (description != null ? !description.equals(that.description) : that.description != null) - return false; - if (language != null ? !language.equals(that.language) : that.language != null) - return false; - if (homepage != null ? !homepage.equals(that.homepage) : that.homepage != null) - return false; - return !(owner != null ? !owner.equals(that.owner) : that.owner != null); - - } - - @Override - public int hashCode() { - int result = (int) (id ^ (id >>> 32)); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (description != null ? description.hashCode() : 0); - result = 31 * result + forks; - result = 31 * result + watchers; - result = 31 * result + stars; - result = 31 * result + (language != null ? language.hashCode() : 0); - result = 31 * result + (homepage != null ? homepage.hashCode() : 0); - result = 31 * result + (owner != null ? owner.hashCode() : 0); - result = 31 * result + (fork ? 1 : 0); - return result; - } -} diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/model/User.java b/app-mvp/src/main/java/uk/ivanc/archimvp/model/User.java deleted file mode 100644 index 5c56714..0000000 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/model/User.java +++ /dev/null @@ -1,94 +0,0 @@ -package uk.ivanc.archimvp.model; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.google.gson.annotations.SerializedName; - -public class User implements Parcelable { - public long id; - public String name; - public String url; - public String email; - public String login; - public String location; - @SerializedName("avatar_url") - public String avatarUrl; - - public User() { - } - - public boolean hasEmail() { - return email != null && !email.isEmpty(); - } - - public boolean hasLocation() { - return location != null && !location.isEmpty(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(this.id); - dest.writeString(this.name); - dest.writeString(this.url); - dest.writeString(this.email); - dest.writeString(this.login); - dest.writeString(this.location); - dest.writeString(this.avatarUrl); - } - - protected User(Parcel in) { - this.id = in.readLong(); - this.name = in.readString(); - this.url = in.readString(); - this.email = in.readString(); - this.login = in.readString(); - this.location = in.readString(); - this.avatarUrl = in.readString(); - } - - public static final Creator CREATOR = new Creator() { - public User createFromParcel(Parcel source) { - return new User(source); - } - - public User[] newArray(int size) { - return new User[size]; - } - }; - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - User user = (User) o; - - if (id != user.id) return false; - if (name != null ? !name.equals(user.name) : user.name != null) return false; - if (url != null ? !url.equals(user.url) : user.url != null) return false; - if (email != null ? !email.equals(user.email) : user.email != null) return false; - if (login != null ? !login.equals(user.login) : user.login != null) return false; - if (location != null ? !location.equals(user.location) : user.location != null) - return false; - return !(avatarUrl != null ? !avatarUrl.equals(user.avatarUrl) : user.avatarUrl != null); - - } - - @Override - public int hashCode() { - int result = (int) (id ^ (id >>> 32)); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (url != null ? url.hashCode() : 0); - result = 31 * result + (email != null ? email.hashCode() : 0); - result = 31 * result + (login != null ? login.hashCode() : 0); - result = 31 * result + (location != null ? location.hashCode() : 0); - result = 31 * result + (avatarUrl != null ? avatarUrl.hashCode() : 0); - return result; - } -} diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/MainPresenter.java b/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/MainPresenter.java index 79700cb..e32a363 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/MainPresenter.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/MainPresenter.java @@ -8,10 +8,10 @@ import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvp.ArchiApplication; import uk.ivanc.archimvp.R; -import uk.ivanc.archimvp.model.GithubService; -import uk.ivanc.archimvp.model.Repository; import uk.ivanc.archimvp.view.MainMvpView; public class MainPresenter implements Presenter { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/RepositoryPresenter.java b/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/RepositoryPresenter.java index f420b8b..dca0853 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/RepositoryPresenter.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/presenter/RepositoryPresenter.java @@ -5,9 +5,9 @@ import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.User; import uk.ivanc.archimvp.ArchiApplication; -import uk.ivanc.archimvp.model.GithubService; -import uk.ivanc.archimvp.model.User; import uk.ivanc.archimvp.view.RepositoryMvpView; public class RepositoryPresenter implements Presenter { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainActivity.java b/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainActivity.java index 16d41a0..790591b 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainActivity.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainActivity.java @@ -19,9 +19,9 @@ import java.util.List; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvp.R; import uk.ivanc.archimvp.RepositoryAdapter; -import uk.ivanc.archimvp.model.Repository; import uk.ivanc.archimvp.presenter.MainPresenter; public class MainActivity extends AppCompatActivity implements MainMvpView { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainMvpView.java b/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainMvpView.java index 8349bd2..09a80eb 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainMvpView.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/view/MainMvpView.java @@ -2,7 +2,7 @@ import java.util.List; -import uk.ivanc.archimvp.model.Repository; +import uk.ivanc.archi.model.Repository; public interface MainMvpView extends MvpView { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryActivity.java b/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryActivity.java index 5d368af..c896f13 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryActivity.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryActivity.java @@ -12,9 +12,9 @@ import com.squareup.picasso.Picasso; +import uk.ivanc.archi.model.Repository; +import uk.ivanc.archi.model.User; import uk.ivanc.archimvp.R; -import uk.ivanc.archimvp.model.Repository; -import uk.ivanc.archimvp.model.User; import uk.ivanc.archimvp.presenter.RepositoryPresenter; public class RepositoryActivity extends AppCompatActivity implements RepositoryMvpView { diff --git a/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryMvpView.java b/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryMvpView.java index 0337147..86fb697 100644 --- a/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryMvpView.java +++ b/app-mvp/src/main/java/uk/ivanc/archimvp/view/RepositoryMvpView.java @@ -1,6 +1,6 @@ package uk.ivanc.archimvp.view; -import uk.ivanc.archimvp.model.User; +import uk.ivanc.archi.model.User; public interface RepositoryMvpView extends MvpView { diff --git a/app-mvp/src/test/java/uk/ivanc/archimvp/MainPresenterTest.java b/app-mvp/src/test/java/uk/ivanc/archimvp/MainPresenterTest.java index 5670b6a..61965cf 100644 --- a/app-mvp/src/test/java/uk/ivanc/archimvp/MainPresenterTest.java +++ b/app-mvp/src/test/java/uk/ivanc/archimvp/MainPresenterTest.java @@ -16,8 +16,8 @@ import retrofit2.adapter.rxjava.HttpException; import rx.Observable; import rx.schedulers.Schedulers; -import uk.ivanc.archimvp.model.GithubService; -import uk.ivanc.archimvp.model.Repository; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvp.presenter.MainPresenter; import uk.ivanc.archimvp.util.MockModelFabric; import uk.ivanc.archimvp.view.MainMvpView; diff --git a/app-mvp/src/test/java/uk/ivanc/archimvp/RepositoryPresenterTest.java b/app-mvp/src/test/java/uk/ivanc/archimvp/RepositoryPresenterTest.java index 7b25ddc..a1cecbb 100644 --- a/app-mvp/src/test/java/uk/ivanc/archimvp/RepositoryPresenterTest.java +++ b/app-mvp/src/test/java/uk/ivanc/archimvp/RepositoryPresenterTest.java @@ -10,8 +10,8 @@ import rx.Observable; import rx.schedulers.Schedulers; -import uk.ivanc.archimvp.model.GithubService; -import uk.ivanc.archimvp.model.User; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.User; import uk.ivanc.archimvp.presenter.RepositoryPresenter; import uk.ivanc.archimvp.util.MockModelFabric; import uk.ivanc.archimvp.view.RepositoryMvpView; diff --git a/app-mvp/src/test/java/uk/ivanc/archimvp/util/MockModelFabric.java b/app-mvp/src/test/java/uk/ivanc/archimvp/util/MockModelFabric.java index acc7613..b480d14 100644 --- a/app-mvp/src/test/java/uk/ivanc/archimvp/util/MockModelFabric.java +++ b/app-mvp/src/test/java/uk/ivanc/archimvp/util/MockModelFabric.java @@ -4,8 +4,8 @@ import java.util.List; import java.util.Random; -import uk.ivanc.archimvp.model.Repository; -import uk.ivanc.archimvp.model.User; +import uk.ivanc.archi.model.Repository; +import uk.ivanc.archi.model.User; public class MockModelFabric { diff --git a/app-mvvm/build.gradle b/app-mvvm/build.gradle index 4bdbfc7..2599bea 100644 --- a/app-mvvm/build.gradle +++ b/app-mvvm/build.gradle @@ -36,6 +36,7 @@ dependencies { compile dependencies.picasso compile dependencies.rxAndroid compile dependencies.circleImageView + compile project(':model') testCompile dependencies.jUnit testCompile dependencies.mockito diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/ArchiApplication.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/ArchiApplication.java index cd4bc53..7783425 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/ArchiApplication.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/ArchiApplication.java @@ -5,7 +5,7 @@ import rx.Scheduler; import rx.schedulers.Schedulers; -import uk.ivanc.archimvvm.model.GithubService; +import uk.ivanc.archi.model.GithubService; public class ArchiApplication extends Application { diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/RepositoryAdapter.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/RepositoryAdapter.java index 011d6c4..a3c609b 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/RepositoryAdapter.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/RepositoryAdapter.java @@ -8,8 +8,8 @@ import java.util.Collections; import java.util.List; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.databinding.ItemRepoBinding; -import uk.ivanc.archimvvm.model.Repository; import uk.ivanc.archimvvm.viewmodel.ItemRepoViewModel; public class RepositoryAdapter extends RecyclerView.Adapter { diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/GithubService.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/GithubService.java deleted file mode 100644 index 3f90d55..0000000 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/GithubService.java +++ /dev/null @@ -1,32 +0,0 @@ -package uk.ivanc.archimvvm.model; - -import java.util.List; - -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; -import retrofit2.http.GET; -import retrofit2.http.Path; -import retrofit2.http.Url; -import rx.Observable; - -public interface GithubService { - - @GET("users/{username}/repos") - Observable> publicRepositories(@Path("username") String username); - - @GET - Observable userFromUrl(@Url String userUrl); - - - class Factory { - public static GithubService create() { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) - .build(); - return retrofit.create(GithubService.class); - } - } -} diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/Repository.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/Repository.java deleted file mode 100644 index ab43acb..0000000 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/Repository.java +++ /dev/null @@ -1,115 +0,0 @@ -package uk.ivanc.archimvvm.model; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.google.gson.annotations.SerializedName; - -public class Repository implements Parcelable { - public long id; - public String name; - public String description; - public int forks; - public int watchers; - @SerializedName("stargazers_count") - public int stars; - public String language; - public String homepage; - public User owner; - public boolean fork; - - public Repository() { - } - - public boolean hasHomepage() { - return homepage != null && !homepage.isEmpty(); - } - - public boolean hasLanguage() { - return language != null && !language.isEmpty(); - } - - public boolean isFork() { - return fork; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(this.id); - dest.writeString(this.name); - dest.writeString(this.description); - dest.writeInt(this.forks); - dest.writeInt(this.watchers); - dest.writeInt(this.stars); - dest.writeString(this.language); - dest.writeString(this.homepage); - dest.writeParcelable(this.owner, 0); - dest.writeByte(fork ? (byte) 1 : (byte) 0); - } - - protected Repository(Parcel in) { - this.id = in.readLong(); - this.name = in.readString(); - this.description = in.readString(); - this.forks = in.readInt(); - this.watchers = in.readInt(); - this.stars = in.readInt(); - this.language = in.readString(); - this.homepage = in.readString(); - this.owner = in.readParcelable(User.class.getClassLoader()); - this.fork = in.readByte() != 0; - } - - public static final Creator CREATOR = new Creator() { - public Repository createFromParcel(Parcel source) { - return new Repository(source); - } - - public Repository[] newArray(int size) { - return new Repository[size]; - } - }; - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Repository that = (Repository) o; - - if (id != that.id) return false; - if (forks != that.forks) return false; - if (watchers != that.watchers) return false; - if (stars != that.stars) return false; - if (fork != that.fork) return false; - if (name != null ? !name.equals(that.name) : that.name != null) return false; - if (description != null ? !description.equals(that.description) : that.description != null) - return false; - if (language != null ? !language.equals(that.language) : that.language != null) - return false; - if (homepage != null ? !homepage.equals(that.homepage) : that.homepage != null) - return false; - return !(owner != null ? !owner.equals(that.owner) : that.owner != null); - - } - - @Override - public int hashCode() { - int result = (int) (id ^ (id >>> 32)); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (description != null ? description.hashCode() : 0); - result = 31 * result + forks; - result = 31 * result + watchers; - result = 31 * result + stars; - result = 31 * result + (language != null ? language.hashCode() : 0); - result = 31 * result + (homepage != null ? homepage.hashCode() : 0); - result = 31 * result + (owner != null ? owner.hashCode() : 0); - result = 31 * result + (fork ? 1 : 0); - return result; - } -} diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/User.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/User.java deleted file mode 100644 index 5e1a8b9..0000000 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/model/User.java +++ /dev/null @@ -1,94 +0,0 @@ -package uk.ivanc.archimvvm.model; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.google.gson.annotations.SerializedName; - -public class User implements Parcelable { - public long id; - public String name; - public String url; - public String email; - public String login; - public String location; - @SerializedName("avatar_url") - public String avatarUrl; - - public User() { - } - - public boolean hasEmail() { - return email != null && !email.isEmpty(); - } - - public boolean hasLocation() { - return location != null && !location.isEmpty(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(this.id); - dest.writeString(this.name); - dest.writeString(this.url); - dest.writeString(this.email); - dest.writeString(this.login); - dest.writeString(this.location); - dest.writeString(this.avatarUrl); - } - - protected User(Parcel in) { - this.id = in.readLong(); - this.name = in.readString(); - this.url = in.readString(); - this.email = in.readString(); - this.login = in.readString(); - this.location = in.readString(); - this.avatarUrl = in.readString(); - } - - public static final Creator CREATOR = new Creator() { - public User createFromParcel(Parcel source) { - return new User(source); - } - - public User[] newArray(int size) { - return new User[size]; - } - }; - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - User user = (User) o; - - if (id != user.id) return false; - if (name != null ? !name.equals(user.name) : user.name != null) return false; - if (url != null ? !url.equals(user.url) : user.url != null) return false; - if (email != null ? !email.equals(user.email) : user.email != null) return false; - if (login != null ? !login.equals(user.login) : user.login != null) return false; - if (location != null ? !location.equals(user.location) : user.location != null) - return false; - return !(avatarUrl != null ? !avatarUrl.equals(user.avatarUrl) : user.avatarUrl != null); - - } - - @Override - public int hashCode() { - int result = (int) (id ^ (id >>> 32)); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (url != null ? url.hashCode() : 0); - result = 31 * result + (email != null ? email.hashCode() : 0); - result = 31 * result + (login != null ? login.hashCode() : 0); - result = 31 * result + (location != null ? location.hashCode() : 0); - result = 31 * result + (avatarUrl != null ? avatarUrl.hashCode() : 0); - return result; - } -} diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/MainActivity.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/MainActivity.java index c66ee75..a5d4e1a 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/MainActivity.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/MainActivity.java @@ -10,10 +10,10 @@ import java.util.List; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.R; import uk.ivanc.archimvvm.RepositoryAdapter; import uk.ivanc.archimvvm.databinding.MainActivityBinding; -import uk.ivanc.archimvvm.model.Repository; import uk.ivanc.archimvvm.viewmodel.MainViewModel; public class MainActivity extends AppCompatActivity implements MainViewModel.DataListener { diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/RepositoryActivity.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/RepositoryActivity.java index 01aded7..e2e1109 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/RepositoryActivity.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/view/RepositoryActivity.java @@ -7,9 +7,9 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.R; import uk.ivanc.archimvvm.databinding.RepositoryActivityBinding; -import uk.ivanc.archimvvm.model.Repository; import uk.ivanc.archimvvm.viewmodel.RepositoryViewModel; public class RepositoryActivity extends AppCompatActivity { diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/ItemRepoViewModel.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/ItemRepoViewModel.java index f7d1815..61031e7 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/ItemRepoViewModel.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/ItemRepoViewModel.java @@ -4,8 +4,8 @@ import android.databinding.BaseObservable; import android.view.View; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.R; -import uk.ivanc.archimvvm.model.Repository; import uk.ivanc.archimvvm.view.RepositoryActivity; /** diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/MainViewModel.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/MainViewModel.java index 2c453d8..7ccd700 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/MainViewModel.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/MainViewModel.java @@ -17,10 +17,10 @@ import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.ArchiApplication; import uk.ivanc.archimvvm.R; -import uk.ivanc.archimvvm.model.GithubService; -import uk.ivanc.archimvvm.model.Repository; /** * View model for the MainActivity diff --git a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/RepositoryViewModel.java b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/RepositoryViewModel.java index 03217f0..7dcf394 100644 --- a/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/RepositoryViewModel.java +++ b/app-mvvm/src/main/java/uk/ivanc/archimvvm/viewmodel/RepositoryViewModel.java @@ -13,11 +13,11 @@ import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; +import uk.ivanc.archi.model.User; import uk.ivanc.archimvvm.ArchiApplication; import uk.ivanc.archimvvm.R; -import uk.ivanc.archimvvm.model.GithubService; -import uk.ivanc.archimvvm.model.Repository; -import uk.ivanc.archimvvm.model.User; /** * ViewModel for the RepositoryActivity diff --git a/app-mvvm/src/test/java/uk/ivanc/archimvvm/ItemRepoViewModelTest.java b/app-mvvm/src/test/java/uk/ivanc/archimvvm/ItemRepoViewModelTest.java index fc5c7ca..4240665 100644 --- a/app-mvvm/src/test/java/uk/ivanc/archimvvm/ItemRepoViewModelTest.java +++ b/app-mvvm/src/test/java/uk/ivanc/archimvvm/ItemRepoViewModelTest.java @@ -12,7 +12,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import uk.ivanc.archimvvm.model.Repository; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.viewmodel.ItemRepoViewModel; import static org.junit.Assert.assertEquals; diff --git a/app-mvvm/src/test/java/uk/ivanc/archimvvm/MainViewModelTest.java b/app-mvvm/src/test/java/uk/ivanc/archimvvm/MainViewModelTest.java index a8bcf83..e57652a 100644 --- a/app-mvvm/src/test/java/uk/ivanc/archimvvm/MainViewModelTest.java +++ b/app-mvvm/src/test/java/uk/ivanc/archimvvm/MainViewModelTest.java @@ -19,8 +19,8 @@ import retrofit2.adapter.rxjava.HttpException; import rx.Observable; import rx.schedulers.Schedulers; -import uk.ivanc.archimvvm.model.GithubService; -import uk.ivanc.archimvvm.model.Repository; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; import uk.ivanc.archimvvm.util.MockModelFabric; import uk.ivanc.archimvvm.viewmodel.MainViewModel; diff --git a/app-mvvm/src/test/java/uk/ivanc/archimvvm/RepositoryViewModelTest.java b/app-mvvm/src/test/java/uk/ivanc/archimvvm/RepositoryViewModelTest.java index f703e41..ca4504d 100644 --- a/app-mvvm/src/test/java/uk/ivanc/archimvvm/RepositoryViewModelTest.java +++ b/app-mvvm/src/test/java/uk/ivanc/archimvvm/RepositoryViewModelTest.java @@ -11,9 +11,9 @@ import rx.Observable; import rx.schedulers.Schedulers; -import uk.ivanc.archimvvm.model.GithubService; -import uk.ivanc.archimvvm.model.Repository; -import uk.ivanc.archimvvm.model.User; +import uk.ivanc.archi.model.GithubService; +import uk.ivanc.archi.model.Repository; +import uk.ivanc.archi.model.User; import uk.ivanc.archimvvm.util.MockModelFabric; import uk.ivanc.archimvvm.viewmodel.RepositoryViewModel; diff --git a/app-mvvm/src/test/java/uk/ivanc/archimvvm/util/MockModelFabric.java b/app-mvvm/src/test/java/uk/ivanc/archimvvm/util/MockModelFabric.java index dc684d7..afe3cbb 100644 --- a/app-mvvm/src/test/java/uk/ivanc/archimvvm/util/MockModelFabric.java +++ b/app-mvvm/src/test/java/uk/ivanc/archimvvm/util/MockModelFabric.java @@ -4,8 +4,8 @@ import java.util.List; import java.util.Random; -import uk.ivanc.archimvvm.model.Repository; -import uk.ivanc.archimvvm.model.User; +import uk.ivanc.archi.model.Repository; +import uk.ivanc.archi.model.User; public class MockModelFabric { diff --git a/app/build.gradle b/app/build.gradle index 274c20e..66cab4a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,4 +31,5 @@ dependencies { compile dependencies.picasso compile dependencies.rxAndroid compile dependencies.circleImageView + compile project(':model') } diff --git a/model/.gitignore b/model/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/model/.gitignore @@ -0,0 +1 @@ +/build diff --git a/model/build.gradle b/model/build.gradle new file mode 100644 index 0000000..722bdfe --- /dev/null +++ b/model/build.gradle @@ -0,0 +1,24 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.ext.androidCompileSdkVersion + buildToolsVersion rootProject.ext.androidBuildToolsVersion + + defaultConfig { + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + publishNonDefault true +} + +dependencies { + Map dependencies = rootProject.ext.dependencies; + + compile dependencies.retrofit + compile dependencies.retrofitConverterGson + compile dependencies.retrofitAdapterRxJava +} diff --git a/model/proguard-rules.pro b/model/proguard-rules.pro new file mode 100644 index 0000000..942149f --- /dev/null +++ b/model/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/ivan/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/model/src/main/AndroidManifest.xml b/model/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7ebca21 --- /dev/null +++ b/model/src/main/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/app/src/main/java/uk/ivanc/archi/model/GithubService.java b/model/src/main/java/uk/ivanc/archi/model/GithubService.java similarity index 100% rename from app/src/main/java/uk/ivanc/archi/model/GithubService.java rename to model/src/main/java/uk/ivanc/archi/model/GithubService.java diff --git a/app/src/main/java/uk/ivanc/archi/model/Repository.java b/model/src/main/java/uk/ivanc/archi/model/Repository.java similarity index 100% rename from app/src/main/java/uk/ivanc/archi/model/Repository.java rename to model/src/main/java/uk/ivanc/archi/model/Repository.java diff --git a/app/src/main/java/uk/ivanc/archi/model/User.java b/model/src/main/java/uk/ivanc/archi/model/User.java similarity index 100% rename from app/src/main/java/uk/ivanc/archi/model/User.java rename to model/src/main/java/uk/ivanc/archi/model/User.java diff --git a/settings.gradle b/settings.gradle index 48c75ef..e1902bb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':app-mvp', ':app-mvvm' +include ':model', ':app', ':app-mvp', ':app-mvvm'