JspIndexParser.java :  » IDE-Eclipse » jdt » org » eclipse » jsp » Java Open Source

Java Open Source » IDE Eclipse » jdt 
jdt » org » eclipse » jsp » JspIndexParser.java
/*******************************************************************************
 * Copyright (c) 2003, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jsp;

import java.io.*;
import java.io.Reader;

import org.eclipse.core.indexsearch.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.*;

/**
 * @author weinand
 */
public class JspIndexParser extends AbstractJspParser implements IIndexer {
  
  public static final String JSP_TYPE_REF= "jsp_typeRef";  //$NON-NLS-1$
  
  IFile fFile;
  String fFilePath;
  boolean fInUseBean;
  String fId;
  String fClass;
  IIndex fOutput;
  

  JspIndexParser(IFile resource) {
    fFile= resource;
  }
  
  protected void startTag(boolean endTag, String name, int startName) {
    fInUseBean= "jsp:useBean".equals(name); //$NON-NLS-1$
  }
  
  protected void tagAttribute(String attrName, String value, int startName, int startValue) {
    if (fInUseBean) {
      if ("id".equals(attrName)) //$NON-NLS-1$
        fId= value;
      else if ("class".equals(attrName)) //$NON-NLS-1$
        fClass= value;
    }
  }
  
  protected void endTag(boolean end) {
    if (fInUseBean) {
      if (fId != null && fClass != null) {

        String s= JSP_TYPE_REF + "/" + fClass; //$NON-NLS-1$
        System.out.println("  " + s); //$NON-NLS-1$
        fOutput.addRef(s, fFilePath);        

        fId= fClass= null;
      }
      fInUseBean= false;
    }
  }
  
  public void index(IIndex indexerOutput) throws IOException {
    
    String type= fFile.getFileExtension();
    if (type != null && JspUIPlugin.JSP_TYPE.equalsIgnoreCase(type)) {
      
      // Add the name of the file to the index
      String path= fFile.getFullPath().toString();
      
      String encoding= null;
      try {
        encoding= fFile.getCharset();
      } catch (CoreException e1) {
      }
      if (encoding == null)
        encoding= ResourcesPlugin.getEncoding();
      
      String s= null;
      IPath location= fFile.getLocation();
      if (location == null)
        s= ""; //$NON-NLS-1$
      else
        s= new String(Util.getFileCharContent(location.toFile(), encoding));
      
      try {
        Reader reader= new StringReader(s);
        fOutput= indexerOutput;
        fFilePath= path;      
        parse(reader);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.