Nodesreader.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import host.*;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.Reader;
  7. import javax.xml.namespace.QName;
  8. import javax.xml.stream.XMLEventReader;
  9. import javax.xml.stream.XMLInputFactory;
  10. import javax.xml.stream.XMLStreamException;
  11. import javax.xml.stream.XMLStreamReader;
  12. import javax.xml.stream.events.Attribute;
  13. import javax.xml.stream.events.Characters;
  14. import javax.xml.stream.events.StartDocument;
  15. import javax.xml.stream.events.StartElement;
  16. import javax.xml.stream.events.XMLEvent;
  17. public class Nodesreader {
  18. public void read(String file) {
  19. String current = "";
  20. ArrayList<Host> goodguys = new ArrayList<Host>();
  21. ArrayList<Host> badguys = new ArrayList<Host>();
  22. try {
  23. boolean good = true;
  24. boolean contentSet = true;
  25. Host currentHost = null;
  26. Reader reader = new FileReader(file);
  27. XMLInputFactory factory = XMLInputFactory.newInstance();
  28. XMLEventReader xmlEventReader = factory.createXMLEventReader(reader);
  29. while (xmlEventReader.hasNext()) {
  30. XMLEvent event = xmlEventReader.nextEvent();
  31. // start element
  32. if (event.isStartElement()) {
  33. StartElement startelement = event.asStartElement();
  34. current = startelement.getName().getLocalPart();
  35. // iterate attribs
  36. String port = null;
  37. Iterator<Attribute> attributes = startelement.getAttributes();
  38. while (attributes.hasNext()) {
  39. Attribute attribute = attributes.next();
  40. // search for port
  41. if (attribute.getName().toString().equals("Port")) {
  42. port = attribute.getValue();
  43. }
  44. }
  45. // check for node type
  46. if (current.equals("nodes")) {
  47. // do nothing
  48. } else if (current.equals("GoodGuys")) {
  49. good = true;
  50. } else if (current.equals("BadGuys")) {
  51. good = false;
  52. } else if (current.equals("IPAddress")) {
  53. currentHost = new IPAddress(port);
  54. contentSet = false;
  55. } else if (current.equals("Hostname")) {
  56. currentHost = new Hostname(port);
  57. contentSet = false;
  58. }
  59. // append to list
  60. if (currentHost != null)
  61. if (good)
  62. goodguys.add(currentHost);
  63. else
  64. badguys.add(currentHost);
  65. } else if (event.isCharacters()) {
  66. if (currentHost != null) {
  67. if (!contentSet)
  68. currentHost.setContent(event.asCharacters().getData());
  69. contentSet = true;
  70. } else {
  71. current = "";
  72. }
  73. }
  74. }
  75. }
  76. catch (FileNotFoundException | XMLStreamException e) {}
  77. // iterate good guys
  78. System.out.println("good goys");
  79. Iterator<Host> hosts = goodguys.iterator();
  80. while (hosts.hasNext()) {
  81. System.out.println(hosts.next().toString());
  82. }
  83. // iterate bad guys
  84. System.out.println("bad goys");
  85. hosts = badguys.iterator();
  86. while (hosts.hasNext()) {
  87. System.out.println(hosts.next().toString());
  88. }
  89. }
  90. }