Package railo.runtime.tag

Source Code of railo.runtime.tag.ObjectCache

package railo.runtime.tag;

import org.apache.oro.text.regex.MalformedPatternException;

import railo.commons.lang.StringUtil;
import railo.runtime.exp.ApplicationException;
import railo.runtime.exp.PageException;
import railo.runtime.ext.tag.TagImpl;
import railo.runtime.op.Caster;
import railo.runtime.query.QueryCacheFilter;
import railo.runtime.query.QueryCacheFilterImpl;
import railo.runtime.query.QueryCacheFilterUDF;
import railo.runtime.query.QueryCacheSupport;
import railo.runtime.type.UDF;

/**
* Flushes the query cache
*
*
*
**/
public final class ObjectCache extends TagImpl {

  /** Clears queries from the cache in the Application scope. */
  private String action="clear";
  private QueryCacheFilter filter;
  private String result="cfObjectCache";

  /** set the value action
  *  Clears queries from the cache in the Application scope.
  * @param action value to set
  **/
  public void setAction(String action)  {
    this.action=action;
  }
  public void setResult(String result)  {
    this.result=result;
  }

  public void setFilter(Object filter) throws PageException  {
    this.filter=createFilter(filter, false);
  }

  public void setFilter(String filter) throws PageException  {
    this.filter=createFilter(filter, false);
  }
 
  public void setFilterignorecase(String filter) throws PageException  {
    this.filter=createFilter(filter, true);
  }
 
 
 
  public static QueryCacheFilter createFilter(Object filter,boolean ignoreCase) throws PageException  {
     if(filter instanceof UDF)
       return createFilter((UDF)filter);
     return createFilter(Caster.toString(filter),ignoreCase);
  }

 
  public static QueryCacheFilter createFilter(UDF filter) throws PageException  {
    return new QueryCacheFilterUDF(filter);
  }
 
  public static QueryCacheFilter createFilter(String pattern,boolean ignoreCase) throws PageException  {
      if(!StringUtil.isEmpty(pattern,true)) {
            try {
              return new QueryCacheFilterImpl(pattern,ignoreCase);
            } catch (MalformedPatternException e) {
                throw Caster.toPageException(e);
            }
        }
      return null;
  }
 
 
 
 
 


  @Override
  public int doStartTag() throws PageException  {
    _doStartTag();
    return SKIP_BODY;
  }
  public void _doStartTag() throws PageException  {
    QueryCacheSupport qc = ((QueryCacheSupport)pageContext.getQueryCache());
    if(action.equalsIgnoreCase("clear")) {
      if(filter==null)
          qc.clear(pageContext);
        else
          qc.clear(pageContext,filter);
    }
    else if(action.equalsIgnoreCase("size")) {
      pageContext.setVariable(result, Caster.toDouble(qc.size(pageContext)));
    }
    else throw new ApplicationException("attribute action has an invalid value ["+action+"], valid is only [clear,size]");
   
     
   
  }

  @Override
  public int doEndTag()  {
    return EVAL_PAGE;
  }

  @Override
  public void release()  {
    super.release();
    action="clear";
    result="cfObjectCache";
    filter=null;
  }
}
TOP

Related Classes of railo.runtime.tag.ObjectCache

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.