001    package railo.runtime.engine;
002    
003    import java.util.Iterator;
004    import java.util.Map;
005    import java.util.Map.Entry;
006    
007    import railo.runtime.PageContext;
008    import railo.runtime.type.Struct;
009    import railo.runtime.type.StructImpl;
010    
011    public class ExecutionLogFactory {
012            
013            private Class clazz;
014            private Map<String, String> arguments;
015            //private ExecutionLog executionLog;
016    
017            public ExecutionLogFactory(Class clazz, Map<String, String> arguments){
018                    this.clazz=clazz;
019                    this.arguments=arguments;
020            } 
021            
022            public ExecutionLog getInstance(PageContext pc){
023                    ExecutionLog el;
024                    try {
025                            el=(ExecutionLog) clazz.newInstance();
026                    } catch (Exception e) {
027                            el= new ConsoleExecutionLog();
028                    }
029                    el.init(pc, arguments);
030                    return el;
031            }
032            
033            public String toString(){
034                    return super.toString()+":"+clazz.getName();
035            }
036            
037            public Class getClazz(){
038                    return clazz;
039            }
040            
041            public Struct getArgumentsAsStruct(){
042                    StructImpl sct=new StructImpl();
043                    if(arguments!=null) {
044                            Iterator<Entry<String, String>> it = arguments.entrySet().iterator();
045                            Entry<String, String> e;
046                            while(it.hasNext()){
047                                    e = it.next();
048                                    sct.setEL(e.getKey(), e.getValue());
049                            }
050                    }
051                    return sct;
052            }
053    }