<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附帶了一個插件機制,可以實現很好的地址,下面是我的一個簡單實現:
    1、業務接口:
    public interface Transform {
        
    public String transform(String s);
    }

    2、業務接口的實現類:
    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、插件創建規則:
    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);
            }

        }


        
    /** 處理結束 */
        
    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");
            
            
    // 目標文件
            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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 91免费在线播放| 免费一级毛片在级播放| 精品久久亚洲中文无码| 全部免费毛片免费播放| 97无码人妻福利免费公开在线视频 | 91精品国产免费久久国语蜜臀| 亚洲剧情在线观看| 亚洲成a人一区二区三区| 午夜无码A级毛片免费视频| 一个人看的www在线观看免费 | 91香蕉国产线在线观看免费| 亚洲国产成人综合精品| 亚洲av无码不卡一区二区三区| 最近的免费中文字幕视频 | 午夜亚洲国产成人不卡在线| 91精品手机国产免费| 无码日韩人妻AV一区免费l| 亚洲精品国产专区91在线| 亚洲欧洲日本在线| 成人片黄网站A毛片免费| 中文字幕免费不卡二区| 美国毛片亚洲社区在线观看| 亚洲美女视频网站| 国产成人精品日本亚洲专区61| 岛国大片免费在线观看| 久久aa毛片免费播放嗯啊| 日本视频免费观看| 超清首页国产亚洲丝袜| 97超高清在线观看免费视频| 久久久亚洲精华液精华液精华液| 亚洲一级二级三级不卡| 亚洲人成网站在线播放vr| 免费一看一级毛片人| 最近中文字幕免费mv视频8| 99精品免费观看| 三级毛片在线免费观看| 色哟哟国产精品免费观看| 亚洲AV成人精品日韩一区| 亚洲乱码在线卡一卡二卡新区| 亚洲精品线在线观看| 人人狠狠综合久久亚洲婷婷|