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

📄 postoperating.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package cn.jsprun.foreg.service;

import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;

import cn.jsprun.domain.Forumfields;
import cn.jsprun.domain.Members;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.DataParse;

public class PostOperating {
	
	public final String reply = "reply";
	public final String posts = "posts";
	public final String stick = "stick";
	public final String attachment = "attachment";
	public void setMembersExtcredit(Forumfields forumfields,String creditspolicy,Members members,Map<String,String> updateField,String operating,boolean add,Integer multiple){
		
		Class[] classArray = {Forumfields.class,String.class,DataParse.class};
		Object[] objectArray = {forumfields,creditspolicy,((DataParse)BeanFactory.getBean("dataParse"))};
		Method method = null;
		try {
			method = PostOperating.class.getDeclaredMethod("getCredits_"+operating, classArray);
			classArray=null;
		} catch (Exception e) {
			e.printStackTrace();
		} 
		method.setAccessible(true);
		
		Map<Integer, Byte> resultMap = null;
		try {
			resultMap = (Map<Integer,Byte>)method.invoke(this, objectArray);
			objectArray=null;
		} catch (Exception e) {
			e.printStackTrace();
		}
		if(resultMap!=null){
			Iterator<Integer> iterator = resultMap.keySet().iterator();
			while (iterator.hasNext()) {
				Integer key = iterator.next();
				int value = (multiple==null?1:multiple)*resultMap.get(key);
				setMembersExtcredit(key+"", members, value, add);
				if(updateField!=null){
					updateField.put("extcredits" + key, "extcredits" + key);
				}
			}
		}
	}
	public void setMembersExtcredit(String extcredit,Members members,int value,boolean add){
		try {
			Method method_get = Members.class.getMethod("getExtcredits" + extcredit);
			int extcredits = (Integer) method_get.invoke(members);
			int temp = 0;
			if(add){
				temp = extcredits + value;
			}else{
				temp = extcredits - value;
			}
			Method method_set = Members.class.getMethod("setExtcredits" + extcredit, Integer.class);
			method_set.invoke(members, temp);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	private Map<Integer,Integer> getCredits_reply(Forumfields forumfields,String creditspolicy,DataParse dataParse){
		String replycredits = forumfields.getReplycredits();
		Map<Integer,Integer> resultMap = null;
		if(replycredits!=null&&!replycredits.equals("")){
			resultMap = dataParse.characterParse(replycredits, false);
		}else{
			resultMap = (Map<Integer,Integer>)dataParse.characterParse(creditspolicy, false).get("reply");
		}
		return resultMap;
	}
	private Map<Integer,Integer> getCredits_stick(Forumfields forumfields,String creditspolicy,DataParse dataParse){
		String digestcredits = forumfields.getDigestcredits();
		Map<Integer,Integer> resultMap = null;
		if(digestcredits!=null&&!digestcredits.equals("")){
			resultMap = dataParse.characterParse(digestcredits, false);
		}else{
			resultMap = (Map<Integer,Integer>)dataParse.characterParse(creditspolicy, false).get("digest");
		}
		return resultMap;
	}
	private Map<Integer,Integer> getCredits_attachment(Forumfields forumfields,String creditspolicy,DataParse dataParse){
		String postattachcredits = forumfields.getPostattachcredits();
		Map<Integer,Integer> resultMap = null;
		if(postattachcredits!=null&&!postattachcredits.equals("")){
			resultMap = dataParse.characterParse(postattachcredits, false);
		}else{
			resultMap = (Map<Integer,Integer>)dataParse.characterParse(creditspolicy, false).get("postattach");
		}
		return resultMap;
	}
	private Map<Integer,Integer> getCredits_posts(Forumfields forumfields,String creditspolicy,DataParse dataParse) {
		String postcredits = forumfields.getPostcredits();
		Map<Integer,Integer> resultMap = null;
		if(postcredits!=null&&!postcredits.equals("")){
			resultMap = dataParse.characterParse(postcredits, false);
		}else{
			resultMap = (Map<Integer,Integer>)dataParse.characterParse(creditspolicy, false).get("post");
		}
		return resultMap;
	}
	public void setCredits(String creditsformula,Members members,Map<String,String> updateField){
		StringBuffer operationString = new StringBuffer(creditsformula.replaceAll("\\s", ""));
		boolean sign = updateField==null;
		while (true) {
			if (operationString.indexOf("digestposts") >= 0) {
				operationString.replace(operationString.indexOf("digestposts"),operationString.indexOf("digestposts")+ "digestposts".length(), members.getDigestposts().toString());
				if(!sign&&updateField.get("digestposts")!=null){
					sign = true;
				}
			} else if (operationString.indexOf("posts") >= 0) {
				operationString.replace(operationString.indexOf("posts"),operationString.indexOf("posts") + "posts".length(),members.getPosts().toString());
				if(!sign&&updateField.get("posts")!=null){
					sign = true;
				}
			} else if (operationString.indexOf("oltime") >= 0) {
				operationString.replace(operationString.indexOf("oltime"),operationString.indexOf("oltime") + "oltime".length(),members.getOltime().toString());
				if(!sign&&updateField.get("oltime")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("pageviews")>=0){
				operationString.replace(operationString.indexOf("pageviews"), operationString.indexOf("pageviews")+"pageviews".length(), members.getPageviews().toString());
				if(!sign&&updateField.get("pageviews")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits1")>=0){
				operationString.replace(operationString.indexOf("extcredits1"), operationString.indexOf("extcredits1")+"extcredits1".length(), members.getExtcredits1().toString());
				if(!sign&&updateField.get("extcredits1")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits2")>=0){
				operationString.replace(operationString.indexOf("extcredits2"), operationString.indexOf("extcredits2")+"extcredits2".length(),members.getExtcredits2().toString());
				if(!sign&&updateField.get("extcredits2")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits3")>=0){
				operationString.replace(operationString.indexOf("extcredits3"), operationString.indexOf("extcredits3")+"extcredits3".length(), members.getExtcredits3().toString());
				if(!sign&&updateField.get("extcredits3")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits4")>=0){
				operationString.replace(operationString.indexOf("extcredits4"), operationString.indexOf("extcredits4")+"extcredits4".length(), members.getExtcredits4().toString());
				if(!sign&&updateField.get("extcredits4")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits5")>=0){
				operationString.replace(operationString.indexOf("extcredits5"), operationString.indexOf("extcredits5")+"extcredits5".length(),members.getExtcredits5().toString());
				if(!sign&&updateField.get("extcredits5")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits6")>=0){
				operationString.replace(operationString.indexOf("extcredits6"), operationString.indexOf("extcredits6")+"extcredits6".length(), members.getExtcredits6().toString());
				if(!sign&&updateField.get("extcredits6")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits7")>=0){
				operationString.replace(operationString.indexOf("extcredits7"), operationString.indexOf("extcredits7")+"extcredits7".length(), members.getExtcredits7().toString());
				if(!sign&&updateField.get("extcredits7")!=null){
					sign = true;
				}
			}else if(operationString.indexOf("extcredits8")>=0){
				operationString.replace(operationString.indexOf("extcredits8"), operationString.indexOf("extcredits8")+"extcredits8".length(), members.getExtcredits8().toString());
				if(!sign&&updateField.get("extcredits8")!=null){
					sign = true;
				}
			}else{
				break;
			}
		}
		if(sign){
			String result = excute(operationString);
			Integer credits = Double.valueOf(result).intValue();
			members.setCredits(credits);
		}
	}
	private String excute(StringBuffer expiression){
		if(expiression==null||expiression.equals("0")){
			return "0";
		}
		int indexF = expiression.lastIndexOf("(");
		if(indexF<0){
			return count(expiression.toString());
		}else{
			int indexA = expiression.indexOf(")", indexF);
			return excute(expiression.replace(indexF, indexA+1, count(expiression.substring(indexF+1, indexA))));
		}
		
	}
	private String count(String expiression){
		StringBuffer tempBuffer = null;
		int indexM = expiression.indexOf("*");

⌨️ 快捷键说明

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