[Java] unzipでエンコード
unzipしたら文字化けした。
よく見ると、encodeという属性を指定しないといけないようだ。

[Java] JCoverageで悩む
何が悪いのかさっぱりわかりませんが、Eclipseで JCoverageのAnt実行した場合、
Project直下のディレクトリーじゃないと正常に動作しません。(数えてくれません)
jcoverage.serのファイルパスを指定できないのが原因か?
まあいいか。

[Java] org.eclipse.swt.widgets.FileDialogのFileNameFilter互換?
FilterNamesとFilterExtensionの違いは、
ラベルが表示できるか、あるいは、複数設定できるかの違いかな?
基本的に、FilterNamesの方がユーザービリティー的にもいいのでこれだけでいいかな。
とした時に、オリジナル UIが対応できないので作りました。
上級者は、FileDialogのコード読んだ方がいいかも(頓挫しました。)

/*
 * Created on 2004/11/19
 * Author aki@www.xucker.jpn.org
 * License Apache2.0 or Common Public License
 */
package org.jpn.xucker.commons.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 *
 */
public class WildCard {
private String pattern;
public String getPattern() {
    return pattern;
}
public void setPattern(String pattern) {
    this.pattern = pattern;
    javaPattern=toJavaPattern(pattern);
}
private String javaPattern;
public WildCard(String text){
    setPattern(text);
}

public boolean match(String text){
    Pattern pattern = Pattern.compile(javaPattern,Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(text);
    return matcher.matches();
}
public static WildCard[] parseFileFilters(String text){
   
    if(text.indexOf("(")!=-1){
       int first=text.indexOf("(");
       int last=text.indexOf(")",first+1);
       if(last!=-1){
       String substring = text.substring(first+1,last);
       if(substring.length()>0){
    String splits[]=substring.split(",");
       WildCard result[]=new WildCard[splits.length];
       
       for (int i = 0; i < splits.length; i++) {
        result[i]=new WildCard(splits[i]);
       }
       return result;
       }
       }
    }
    return new WildCard[0];
}
public static String toJavaPattern(String pattern){
    String result="^";
    char metachar[]={'$','^','[',']','(',')','+','.','\\'};
    for(int i=0;i<pattern.length();i++){
        char ch=pattern.charAt(i);
        boolean isMeta=false;
        for(int j=0;j<metachar.length;j++){
            if(ch==metachar[j]){
                result+="\\"+ch;
                isMeta=true;
                break;
            }
        }
        if(!isMeta){
            if(ch=='*'){
                result+=".*";
            }else{
                result+=ch;
            }
            
        }
    }
    result+="$";
    return result;
}
}