Browse Source

improvements

pull/54/head
Thodoris1999 6 years ago
parent
commit
db75338039
  1. 80
      app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ExternalAsyncTask.java
  2. 65
      app/src/main/java/gr/thmmy/mthmmy/utils/parsing/NetworkTask.java
  3. 71
      app/src/main/java/gr/thmmy/mthmmy/utils/parsing/NewParseTask.java
  4. 51
      app/src/main/java/gr/thmmy/mthmmy/utils/parsing/Parcel.java

80
app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ExternalAsyncTask.java

@ -0,0 +1,80 @@
package gr.thmmy.mthmmy.utils.parsing;
import android.os.AsyncTask;
public abstract class ExternalAsyncTask<U, V> extends AsyncTask<U, Void, V> {
private OnParseTaskStartedListener onParseTaskStartedListener;
private OnParseTaskCancelledListener onParseTaskCancelledListener;
private OnParseTaskFinishedListener<V> onParseTaskFinishedListener;
@Override
protected void onPreExecute() {
if (onParseTaskStartedListener != null)
onParseTaskStartedListener.onParseStart();
else
super.onPreExecute();
}
@Override
protected void onCancelled() {
if (onParseTaskCancelledListener != null)
onParseTaskCancelledListener.onParseCancel();
else
super.onCancelled();
}
@Override
protected void onCancelled(V v) {
if (onParseTaskCancelledListener != null)
onParseTaskCancelledListener.onParseCancel();
else
super.onCancelled();
}
@Override
protected void onPostExecute(V v) {
if (onParseTaskFinishedListener != null)
onParseTaskFinishedListener.onParseFinish(v);
else
super.onPostExecute(v);
}
public ExternalAsyncTask(OnParseTaskStartedListener onParseTaskStartedListener, OnParseTaskCancelledListener onParseTaskCancelledListener,
OnParseTaskFinishedListener<V> onParseTaskFinishedListener) {
this.onParseTaskStartedListener = onParseTaskStartedListener;
this.onParseTaskCancelledListener = onParseTaskCancelledListener;
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public ExternalAsyncTask(OnParseTaskStartedListener onParseTaskStartedListener, OnParseTaskFinishedListener<V> onParseTaskFinishedListener) {
this.onParseTaskStartedListener = onParseTaskStartedListener;
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public ExternalAsyncTask() { }
public void setOnParseTaskStartedListener(OnParseTaskStartedListener onParseTaskStartedListener) {
this.onParseTaskStartedListener = onParseTaskStartedListener;
}
public void setOnParseTaskCancelledListener(OnParseTaskCancelledListener onParseTaskCancelledListener) {
this.onParseTaskCancelledListener = onParseTaskCancelledListener;
}
public void setOnParseTaskFinishedListener(OnParseTaskFinishedListener<V> onParseTaskFinishedListener) {
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public interface OnParseTaskStartedListener {
void onParseStart();
}
public interface OnParseTaskCancelledListener {
void onParseCancel();
}
public interface OnParseTaskFinishedListener<V> {
void onParseFinish(V result);
}
}

65
app/src/main/java/gr/thmmy/mthmmy/utils/parsing/NetworkTask.java

@ -0,0 +1,65 @@
package gr.thmmy.mthmmy.utils.parsing;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import gr.thmmy.mthmmy.base.BaseApplication;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import timber.log.Timber;
public abstract class NetworkTask<T> extends ExternalAsyncTask<String, Parcel<T>> {
private OnParseTaskFinishedListener<T> onParseTaskFinishedListener;
@Override
protected final Parcel<T> doInBackground(String... input) {
Request request = createRequest(input);
Response response = getResponse(request, BaseApplication.getInstance().getClient());
String responseBodyString;
try {
responseBodyString = response.body().string();
} catch (IOException e) {
Timber.e(e);
return new Parcel<>(Parcel.ResultCode.NETWORK_ERROR, null);
}
try {
T data = performTask(Jsoup.parse(responseBodyString));
int resultCode = getResultCode(response, data);
return new Parcel<>(resultCode, data);
} catch (ParseException pe) {
Timber.e(pe);
return new Parcel<>(Parcel.ResultCode.PARSE_ERROR, null);
} catch (Exception e) {
Timber.e(e);
return new Parcel<>(Parcel.ResultCode.PERFORM_TASK_ERROR, null);
}
}
@Override
protected void onPostExecute(Parcel<T> tParcel) {
if (onParseTaskFinishedListener != null)
onParseTaskFinishedListener.onParseFinish(tParcel.getResultCode(), tParcel.getData());
else
super.onPostExecute(tParcel);
}
abstract Request createRequest(String... input);
abstract Response getResponse(Request request, OkHttpClient client);
abstract T performTask(Document document) throws ParseException;
abstract int getResultCode(Response response, T data);
public void setOnParseTaskFinishedListener(OnParseTaskFinishedListener<T> onParseTaskFinishedListener) {
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public interface OnParseTaskFinishedListener<T> {
void onParseFinish(int resultCOde, T data);
}
}

71
app/src/main/java/gr/thmmy/mthmmy/utils/parsing/NewParseTask.java

@ -1,68 +1,27 @@
package gr.thmmy.mthmmy.utils.parsing;
import android.os.AsyncTask;
import org.jsoup.nodes.Document;
public abstract class NewParseTask<U, V> extends AsyncTask<U, Void, V> {
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
private OnParseTaskStartedListener onParseTaskStartedListener;
private OnParseTaskCancelledListener onParseTaskCancelledListener;
private OnParseTaskFinishedListener<V> onParseTaskFinishedListener;
public abstract class NewParseTask<T> extends NetworkTask<T> {
@Override
protected void onPreExecute() {
if (onParseTaskStartedListener != null)
onParseTaskStartedListener.onParseStart();
else
super.onPreExecute();
final T performTask(Document document) throws ParseException {
try {
return parse(document);
} catch (Exception e) {
throw new ParseException("Parse failed.");
}
}
@Override
protected void onCancelled() {
if (onParseTaskCancelledListener != null)
onParseTaskCancelledListener.onParseCancel();
else
super.onCancelled();
}
@Override
protected void onCancelled(V v) {
if (onParseTaskCancelledListener != null)
onParseTaskCancelledListener.onParseCancel();
else
super.onCancelled();
}
@Override
protected void onPostExecute(V v) {
if (onParseTaskFinishedListener != null)
onParseTaskFinishedListener.onParseFinish(v);
else
super.onPostExecute(v);
}
abstract Request createRequest(String... input);
public NewParseTask(OnParseTaskStartedListener onParseTaskStartedListener, OnParseTaskCancelledListener onParseTaskCancelledListener,
OnParseTaskFinishedListener<V> onParseTaskFinishedListener) {
this.onParseTaskStartedListener = onParseTaskStartedListener;
this.onParseTaskCancelledListener = onParseTaskCancelledListener;
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public NewParseTask(OnParseTaskStartedListener onParseTaskStartedListener, OnParseTaskFinishedListener<V> onParseTaskFinishedListener) {
this.onParseTaskStartedListener = onParseTaskStartedListener;
this.onParseTaskFinishedListener = onParseTaskFinishedListener;
}
public NewParseTask() { }
abstract Response getResponse(Request request, OkHttpClient client);
public interface OnParseTaskStartedListener {
void onParseStart();
}
public interface OnParseTaskCancelledListener {
void onParseCancel();
}
abstract T parse (Document document);
public interface OnParseTaskFinishedListener<V> {
void onParseFinish(V result);
}
abstract int getResultCode(Response response, T data);
}

51
app/src/main/java/gr/thmmy/mthmmy/utils/parsing/Parcel.java

@ -0,0 +1,51 @@
package gr.thmmy.mthmmy.utils.parsing;
public class Parcel<T> {
private int resultCode;
private T data;
public Parcel(int resultCode, T data) {
this.resultCode = resultCode;
this.data = data;
}
public int getResultCode() {
return resultCode;
}
public T getData() {
return data;
}
public class ResultCode {
/**
* The request was successful
*/
public static final int SUCCESSFUL = 0;
/**
* Error 404, page was not found
*/
public static final int NOT_FOUND = 1;
/**
* User session ended while posting the reply
*/
public static final int SESSION_ENDED = 2;
/**
* Exception occured while parsing
*/
public static final int PARSE_ERROR = 3;
/**
* Other undefined of unidentified error
*/
public static final int OTHER_ERROR = 4;
/**
* Failed to connect to thmmy.gr
*/
public static final int NETWORK_ERROR = 5;
/**
* Error while excecuting NetworkTask's performTask()
*/
public static final int PERFORM_TASK_ERROR = 6;
}
}
Loading…
Cancel
Save