// 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"
};
}
|