package cn.dreampie.route.render;
import cn.dreampie.common.Render;
import java.util.HashMap;
import java.util.Map;
/**
* Created by ice on 14-12-29.
*/
public class RenderFactory {
public final static String JSON = "json";
public final static String TEXT = "text";
public final static String FILE = "file";
public final static String IMAGE = "image";
private static String defaultExtension = JSON;
private static Map<String, Render> RENDERMAP_DEFAULT = new HashMap<String, Render>() {{
put(JSON, new JsonRender());
put(TEXT, new TextRender());
put(FILE, new FileRender());
put(IMAGE, new ImageRender());
}};
private static Map<String, Render> renderMap = RENDERMAP_DEFAULT;
public static void add(String extension, Render render) {
if (!(render instanceof FileRender) && !(render instanceof ImageRender)) {
renderMap.put(extension, render);
}
}
public static void addDefault(String extension, Render render) {
if (!(render instanceof FileRender) && !(render instanceof ImageRender)) {
renderMap.put(extension, render);
defaultExtension = extension;
}
}
/**
* 返回新的render对象
*
* @param extension 扩展名
* @return
*/
public static Render get(String extension) {
Render render = renderMap.get(extension);
if (render == null) {
return renderMap.get(defaultExtension);
} else {
return render;
}
}
public static Render getByUrl(String url) {
String extension = "";
if (url.contains(".")) {
extension = url.substring(url.lastIndexOf(".") + 1);
}
return get(extension);
}
public static boolean contains(String extension) {
return renderMap.containsKey(extension);
}
public static Render getDefaultRender() {
return get(defaultExtension);
}
public static Render getJsonRender() {
return renderMap.get(JSON);
}
public static Render getTextRender() {
return renderMap.get(TEXT);
}
public static Render getFileRender() {
return renderMap.get(FILE);
}
public static Render getImageRender() {
return renderMap.get(IMAGE);
}
public static void clear() {
defaultExtension = JSON;
renderMap = RENDERMAP_DEFAULT;
}
}