FileDocCategorySizeDatePackage
DefaultNameConstraints.javaAPI DocExample4485Tue Dec 08 01:21:00 GMT 1998oisoft.togetherx.scripts.SQL.impl

DefaultNameConstraints.java

// Generated by Together

package oisoft.togetherx.scripts.SQL.impl;

public class DefaultNameConstraints implements SQLNameConstraints {
  public DefaultNameConstraints(int nameLength, boolean caseSensitive, String[] reservedWords){
    myNameLength = nameLength;
    myCaseSensitive = caseSensitive;
    myReservedWords = reservedWords;
  }

  public DefaultNameConstraints(){
    this(18,false,defaultReservedWords);
  }

  public int getMaxTableNameLength(){
    return myNameLength;
  }
  public int getMaxColumnNameLength(){
    return myNameLength;
  }
  public int getMaxConstraintNameLength(){
    return myNameLength;
  }
  public boolean isReservedWord(String word){
    for(int i=0; i<myReservedWords.length; ++i ){
      if(myReservedWords[i].equalsIgnoreCase(word)){
        return true;
      }
    }
    return false;
  }
  public boolean isCaseSensitiveNames(){
    return myCaseSensitive;
  }
  public String shorten(String name, int length){
    int originalLength = name.length();
    if(originalLength <= length){
      return name;
    }
    int vowelCount = 0;
    for(int i=0; i<name.length(); ++i){
      if(isVowel(name.charAt(i))){
        ++vowelCount;
      }
    }
    int needRemoveNotVowels = originalLength-vowelCount-length;
    int removedNotVowels = 0;
    int removedVowels = 0;
    StringBuffer result = new StringBuffer();
    for(int i=name.length()-1; i>=0; --i ){
      if( isDigit(name.charAt(i)) ){
        result.append(name.charAt(i));
      }
      else if(needRemoveNotVowels > removedNotVowels){
        if(isVowel(name.charAt(i))){
          ++removedVowels;
        }
        else{
          ++removedNotVowels;
        }
      }
      else if(originalLength-removedNotVowels-removedVowels > length && isVowel(name.charAt(i))){
        ++removedVowels;
      }
      else{
        result.append(name.charAt(i));
      }
    }
    return result.reverse().toString();
  }

  private static boolean isVowel(char ch){
    for( int i=0; i<vowels.length; ++i ){
      if(ch == vowels[i]){
        return true;
      }
    }
    return false;
  }

  private static boolean isDigit(char ch){
    return Character.isDigit(ch);
  }

  private int myNameLength;
  private boolean myCaseSensitive;
  private String[] myReservedWords;

  private static final char[] vowels =
      { 'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'Y', 'y' };

  private static final String[] defaultReservedWords =
    {
      //"ACCESS",
      //"ADD",
      "ALL",
      //"ALTER",
      "AND",
      "ANY",
      "AS",
      "ASC",
      //"AUDIT",
      "BETWEEN",
      "BY",
      "CHAR",
      "CHECK",
      //"CLUSTER",
      //"COLUMN",
      //"COMMENT",
      //"COMPRESS",
      //"CONNECT",
      "CREATE",
      "CURRENT",
      //"DATE",
      //"DECIMAL",
      "DEFAULT",
      "DELETE",
      "DESC",
      "DISTINCT",
      //"DROP",
      //"ELSE",
      //"EXCLUSIVE",
      "EXISTS",
      //"FILE",
      "FLOAT",
      "FOR",
      "FROM",
      "GRANT",
      "GROUP",
      "HAVING",
      //"IDENTIFIED",
      //"IMMEDIATE",
      "IN",
      //"INCREMENT",
      //"INDEX",
      //"INITIAL",
      "INSERT",
      "INTEGER",
      //"INTERSECT",
      "INTO",
      "IS",
      //"LEVEL",
      "LIKE",
      //"LOCK",
      //"LONG",
      //"MAXEXTENTS",
      //"MINUS",
      //"MODE",
      //"MODIFY",
      //"NOAUDIT",
      //"NOCOMPRESS",
      "NOT",
      //"NOWAIT",
      "NULL",
      //"NUMBER",
      "OF",
      //"OFFLINE",
      "ON",
      //"ONLINE",
      "OPTION",
      "OR",
      "ORDER",
      //"PCTFREE",
      //"PRIOR",
      "PRIVILEGES",
      "PUBLIC",
      //"RAW",
      //"RENAME",
      //"RESOURCE",
      //"REVOKE",
      //"ROW",
      //"ROWID",
      //"ROWLABEL",
      //"ROWNUM",
      //"ROWS",
      "SELECT",
      //"SESSION",
      "SET",
      //"SHARE",
      //"SIZE",
      "SMALLINT",
      //"START",
      //"SUCCESSFUL",
      //"SYNONYM",
      //"SYSDATE",
      "TABLE",
      //"THEN",
      "TO",
      //"TRIGGER",
      //"UID",
      "UNION",
      "UNIQUE",
      "UPDATE",
      "USER",
      //"VALIDATE",
      "VALUES",
      //"VARCHAR",
      //"VARCHAR2",
      "VIEW",
      //"WHENEVER",
      "WHERE",
      "WITH"
    };
}