2012-05-01 9 views
0

これは私の最初の投稿です。最近、私はJSF2.0でprimefaceを使って作業しています。私たちのアプリケーションでPDFをエクスポートするという要件があります。最初にプライムフェイスのデフォルトのdataexporterタグを使用しました。フォーマットは単にひどいものでした。だから、私はそれを使ってPDFを生成しました。私たちのアプリでは最大15個のデータテーブルがあり、すべてにPDFエクスポートが必要です。私はgeneratePDFというメソッドを作りました。これはすべてのテーブルに対してItextを使ってPDFを作成します。これは重複コードと見なすことができますか?

Interface PDFI { 
public void setColNames(); 
public void setColValues(); 
public void setContentHeader(); 

} 
Class DataEx { 
    public void generatePDF(ActionEvent event) { 
     // generate pdf... 
    } 

} 

このDataTableの背後 豆..

Class BeanA implements PDFI { 
    //implemented methods 

    } 

} 
Class BeanB implements PDFI { 
//implemented methods 

} 

と別のDataTable Bの背後にある...私はビュー のDataTable AでのDataTable Aを持って検討し、私は上記のように同じことを行います。 だから、私の質問はここです、これは重複したコードと考えられていますか?またこれを行うための効率的な方法です。 助けていただければ幸いです。 ありがとうina dvance

+0

あなたはBeanAとBeanBの間のすべての変更がクラスの名前であることを意味しますか?次に、それは重複したコードになります。あなたはそのコードで共通のスーパークラスを使用することを検討することができます –

+0

@GuillaumePoletはすばやく返信いただきありがとうございます。私はまた、両方の豆に他のコードを持っている、同じメソッドはsetPdf、setColNames、setCOlVals、SetHeaderContentのようなものです。 – PermGenError

+0

また、私はdatatable自体をエクスポートしていることを言及する必要があります。私はハードコーディングして、そのヘッダーの名前をマップ内のサイズとともにコーディングし、DataExクラスのメソッドに渡します。 – PermGenError

答えて

0

重複したコードを再調整する前に使用した経験則 - ある場所のコードの一部にバグがある場合、もう一方を変更する必要がありますか?あなたはおそらく忘れてしまうでしょう

あなたの場合は、コードブロックが重複しているようです。 generatePDFにrequireパラメータを追加して、すべての作業を1か所で行うようにします。

+0

こんにちは、私は15のテーブルを持っていると述べています。一部のテーブルではpdfヘッダーイメージが変更されます。また、Bean内のマップで列名をハードコーディングしています。 – PermGenError

+0

私があなたの状況を理解している小さなものから考えることができる2つのすばらしいソリューション - PDFCreatorHelperインターフェイスをいくつか作成し、すべてのデータベースが実装するsetPdf、setColNames、setCOlVals、SetHeaderContentメソッドをすべて含み、pdfに渡しますジェネレータ。または各データベースが実装する抽象メソッドを使用するgeneratePDFメソッドを使用して、すべてのデータベースのスーパークラスを作成します。おそらく、私たちが助けるコードをいくつか追加する必要があります。 – shem

+0

私はあなたが言ったように質問のコードを編集しました。だから、私はまだ重複したコードを書いている – PermGenError

関連する問題