RssData.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package rss;
  2. import java.text.ParseException;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.List;
  6. import org.w3c.dom.DOMException;
  7. import org.w3c.dom.NamedNodeMap;
  8. import org.w3c.dom.Node;
  9. import org.w3c.dom.NodeList;
  10. import main.AffichableSurIRC;
  11. import main.Main;
  12. /**
  13. * Classe de stockage des informations d'une entrée RSS.
  14. * @author marmat
  15. *
  16. */
  17. public class RssData implements AffichableSurIRC{
  18. private String auteur;
  19. private String date;
  20. private String titre;
  21. private String lien;
  22. private String source;
  23. public RssData(String auteur, String date, String titre, String lien, String source) {
  24. super();
  25. this.auteur = auteur;
  26. this.date = date;
  27. this.titre = titre;
  28. this.lien = lien;
  29. this.source = source;
  30. }
  31. /**
  32. * Transforme un Noeud correspondant à un entry en un RSSData
  33. * @param item Noeud w3c
  34. */
  35. public RssData(Node item, Date date) {
  36. this();
  37. NodeList childs = item.getChildNodes();
  38. int length = childs.getLength();
  39. for(int i = 0; i<length;++i) {
  40. Node actualchild = childs.item(i);
  41. String balise = actualchild.getNodeName();
  42. if(balise.equalsIgnoreCase("title")) {
  43. setTitre(actualchild.getTextContent());
  44. }else if(balise.equalsIgnoreCase("author")) {
  45. NodeList authlist =actualchild.getChildNodes();
  46. for(int j = 0;j<authlist.getLength();j++) {
  47. Node bn = authlist.item(j);
  48. if(bn.getNodeName().equalsIgnoreCase("name")) {
  49. String a = ""+bn.getTextContent();
  50. setAuteur(a);
  51. }
  52. }
  53. }else if(balise.equalsIgnoreCase("link")) {
  54. NamedNodeMap nmp = actualchild.getAttributes();
  55. String link = nmp.getNamedItem("href").getTextContent();
  56. if(link!=null) setLien(link);
  57. }else if(balise.equalsIgnoreCase("source")) {
  58. NodeList nl = actualchild.getChildNodes();
  59. for(int j = 0; j<nl.getLength();++j) {
  60. Node node = nl.item(j);
  61. if(node.getNodeName().equalsIgnoreCase("title")) {
  62. setSource(node.getTextContent());
  63. }
  64. }
  65. }else if(balise.equalsIgnoreCase("updated")) {
  66. try {
  67. Date d = RSSChecker.DATE_FORMATIN.parse(actualchild.getTextContent());
  68. setDate(Main.DATE_FORMAT_OUT.format(d));
  69. } catch (DOMException | ParseException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }
  74. if(date != null) {
  75. this.setDate(Main.DATE_FORMAT_OUT.format(date));
  76. }
  77. }
  78. public RssData(Node item) {
  79. this(item,null);
  80. }
  81. public RssData() {
  82. this.auteur="";
  83. this.date="";
  84. this.titre="";
  85. this.lien="";
  86. }
  87. public String getAuteur() {
  88. return auteur;
  89. }
  90. public void setAuteur(String auteur) {
  91. this.auteur = auteur;
  92. }
  93. public String getDate() {
  94. return date;
  95. }
  96. public void setDate(String date) {
  97. this.date = date;
  98. }
  99. public String getSource() {
  100. return source;
  101. }
  102. public void setSource(String source) {
  103. this.source = source;
  104. }
  105. public String getTitre() {
  106. return titre;
  107. }
  108. public void setTitre(String titre) {
  109. this.titre = titre;
  110. }
  111. public String getLien() {
  112. return lien;
  113. }
  114. public void setLien(String lien) {
  115. this.lien = lien;
  116. }
  117. public String toString() {
  118. return "Article par "+auteur+" : "+titre+" le "+date+" lien: "+lien+" via "+source;
  119. }
  120. @Override
  121. public List<String> toStringIRC() {
  122. List<String> res = new ArrayList<>();
  123. res.add(titre);
  124. String auth= "";
  125. if(!(auteur == null || auteur.equals("")))
  126. auth = "Par "+auteur+" ";
  127. if(!(date == null || date.equals(""))) {
  128. auth += "le "+date;
  129. }
  130. if(!(source == null || source.equals(""))) {
  131. auth += " via "+source;
  132. }
  133. if(!auth.equals("")) res.add(auth);
  134. if(lien != null) {
  135. res.add("Plus d'infos sur "+lien);
  136. }
  137. return res;
  138. }
  139. }