| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -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<String, byte[]> loadingCache;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static IFileLoader fileLoder;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static ThreadLocal<IFileLoader> LOCAL_FILELOADER = new ThreadLocal<IFileLoader>();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    static {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        loadingCache = CacheBuilder.newBuilder().expireAfterWrite(7, TimeUnit.DAYS).maximumSize(50)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            .build(new CacheLoader<String, byte[]>() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                @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<String, byte[]> loadingCache) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        POICacheManager.loadingCache = loadingCache;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 |