All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gw.lang.reflect.gs.StringSourceFileHandle Maven / Gradle / Ivy

There is a newer version: 1.18.2
Show newest version
/*
 * Copyright 2014 Guidewire Software, Inc.
 */

package gw.lang.reflect.gs;

import gw.config.CommonServices;
import gw.fs.IFile;
import gw.lang.parser.ISource;
import gw.lang.parser.ISymbolTable;
import gw.lang.parser.ITypeUsesMap;
import gw.lang.parser.StringSource;
import gw.lang.parser.expressions.ITypeVariableDefinition;

import java.io.File;
import java.util.Map;

public class StringSourceFileHandle implements ISourceFileHandle
{
  private String _source;
  private boolean _bTestResource;
  private ClassType _classType;
  private String _typeName;
  private String _strEnclosingType;
  private ITypeUsesMap _typeUsesMap;
  private Map _capturedTypeVars;
  private int _iOffset;
  private int _iEnd;

  private IFile _file;
  private String _fileRef;
  private ISymbolTable _extSyms;

  public StringSourceFileHandle( String typeName, CharSequence source, boolean isTestResource, ClassType classType )
  {
    this( typeName, source, null, isTestResource, classType );
  }
  public StringSourceFileHandle( String typeName, CharSequence source, IFile strPath, boolean isTestResource, ClassType classType )
  {
    _typeName = typeName;
    _source = source != null ? source.toString() : null;
    _bTestResource = isTestResource;
    _classType = classType;
    _file = strPath;
    assignFileRef();
  }

  private void assignFileRef()
  {
    if( _file == null )
    {
      return;
    }

    String strFile = getFilePath().replace('/', File.separatorChar);
    int iIndex = strFile.lastIndexOf( File.separatorChar );
    if( iIndex >= 0 )
    {
      strFile = strFile.substring( iIndex + 1 );
    }
    _fileRef = strFile;
  }

  protected String getRawSource()
  {
    return _source;
  }
  protected void setRawSource( CharSequence source )
  {
    _source = source.toString();
  }

  public ISource getSource()
  {
    return new StringSource(getRawSource());
  }

  public String getParentType()
  {
    return _strEnclosingType;
  }
  public void setParentType( String strEnclosingType )
  {
    _strEnclosingType = strEnclosingType;
  }

  public String getNamespace()
  {
    return getTypeNamespace();
  }

  public String getFilePath()
  {
    return _file == null ? null : _file.getPath().getPathString();
  }

  public boolean isTestClass()
  {
    return _bTestResource;
  }

  public boolean isValid()
  {
    return true;
  }

  public boolean isStandardPath()
  {
    return false;
  }

  public boolean isIncludeModulePath()
  {
    return false;
  }

  public void cleanAfterCompile()
  {
    _source = null;
  }

  public ClassType getClassType()
  {
    return _classType;
  }

  public String getTypeName()
  {
    return _typeName;
  }

  public String getRelativeName() {
    if (_typeName.lastIndexOf('.') == -1) {
      return _typeName;
    }
    return _typeName.substring(_typeName.lastIndexOf('.') +1);
  }

  public String getTypeNamespace() {
    if (_typeName.lastIndexOf('.') == -1) {
      return "";
    }
    return _typeName.substring(0, _typeName.lastIndexOf('.'));
  }

  @Override
  public void setOffset( int iOffset )
  {
    _iOffset = iOffset;
  }
  @Override
  public int getOffset()
  {
    return _iOffset;
  }

  @Override
  public void setEnd( int iEnd )
  {
    _iEnd = iEnd;
  }
  @Override
  public int getEnd()
  {
    return _iEnd;
  }

  public void setFilePath( String filePath )
  {
    if( filePath != null ) {
      _file = CommonServices.getFileSystem().getIFile( new File( filePath ) );
      assignFileRef();
    }
  }

  @Override
  public String getFileName()
  {
    return _fileRef;
  }

  @Override
  public IFile getFile() {
    return _file;
  }

  public void setTypeUsesMap( ITypeUsesMap typeUsesMap )
  {
    _typeUsesMap = typeUsesMap;
  }
  public ITypeUsesMap getTypeUsesMap()
  {
    return _typeUsesMap;
  }

  public void setCapturedTypeVars( Map capturedTypeVars )
  {
    _capturedTypeVars = capturedTypeVars;
  }
  public Map getCapturedTypeVars()
  {
    return _capturedTypeVars;
  }

  @Override
  public String toString() {
    return _typeName;
  }

  public void setExternalSymbols( ISymbolTable extSyms ) {
    _extSyms = extSyms;
  }
  public ISymbolTable getExternalSymbols() {
    return _extSyms;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy