Package javango.util

Source Code of javango.util.StringFormat

package javango.util;

import java.lang.reflect.InvocationTargetException;
import java.util.IllegalFormatException;
import java.util.Map;
import java.util.MissingFormatArgumentException;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;

public class StringFormat {

  public static String format(String format, Map<String, Object> args) throws IllegalFormatException {
    StringBuilder newFormat = new StringBuilder();
   
    int start = 0;
    int loc = format.indexOf("%(");
    Object[] newArgs = new Object[StringUtils.countMatches(format, "%(")];
    int argCount = 0;
    while (loc != -1) {
      loc++;
      newFormat.append(format.substring(start, loc));
      int end = format.indexOf(")", loc);
      String argName = format.substring(loc+1, end);
      if (!args.containsKey(argName)) {
        throw new MissingFormatArgumentException(argName);
      }
      Object value = args.get(argName);
      newArgs[argCount++] = value;
      start = end+1;
      loc = format.indexOf("%(", start);
    }
    newFormat.append(format.substring(start));
    return String.format(newFormat.toString(), newArgs);
  }
   
  public static String format(String format, Object argBean) throws IllegalFormatException {
    StringBuilder newFormat = new StringBuilder();
   
    int start = 0;
    int loc = format.indexOf("%(");
    Object[] newArgs = new Object[StringUtils.countMatches(format, "%(")];
    int argCount = 0;
    while (loc != -1) {
      loc++;
      newFormat.append(format.substring(start, loc));
      int end = format.indexOf(")", loc);
      String argName = format.substring(loc+1, end);
     
      if ( !PropertyUtils.isReadable(argBean, argName)) {
        throw new MissingFormatArgumentException(argName);
      }
      try {
        Object value = PropertyUtils.getProperty(argBean, argName);
        newArgs[argCount++] = value;
      } catch (InvocationTargetException e) {
        throw new MissingFormatArgumentException("Exception while getting: (InvocationTargetException)" + argName);
      } catch (IllegalAccessException e) {
        throw new MissingFormatArgumentException("Exception while getting: (IllegalAccessException)" + argName);
      } catch (NoSuchMethodException e) {
        throw new MissingFormatArgumentException("Exception while getting: (NoSuchMethodException)" + argName);
      }
      start = end+1;
      loc = format.indexOf("%(", start);
    }
    newFormat.append(format.substring(start));
    return String.format(newFormat.toString(), newArgs);   
  }
 
}
TOP

Related Classes of javango.util.StringFormat

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.