001    package railo.transformer.bytecode.literal;
002    
003    import railo.transformer.bytecode.Position;
004    
005    
006    public class Identifier extends LitString {
007    
008            public static short CASE_ORIGNAL=0;
009            public static short CASE_UPPER=1;
010            public static short CASE_LOWER=2;
011            private String raw;
012            private short _case;
013            
014    
015    
016            public static Identifier toIdentifier(String str, Position start,Position end) {
017                    return new Identifier(str, CASE_ORIGNAL,start,end);
018            }
019    
020            public static Identifier toIdentifier(String str, short _case, Position start,Position end) {
021                    return new Identifier(str, _case,start,end);
022            }
023            
024            private Identifier(String str, short _case,Position start,Position end) {
025                    super(convert(str,_case), start,end);
026                    this.raw=str;
027                    this._case=_case;
028            }
029    
030            /**
031             * @return the raw
032             */
033            public String getRaw() {
034                    return raw;
035            }
036    
037            /**
038             * @return the _case
039             */
040            public short getCase() {
041                    return _case;
042            }
043    
044            private static String convert(String str, short _case) {
045                    if(CASE_UPPER==_case) return str.toUpperCase();
046                    if(CASE_LOWER==_case) return str.toLowerCase();
047                    return str;
048            }
049    
050    
051            public String getUpper() {
052                    if(CASE_UPPER==_case)return getString();
053                    return raw.toUpperCase();
054            }
055    
056            public String getLower() {
057                    if(CASE_LOWER==_case)return getString();
058                    return raw.toLowerCase();
059            }
060    
061    }