private void FetchFromFile(Element eElement) {
    PrintConsole.print("App fetchs gatways from a different file.");
    fileAddress = eElement.getAttribute(ATTFILE);

    try {
      BufferedReader reader = null;
      int Id = 0;
      InputStream in = getClass().getResourceAsStream(fileAddress);
      reader = new BufferedReader(new InputStreamReader(in));
      String var = "";
      String[] Pos;
      gatways = new TreeMap<>();
      Vertex newGateway;
      while ((var = reader.readLine()) != null) {
        Pos = var.split("[ ]");
        newGateway = new Vertex(Id, new Point(Integer.valueOf(Pos[0]), Integer.valueOf(Pos[1])));
        gatways.put(newGateway.getId(), newGateway);
        Id++;
      }
      reader.close();

    } catch (Exception ex) {
      PrintConsole.printErr("GatewayConfig/FetchFromFile message:" + ex.getMessage());
    }
  }
 @Override
 protected boolean ValidateXMLDocument(Element eElement) throws Exception {
   if (!eElement.hasAttribute(ATTMODE)) {
     PrintConsole.printErr(
         TAG
             + " must have child node. the following template may help you "
             + "\n <Channels Mode=\"Partially|All\"> \n \t <Add Value=\"1\" />\n\t<Add Value=\"2\" /> \n </Channels>");
     System.exit(0);
   }
   return true;
 }
 protected boolean ValidateXMLDocument(Element eElement, ChannelMode mode) throws Exception {
   if (mode == ChannelMode.Partially) {
     if (eElement.hasChildNodes()) {
       PrintConsole.printErr(
           TAG
               + " must have child node. the following template may help you "
               + "\n <Channels Mode=\"Partially\"> \n \t <Add Value=\"1\" />\n\t<Add Value=\"2\" /> \n </Channels>");
       System.exit(0);
     }
   }
   return true;
 }
  protected boolean ValidateXMLDocument(Element eElement, TypeOfGenerationEnum type)
      throws Exception {
    if (type == TypeOfGenerationEnum.RANDOM) {
      if (eElement.hasAttribute(ATTSEED))
        if (!Pattern.matches("-?[0-9]+", eElement.getAttribute(ATTSEED))) {
          PrintConsole.printErr(
              "The value of "
                  + ATTSEED
                  + " attribute in "
                  + TAG
                  + " must be an interger value. \n\n");
          System.exit(0);
        }
    }
    if (type == TypeOfGenerationEnum.FILE)
      if (!eElement.hasAttribute(ATTFILE)) {
        PrintConsole.printErr(
            ATTFILE
                + " attribute in "
                + TAG
                + " tag is missing. the following template may help you \n"
                + "<Gateways Number=\"2\" TypeOfGeneration=\"file\" Address=\"src/setting/gatway.txt\" />");
        System.exit(0);
      }
    if (type == TypeOfGenerationEnum.STATIC)
      if (!eElement.hasChildNodes()) {
        PrintConsole.printErr(
            TAG
                + " must have child node. the following template may help you "
                + "\n <Gateways Number=\"2\" TypeOfGeneration=\"Static\">"
                + " \n <Add x=\"150\" y=\"975\" /> \n <Add x=\"274\" y=\"785\" />\n</Gateways> ");
        System.exit(0);
      }

    return true;
  }
 @Override
 protected boolean ValidateXMLDocument(Element eElement) throws Exception {
   if (!eElement.hasAttribute(ATTNUM)) {
     PrintConsole.printErr(
         ATTNUM
             + " attribute in "
             + TAG
             + " tag is missing. the following template may help you."
             + "\n <Gateways Number=\"2\" TypeOfGeneration=\"Static\"> \n	"
             + "<Add x=\"114\" y=\"457\" />\n<Add x=\"12\" y=\"333\" /></Gateways>");
     System.exit(0);
   } else if (!Pattern.matches("-?[0-9]+", eElement.getAttribute(ATTNUM))) {
     PrintConsole.printErr(
         "The value of " + ATTNUM + " attribute  in " + TAG + " must be an interger value. \n\n");
     System.exit(0);
   }
   if (!eElement.hasAttribute(ATTTOG)) {
     PrintConsole.printErr(
         ATTTOG
             + " attribute in "
             + TAG
             + " tag is missing. this template may help you."
             + "\n <Gateways Number=\"2\" TypeOfGeneration=\"Static\"> \n	"
             + "<Add x=\"114\" y=\"457\" />\n<Add x=\"12\" y=\"333\" /></Gateways>");
     System.exit(0);
   } else if (!Pattern.matches(
       "random|static|file", eElement.getAttribute(ATTTOG).toLowerCase())) {
     PrintConsole.printErr(
         "the value of "
             + ATTTOG
             + " in "
             + TAG
             + " node must be on of the following item:"
             + " \n 1- File \n 2- Static \n 3- Random.\n\n");
     System.exit(0);
   }
   if (!eElement.hasAttribute(ATTRADIO)) {
     PrintConsole.printErr(
         ATTRADIO
             + " attribute in "
             + TAG
             + " tag is missing. the following template may help you."
             + "\n <Routers Number=\"20\" TypeOfGeneration=\"RANDOM\" MinDistance=\"50\" Seed=\" 12252554 \" "
             + "SaftyTest=\"50\" />\n\n");
     System.exit(0);
   }
   // check the value of tag
   else if (!Pattern.matches("-?[0-9]+", eElement.getAttribute(ATTRADIO))) {
     PrintConsole.printErr(
         "The value of " + ATTRADIO + " attribute must be an interger value. \n\n");
     System.exit(0);
   }
   return true;
 }
  private void FetchStatic(Element eElement) {
    PrintConsole.print("App fetchs gatways from cofiguration file <config.xml>.");
    gatways = new TreeMap<Integer, Vertex>();
    int Id = 0;
    NodeList childNodes = eElement.getElementsByTagName(CHILD);
    Vertex newGateway;
    for (int counter = 0; counter < childNodes.getLength() && counter < num; counter++) {
      Node childNode = childNodes.item(counter);
      if (childNode.getNodeType() == Node.ELEMENT_NODE) {
        Element childElem = (Element) childNode;
        newGateway =
            new Vertex(
                Id,
                new Point(
                    Integer.valueOf(childElem.getAttribute("x")),
                    Integer.valueOf(childElem.getAttribute("y"))));

        gatways.put(newGateway.getId(), newGateway);
        Id++;
      }
    }
  }