package org.cacahuete.app.feedreader.db;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import nl.matshofman.saxrssreader.RssFeed;
import nl.matshofman.saxrssreader.RssItem;
import nl.matshofman.saxrssreader.RssReader;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
import org.cacahuete.app.feedreader.db.RssContract.ArticlesTable;
import org.cacahuete.app.feedreader.db.RssContract.FeedsTable;
public class RssReload {
private static final String TAG = "RSS reload";
private ArrayList<URL> feed_list;
public void loadFeeds(ContentResolver rss) {
String sortOrder = null;
String[] selectionArgs = null;
String selection = null;
String[] projection = new String[] {
FeedsTable.URL
};
Uri uri=FeedsTable.getUri();
Cursor cursor=rss.query(uri, projection, selection, selectionArgs, sortOrder);
Log.d(TAG,"cursor tiene "+cursor.getColumnCount());
this.feed_list=new ArrayList<URL>();
try {
while (cursor.moveToNext()) {
URL url=new URL(cursor.getString(cursor.getColumnIndex(FeedsTable.URL)));
this.feed_list.add(url);
Log.d(TAG,"nueva url es "+url.toString());
}
} catch (Exception e) {
Log.d(TAG,"Problemas con la bd");
cursor.close();
e.printStackTrace();
}//try
cursor.close();
}
public Integer getNumberOfFeeds() {
Integer num=this.feed_list.size();
return num;
}
public ArrayList<URL> getFeedList() {
return this.feed_list;
}
public void borrarArticulos(ContentResolver rss) {
//vaciamos tabla de articulos
rss.delete(ArticlesTable.getUri(), null, null);
}
public ArrayList<RssItem> reloadArticlesForFeed(URL url) {
RssFeed feed=null;
ArrayList<RssItem> rssItems=null;
try {
feed = RssReader.read(url);
rssItems = feed.getRssItems();
}
catch (Exception e) {}
return rssItems;
}
public void insertArticle(ContentResolver rss,RssItem rssItem) {
Uri uri_insert_articles=ArticlesTable.getUri();
ContentValues values = new ContentValues();
values.put(ArticlesTable.TS_DATE,Long.valueOf(rssItem.getPubDate().getTime()));
Date fecha=new Date(rssItem.getPubDate().getTime());
//String fecha_formateada =new SimpleDateFormat("dd.MM.yyyy HH:mm").format(fecha);
String fecha_formateada =new SimpleDateFormat("dd.MM.yyyy").format(fecha);
values.put(ArticlesTable.PUBDATE,fecha_formateada);
//Log.d(TAG,values.toString());
// try {
// values.put(ArticlesTable.TITLE,URLEncoder.encode(rssItem.getTitle(), "UTF-8"));
// } catch (UnsupportedEncodingException e) {
// values.put(ArticlesTable.TITLE,rssItem.getTitle());
// }
// try {
// values.put(ArticlesTable.CONTENT,URLEncoder.encode(rssItem.getContent(), "UTF-8"));
// } catch (UnsupportedEncodingException e) {
// values.put(ArticlesTable.CONTENT,rssItem.getContent());
// }
// try {
// values.put(ArticlesTable.LINK,URLEncoder.encode(rssItem.getLink(), "UTF-8"));
// } catch (UnsupportedEncodingException e) {
// values.put(ArticlesTable.LINK,rssItem.getLink());
// }
// try {
// values.put(ArticlesTable.DESCRIPTION,URLEncoder.encode(rssItem.getDescription(), "UTF-8"));
// } catch (UnsupportedEncodingException e) {
// values.put(ArticlesTable.DESCRIPTION,rssItem.getDescription());
// }
try {
values.put(ArticlesTable.TITLE,URLDecoder.decode(rssItem.getTitle(), "UTF-8"));
} catch (Exception e) {
values.put(ArticlesTable.TITLE,rssItem.getTitle());
}
try {
values.put(ArticlesTable.CONTENT,URLDecoder.decode(rssItem.getContent(), "UTF-8"));
} catch (Exception e) {
values.put(ArticlesTable.CONTENT,rssItem.getContent());
}
try {
values.put(ArticlesTable.LINK,URLDecoder.decode(rssItem.getLink(), "UTF-8"));
} catch (Exception e) {
values.put(ArticlesTable.LINK,rssItem.getLink());
}
try {
values.put(ArticlesTable.DESCRIPTION,URLDecoder.decode(rssItem.getDescription(), "UTF-8"));
} catch (Exception e) {
values.put(ArticlesTable.DESCRIPTION,rssItem.getDescription());
}
//Log.d(TAG,"Vamos a mostrar values e insertar");
rss.insert(uri_insert_articles, values);
}
// public void reloadArticles(ContentResolver rss) {
// Log.d(TAG, "RssReload start");
// Uri uri_insert_articles=ArticlesTable.getUri();
//
//
// //vaciamos tabla de articulos
// rss.delete(ArticlesTable.getUri(), null, null);
//
// Log.d(TAG,"Terminada recogida de feeds, comenzamos con descarga de articles");
// try {
// for(URL url : this.feed_list) {
// RssFeed feed = RssReader.read(url);
// //Log.d(TAG,"FEED ES "+feed.toString());
//
// ArrayList<RssItem> rssItems = feed.getRssItems();
// Log.d(TAG,"feed tiene "+rssItems.size()+" elementos");
// for(RssItem rssItem : rssItems) {
// Log.d(TAG,"Comienza el for");
// ContentValues values = new ContentValues();
// values.put(ArticlesTable.TS_DATE,Long.valueOf(rssItem.getPubDate().getTime()));
// Date fecha=new Date(rssItem.getPubDate().getTime());
// //String fecha_formateada =new SimpleDateFormat("dd.MM.yyyy HH:mm").format(fecha);
// String fecha_formateada =new SimpleDateFormat("dd.MM.yyyy").format(fecha);
// values.put(ArticlesTable.PUBDATE,fecha_formateada);
// //Log.d(TAG,values.toString());
//
// values.put(ArticlesTable.TITLE,rssItem.getTitle());
// values.put(ArticlesTable.CONTENT,rssItem.getContent());
// values.put(ArticlesTable.LINK,rssItem.getLink());
// values.put(ArticlesTable.DESCRIPTION,rssItem.getDescription());
//
//
// //Log.d(TAG,"Vamos a mostrar values e insertar");
//
// rss.insert(uri_insert_articles, values);
//// Log.d("RSS Reader ", rssItem.getTitle());
//// Log.d("RSS Reader ", rssItem.getContent());
//// Log.d("RSS Reader ", rssItem.getDescription());
//// Log.d("RSS Reader ", rssItem.getLink());
//// Log.d("RSS Reader ", rssItem.getFeed().toString());
// }//for
// }
// } catch (Exception e) {
// Log.d(TAG,"Problemas con internet");
//
// }
//
//
// //Log.d(TAG, "reload stop at "+System.currentTimeMillis()*1000+" segs");
//
//
//
//
//
// Log.d(TAG, "RssReload stop");
// }
}