Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexTheKing committed May 24, 2017
1 parent ffe1e03 commit 076001f
Show file tree
Hide file tree
Showing 70 changed files with 1,357 additions and 839 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ out/

# Gradle files
.gradle/
build/
onCreateViewHolder/

# Local configuration file (sdk path, etc)
local.properties
Expand Down
2 changes: 1 addition & 1 deletion app/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/build
/onCreateViewHolder
2 changes: 1 addition & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# By default, the flags in this file are appended to flags specified
# in C:\Users\User\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
# directive in onCreateViewHolder.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".CoreApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".CoreApplication"
android:theme="@style/MyTheme">
<activity
android:name=".ui.activities.SplashActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,37 @@
import com.example.alex.restaurantx.imageloader.ImageLoader;
import com.example.alex.restaurantx.json.JsonHandler;


public class CoreApplication extends Application {

public ApiManager mApiManager;
public DatabaseHelper mDatabaseHelper;
public ImageLoader mImageLoader;
public JsonHandler mJsonHandler;
private ApiManager mApiManager;
private DatabaseHelper mDatabaseHelper;
private ImageLoader mImageLoader;
private JsonHandler mJsonHandler;

@Override
public void onCreate() {
super.onCreate();
ContextHolder contextHolder = ContextHolder.getInstance();
final ContextHolder contextHolder = ContextHolder.getInstance();
contextHolder.setContext(this);
mApiManager = ApiManager.getInstance();
mDatabaseHelper = DatabaseHelper.getInstance(this, Constants.DATABASE_CURRENT_VERSION);
mDatabaseHelper = DatabaseHelper.getInstance(this, Constants.DatabaseSettings.DATABASE_CURRENT_VERSION);
mImageLoader = ImageLoader.getInstance();
mJsonHandler = JsonHandler.getInstance();
}

public ApiManager getApiManager() {
return mApiManager;
}

public DatabaseHelper getDatabaseHelper() {
return mDatabaseHelper;
}

public ImageLoader getImageLoader() {
return mImageLoader;
}

public JsonHandler getJsonHandler() {
return mJsonHandler;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
public class CursorDataAdapter<Holder extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<Holder> {

private final Cursor mCursor;
private final IAdapterHelper<Holder, Cursor> mHelper;
private final IAdapterBinder<Holder, Cursor> mHelper;
private final int mLayout;

public CursorDataAdapter(final Cursor pCursor, final IAdapterHelper<Holder, Cursor> pCallback, final int pLayout) {
public CursorDataAdapter(final Cursor pCursor, final IAdapterBinder<Holder, Cursor> pCallback, final int pLayout) {
mCursor = pCursor;
mHelper = pCallback;
mLayout = pLayout;
Expand All @@ -21,12 +21,13 @@ public CursorDataAdapter(final Cursor pCursor, final IAdapterHelper<Holder, Curs
@Override
public Holder onCreateViewHolder(final ViewGroup pParent, final int pViewType) {
final View view = LayoutInflater.from(pParent.getContext()).inflate(mLayout, pParent, false);
return mHelper.build(view);

return mHelper.onCreateViewHolder(view);
}

@Override
public void onBindViewHolder(final Holder pHolder, final int pPosition) {
mHelper.OnBindViewHolder(mCursor, pHolder, pPosition);
mHelper.onBindViewHolder(mCursor, pHolder, pPosition);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.example.alex.restaurantx.adapter;


import android.support.v7.widget.RecyclerView;
import android.view.View;

public interface IAdapterHelper<Holder extends RecyclerView.ViewHolder, DataStructure> {

void OnBindViewHolder(final DataStructure structure, final Holder pHolder, final int pPosition);
public interface IAdapterBinder<Holder extends RecyclerView.ViewHolder, DataStructure> {

Holder build(View view);
void onBindViewHolder(final DataStructure structure, final Holder pHolder, final int pPosition);

Holder onCreateViewHolder(View view);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ public class ListDataAdapter<Holder extends RecyclerView.ViewHolder> extends Rec

private final List<String> mData;
private final int mLayout;
private final IAdapterHelper<Holder, List<String>> mHelper;
private final IAdapterBinder<Holder, List<String>> mHelper;

public ListDataAdapter(final List<String> pData, final IAdapterHelper<Holder, List<String>> pHelper, final int pLayout) {
public ListDataAdapter(final List<String> pData, final IAdapterBinder<Holder, List<String>> pHelper, final int pLayout) {
mData = pData;
mLayout = pLayout;
mHelper = pHelper;
Expand All @@ -22,12 +22,13 @@ public ListDataAdapter(final List<String> pData, final IAdapterHelper<Holder, Li
@Override
public Holder onCreateViewHolder(final ViewGroup pParent, final int pViewType) {
final View view = LayoutInflater.from(pParent.getContext()).inflate(mLayout, pParent, false);
return mHelper.build(view);

return mHelper.onCreateViewHolder(view);
}

@Override
public void onBindViewHolder(final Holder pHolder, final int pPosition) {
mHelper.OnBindViewHolder(mData, pHolder, pPosition);
mHelper.onBindViewHolder(mData, pHolder, pPosition);
}

@Override
Expand Down
49 changes: 30 additions & 19 deletions app/src/main/java/com/example/alex/restaurantx/api/ApiManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,74 +7,85 @@
import com.example.alex.restaurantx.constants.Constants;
import com.example.alex.restaurantx.network.HttpClient;
import com.example.alex.restaurantx.network.Request;
import com.example.alex.restaurantx.util.StringUtils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class ApiManager {
public final class ApiManager {

private static ApiManager sApiManager;
private final String mBaseUrl = Constants.ApiSettings.HOST_URL + Constants.ApiSettings.RELATIVE_URL;
private final HttpClient mClient;

private ApiManager() {
mClient = new HttpClient();
}

public static ApiManager getInstance() {
if (sApiManager == null) {
sApiManager = new ApiManager();
}

return sApiManager;
}

public void getTypesMethod(@NonNull final IResultCallback<String> pCallback) {
makeApiRequest(Constants.ApiSettings.TYPES_METHOD, pCallback);
makeApiRequest(Constants.ApiSettings.LIST_TYPES, pCallback);
}

public void getMenuMethod(@NonNull final IResultCallback<String> pCallback) {
makeApiRequest(Constants.ApiSettings.MENU_METHOD, pCallback);
makeApiRequest(Constants.ApiSettings.LIST_DISHES, pCallback);
}

public void getCommentsMethod(final String pDishName, @NonNull final IResultCallback<String> pCallback) {
try {
String encodedName = URLEncoder.encode(pDishName, "UTF-8");
makeApiRequest(String.format(Constants.ApiSettings.COMMENTS_METHOD, encodedName), pCallback);
} catch (UnsupportedEncodingException ex) {
final String encodedName = URLEncoder.encode(pDishName, StringUtils.UTF8);
makeApiRequest(String.format(Constants.ApiSettings.LIST_COMMENTS, encodedName), pCallback);
} catch (final UnsupportedEncodingException ex) {
pCallback.onError(ex);
}
}

public void setRateMethod(final String pDishName, final String pInstanceId, final int pRate, @Nullable final IResultCallback<String> pCallback) {
public void getRecommendationsMethod(@NonNull final IResultCallback<String> pCallback) {

}

public void addRateMethod(final String pDishName, final String pInstanceId, final int pRate, @Nullable final IResultCallback<String> pCallback) {
try {
String encodedName = URLEncoder.encode(pDishName, "UTF-8");
final String rateMethod = String.format(Constants.ApiSettings.RATE_METHOD, encodedName, pInstanceId, String.valueOf(pRate));
final String encodedName = URLEncoder.encode(pDishName, StringUtils.UTF8);
final String rateMethod = String.format(Constants.ApiSettings.ADD_RATE, encodedName, pInstanceId, String.valueOf(pRate));
makeApiRequest(rateMethod, pCallback);
} catch (UnsupportedEncodingException ex) {
} catch (final UnsupportedEncodingException ex) {
if (pCallback != null) {
pCallback.onError(ex);
}
}
}

public void setCommentMethod(final String pDishName, final String pInstanceId, final String pComment, @Nullable final IResultCallback<String> pCallback) {
public void addCommentMethod(final String pDishName, final String pInstanceId, final String pComment, @Nullable final IResultCallback<String> pCallback) {
try {
String encodedName = URLEncoder.encode(pDishName, "UTF-8");
String encodedComment = URLEncoder.encode(pComment, "UTF-8");
final String commentMethod = String.format(Constants.ApiSettings.ADD_COMMENT_METHOD, encodedName, pInstanceId, encodedComment);
final String encodedName = URLEncoder.encode(pDishName, StringUtils.UTF8);
final String encodedComment = URLEncoder.encode(pComment, StringUtils.UTF8);
final String commentMethod = String.format(Constants.ApiSettings.ADD_COMMENT, encodedName, pInstanceId, encodedComment);
makeApiRequest(commentMethod, pCallback);
} catch (UnsupportedEncodingException ex) {
} catch (final UnsupportedEncodingException ex) {
if (pCallback != null) {
pCallback.onError(ex);
}
}
}



private void makeApiRequest(final String pMethodUrl, @Nullable final IResultCallback<String> pCallback) {
final HttpClient client = new HttpClient();
final Request request = new Request.Builder()
.setMethod(Constants.ApiSettings.GET_METHOD)
.setUrl(Constants.ApiSettings.BASE_URL + Constants.ApiSettings.PART_URL + pMethodUrl)
.setMethod(HttpClient.GET_METHOD)
.setUrl(mBaseUrl + pMethodUrl)
.build();

client.makeAsyncRequest(request, new IResultCallback<String>() {
mClient.makeAsyncRequest(request, new IResultCallback<String>() {

@Override
public void onSuccess(final String pResponse) {
if (pCallback != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,40 +1,48 @@
package com.example.alex.restaurantx.constants;

import com.example.alex.restaurantx.holders.ContextHolder;

public interface Constants {

String INTENT_EXTRA_TYPE = "type";
String INTENT_EXTRA_DISH_NAME = "dish_name";
String INTENT_EXTRA_HAVE_PROHIBITED = "have_prohibited";
String INTENT_EXTRA_TYPE = "EXTRA_TYPE";
String INTENT_EXTRA_DISH_NAME = "EXTRA_DISH_NAME";
String INTENT_EXTRA_HAVE_PROHIBITED = "EXTRA_HAVE_PROHIBITED";
String INTENT_EXTRA_ACTION_UPDATE = "EXTRA_ACTION_UPDATE";
String ACTION_UPDATE_BROADCAST = "com.alex.restaurantx.ACTION_UPDATE_BROADCAST";
String SETTINGS_FILENAME = "SettingsIngredients";
String BROADCAST_UPDATE_MESSAGE = "UPDATE";
int DATABASE_CURRENT_VERSION = 1;
String INTENT_SERVICE_UPDATE_ACTION = ContextHolder.getInstance().getContext().getPackageName() + ".UPDATE_MENU";

interface ApiSettings {
//restaurant/api/request?method=
String BASE_URL = "http://192.168.100.11:8080/";
String PART_URL = "api/";
String TYPES_METHOD = "types";
String MENU_METHOD = "dishes";
String RATE_METHOD = "rate?name=%s&id=%s&rate=%s";
String ADD_COMMENT_METHOD = "comment?name=%s&id=%s&comment=%s";
String COMMENTS_METHOD = "comments?name=%s";
String GET_METHOD = "GET";

//restaurant/app/api/request_type/request_name?params=
String HOST_URL = "http://192.168.100.10:8080/";
String RELATIVE_URL = "app/api/";
String LIST_TYPES = "list/types";
String LIST_DISHES = "list/dishes";
String ADD_RATE = "add/rate?dishname=%s&appid=%s&rate=%s";
String ADD_COMMENT = "add/comment?dishname=%s&appid=%s&comment=%s";
String LIST_COMMENTS = "list/comments?dishname=%s";
}

interface ImageLoaderSettings {

int DEFAULT_MEMORY_CACHE_SIZE = 12 * 1024 * 1024;
int MEMORY_FACTOR = 4;
}

interface ThreadManagerSettings {

int DEFAULT_NUMBER_OF_THREADS = 3;
int DEFAULT_PROCESSORS_THRESHOLD = 3;
}

interface JsonHandlerSettings {

String RESPONSE = "response";
String COMMENTS = "comments";
String TYPES = "types";
}

interface DatabaseSettings {

String DATABASE_NAME = "xrestdb.sqlite";
int DATABASE_CURRENT_VERSION = 1;
}
}
Loading

0 comments on commit 076001f

Please sign in to comment.