<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    COMMON DIGESTER之我的PLUGIN

    Common Digester附帶了一個插件機(jī)制,可以實(shí)現(xiàn)很好的地址,下面是我的一個簡單實(shí)現(xiàn):
    1、業(yè)務(wù)接口:
    public interface Transform {
        
    public String transform(String s);
    }

    2、業(yè)務(wù)接口的實(shí)現(xiàn)類:
    public class CaseTransformer implements Transform {
        
    private boolean upper;

        
    public void setCase(String s) {
            upper 
    = "upper".equalsIgnoreCase(s.trim());
        }


        
    public String transform(String s) {
            
    if (s == null{
                
    return "";
            }

            
    return upper ? s.toUpperCase() : s.toLowerCase();
        }


    }


    3、插件創(chuàng)建規(guī)則:
    package mydigest;

    import org.xml.sax.Attributes;

    public class MyPluginCreateRule extends MyRule {
        
    private Class<?> baseClass;
        
    public static final String DEFT_PLUGIN_CLASS_ATTR = "plugin-class";

        
    public MyPluginCreateRule(Class<?> clazz) {
            baseClass 
    = clazz;
        }


        
    /** 開始處理 */
        
    public void begin(String namespace, String name, Attributes attributes) throws Exception {
            String value 
    = attributes.getValue(DEFT_PLUGIN_CLASS_ATTR);
            Class
    <?> clazz = dig.getClassLoader().loadClass(value);
            Object instance 
    = clazz.newInstance();
            
    if (baseClass.isAssignableFrom(clazz)) {
                dig.push(instance);
            }

        }


        
    /** 處理結(jié)束 */
        
    public void end(String namespace, String name) throws Exception {
            dig.pop();
        }


    }


    4、配置文件upperconfig.xml:

    <piple>
        
    <src file="input.txt"/>
        
    <transform plugin-class="mydigest.CaseTransformer" case="upper"/>
        
    <dest file="output.txt"/>
    </piple>

    5、測試:
    package mydigest;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;

    public class Piple {
        
    private String src;
        
    private Transform transformer;
        
    private String dest;

        
    public static void main(String[] args) {
            String file 
    = "upperconfig.xml";
            MyDigester dig 
    = new MyDigester();
            dig.addObjectCreate(
    "piple", Piple.class);
            
    // 源文件
            dig.addCallMethod("piple/src""setSrc"1);
            dig.addCallParam(
    "piple/src"0"file");
            
    // 添加插件
            MyPluginCreateRule pcr = new MyPluginCreateRule(Transform.class);
            dig.addRule(
    "piple/transform", pcr);
            dig.addSetProperties(
    "piple/transform");
            dig.addSetNext(
    "piple/transform""setTransform");
            
            
    // 目標(biāo)文件
            dig.addCallMethod("piple/dest""setDest"1);
            dig.addCallParam(
    "piple/dest"0"file");
            
    try {
                Piple piple 
    = (Piple) dig.parse(new File(file));
                piple.exec();
            }
     catch (Exception e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }


        
    public void setSrc(String src) {
            
    this.src = src;
        }


        
    public void setTransform(Transform transformer) {
            
    this.transformer = transformer;
        }


        
    public void setDest(String dest) {
            
    this.dest = dest;
        }


        
    public void exec() throws IOException {
            BufferedReader reader 
    = new BufferedReader(new FileReader(src));
            FileWriter writer 
    = new FileWriter(new File(dest));
            String line 
    = reader.readLine();
            
    while (line != null{
                writer.write(
    this.transformer.transform(line) + '\n');
                line 
    = reader.readLine();
            }

            writer.close();
            reader.close();
            System.out.println(
    "exec done!");
        }

    }


    inut.txt文件:
    Copyright
    Copyright  
    2004 O'Reilly Media, Inc.

    Printed in the United States of America.

    Published by O'Reilly MediaInc.
    , 1005 Gravenstein Highway North, Sebastopol, CA 95472.

    得到的output.xml文件:
    COPYRIGHT
    COPYRIGHT  
    2004 O'REILLY MEDIA, INC.

    PRINTED IN THE UNITED STATES OF AMERICA.

    PUBLISHED BY O'REILLY MEDIAINC.
    , 1005 GRAVENSTEIN HIGHWAY NORTH, SEBASTOPOL, CA 95472.

    posted on 2009-05-02 15:51 俊星 閱讀(197) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲黄色激情视频| 日韩在线视频免费看| 免费精品久久久久久中文字幕| 色噜噜综合亚洲av中文无码| 亚洲国产精品国产自在在线| 成年性午夜免费视频网站不卡| 未满十八18禁止免费无码网站| 日韩大片在线永久免费观看网站 | 免费看一级高潮毛片| 精品久久亚洲中文无码| 亚洲人成依人成综合网| 久久亚洲精品中文字幕三区| 亚洲AV无码乱码在线观看牲色| 在线观看免费成人| 性做久久久久久免费观看| 亚洲一级毛片免费在线观看| 久久久精品免费视频| 久久免费国产精品一区二区| 黄色视屏在线免费播放| 人碰人碰人成人免费视频| 美女黄频视频大全免费的| 亚洲国产精品无码中文lv| 亚洲色偷偷综合亚洲av78| 亚洲男人天堂2022| 亚洲 日韩经典 中文字幕 | 2019中文字幕免费电影在线播放| 免费在线观影网站| 国产免费MV大全视频网站| 亚洲第一视频在线观看免费| 国产成人无码免费看片软件| 一个人免费播放在线视频看片| 一级毛片a女人刺激视频免费| 乱爱性全过程免费视频| 久久一区二区三区免费| 久久WWW免费人成—看片| 91国内免费在线视频| 久久精品免费电影| 久久久久成人片免费观看蜜芽| 美丽姑娘免费观看在线观看中文版 | eeuss免费天堂影院| 国产区在线免费观看|