Info.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package actions;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import data.CoveredAreas;
  5. import data.ISP;
  6. import data.ISPDAO;
  7. import main.Bot;
  8. import main.Cache;
  9. import verif_saisie.EntierPositifNonVide;
  10. public class Info extends Action {
  11. public Info(Bot b) {
  12. super(b);
  13. List<String> ar = new ArrayList<>();
  14. ar.add("info");
  15. this.keyWords = ar;
  16. }
  17. @Override
  18. public void react(String channel, String sender, String login, String hostname, String message) {
  19. String s = message.substring(message.indexOf(' ')+1);
  20. ISPDAO idao = ISPDAO.getInstance();
  21. Bot ib = (Bot)bot;
  22. if(!EntierPositifNonVide.verifie(s)) { // Un mot après +info
  23. if(s.equalsIgnoreCase("all")) { // +info all
  24. Cache c = Cache.getInstance();
  25. ib.sendMessage(channel, c.toStringIRC());
  26. for(ISP i : c.getListe()) {
  27. if(i.isFFDNMember()) {
  28. ib.sendMessage(channel, i.toStringIRC());
  29. }
  30. }
  31. }else if(s.equalsIgnoreCase("ffdn")) { //+info ffdn
  32. Cache c = Cache.getInstance();
  33. ib.sendMessage(channel, c.toStringIRC());
  34. }else {
  35. Cache c = Cache.getInstance();
  36. ISP i = c.getISPWithName(s);
  37. if(i == null) {
  38. bot.sendMessage(channel, "Recherche d'une zone "+s);
  39. ISP j = c.getISPWithGeoZone(s);
  40. if(j == null)
  41. bot.sendMessage(channel, "Le FAI "+s+" est Inconnu, désolé. Et aucun FAI n'opère sur une sone dénomée "+s+" ...");
  42. else {
  43. bot.sendMessage(channel, "Un FAI opère sur la zone "+s+" : ");
  44. ib.sendMessage(channel, j.toStringIRC());
  45. List<CoveredAreas> cas = j.getCoveredAreas(s);
  46. String technos = "";
  47. for(CoveredAreas ca: cas) {
  48. technos+=ca.getTechnos()+" ";
  49. }
  50. bot.sendMessage(channel, "Avec pour techno "+technos);
  51. }
  52. }else {
  53. ib.sendMessage(channel, i.toStringIRC());
  54. }
  55. }
  56. }else { // Un nombre après +info
  57. int id = Integer.parseInt(message.substring(message.indexOf(' ')+1));
  58. List<String> strings = idao.getISP(id).toStringIRC();
  59. for(String response : strings) {
  60. bot.sendMessage(channel,response);
  61. }
  62. }
  63. }
  64. @Override
  65. public String help() {
  66. return " suivi du nom d'un FAI ou de son numero. Dans le cas d'un nom, il va le chercher dans le Cache. Dans le cas d'un numéro, il fait la requète directement dans db.ffdn.org. Exemples: \"+info 2\" ou \"+info fdn\" ";
  67. }
  68. }