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

Source Code of org.yaac.server.egql.evaluator.function.FormatFunction

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

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

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;

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

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

  @Override
  public void validate() throws EGQLException {
    FunctionUtil.ensureParamSize(ops, 2);
  }

  @Override
  public EvaluationResult evaluate(ProcessDataRecord record) {
    EvaluationResult orig = ops.get(0).evaluate(record);
    EvaluationResult format = ops.get(1).evaluate(record);
   
    if (format.getPayload() instanceof String) {
      if (orig.getPayload() instanceof Number) {
        BigDecimal val = (BigDecimal) orig.getPayload();
        String formattedVal =
          new DecimalFormat((String) format.getPayload()).format(val);
        return new EvaluationResult(formattedVal, orig, format);
      } else if (orig.getPayload() instanceof Date) {
        Date d = (Date) orig.getPayload();
        String formattedDt =
          new SimpleDateFormat((String) format.getPayload()).format(d);
        return new EvaluationResult(formattedDt, orig, format);
      } else {
        return orig.withWarning(ErrorCode.W105);
      }
    } else {
      return orig.withWarning(ErrorCode.W106);
    }
  }
}
TOP

Related Classes of org.yaac.server.egql.evaluator.function.FormatFunction

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.