From 26baf050d734c0db88db127f9d09e3aaaabf9079 Mon Sep 17 00:00:00 2001 From: jueyue Date: Sat, 17 Oct 2015 19:49:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86font=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 开放了缓存,大家可以自定义缓存 --- .../{FileLoade.java => FileLoadeImpl.java} | 4 +-- .../poi/cache/manager/POICacheManager.java | 32 ++++++++++++++++--- .../poi/excel/html/helper/StylerHelper.java | 6 ++-- 3 files changed, 33 insertions(+), 9 deletions(-) rename easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/{FileLoade.java => FileLoadeImpl.java} (94%) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java similarity index 94% rename from easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java rename to easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java index c240c68..cdacdcd 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoade.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/FileLoadeImpl.java @@ -30,9 +30,9 @@ import org.slf4j.LoggerFactory; * @date 2014年2月10日 * @version 1.0 */ -class FileLoade { +public class FileLoadeImpl implements IFileLoader { - private static final Logger LOGGER = LoggerFactory.getLogger(FileLoade.class); + private static final Logger LOGGER = LoggerFactory.getLogger(FileLoadeImpl.class); public byte[] getFile(String url) { FileInputStream fileis = null; diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java index a970751..cc44e11 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/cache/manager/POICacheManager.java @@ -37,19 +37,26 @@ import com.google.common.cache.LoadingCache; */ public final class POICacheManager { - private static final Logger LOGGER = LoggerFactory - .getLogger(POICacheManager.class); + private static final Logger LOGGER = LoggerFactory.getLogger(POICacheManager.class); private static LoadingCache loadingCache; + private static IFileLoader fileLoder; + + private static ThreadLocal LOCAL_FILELOADER = new ThreadLocal(); + static { loadingCache = CacheBuilder.newBuilder().expireAfterWrite(7, TimeUnit.DAYS).maximumSize(50) .build(new CacheLoader() { @Override public byte[] load(String url) throws Exception { - return new FileLoade().getFile(url); + if (LOCAL_FILELOADER.get() != null) + return LOCAL_FILELOADER.get().getFile(url); + return fileLoder.getFile(url); } }); + //设置默认实现 + fileLoder = new FileLoadeImpl(); } public static InputStream getFile(String id) { @@ -58,9 +65,26 @@ public final class POICacheManager { byte[] result = Arrays.copyOf(loadingCache.get(id), loadingCache.get(id).length); return new ByteArrayInputStream(result); } catch (ExecutionException e) { - LOGGER.error(e.getMessage(),e); + LOGGER.error(e.getMessage(), e); } return null; } + public static void setFileLoder(IFileLoader fileLoder) { + POICacheManager.fileLoder = fileLoder; + } + + /** + * 一次线程有效 + * @param fileLoder + */ + public static void setFileLoderOnce(IFileLoader fileLoder) { + if (fileLoder != null) + LOCAL_FILELOADER.set(fileLoder); + } + + public static void setLoadingCache(LoadingCache loadingCache) { + POICacheManager.loadingCache = loadingCache; + } + } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java index d52d6b5..e0ecec4 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java @@ -88,12 +88,12 @@ public class StylerHelper { private void printInlineStyle(Workbook wb) { out.format("%n"); } - private void prontFonts(Workbook wb) { - for (short i = 0, le = wb.getNumberOfFonts(); i <= le; i++) { + private void printFonts(Workbook wb) { + for (short i = 0, le = wb.getNumberOfFonts(); i < le; i++) { Font font = wb.getFontAt(i); out.format(".%s .%s {%n", DEFAULTS_CLASS, "font_" + i + "_" + cssRandom); fontStyle(font);