Advertisement
Guest User

asd

a guest
Oct 31st, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.03 KB | None | 0 0
  1. package fis.itlab.ulima;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7. import java.util.List;
  8.  
  9. import javax.xml.parsers.SAXParser;
  10. import javax.xml.parsers.SAXParserFactory;
  11.  
  12. import fis.itlab.beans.RSSBean;
  13.  
  14. public class RSSLoader {
  15.  
  16.     private final String noticias = "http://www.ulima.edu.pe/noticias/rss";
  17.     private final String entrevistas = "http://www.ulima.edu.pe/entrevistas/rss";
  18.     private final String agenda = "http://www.ulima.edu.pe/agenda/rss";
  19.  
  20.     boolean exito, lock;
  21.  
  22.     private static RSSLoader instance;
  23.  
  24.     private RSSLoader() {
  25.  
  26.     }
  27.  
  28.     public static RSSLoader getInstance() {
  29.         if (instance == null) {
  30.             instance = new RSSLoader();
  31.         }
  32.         return instance;
  33.     }
  34.  
  35.     public List<RSSBean> loadxml(int tipo) {
  36.         return Utils.getInstance().leerRSS(tipo);
  37.     }
  38.  
  39.     public void loadxml(int tipo, onLoadXML callback) {
  40.         lock = true;
  41.         exito = false;
  42.         XMLParser parser = new XMLParser(noticias);
  43.         switch (tipo) {
  44.         case 1:
  45.             parser = new XMLParser(noticias);
  46.             break;
  47.         case 2:
  48.             parser = new XMLParser(agenda);
  49.             break;
  50.         case 3:
  51.             parser = new XMLParser(entrevistas);
  52.             break;
  53.         }
  54.         Utils.getInstance().saveRSS(tipo, parser.parse());
  55.         while (lock) {
  56.  
  57.         }
  58.         if (exito) {
  59.             callback.onLoad();
  60.         } else {
  61.             callback.onError();
  62.         }
  63.     }
  64.  
  65.     public interface onLoadXML {
  66.         public void onLoad();
  67.  
  68.         public void onError();
  69.     }
  70.  
  71.     private class XMLParser {
  72.         private URL url;
  73.  
  74.         private XMLParser(String url) {
  75.             try {
  76.                 this.url = new URL(url);
  77.             } catch (MalformedURLException e) {
  78.                 throw new RuntimeException(e);
  79.             }
  80.         }
  81.  
  82.         // prepara el array para el parseo
  83.         public List<RSSBean> parse() {
  84.             SAXParserFactory factory = SAXParserFactory.newInstance();
  85.             try {
  86.                 SAXParser parser = factory.newSAXParser();
  87.                 XMLHandler handler = new XMLHandler();
  88.                 parser.parse(this.getInputStream(), handler);
  89.                 lock = false;
  90.                 exito = true;
  91.  
  92.                 return handler.getItemRSS();
  93.             } catch (Exception e) {
  94.                 lock = false;
  95.                 exito = false;
  96.                 throw new RuntimeException(e);
  97.             }
  98.         }
  99.  
  100.         // conexión de la url
  101.         private InputStream getInputStream() {
  102.             try {
  103.                 return url.openConnection().getInputStream();
  104.             } catch (IOException e) {
  105.                 throw new RuntimeException(e);
  106.             }
  107.         }
  108.     }
  109.  
  110. }
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129. ////////////////////////////////////////////////////////////
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137. // SECTION RSS
  138.     /**
  139.      *
  140.      * @param tipo
  141.      */
  142.     public void saveRSS(int tipo, List<RSSBean> array) {
  143.         Editor editor = preferencias.edit();
  144.         String tag = "";
  145.         switch (tipo) {
  146.         case 1:
  147.             tag = tagNoticias;
  148.             break;
  149.         case 2:
  150.             tag = tagAgenda;
  151.             break;
  152.         case 3:
  153.             tag = tagEntrevistas;
  154.             break;
  155.         }
  156.         editor.putString(tag, gson.toJson(array));
  157.         editor.commit();
  158.     }
  159.  
  160.     public List<RSSBean> leerRSS(int tipo) {
  161.         String tag = "";
  162.         switch (tipo) {
  163.         case 1:
  164.             tag = tagNoticias;
  165.             break;
  166.         case 2:
  167.             tag = tagAgenda;
  168.             break;
  169.         case 3:
  170.             tag = tagEntrevistas;
  171.             break;
  172.         }
  173.         List<RSSBean> respuesta;
  174.         try {
  175.             respuesta = gson.fromJson(preferencias.getString(tag, "{}"),
  176.                     new TypeToken<List<RSSBean>>() {
  177.                     }.getType());
  178.         } catch (Exception e) {
  179.             respuesta = new ArrayList<RSSBean>();
  180.         }
  181.         return respuesta;
  182.  
  183.     }
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197. package fis.itlab.ulima;
  198.  
  199. import java.text.ParseException;
  200. import java.text.SimpleDateFormat;
  201. import java.util.ArrayList;
  202. import java.util.Date;
  203. import java.util.List;
  204. import java.util.Locale;
  205.  
  206. import org.xml.sax.Attributes;
  207. import org.xml.sax.SAXException;
  208. import org.xml.sax.helpers.DefaultHandler;
  209.  
  210. import fis.itlab.beans.RSSBean;
  211.  
  212. public class XMLHandler extends DefaultHandler {
  213.     private List<RSSBean> itemRSS;
  214.     private RSSBean itemRSSActual;
  215.     private StringBuilder stringBuild;
  216.  
  217.     @Override
  218.     public void characters(char[] cha, int inicio, int longitud)
  219.             throws SAXException {
  220.  
  221.         super.characters(cha, inicio, longitud);
  222.  
  223.         if (this.itemRSSActual != null)
  224.             stringBuild.append(cha, inicio, longitud);
  225.     }
  226.  
  227.     @Override
  228.     public void endElement(String nulo, String nombreLocal, String nombre)
  229.             throws SAXException {
  230.         super.endElement(nulo, nombreLocal, nombre);
  231.         if (this.itemRSSActual != null) {
  232.             if (nombreLocal.equals("title")) {
  233.                 itemRSSActual.setTitulo(stringBuild.toString().trim());
  234.             } else if (nombreLocal.equals("pubDate")) {
  235.                 try {
  236.                     itemRSSActual.setFecha((new SimpleDateFormat("dd/MM/yyyy",
  237.                             Locale.ENGLISH)).format(new Date(
  238.                             ((new SimpleDateFormat(
  239.                                     "EEE, dd MMM yyyy kk:mm:ss Z",
  240.                                     Locale.ENGLISH)).parse(stringBuild
  241.                                     .toString().trim())).getTime())));
  242.                 } catch (ParseException e) {
  243.                     //
  244.                 }
  245.             } else if (nombreLocal.equals("link")) {
  246.                 itemRSSActual.setUrl(stringBuild.toString().trim());
  247.             } else if (nombreLocal.equals("description")) {
  248.                 itemRSSActual.setCuerpo(stringBuild.toString().trim());
  249.             } else if (nombreLocal.equals("item")) {
  250.                 itemRSS.add(itemRSSActual);
  251.             }
  252.             stringBuild.setLength(0);
  253.         }
  254.     }
  255.  
  256.     @Override
  257.     public void startDocument() throws SAXException {
  258.         super.startDocument();
  259.         itemRSS = new ArrayList<RSSBean>();
  260.         stringBuild = new StringBuilder();
  261.     }
  262.  
  263.     @Override
  264.     public void startElement(String nulo, String nombreLocal, String nombre,
  265.             Attributes attributes) throws SAXException {
  266.         super.startElement(nulo, nombreLocal, nombre, attributes);
  267.         if (nombreLocal.equals("title")) {
  268.             itemRSSActual = new RSSBean();
  269.         } else if (nombreLocal.equals("enclosure")) {
  270.             String url = attributes.getValue("url").toString();
  271.             itemRSSActual.setUrl(url);
  272.  
  273.         }
  274.     }
  275.  
  276.     public List<RSSBean> getItemRSS() {
  277.         return itemRSS;
  278.     }
  279.  
  280. }
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290. /////////////////////////////////////////////////////////////////////////////////////
  291.  
  292. package fis.itlab.beans;
  293.  
  294. import java.io.Serializable;
  295.  
  296. public class RSSBean implements Serializable {
  297.  
  298.     private static final long serialVersionUID = -5728052626145700528L;
  299.     String titulo, cuerpo, imagen, fecha, url;
  300.     byte[] imagenbyte;
  301.  
  302.     public byte[] getImagenbyte() {
  303.         return imagenbyte;
  304.     }
  305.  
  306.     public void setImagenbyte(byte[] imagenbyte) {
  307.         this.imagenbyte = imagenbyte;
  308.     }
  309.  
  310.     public String getTitulo() {
  311.         return titulo;
  312.     }
  313.  
  314.     public String getUrl() {
  315.         return url;
  316.     }
  317.  
  318.     public void setUrl(String url) {
  319.         this.url = url;
  320.     }
  321.  
  322.     public void setTitulo(String titulo) {
  323.         this.titulo = titulo;
  324.     }
  325.  
  326.     public String getCuerpo() {
  327.         return cuerpo;
  328.     }
  329.  
  330.     public void setCuerpo(String cuerpo) {
  331.         this.cuerpo = cuerpo;
  332.     }
  333.  
  334.     public String getImagen() {
  335.         return imagen;
  336.     }
  337.  
  338.     public void setImagen(String imagen) {
  339.         this.imagen = imagen;
  340.     }
  341.  
  342.     public String getFecha() {
  343.         return fecha;
  344.     }
  345.  
  346.     public void setFecha(String fecha) {
  347.         this.fecha = fecha;
  348.     }
  349.  
  350.     @Override
  351.     public String toString() {
  352.         return "RSSBean [titulo=" + titulo + ", cuerpo=" + cuerpo + ", imagen="
  353.                 + imagen + ", fecha=" + fecha + ", url=" + url + "]";
  354.     }
  355.  
  356. }
  357.  
  358. //////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement