Browse Source

feat: RSS Checker fonctionnel

Martin Passard 7 years ago
parent
commit
b74e7b7772
2 changed files with 58 additions and 32 deletions
  1. 16 27
      src/rss/RSSChecker.java
  2. 42 5
      src/rss/RssData.java

+ 16 - 27
src/rss/RSSChecker.java

@@ -48,35 +48,22 @@ public class RSSChecker implements Runnable {
 		}
 		}
 	}
 	}
 	
 	
-	private void afficheArticle(Node article) {
+	
+	private void afficheArticle(Node article, String date) {
 		NodeList nl = article.getChildNodes();
 		NodeList nl = article.getChildNodes();
-		int length = nl.getLength();
-		RssData rssdata = new RssData();
-		
-		itemToRssData(article, rssdata);
+		RssData rssdata = new RssData(article);
+		rssdata.setDate(date);
 		b.sendMessagesOnAllChannels(rssdata.toStringIRC());
 		b.sendMessagesOnAllChannels(rssdata.toStringIRC());
-			
+		
 	}
 	}
 	
 	
-	private void itemToRssData(Node item, RssData data) {
-		System.out.println(item);
-		String balise = item.getNodeName();
-		if(balise.equalsIgnoreCase("title")) {
-			data.setTitre(item.getTextContent());
-		}else if(balise.equalsIgnoreCase("author")) {
-			NodeList authlist =item.getChildNodes();
-			for(int i = 0;i<authlist.getLength();i++) {
-				Node bn = authlist.item(i);
-				if(bn.getNodeName().equalsIgnoreCase("name")) data.setAuteur(bn.getTextContent());
-			}
-		}else if(balise.equalsIgnoreCase("link")) {
-			NamedNodeMap nmp = item.getAttributes();
-			Node n = nmp.getNamedItem("href");
-			if(n!=null) data.setLien(n.getTextContent());
-		}
-		
+	private void afficheArticle(Node article) {
+		afficheArticle(article, "");
+			
 	}
 	}
 	
 	
+	
+	
 	private void workOnEntry(NodeList nl) {
 	private void workOnEntry(NodeList nl) {
 		int len = nl.getLength();
 		int len = nl.getLength();
 		boolean istherenews = false;
 		boolean istherenews = false;
@@ -93,10 +80,9 @@ public class RSSChecker implements Runnable {
 								istherenews=true;
 								istherenews=true;
 								b.sendMessageOnAllChannels("Nouveautée sur planet.ffdn.org:");
 								b.sendMessageOnAllChannels("Nouveautée sur planet.ffdn.org:");
 							}
 							}
-							afficheArticle(article);
+							afficheArticle(article,Main.DATE_FORMAT_OUT.format(date));
 							lastarticle = date;
 							lastarticle = date;
 						}
 						}
-						System.out.println(Main.DATE_FORMAT_OUT.format(date));
 					} catch (DOMException | ParseException e) {
 					} catch (DOMException | ParseException e) {
 						e.printStackTrace();
 						e.printStackTrace();
 					}
 					}
@@ -108,9 +94,12 @@ public class RSSChecker implements Runnable {
 	@Override
 	@Override
 	public void run() {
 	public void run() {
 		if(Main.isDebug()) {
 		if(Main.isDebug()) {
-			System.out.println("RSS checker lancé sur "+rssaddr);
+			System.out.println(this.threadName+" lancé sur "+rssaddr);
 		}
 		}
 		do {
 		do {
+			if(Main.isDebug()) {
+				System.out.println("Parsing du RSS "+rssaddr);
+			}
 			DocumentBuilder db=null;
 			DocumentBuilder db=null;
 			Document doc = null;
 			Document doc = null;
 			try {
 			try {
@@ -133,7 +122,7 @@ public class RSSChecker implements Runnable {
 			try {
 			try {
 				Thread.sleep(1000*timeout);
 				Thread.sleep(1000*timeout);
 			} catch (InterruptedException e) {
 			} catch (InterruptedException e) {
-				System.err.println("rss Chacker à été arrété");
+				System.err.println(this.threadName+" à été arrété");
 			}
 			}
 		}while(!end);
 		}while(!end);
 
 

+ 42 - 5
src/rss/RssData.java

@@ -3,6 +3,10 @@ package rss;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
 import main.AffichableSurIRC;
 import main.AffichableSurIRC;
 
 
 public class RssData implements AffichableSurIRC{
 public class RssData implements AffichableSurIRC{
@@ -19,10 +23,41 @@ public class RssData implements AffichableSurIRC{
 		this.titre = titre;
 		this.titre = titre;
 		this.lien = lien;
 		this.lien = lien;
 	}
 	}
+	
+	public RssData(Node item) {
+		this();
+		NodeList childs = item.getChildNodes();
+		int length  = childs.getLength();
+		for(int i = 0; i<length;++i) {
+			Node actualchild = childs.item(i);
+		
+		String balise = actualchild.getNodeName();
+		if(balise.equalsIgnoreCase("title")) {
+			setTitre(actualchild.getTextContent());
+		}else if(balise.equalsIgnoreCase("author")) {
+			NodeList authlist =actualchild.getChildNodes();
+			for(int j = 0;j<authlist.getLength();j++) {
+				Node bn = authlist.item(j);
+				if(bn.getNodeName().equalsIgnoreCase("name")) {
+					String a = ""+bn.getTextContent();
+					setAuteur(a);
+					System.out.println("Mise de l'auteur a "+a);
+				}
+			}
+		}else if(balise.equalsIgnoreCase("link")) {
+			NamedNodeMap nmp = actualchild.getAttributes();
+			String link = nmp.getNamedItem("href").getTextContent();
+			if(link!=null) setLien(link);
+		}
+		}
+	}
 
 
 
 
 	public RssData() {
 	public RssData() {
-		
+		this.auteur="";
+		this.date="";
+		this.titre="";
+		this.lien="";
 	}
 	}
 	
 	
 	public String getAuteur() {
 	public String getAuteur() {
@@ -31,7 +66,7 @@ public class RssData implements AffichableSurIRC{
 
 
 
 
 	public void setAuteur(String auteur) {
 	public void setAuteur(String auteur) {
-		auteur = auteur;
+		this.auteur = auteur;
 	}
 	}
 
 
 
 
@@ -73,11 +108,13 @@ public class RssData implements AffichableSurIRC{
 	public List<String> toStringIRC() {
 	public List<String> toStringIRC() {
 		List<String> res = new ArrayList<>();
 		List<String> res = new ArrayList<>();
 		res.add(titre);
 		res.add(titre);
-		String auth = "Par "+auteur;
-		if(date != null) {
+		String auth= "";
+		if(!(auteur == null || auteur.equals(""))) 
+			auth = "Par "+auteur+" ";
+		if(!(date == null || date.equals(""))) {
 			auth += "le "+date;
 			auth += "le "+date;
 		}
 		}
-		res.add(auth);
+		if(!auth.equals("")) res.add(auth);
 		if(lien != null) {
 		if(lien != null) {
 		res.add("Plus d'infos sur "+lien);
 		res.add("Plus d'infos sur "+lien);
 		}
 		}