⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
			{
				Map<String,Map<String,String>> fields_required=new TreeMap<String,Map<String,String>>();
				Map<String,Map<String,String>> fields_optional=new TreeMap<String,Map<String,String>>();
				for(Map<String,String> field:dataList){
					if("1".equals(field.get("selective"))){
						String[] choices=field.get("choices").split("(\r\n|\r|\n)");
						StringBuffer temp=new StringBuffer();
						for(String choice:choices){
							choice=choice.trim();
							String[] options=choice.split("=");
							if(options.length==2){
								temp.append(","+options[1]);
							}
						}
						field.put("choices", temp.length()>0?temp.substring(1):"");
					}else{
						field.remove("choices");
					}
					if("1".equals(field.get("required"))){
						fields_required.put("field_"+field.get("fieldid"), field);
					}else{
						fields_optional.put("field_"+field.get("fieldid"), field);
					}
				}
				datas.put("fields_required", dataParse.combinationChar(fields_required));
				datas.put("fields_optional", dataParse.combinationChar(fields_optional));
			}
			writeToCacheFile(cachename, arrayeval(cname, datas), prefix, append);
		}
		datas=null;
		dataList=null;
	}

	private String arrayeval(String cachename, Map<String, String> map) {
		StringBuffer mapName = new StringBuffer("_DCACHE_");
		mapName.append(cachename);
		StringBuffer curdata = new StringBuffer();
		curdata.append("<%\n");
		curdata.append("Map<String,String> " + mapName+ "= new HashMap<String,String>();\n");
		if (map != null) {
			Set<String> keys = map.keySet();
			for (String key : keys) {
				String value = map.get(key);
				if(value!=null)
				{
					value = Common.addslashes(value);
					value = value.replaceAll("\r\n", "\\\\n");
				}
				curdata.append(mapName + ".put(\"" + key + "\",\"" + value+ "\");\n");
			}
		}
		curdata.append("request.setAttribute(\"" + cachename + "\"," + mapName+ ");\n");
		curdata.append("%>\n");
		return curdata.toString();
	}

	private boolean writeToCssCache(Map<String, String> datas) throws Exception {
		String[] csstemplates = { "css", "css_append" };
		String styleid = datas.get("STYLEID");
		String cachedir = path + "./forumdata/cache/";
		for (String templateName : csstemplates) {
			File file = new File(path + datas.get("TPLDIR")+"/"+ templateName + ".jsp");
			if(!file.exists())
			{
				file = new File(path + "./templates/default/"+ templateName + ".jsp");
			}
			if (file.exists()) {
				StringBuffer cssdata = new StringBuffer();
				FileReader fr = new FileReader(file);
				BufferedReader br = new BufferedReader(fr);
				while (br.ready()) {
					cssdata.append(br.readLine() + "\n");
				}
				br.close();
				fr.close();
				Set<String> keys = datas.keySet();
				String content = cssdata.toString();
				for (String key : keys) {
					content = content.replaceAll("\\{" + key + "\\}", datas.get(key));
				}
				content = content.replaceAll("<\\?.+?\\?>\\s*", "");
				String imgdir = datas.get("IMGDIR");
				content = !Common.matches(imgdir, "^http:\\/\\/") ? content.replace("url(\"" + imgdir, "url(\"../../" + imgdir) : content;
				content = !Common.matches(imgdir, "^http:\\/\\/") ? content.replace("url(" + imgdir, "url(../../" + imgdir) : content;
				String extra = "";
				if (templateName.length() > 3) {
					extra = templateName.substring(3);
				}
				FileOutputStream fos=new FileOutputStream(cachedir + "style_" + styleid+ extra + ".css");
				OutputStreamWriter os=new OutputStreamWriter(fos,JspRunConfig.charset);
				BufferedWriter bw = new BufferedWriter(os);
				bw.write(content);
				bw.flush();
				os.flush();
				fos.flush();
				bw.close();
				os.close();
				fos.close();
			} else {
				throw new Exception("Can not find the csstemplates files, please check directory "+datas.get("TPLDIR")+"/css.jsp and "+datas.get("TPLDIR")+"/css_append.jsp  ");
			}
			file=null;
		}
		return true;
	}

	@SuppressWarnings("deprecation")
	private boolean writeToCacheFile(String script, String cachedata,String prefix, boolean append) throws Exception {
		StringBuffer dir = new StringBuffer();
		dir.append(path);
		dir.append("./forumdata/cache/");
		File dirFile = new File(dir.toString());
		if (!dirFile.isDirectory()) {
			if (!dirFile.mkdir()) {
				throw new Exception("Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .");
			}
		}
		try {
			FileOutputStream fos=new FileOutputStream(dir + prefix + script + ".jsp",append);
			OutputStreamWriter os=new OutputStreamWriter(fos,JspRunConfig.charset);
			BufferedWriter bw = new BufferedWriter(os);
			if (!append) {
				bw.write("<%--\n");
				bw.write("JspRun! cache file, DO NOT modify me!\n");
				bw.write("Created: " + new Date().toGMTString() + "\n");
				bw.write("Identify: "+ Md5Token.getInstance().getLongToken(prefix + prefix + cachedata) + "\n");
				bw.write("--%>\n");
				bw.write("<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\""+JspRunConfig.charset+"\"%>\n");
			}
			bw.write(cachedata);
			bw.flush();
			os.flush();
			fos.flush();
			bw.close();
			os.close();
			fos.close();
			bw=null;
		} catch (IOException e) {
			throw new Exception("Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .");
		}
		dir=null;
		return true;
	}
	private boolean writeToJsCacheFile(String script, String cachedata,	String postfix) throws Exception {
		StringBuffer dir = new StringBuffer();
		dir.append(path);
		dir.append("./forumdata/cache/");
		File dirFile = new File(dir.toString());
		if (!dirFile.isDirectory()) {
			if (!dirFile.mkdir()) {
				throw new Exception("Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .");
			}
		}
		try {
			FileOutputStream fos=new FileOutputStream(dir +  script + postfix + ".js");
			OutputStreamWriter os=new OutputStreamWriter(fos,JspRunConfig.charset);
			BufferedWriter bw = new BufferedWriter(os);
			bw.write(cachedata);
			bw.flush();
			os.flush();
			fos.flush();
			bw.close();
			os.close();
			fos.close();
		} catch (IOException e) {
			throw new Exception("Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .");
		}
		dir=null;
		return true;
	}
	private String setcssbackground(Map<String, String> datas, String code) {
		String content=datas.get(code);
		if(content!=null){
			String[] codes = datas.get(code).split(" ");
			StringBuffer css =new StringBuffer("background: ");
			StringBuffer codevalue =new StringBuffer();
			int length=codes.length;
			for (int i = 0; i < length; i++) {
				if (!codes[i].equals("")) {
					if (codes[i].charAt(0) == '#') {
						css.append(codes[i].toUpperCase() + " ");
						codevalue.append(codes[i].toUpperCase());
					} else if (Common.matches(codes[i], "^http:\\/\\/")) {
						css.append("url(\"" + codes[i] + "\") ");
					} else {
						css.append("url(\"" + datas.get("IMGDIR") + "/" + codes[i]+ "\") ");
					}
				}
			}
			datas.put(code, codevalue.toString());
			return css.toString().trim();
		}else{
			return "";
		}
	}
	public static void main(String[] arg) {
		Cache cache = new Cache("c:\\");
		try {
			cache.updatecache();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	@SuppressWarnings({ "unchecked", "static-access" })
	private Map advertisement(String range)
	{
		Map advs=new HashMap();
		int timestamp = Common.time();
		List<Map<String,String>> advertisements=dataBaseDao.executeQuery("SELECT advid,type,targets,parameters,code FROM "+tablepre+"advertisements WHERE available>'0' AND starttime<='"+timestamp+"' and (endtime ='0' or endtime >='"+timestamp+"') ORDER BY displayorder");
		if(advertisements!=null&&advertisements.size()>0)
		{
			Map<String,String> itemsMap=new HashMap<String, String>();
			Map<String,Map<String,String>> typesMap=new HashMap<String, Map<String,String>>();
			for (Map<String, String> adv : advertisements) {
				String type=adv.get("type");
				String advid=adv.get("advid");
				String code=adv.get("code").replaceAll("\r\n", " ");
				code=code.replace("\\", "\\\\");
				Map<String,String> parameters=new HashMap<String,String>();
				if("footerbanner".equals(type)||"thread".equals(type))
				{
					parameters=dataParse.characterParse(adv.get("parameters"), false);
					type+=(parameters.get("position")!=null&&parameters.get("position").matches("^(2|3)$")?parameters.get("position"):"1");
				}
				adv.put("targets", (adv.get("targets").equals("")||adv.get("targets").equals("all"))?(type.equals("text")?"forum":(type.length()>6&&type.substring(0,6).equals("thread")?"forum":"all")):adv.get("targets"));
				String[] targets=adv.get("targets").split("\t");
				if(targets!=null&&targets.length>0)
				{
					for (String target : targets) {
						target=("0".equals(target)?"index":("all".equals(target)||"index".equals(target)||"forumdisplay".equals(target)||"viewthread".equals(target)||"register".equals(target)||"redirect".equals(target)||"archiver".equals(target)?target:("forum".equals(target)?"forum_all":"forum_"+target)));
						if((("forumdisplay".equals(range)&&!("thread".equals(adv.get("type"))||"interthread".equals(adv.get("type"))))||"viewthread".equals(range))&&(target.length()>6&&target.substring(0,6).equals("forum_")))
						{
							if("thread".equals(adv.get("type")))
							{
								String displayorder=parameters.get("displayorder");
								String []displayorders=displayorder!=null&&!displayorder.trim().equals("")?displayorder.split("\t"):new String[]{"0"};
								for (String postcount : displayorders) {
									postcount=postcount.trim();
									Map<String,String> targetMap=typesMap.get(type+"_"+postcount);
									if(targetMap==null)
									{
										targetMap=new HashMap<String, String>();
									}
									targetMap.put(target, targetMap.get(target)!=null?targetMap.get(target)+","+advid:advid);
									typesMap.put(type+"_"+postcount, targetMap);
								}
							}
							else{
								Map<String,String> targetMap=typesMap.get(type);
								if(targetMap==null)
								{
									targetMap=new HashMap<String, String>();
								}
								targetMap.put(target, targetMap.get(target)!=null?targetMap.get(target)+","+advid:advid);
								typesMap.put(type, targetMap);
							}
							itemsMap.put(advid, code);
						}
						else if("all".equals(range)&&("all".equals(target)||"redirect".equals(target)))
						{
							Map targetMap=(Map)advs.get(target);
							if(targetMap==null)
							{
								targetMap=new HashMap();
							}
							Map<String,Map<String,String>> typeMap=(Map<String,Map<String,String>>)targetMap.get("type");
							Map<String,String> itemMap=(Map<String,String>)targetMap.get("items");
							if(typeMap==null)
							{
								typeMap= new HashMap<String,Map<String,String>>();
								itemMap= new HashMap<String,String>();
							}
							Map<String,String> typeitems=typeMap.get(type);
							if(typeitems==null)
							{
								typeitems=new HashMap<String, String>();
							}
							typeitems.put("all", typeitems.get("all")!=null?typeitems.get("all")+","+advid:advid);
							typeMap.put(type, typeitems);
							itemMap.put(advid, code);
							if(typeMap.size()>0&&itemMap.size()>0)
							{
								targetMap.put("type", typeMap);
								targetMap.put("items", itemMap);
							}
							if(targetMap.size()>0)
							{
								advs.put(target, targetMap);
							}
							typeMap=null;
						}else if("index".equals(range)&&"intercat".equals(type))
						{
							parameters=dataParse.characterParse(adv.get("parameters"), false);
							String position=parameters.get("position");
							if(position==null||position.equals(""))
							{
								position="0";
							}
							String[] positions=position.trim().split(",");
							Map<String,String> positionMap=(Map<String,String>)typesMap.get(type);
							if(positionMap==null)
							{
								positionMap=new HashMap<String,String>();
							}
							for (String obj : positions) {
								positionMap.put(obj.trim(), positionMap.get(obj.trim())!=null?positionMap.get(obj.trim())+","+advid:advid);
								itemsMap.put(advid, code);
							}
							typesMap.put(type, positionMap);
						}
						else if(target.equals(range)||("index".equals(range)&&"forum_all".equals(target)))
						{
							Map<String,String> advtypeMap=(Map<String,String>)typesMap.get(type);
							if(advtypeMap==null)
							{
								advtypeMap=new HashMap<String,String>();
							}
							advtypeMap.put("0",advtypeMap.get("0")!=null?advtypeMap.get("0")+","+advid:advid);
							itemsMap.put(advid,code);
							typesMap.put(type, advtypeMap);
						}
					}
				}
				if(itemsMap.size()>0&&typesMap.size()>0)
				{
					advs.put("items", itemsMap);
					advs.put("type", typesMap);
				}
			}
			itemsMap=null;
			typesMap=null;
		}
		advertisements=null;
		return advs;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -