cleaning up source code

This commit is contained in:
Kevin Meyer 2014-11-13 19:55:20 +01:00
parent 440354e578
commit cb2c1dc04b
10 changed files with 541 additions and 597 deletions

View File

@ -1,7 +1,5 @@
package fr.gaulupeau.apps.Poche;
import android.util.Log;
import java.net.URL;
public class Article {

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import static fr.gaulupeau.apps.Poche.Helpers.PREFS_NAME;
import static fr.gaulupeau.apps.Poche.Helpers.zeroUpdate;

View File

@ -2,7 +2,6 @@ package fr.gaulupeau.apps.Poche;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;

View File

@ -1,32 +1,28 @@
package fr.gaulupeau.apps.Poche;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Helpers {
public static final String PREFS_NAME = "InThePoche";
public final static String zeroUpdate = "2011-01-01 00:00:00";
public static String InputStreamtoString(InputStream is)
{
public static String InputStreamtoString(InputStream is) {
String s = "", line = "";
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
for(; ; rd.readLine())
{
if((line = rd.readLine())!=null)
{
for (; ; rd.readLine()) {
if ((line = rd.readLine()) != null) {
s += line;
}else
{
} else {
break;
}
}
@ -38,7 +34,7 @@ public class Helpers {
}
public static String getInputStreamFromUrl(String url) {
InputStream content = null;
InputStream content;
String res = "";
try {
HttpGet httpGet = new HttpGet(url);

View File

@ -1,13 +1,8 @@
package fr.gaulupeau.apps.Poche;
import java.util.ArrayList;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.*;
import fr.gaulupeau.apps.InThePoche.R;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
@ -16,10 +11,21 @@ import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import fr.gaulupeau.apps.InThePoche.R;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARCHIVE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_CONTENT;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TABLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TITLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_URL;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.MY_ID;
public class ListArticles extends BaseActionBarActivity {
private ArrayList<Article> readArticlesInfo;
private ListView readList;
private SQLiteDatabase database;
public void onCreate(Bundle savedInstanceState) {
@ -63,10 +69,10 @@ public class ListArticles extends BaseActionBarActivity {
}
public void setupList(Boolean showAll) {
readList = (ListView) findViewById(R.id.liste_articles);
ListView readList = (ListView) findViewById(R.id.liste_articles);
readArticlesInfo = new ArrayList<Article>();
String filter = null;
if (showAll == false) {
if (!showAll) {
filter = ARCHIVE + "=0";
}
ReadingListAdapter ad = getAdapterQuery(filter, readArticlesInfo);
@ -76,7 +82,7 @@ public class ListArticles extends BaseActionBarActivity {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(getBaseContext(), ReadArticle.class);
i.putExtra("id", (String) readArticlesInfo.get(position).id);
i.putExtra("id", readArticlesInfo.get(position).id);
startActivity(i);
}

View File

@ -8,38 +8,6 @@
package fr.gaulupeau.apps.Poche;
import fr.gaulupeau.apps.InThePoche.R;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.text.DateFormat;
import java.util.Date;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
@ -55,40 +23,58 @@ import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.Browser;
import android.text.Html;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import static fr.gaulupeau.apps.Poche.Helpers.PREFS_NAME;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TABLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_URL;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TITLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_CONTENT;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARCHIVE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_SYNC;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import fr.gaulupeau.apps.InThePoche.R;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARCHIVE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_CONTENT;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_SYNC;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TABLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TITLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_URL;
import static fr.gaulupeau.apps.Poche.Helpers.PREFS_NAME;
/**
* Main activity class
*/
@TargetApi(Build.VERSION_CODES.FROYO) public class Poche extends Activity {
@TargetApi(Build.VERSION_CODES.FROYO)
public class Poche extends Activity {
private static SQLiteDatabase database;
Button btnDone;
Button btnGetPost;
Button btnSync;
Button btnSettings;
EditText editPocheUrl;
SharedPreferences settings;
static String apiUsername;
static String apiToken;
@ -96,12 +82,11 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
String action;
/** Called when the activity is first created.
/**
* Called when the activity is first created.
* Will act differently depending on whether sharing or
* displaying information page. */
* displaying information page.
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -111,7 +96,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
getSettings();
// Find out if Sharing or if app has been launched from icon
if (action.equals(Intent.ACTION_SEND) && pocheUrl != "http://") {
if (action.equals(Intent.ACTION_SEND) && !pocheUrl.equals("http://")) {
setContentView(R.layout.main);
findViewById(R.id.btnSync).setVisibility(View.GONE);
findViewById(R.id.btnGetPost).setVisibility(View.GONE);
@ -151,8 +136,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
// Afficher alerte connectivité
showToast(getString(R.string.txtNetOffline));
}
}
else {
} else {
setContentView(R.layout.main);
checkAndHandleAfterUpdate();
@ -163,7 +147,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
// Vérification de la connectivité Internet
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (pocheUrl == "http://") {
if (pocheUrl.equals("http://")) {
showToast(getString(R.string.txtConfigNotSet));
} else if (activeNetwork != null && activeNetwork.isConnected()) {
// Exécution de la synchro en arrière-plan
@ -256,8 +240,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
private void updateUnread() {
runOnUiThread(new Runnable() {
public void run()
{
public void run() {
ArticlesSQLiteOpenHelper helper = new ArticlesSQLiteOpenHelper(getApplicationContext());
database = helper.getReadableDatabase();
int news = database.query(ARTICLE_TABLE, null, ARCHIVE + "=0", null, null, null, null).getCount();
@ -266,18 +249,15 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
});
}
public void showToast(final String toast)
{
public void showToast(final String toast) {
runOnUiThread(new Runnable() {
public void run()
{
public void run() {
Toast.makeText(Poche.this, toast, Toast.LENGTH_SHORT).show();
}
});
}
private void showErrorMessage(final String message)
{
private void showErrorMessage(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
@ -369,16 +349,22 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}});
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}}}, new SecureRandom());
}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(
context.getSocketFactory());
} catch (Exception e) { // should never happen
@ -390,8 +376,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
public void parseRSS() {
URL url;
try
{
try {
// Set the url (you will need to change this to your RSS URL
url = new URL(pocheUrl + "/?feed&type=home&user_id=" + apiUsername + "&token=" + apiToken);
if (pocheUrl.startsWith("https")) {
@ -399,7 +384,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
}
// Setup the connection
HttpURLConnection urlConnection = null;
HttpURLConnection urlConnection;
urlConnection = (HttpURLConnection) url.openConnection();
if ((urlConnection != null) && (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK)) {
@ -409,7 +394,7 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = null;
InputSource is = null;
InputSource is;
try {
is = new InputSource(
@ -440,12 +425,10 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
arrays.PodcastDate = new String[itemLst.getLength()];
// Loop through the XML passing the data to the arrays
for (int i = 0; i < itemLst.getLength(); i++)
{
for (int i = 0; i < itemLst.getLength(); i++) {
Node item = itemLst.item(i);
if (item.getNodeType() == Node.ELEMENT_NODE)
{
if (item.getNodeType() == Node.ELEMENT_NODE) {
Element ielem = (Element) item;
// This section gets the elements from the XML
@ -468,11 +451,9 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
// data retrieved from above. I have surrounded each
// with try/catch just incase the element does not
// exist
try
{
try {
arrays.PodcastTitle[i] = cleanString(title.item(0).getChildNodes().item(0).getNodeValue());
} catch (NullPointerException e)
{
} catch (NullPointerException e) {
e.printStackTrace();
arrays.PodcastTitle[i] = "Echec";
}
@ -482,21 +463,17 @@ import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_DATE;
e.printStackTrace();
arrays.PodcastDate[i] = null;
}
try
{
try {
arrays.PodcastURL[i] = link.item(0).getChildNodes()
.item(0).getNodeValue();
} catch (NullPointerException e)
{
} catch (NullPointerException e) {
e.printStackTrace();
arrays.PodcastURL[i] = "Echec";
}
try
{
try {
arrays.PodcastContent[i] = content.item(0)
.getChildNodes().item(0).getNodeValue();
} catch (NullPointerException e)
{
} catch (NullPointerException e) {
e.printStackTrace();
arrays.PodcastContent[i] = "Echec";
}

View File

@ -1,39 +1,28 @@
package fr.gaulupeau.apps.Poche;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARCHIVE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_CONTENT;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_ID;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TITLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_URL;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TABLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_AUTHOR;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.MY_ID;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import java.net.URL;
import fr.gaulupeau.apps.InThePoche.R;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARCHIVE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_AUTHOR;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_CONTENT;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_ID;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TABLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_TITLE;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.ARTICLE_URL;
import static fr.gaulupeau.apps.Poche.ArticlesSQLiteOpenHelper.MY_ID;
public class ReadArticle extends BaseActionBarActivity {
WebView webViewContent;
Button btnMarkRead;
@ -42,8 +31,6 @@ public class ReadArticle extends BaseActionBarActivity {
ScrollView view;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
requestWindowFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.article);
@ -66,8 +53,7 @@ public class ReadArticle extends BaseActionBarActivity {
try {
URL originalUrl = new URL(originalUrlText);
originalUrlDesc = originalUrl.getHost();
}
catch (Exception e) {
} catch (Exception e) {
//
}
@ -95,19 +81,7 @@ public class ReadArticle extends BaseActionBarActivity {
"</html>";
setProgressBarIndeterminateVisibility(true);
setProgressBarVisibility(true);
webViewContent = (WebView) findViewById(R.id.webViewContent);
webViewContent.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
setProgress(progress * 100);
if(progress == 100) {
setProgressBarIndeterminateVisibility(false);
setProgressBarVisibility(false);
}
}
});
webViewContent.loadDataWithBaseURL("file:///android_asset/", htmlHeader + htmlContent + htmlFooter, "text/html", "utf-8", null);
btnMarkRead = (Button) findViewById(R.id.btnMarkRead);

View File

@ -1,17 +1,16 @@
package fr.gaulupeau.apps.Poche;
import java.util.List;
import fr.gaulupeau.apps.InThePoche.R;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
import fr.gaulupeau.apps.InThePoche.R;
public class ReadingListAdapter extends BaseAdapter {
private Context context;
private List<Article> listArticles;
@ -37,8 +36,7 @@ public class ReadingListAdapter extends BaseAdapter {
public View getView(int position, View convertView, ViewGroup parent) {
Article entry = listArticles.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.article_list, parent, false);
}
TextView tvTitle = (TextView) convertView.findViewById(R.id.listitem_titre);
@ -50,7 +48,4 @@ public class ReadingListAdapter extends BaseAdapter {
return convertView;
}
}

View File

@ -1,24 +1,22 @@
package fr.gaulupeau.apps.Poche;
import static fr.gaulupeau.apps.Poche.Helpers.PREFS_NAME;
import fr.gaulupeau.apps.InThePoche.R;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import fr.gaulupeau.apps.InThePoche.R;
import static fr.gaulupeau.apps.Poche.Helpers.PREFS_NAME;
public class Settings extends BaseActionBarActivity {
Button btnDone;
EditText editPocheUrl;
EditText editAPIUsername;
EditText editAPIToken;
EditText editGlobalToken;
TextView textViewVersion;
@Override