📄 cache.java
字号:
{
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&¶meters.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 + -