001    package railo.runtime.component;
002    
003    import railo.commons.lang.StringUtil;
004    
005    public class ImportDefintionImpl implements ImportDefintion {
006    
007            private String pack;
008            private String name;
009            private boolean wildcard;
010            private String packAsPath;
011    
012            public ImportDefintionImpl(String pack, String name) {
013                    this.pack=pack;
014                    this.name=name;
015                    this.wildcard=name.equals("*");
016                    
017            }
018    
019            public static ImportDefintion getInstance(String fullname,ImportDefintion defaultValue) {
020                    int index=fullname.lastIndexOf('.');
021                    if(index==-1) return defaultValue;
022                    String p=fullname.substring(0,index).trim();
023                    String n=fullname.substring(index+1,fullname.length()).trim();
024                    if(StringUtil.isEmpty(p) || StringUtil.isEmpty(n))
025                            return defaultValue;
026                    
027                    return new ImportDefintionImpl(p,n);
028            }
029    
030            /**
031             * @return the wildcard
032             */
033            public boolean isWildcard() {
034                    return wildcard;
035            }
036    
037            /**
038             * @return the pack
039             */
040            public String getPackage() {
041                    return pack;
042            }
043    
044            /**
045             * @return the name
046             */
047            public String getName() {
048                    return name;
049            }
050    
051            public String getPackageAsPath() {
052                    if(packAsPath==null) {
053                            packAsPath=pack.replace('.','/')+"/";
054                    }
055                    return packAsPath;
056            }
057            
058            public String toString(){
059                    return pack+"."+name;
060            }
061            
062    }