2017-02-06 4 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. уровне файлов
  2. сбора файлы мета деталь
  3. чтения содержимого файл поток

Какой бы костюм в этом случае

i] Создание атмосферы объекта и использование переменных состояния объекта вместо хеша или сбор метаданных файла в hashMap a be один?

+0

Первоначально думал о том, чтобы делать это с моделью POJO, но я думаю, что POJO хорошо подойдет для случая, когда клиенту нужен ответ JSON. Здесь клиенту требуется исходное содержимое файла. Итак, я думал, что POJO не будет укомплектовываться здесь и придумал карту hasp, такую ​​как структура, чтобы содержать все мета-данные о моем файле. Есть ли лучший способ организовать это вместо hashMap, содержащего метаданные содержимого файла? –

ответ

0

Итак, ваша проблема в том, что вы хотите чисто, логично организовать (мета) сбор информации о файле, не так ли?
Как насчет Decorator, простирающегося от FilterInputStream, украсить его MetaAwareStream, который содержит список пар ключ-значение и геттер, который возвращает Map<K,V>, представляющий метаданные. Затем украсьте это с помощью SizedStream, FileMetaStream, POSIXPermissionStream и всех остальных, которые заполняют ключ/значения MetaAwareStream.

Смежные вопросы