2017-02-06 1 views
0

ファイルストアにはさまざまなサイズの画像が含まれています。クライアントは要求された次元のイメージを取得するよう要求しなければならない。クライアントは、画像の幅と高さを指定する代わりに、画像の幅と高さを指定する必要はありません。どのデザインパターンが次のシナリオに適していますか?

private static final int DOWNLOAD_MODE = 0; 
private static final int VIEW_MODE = 1; 
private static final int COLUMN_MODE = 2; 
private static final int ROW_MODE = 3; 

private Map<String, Integer> modeHash; 
{ 
    modeHash = new HashMap<String, Integer>(); 
    modeHash.put(“download”, DOWNLOAD_MODE); 
    modeHash.put(“view”, VIEW_MODE); 
    modeHash.put(“column”, COLUMN_MODE); 
    modeHash.put(“row”, ROW_MODE); 
} 

public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 

String author = “”; 
String url = req.getRequestURI(); 
int action_mode = 0; 

String fileid = request.getAttribute(“File_id”); 
String downloadMode = request.getAttribute(“download-mode”); 
action_mode = modeHash.get(downloadMode); 

String userAgent = req.getHeader(“user-agent”); 

try { 

    //Collecting file meta details and setting it in a hash map (hMap) 

    if(hMap != null) { 
     readFileContent(action_mode, hMap, req, res); 
    } else { 
     //Print some error 
    } 
} catch(Exception ex) { 
} 
} 

//And other util methods like 

private HashMap<String, String> getParamsFromURL(int action_mode, HashMap<String, String> hMap,HttpServletRequest req, HttpServletResponse res) { 

    //Populating file meta info to hash map 
} 

private HashMap<String, String> getFileMeta(HashMap<String,String> hMap, String file_information, int action_mode) throws Exception{ 

//Does some file permission check here and populates meta in cache 
} 

private JSONObject getSizeDetails(int mode, String fileid){ 

//Get image dimensions 
} 

private void getReadStream(int action_mode, HashMap <String,String> hmap,HttpServletRequest req, HttpServletResponse res) throws Exception{ 

//File read 
} 

は、コード内あちこちで、ファイルのメタの詳細を収集し、次のようにファイルの内容を読み込むための

サーブレットがあると、それはあまりにも不器用なります。ファイルストリームコンテンツ1が希望

を読ん

  • ファイルのメタの詳細情報を収集スムーズな方法で、次のアクション

    1. ファイルレベルの権限チェック
    2. を処理するコードを整理するためにいくつかのより良い方法を提案しますこの場合のスーツ

      i]天気オブジェクトを作成し、ハッシュの代わりにオブジェクト状態変数を使用するか、またはハッシュマップのファイルメタの詳細を収集するあなたは?

  • +0

    最初はPOJOモデルでやっていると思っていましたが、クライアントがJSON応答を必要としていたため、POJOがうまくいくと思います。ここで、クライアントは元のファイルの内容を必要とします。だから、私はPOJOはここでスイートにはならないと思って、私のファイルに関するすべてのメタの詳細を保持する構造のようなハスプマップを考え出した。ファイルコンテンツのメタ詳細を保持するhashMapではなく、これを整理するより良い方法はありますか? –

    答えて

    0

    あなたの問題は、あなたがきれいにファイルの(メタ)情報収集を論理的に整理したいということですか?
    FilterInputStreamからに及ぶのは、キーと値のペアのリストを含むMetaAwareStreamと、メタデータを表すMap<K,V>を返すゲッターで飾ります。次に、SizedStreamFileMetaStreamPOSIXPermissionStream、その他MetaAwareStreamのキー/値を記入してください。

    関連する問題