TableNaming.java :  » Database-ORM » ebean » com » avaje » util » codegen » Java Open Source

Java Open Source » Database ORM » ebean 
ebean » com » avaje » util » codegen » TableNaming.java
package com.avaje.util.codegen;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import com.avaje.ebean.server.plugin.Plugin;
import com.avaje.ebean.server.plugin.PluginProperties;
import com.avaje.lib.util.StringHelper;

public class TableNaming {

  String defaultPackage;
  
    String trimPrefix;

    /**
     * Array of Trimmable prefixes. The trimPrefix can be a comma delimited
     * list.
     */
    String[] prefixTrimArray = null;

    String defaultBeanPrefix;

    String defaultBeanSuffix;

    boolean upperCaseFirstLetter = true;

    HashMap aliasMap = new HashMap();
    
    Plugin plugin;
    
    HashMap tableNameMap = new HashMap();
    
    public TableNaming(Plugin plugin) {
      this.plugin = plugin;
      PluginProperties props = plugin.getProperties();
      
        defaultBeanPrefix = props.getProperty("codegen.beanprefix", null);
        defaultBeanSuffix = props.getProperty("codegen.beansuffix", null);
        trimPrefix = props.getProperty("codegen.tabletrimprefix", null);
        defaultPackage = props.getProperty("codegen.javapackage", null);

        
        String nameMap = props.getProperty("codegen.table.namemap", null);
        if (nameMap != null){
          // load a map of Table name to Bean class names
          Map map = StringHelper.delimitedToMap(nameMap, ",", "=");
          Iterator it = map.entrySet().iterator();
          while (it.hasNext()) {
        Map.Entry entry = (Map.Entry) it.next();
        String tableName = (String)entry.getKey();
        String beanClassName = (String)entry.getValue();
        tableNameMap.put(tableName.toLowerCase(), beanClassName);
      }
        }

    }

    public void addAlias(String from, String to){
        aliasMap.put(from.toLowerCase(), to);
    }
    
    public void setDefaultBeanPrefix(String defaultBeanPrefix) {
        this.defaultBeanPrefix = defaultBeanPrefix;
    }

    public void setDefaultBeanSuffix(String defaultBeanSuffix) {
        this.defaultBeanSuffix = defaultBeanSuffix;
    }



    public void setTrimPrefix(String trimPrefix) {
        this.trimPrefix = trimPrefix;
    }

    public String toPackage(String dbTableName) {
      return defaultPackage;
    }
    
    public String toBeanClassName(String dbTableName) {

      String javaBeanName = (String)tableNameMap.get(dbTableName.toLowerCase());
      if (javaBeanName != null){
        return javaBeanName;
      }

        javaBeanName = trimFirst(dbTableName);
        javaBeanName = convertUnderscore(javaBeanName);

        if (upperCaseFirstLetter) {
            char firstLetter = Character.toUpperCase(javaBeanName.charAt(0));
            javaBeanName = firstLetter + javaBeanName.substring(1);
        }
        StringBuffer sb = new StringBuffer();
        if (defaultBeanPrefix != null) {
            sb.append(defaultBeanPrefix);
        }
        sb.append(javaBeanName);
        if (defaultBeanSuffix != null) {
            sb.append(defaultBeanSuffix);
        }

        javaBeanName = sb.toString();
        // make sure the bean name starts with a capital letter
        char firstLetter = Character.toUpperCase(javaBeanName.charAt(0));
        javaBeanName = firstLetter + javaBeanName.substring(1);

//        if (javaPackage != null) {
//            javaBeanName = javaPackage + "." + javaBeanName;
//        }

        return javaBeanName;
    }

    public String convertUnderscore(String source) {

        String upperCased = source.toUpperCase();
        boolean forceLower = upperCased.equals(source);

        StringBuffer result = new StringBuffer();
        String[] vals = source.split("_");

        if (aliasMap.size()>0){
            // convert using from to alias
            // example prodoption to productOption
            for (int y=0; y<vals.length; y++) {
                String to = (String)aliasMap.get(vals[y].toLowerCase());
                if (to != null){
                    vals[y] = to;
                }
            }
        }
        
        for (int i = 0; i < vals.length; i++) {
            String section = vals[i];
            if (forceLower) {
                section = section.toLowerCase();
            }
            if (i > 0) {

                char c = Character.toUpperCase(section.charAt(0));
                result.append(c);
                result.append(section.substring(1));
            } else {
                result.append(section);
            }
        }

        return result.toString();

    }



    protected String trimFirst(String beanName) {
        if (trimPrefix == null) {
            return beanName;
        }
        if (prefixTrimArray == null) {
          prefixTrimArray = trimPrefix.split("[,;]");
        }
        // search and trim table prefix
        for (int i = 0; i < prefixTrimArray.length; i++) {
            if (0 == beanName.indexOf(prefixTrimArray[i])) {
                int newStart = prefixTrimArray[i].length();
                return beanName.substring(newStart);
            }
        }
        return beanName;
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.