Package it.tref.eclipse.wicket.plugin

Source Code of it.tref.eclipse.wicket.plugin.HTMLWicketParser

package it.tref.eclipse.wicket.plugin;

import it.tref.eclipse.wicket.plugin.views.HTMLTag;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;

/**
* Class that provide static methods for parsing html file
*
* @author tref.AF
*
*/
public final class HTMLWicketParser
{
  private static String WICKET_ID = "wicket:id";
 
  private static ArrayList<String> parseTags(String filepath)
  {
    ArrayList<String> tagList = new ArrayList<String>();
   
    try {
   
      BufferedReader reader = new BufferedReader(new FileReader(new File(filepath)));
     
      String htmlString;
     
      StringBuilder temptag = new StringBuilder();
      while((htmlString = reader.readLine()) != null)
      {
        for(int i=0; i<htmlString.length(); i++)
        {
          if(htmlString.charAt(i) == '<')
          {
            temptag = new StringBuilder();
          }
          else if(htmlString.charAt(i) == '>')
          {
            tagList.add(temptag.toString());
          }
          else
          {
            temptag.append(htmlString.charAt(i));
          }
        }
      }
      reader.close();
   
    } catch (Exception e) {
     
      MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", e.getMessage());
     
    }
   
    return tagList;
  }
 
  /**
   * Parse html file to wicket id tree tag object
   *
   * @param filepath file to parse
   * @param root html root tag, childs will be attached to it
   */
  public static void parse(String filepath, HTMLTag root)
  {
    HTMLTag parent = root;
   
    for(String tag : parseTags(filepath))
    {
      if(tag.contains(WICKET_ID))
      {
        try {
         
          HTMLTag htmltag = new HTMLTag(tag.substring(0, tag.indexOf(" ")));
         
          int i1 = tag.indexOf("\"", tag.indexOf(WICKET_ID)) + 1;
          int i2 = tag.indexOf("\"", i1);
         
          htmltag.setId(tag.substring(i1, i2));
          htmltag.setParent(parent);
          parent.addChild(htmltag);
       
          if(!tag.endsWith("/"))
            parent = htmltag;
         
        } catch(Exception e) {
          continue;
        }
      }
      else if(tag.startsWith("/"))
      {
        if(parent.getTag().equals(tag.substring(1)))
        {
          if(parent.getParent() != null)
            parent = parent.getParent();
        }
      }
    }
  }
 
  public static List<String> parseWicketIds(String filepath)
  {
    ArrayList<String> ids = new ArrayList<String>();
    for(String tag : parseTags(filepath))
    {
      if(tag.contains(WICKET_ID))
      {
        int i1 = tag.indexOf("\"", tag.indexOf(WICKET_ID)) + 1;
        int i2 = tag.indexOf("\"", i1);
       
        ids.add(tag.substring(i1, i2));
      }
    }
    return ids;
  }
}
TOP

Related Classes of it.tref.eclipse.wicket.plugin.HTMLWicketParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.