001    package railo.transformer.cfml.evaluator.impl;
002    
003    import railo.transformer.bytecode.Body;
004    import railo.transformer.bytecode.BodyBase;
005    import railo.transformer.bytecode.literal.LitBoolean;
006    import railo.transformer.bytecode.statement.tag.Attribute;
007    import railo.transformer.bytecode.statement.tag.Tag;
008    import railo.transformer.bytecode.statement.tag.TagOutput;
009    import railo.transformer.bytecode.util.ASMUtil;
010    import railo.transformer.cfml.evaluator.EvaluatorException;
011    import railo.transformer.cfml.evaluator.EvaluatorSupport;
012    import railo.transformer.library.tag.TagLib;
013    import railo.transformer.library.tag.TagLibTag;
014    
015    
016    /**
017     * Prueft den Kontext des Tag Mail.
018    
019     */
020    public final class Mail extends EvaluatorSupport {
021    
022            
023            //�
024            /**
025             * @see railo.transformer.cfml.evaluator.EvaluatorSupport#evaluate(org.w3c.dom.Element, railo.transformer.library.tag.TagLibTag)
026             */
027            public void evaluate(Tag tag,TagLibTag libTag) throws EvaluatorException { 
028                    if(tag.containsAttribute("query")) {
029                        
030                            
031                        TagLib lib = libTag.getTagLib();
032                        TagLibTag outputTag = lib.getTag("output");
033                        
034                        TagOutput output=new TagOutput(tag.getStart(),null);
035                        output.setFullname(outputTag.getFullName());
036                        output.setTagLibTag(outputTag);
037                        output.addAttribute(new Attribute(false,"output",LitBoolean.TRUE,"boolean"));
038                        output.addAttribute(new Attribute(false,"formail",LitBoolean.TRUE,"boolean"));
039                        
040                        Body body=new BodyBase();//output.getBody();
041                        output.setBody(body);
042                        
043                        ASMUtil.replace(tag,output,false);
044                        body.addStatement(tag);
045    
046                        output.addAttribute(tag.removeAttribute("query"));
047                        if(tag.containsAttribute("group"))output.addAttribute(tag.removeAttribute("group"));
048                        if(tag.containsAttribute("groupcasesensitive"))output.addAttribute(tag.removeAttribute("groupcasesensitive"));
049                        if(tag.containsAttribute("startrow"))output.addAttribute(tag.removeAttribute("startrow"));
050                        if(tag.containsAttribute("maxrows"))output.addAttribute(tag.removeAttribute("maxrows"));
051                        
052                        new Output().evaluate(output,outputTag);
053                    }
054            }
055    }
056    
057    
058    
059