001 package railo.commons.lang; 002 003 004 public class CharSequenceImpl implements CharSequence { 005 006 private final char[] chars; 007 private final String str; 008 private final String lcStr; 009 010 /** 011 * Constructor of the class 012 * @param chars 013 */ 014 public CharSequenceImpl(char[] chars) { 015 this.str=new String(chars); 016 this.chars=chars; 017 018 char c; 019 for(int i=0;i<chars.length;i++) { 020 c=chars[i]; 021 if(!((c>='a' && c<='z') || (c>='0' && c<='9'))) { 022 lcStr=str.toLowerCase(); 023 return ; 024 } 025 } 026 lcStr=str; 027 } 028 029 /** 030 * Constructor of the class 031 * @param str 032 */ 033 public CharSequenceImpl(String str) { 034 this(str.toCharArray()); 035 } 036 037 /** 038 * @see java.lang.CharSequence#charAt(int) 039 */ 040 public char charAt(int index) { 041 return chars[index]; 042 } 043 044 /** 045 * @see java.lang.CharSequence#length() 046 */ 047 public int length() { 048 return chars.length; 049 } 050 051 /** 052 * @see java.lang.CharSequence#subSequence(int, int) 053 */ 054 public CharSequence subSequence(int start, int end) { 055 char[] dest = new char[end-start]; 056 System.arraycopy(chars, start, dest, 0, end-start); 057 return new CharSequenceImpl(dest); 058 } 059 060 /** 061 * 062 * @see java.lang.Object#toString() 063 */ 064 public String toString() { 065 return str; 066 } 067 068 public String toLowerCaseString() { 069 return lcStr; 070 } 071 }