Package org.yaac.server.egql.evaluator.function

Source Code of org.yaac.server.egql.evaluator.function.TextFunction$TextStringWrapper

package org.yaac.server.egql.evaluator.function;

import java.io.Serializable;
import java.math.BigDecimal;

import org.yaac.server.egql.evaluator.EvaluationResult;
import org.yaac.server.egql.exception.EGQLException;
import org.yaac.server.egql.processor.ProcessData.ProcessDataRecord;
import org.yaac.shared.ErrorCode;
import org.yaac.shared.file.FileDownloadPath;

/**
* @author Max Zhu (thebbsky@gmail.com)
*
*/
public class TextFunction extends Function {

  /**
   *
   */
  private static final long serialVersionUID = 1L;

  public static class TextStringWrapper implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
   
    private String rawString;

    /**
     *
     */
    @SuppressWarnings("unused")
    private TextStringWrapper() {
      super();
    }
   
    public TextStringWrapper(String rawString) {
      super();
      this.rawString = rawString;
    }
   
    public String getRawString() {
      return rawString;
    }

    @Override
    public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result + ((rawString == null) ? 0 : rawString.hashCode());
      return result;
    }

    @Override
    public boolean equals(Object obj) {
      if (this == obj)
        return true;
      if (obj == null)
        return false;
      if (getClass() != obj.getClass())
        return false;
      TextStringWrapper other = (TextStringWrapper) obj;
      if (rawString == null) {
        if (other.rawString != null)
          return false;
      } else if (!rawString.equals(other.rawString))
        return false;
      return true;
    }

    @Override
    public String toString() {
      return "TextStringWrapper [rawString=" + rawString + "]";
    }
  }
 
  public static class TextFileRefWrapper implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
   
    private FileDownloadPath ref;

    /**
     *
     */
    @SuppressWarnings("unused")
    private TextFileRefWrapper(){}
   
    /**
     * @param ref
     */
    public TextFileRefWrapper(FileDownloadPath ref) {
      super();
      this.ref = ref;
    }
   
    public FileDownloadPath getRef() {
      return ref;
    }

    @Override
    public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result + ((ref == null) ? 0 : ref.hashCode());
      return result;
    }

    @Override
    public boolean equals(Object obj) {
      if (this == obj)
        return true;
      if (obj == null)
        return false;
      if (getClass() != obj.getClass())
        return false;
      TextFileRefWrapper other = (TextFileRefWrapper) obj;
      if (ref == null) {
        if (other.ref != null)
          return false;
      } else if (!ref.equals(other.ref))
        return false;
      return true;
    }

    @Override
    public String toString() {
      return "TextFileRefWrapper [ref=" + ref + "]";
    }
  }
 
 
  @Override
  public void validate() throws EGQLException {
    FunctionUtil.ensureParamSize(ops, 1);
  }

  @Override
  public EvaluationResult evaluate(ProcessDataRecord record) {
    EvaluationResult r = ops.get(0).evaluate(record);
   
    // since this will only be used when user is trying to execute an expression with function text
    // then the actual text will NEVER be passed in as ops.get(0).evaluate(context).getPayload()
    if (r.getPayload() instanceof String) {
      return new EvaluationResult(new TextStringWrapper((String) r.getPayload()), r)
    } else if (r.getPayload() instanceof BigDecimal) {
      BigDecimal bd = (BigDecimal) r.getPayload();
      int index = bd.intValue() - 1;
      return new EvaluationResult(new TextFileRefWrapper(record.lookupFileReference(index)));
    } else {
      return r.withWarning(ErrorCode.W132);
    }
  }
}
TOP

Related Classes of org.yaac.server.egql.evaluator.function.TextFunction$TextStringWrapper

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.