Package org.uengine.processdesigner.mapper.transformers

Source Code of org.uengine.processdesigner.mapper.transformers.NumberFormatTransformer

package org.uengine.processdesigner.mapper.transformers;

import java.text.NumberFormat;
import java.util.Locale;
import java.util.Map;

import org.metaworks.FieldDescriptor;
import org.metaworks.Type;
import org.metaworks.inputter.SelectInput;
import org.uengine.kernel.ProcessInstance;
import org.uengine.processdesigner.mapper.Transformer;

public class NumberFormatTransformer extends Transformer{

  private char inputType;
 
  private char toType;
 
  public char getInputType() {
    return inputType;
  }

  public void setInputType(char inputType) {
    this.inputType = inputType;
  }

  public char getToType() {
    return toType;
  }

  public void setToType(char toType) {
    this.toType = toType;
  }

  public NumberFormatTransformer() {
    setName("NumberFormat");
  }
 
  public static void metaworksCallback_changeMetadata(Type type){
    FieldDescriptor fd = type.getFieldDescriptor("InputType");
    fd.setDisplayName("Input Number Type");
    fd.setInputter(new SelectInput(
        new Object[]{
          "Long",
          "Double"
        },
        new Object[]{ 'L', 'D' }
      ));

    fd = type.getFieldDescriptor("ToType");
    fd.setDisplayName("Output Format");
    fd.setInputter(new SelectInput(
        new Object[]{
            "Integer",
            "Currency",
            "Number",
            "Percent"
        },
        new Object[]{ 'I', 'C', 'N', 'P' }
    ));
 

  public String[] getInputArguments() {
    return new String[]{"input", "locale"};
  }

  @Override
  public Object transform(ProcessInstance instance, Map parameterMap, Map options) {
    Object val = parameterMap.get("input");
    NumberFormat nf = null;
   
    Locale inLocale = Locale.getDefault();
    if (parameterMap.get("locale") != null) {
      try {
        String language = (String) parameterMap.get("locale");
        inLocale = new Locale(language);
      } catch (Exception e) {}
    }
   
    switch(getToType()) {
    case 'C' :
      nf = NumberFormat.getCurrencyInstance(inLocale);
      break;
    case 'N' :
      nf = NumberFormat.getNumberInstance(inLocale);
      break;
    case 'P' :
      nf = NumberFormat.getPercentInstance(inLocale);
      break;
    default:
      nf = NumberFormat.getIntegerInstance(inLocale);
    }
   
    if (getInputType() == 'D') {
      return nf.format(Double.parseDouble(val+""));
    } else {
      return nf.format(Long.parseLong(val+""));
    }
  }
}
TOP

Related Classes of org.uengine.processdesigner.mapper.transformers.NumberFormatTransformer

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.