2012-03-01 12 views
1

ユーザーからのXPATH入力を処理できるAPIを設計したいと思います。 は現在、私は ユーザーからxpath入力を受け付けるためのデザインAPI

public interface ICondition { 
    String getConditionString(); 
} 

public class XPathCondition implements ICondition { 

    private Class<? extends XPATHFunction> clazz = null; 

    private Operator operator = null; 

    private String compValue = null; 

    private String param = null; 

    public void setXPathFunction(Class<? extends XPATHFunction> clazz) { 
     this.clazz = clazz; 
    } 

    public void setComparisionType(Operator operator) { 
     this.operator = operator; 
    } 

    public void setComparisionValue(String value) { 
     this.compValue = value; 
    } 

    public void setParam(String param) { 
     this.param = param; 
    } 

    public String getConditionString() { 
     XPATHFunction function = null; 
     try { 
      function = (XPATHFunction) clazz.newInstance(); 
     } catch (Exception e) { 
      throw new RuntimeException(e.getMessage()); 
     } 
     return function.call(param) + operator.getOprValue() + compValue; 
    } 

    public static void main(String[] args) { 
     XPathCondition xpathCond = new XPathCondition(); 
     xpathCond.setXPathFunction(CountFunction.class); 
     xpathCond.setParam("/CPRRegistrationInfo/*"); 
     xpathCond.setComparisionType(Operator.GT); 
     xpathCond.setComparisionValue("0"); 
     System.out.println(xpathCond.getConditionString()); 
    } 
} 


public interface XPATHFunction { 

    public String call(String param); 

} 


public class CountFunction implements XPATHFunction { 

    public String call(String param) { 
     return "count(" + param + ") "; 
    } 

} 

を実装し、インタフェースXPATHFunction及びその方法でそれを実装する必要があり、他のXPath関数がある可能性があり、次のようにXPATH入力をモデル化しています。

APIはXPATHConditionを作成し、適切な関数を設定してgetConditionString()メソッドを呼び出して最終的なxpathを取得するだけです。

もっと良い方法がありますか、XPATH入力をモデル化できますか?

上記のデザインを再考するのを手伝ってください。

+0

で使用する属性名をできるように、私は何を理解していません君はしたい。ユーザーはXPathsを入力しますか? ...そしてこのXPathsでシステムは何をすべきですか? – MiMo

+0

現在、我々は平易な文字列入力としてXPATHを受け入れています。私はいくつかのAPIを使用してxpathを構築したいと思います。エラーの可能性を最小限に抑えるようにしましょう。ユーザーはAPIを使用してxpathを与え、APIの最終出力は完全なxpath文字列です。 –

+0

ありがとう、今私は気難しい – MiMo

答えて

0

あなたのクラス構造にコメントしたり、何か違うものを提案することはできません。それは非常に厳しい問題です。いくつかの簡単な完全なXPath構文のサブセット

  • 代わりのAPIの設計から始まると

    • スタートとクラスが設計を開始:

      私がお勧めしたいことはありますユーザーインターフェイス:何をユーザーに表示しますか?彼/彼女の可能な行動は何ですか?次に、クラス設計はUI設計から導かれるべきです。

    • 可能使用している場合は、基礎となるXMLのスキーマ、あなたが可能な要素の限られた選択肢をユーザに提示し、表現

  • 関連する問題