Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fis.itlab.ulima;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.List;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import fis.itlab.beans.RSSBean;
- public class RSSLoader {
- private final String noticias = "http://www.ulima.edu.pe/noticias/rss";
- private final String entrevistas = "http://www.ulima.edu.pe/entrevistas/rss";
- private final String agenda = "http://www.ulima.edu.pe/agenda/rss";
- boolean exito, lock;
- private static RSSLoader instance;
- private RSSLoader() {
- }
- public static RSSLoader getInstance() {
- if (instance == null) {
- instance = new RSSLoader();
- }
- return instance;
- }
- public List<RSSBean> loadxml(int tipo) {
- return Utils.getInstance().leerRSS(tipo);
- }
- public void loadxml(int tipo, onLoadXML callback) {
- lock = true;
- exito = false;
- XMLParser parser = new XMLParser(noticias);
- switch (tipo) {
- case 1:
- parser = new XMLParser(noticias);
- break;
- case 2:
- parser = new XMLParser(agenda);
- break;
- case 3:
- parser = new XMLParser(entrevistas);
- break;
- }
- Utils.getInstance().saveRSS(tipo, parser.parse());
- while (lock) {
- }
- if (exito) {
- callback.onLoad();
- } else {
- callback.onError();
- }
- }
- public interface onLoadXML {
- public void onLoad();
- public void onError();
- }
- private class XMLParser {
- private URL url;
- private XMLParser(String url) {
- try {
- this.url = new URL(url);
- } catch (MalformedURLException e) {
- throw new RuntimeException(e);
- }
- }
- // prepara el array para el parseo
- public List<RSSBean> parse() {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- try {
- SAXParser parser = factory.newSAXParser();
- XMLHandler handler = new XMLHandler();
- parser.parse(this.getInputStream(), handler);
- lock = false;
- exito = true;
- return handler.getItemRSS();
- } catch (Exception e) {
- lock = false;
- exito = false;
- throw new RuntimeException(e);
- }
- }
- // conexión de la url
- private InputStream getInputStream() {
- try {
- return url.openConnection().getInputStream();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
- ////////////////////////////////////////////////////////////
- // SECTION RSS
- /**
- *
- * @param tipo
- */
- public void saveRSS(int tipo, List<RSSBean> array) {
- Editor editor = preferencias.edit();
- String tag = "";
- switch (tipo) {
- case 1:
- tag = tagNoticias;
- break;
- case 2:
- tag = tagAgenda;
- break;
- case 3:
- tag = tagEntrevistas;
- break;
- }
- editor.putString(tag, gson.toJson(array));
- editor.commit();
- }
- public List<RSSBean> leerRSS(int tipo) {
- String tag = "";
- switch (tipo) {
- case 1:
- tag = tagNoticias;
- break;
- case 2:
- tag = tagAgenda;
- break;
- case 3:
- tag = tagEntrevistas;
- break;
- }
- List<RSSBean> respuesta;
- try {
- respuesta = gson.fromJson(preferencias.getString(tag, "{}"),
- new TypeToken<List<RSSBean>>() {
- }.getType());
- } catch (Exception e) {
- respuesta = new ArrayList<RSSBean>();
- }
- return respuesta;
- }
- package fis.itlab.ulima;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Locale;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- import fis.itlab.beans.RSSBean;
- public class XMLHandler extends DefaultHandler {
- private List<RSSBean> itemRSS;
- private RSSBean itemRSSActual;
- private StringBuilder stringBuild;
- @Override
- public void characters(char[] cha, int inicio, int longitud)
- throws SAXException {
- super.characters(cha, inicio, longitud);
- if (this.itemRSSActual != null)
- stringBuild.append(cha, inicio, longitud);
- }
- @Override
- public void endElement(String nulo, String nombreLocal, String nombre)
- throws SAXException {
- super.endElement(nulo, nombreLocal, nombre);
- if (this.itemRSSActual != null) {
- if (nombreLocal.equals("title")) {
- itemRSSActual.setTitulo(stringBuild.toString().trim());
- } else if (nombreLocal.equals("pubDate")) {
- try {
- itemRSSActual.setFecha((new SimpleDateFormat("dd/MM/yyyy",
- Locale.ENGLISH)).format(new Date(
- ((new SimpleDateFormat(
- "EEE, dd MMM yyyy kk:mm:ss Z",
- Locale.ENGLISH)).parse(stringBuild
- .toString().trim())).getTime())));
- } catch (ParseException e) {
- //
- }
- } else if (nombreLocal.equals("link")) {
- itemRSSActual.setUrl(stringBuild.toString().trim());
- } else if (nombreLocal.equals("description")) {
- itemRSSActual.setCuerpo(stringBuild.toString().trim());
- } else if (nombreLocal.equals("item")) {
- itemRSS.add(itemRSSActual);
- }
- stringBuild.setLength(0);
- }
- }
- @Override
- public void startDocument() throws SAXException {
- super.startDocument();
- itemRSS = new ArrayList<RSSBean>();
- stringBuild = new StringBuilder();
- }
- @Override
- public void startElement(String nulo, String nombreLocal, String nombre,
- Attributes attributes) throws SAXException {
- super.startElement(nulo, nombreLocal, nombre, attributes);
- if (nombreLocal.equals("title")) {
- itemRSSActual = new RSSBean();
- } else if (nombreLocal.equals("enclosure")) {
- String url = attributes.getValue("url").toString();
- itemRSSActual.setUrl(url);
- }
- }
- public List<RSSBean> getItemRSS() {
- return itemRSS;
- }
- }
- /////////////////////////////////////////////////////////////////////////////////////
- package fis.itlab.beans;
- import java.io.Serializable;
- public class RSSBean implements Serializable {
- private static final long serialVersionUID = -5728052626145700528L;
- String titulo, cuerpo, imagen, fecha, url;
- byte[] imagenbyte;
- public byte[] getImagenbyte() {
- return imagenbyte;
- }
- public void setImagenbyte(byte[] imagenbyte) {
- this.imagenbyte = imagenbyte;
- }
- public String getTitulo() {
- return titulo;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public void setTitulo(String titulo) {
- this.titulo = titulo;
- }
- public String getCuerpo() {
- return cuerpo;
- }
- public void setCuerpo(String cuerpo) {
- this.cuerpo = cuerpo;
- }
- public String getImagen() {
- return imagen;
- }
- public void setImagen(String imagen) {
- this.imagen = imagen;
- }
- public String getFecha() {
- return fecha;
- }
- public void setFecha(String fecha) {
- this.fecha = fecha;
- }
- @Override
- public String toString() {
- return "RSSBean [titulo=" + titulo + ", cuerpo=" + cuerpo + ", imagen="
- + imagen + ", fecha=" + fecha + ", url=" + url + "]";
- }
- }
- //////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement