content: package ciscoroutertool.scanner.parser;
  
  import java.util.ArrayList;
  
  /**
   * Parses the lines into interfaces and holds specific interfaces
   * @version 0.01ALPHA
   * @author Andrew H. Johnston
   */
  public class RouterConfigManager {
      
      public RouterConfigManager() {
          
      }
      
      public static ArrayList<String> getActiveConfig(ArrayList<String> lines) {
          ArrayList<String> activeLines = new ArrayList<>();
          ArrayList<RouterInterface> interfaces = new ArrayList<>();
          for (int i = 0; i < lines.size(); i++) {
              String line = lines.get(i);
              //Ignore comments
              if (line.matches("(\\s+)?!(.*)?")) {
                  continue;
              }
              //Put interfaces into its own thing
              if (line.matches("^interface\\s(.*)")) {
                  RouterInterface iface = new RouterInterface(line);
                  String nline = null;
                  i++; //Increment counter
                  while ((nline = lines.get(i)) != null && !nline.matches("!") 
                          && !nline.matches("^interface\\s(.*)")) {
                      iface.addLine(nline);
                      i++;
                  }
                  interfaces.add(iface);
              }
              //Its not an interface, process normally
              activeLines.add(line);
          }
          for (RouterInterface iface : interfaces) {
              if (!iface.isShutdown()) {
                  activeLines.addAll(iface.getLines());
              }
          }
          return activeLines;
      }
      
      public static ArrayList<RouterInterface> getInterfaces(ArrayList<String> lines) {
          ArrayList<RouterInterface> interfaces = new ArrayList<>();
          int current = 0;
          interfaces.add(new RouterInterface());
          for (String line : lines) {
              //If it's not a new interface
              if (!line.contains("^interface")) {
                  interfaces.get(current).addLine(line);
              }
              current++;
              interfaces.add(current, new RouterInterface());
              
          }
          return interfaces;
      }
      
  }
  