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

📄 pagecache.java

📁 动态网站管理发布系统
💻 JAVA
字号:
package com.ntsky.news;

import com.ntsky.database.SQLDBOperator;
import com.ntsky.persistence.ClassNews;
import com.ntsky.persistence.NEWSTable;
import com.ntsky.common.CodeFilter;
import java.sql.ResultSet;
import java.util.*;

public class PageCache {
	private SQLDBOperator sdbo = null;

	private static PageCache pageCache = null;

	private static final Map dataMap = new HashMap();

	private PageCache() {
		if (sdbo == null) {
			sdbo = SQLDBOperator.getInstance("Connection");
		}
		initData();
	}

	public synchronized static PageCache getInstance() {
		if (pageCache == null) {
			pageCache = new PageCache();
		}
		return pageCache;
	}

	public void addClassItemToCache() {
		if (!dataMap.isEmpty()) {
			dataMap.clear();
		}
		initData();
	}

	public boolean updateClassItemToCache(int classId, int flag,
			int indexSelect, int orgIndexSelect, String classContent) {
		boolean returnFlag = false;
		ClassNews classNews = null;

		if (classId <= 0) {
			return returnFlag;
		}
		if (dataMap.isEmpty()) {
			initData();
		}
		if (dataMap.containsKey(new Integer(classId))) {
			if (flag == 0) {
				dataMap.remove(new Integer(classId));
				returnFlag = true;
			} else if (flag == 1) {
				classNews = (ClassNews) dataMap.get(new Integer(classId));
				if (classNews != null) {
					classNews.setIndexSelect(indexSelect);
					classNews.setClassContent(classContent);
					Iterator iterator = dataMap.entrySet().iterator();
					for (int i = 0; i < dataMap.size(); i++) {
						Map.Entry entry = (Map.Entry) iterator.next();
						ClassNews classNewsTemp = (ClassNews) entry.getValue();
						if (classNewsTemp.getIndexSelect() == indexSelect) {
							classNewsTemp.setIndexSelect(orgIndexSelect);
							dataMap.remove(String.valueOf(classNewsTemp.getClassId()));
							dataMap.put(String.valueOf(classNewsTemp.getClassId()), classNewsTemp);
							break;
						}
					}
					returnFlag = true;
				}
			}
		} else {
			if (flag == 1) {
				classNews = new ClassNews();
				classNews.setClassId(classId);
				classNews.setFlag(flag);
				classNews.setIndexSelect(indexSelect);
				classNews.setClassContent(classContent);
				dataMap.put(String.valueOf(classId), classNews);

				Iterator iterator = dataMap.entrySet().iterator();
				for (int i = 0; i < dataMap.size(); i++) {
					Map.Entry entry = (Map.Entry) iterator.next();
					ClassNews classNewsTemp = (ClassNews) entry.getValue();
					if (classNewsTemp.getIndexSelect() == indexSelect) {
						dataMap.remove(String.valueOf(classNewsTemp.getClassId()));
						break;
					}
				}
			}
			returnFlag = true;
		}
		return returnFlag;
	}

	public void updateNewsItemToCache() {
		if (!dataMap.isEmpty()) {
			dataMap.clear();
		}
		initData();
	}

	public void delClassToCache(String classId) {
		if (dataMap.containsKey(classId)) {
			dataMap.remove(classId);
		}
	}

	public boolean delNewsToCache(int newsId) {
		boolean returnFlag = false;
		ClassNews classNewsTemp = null;
		NEWSTable newsTable = null;
		List newsList = null;

		Iterator iterator = dataMap.entrySet().iterator();
		for (int i = 0; i < dataMap.size(); i++) {
			Map.Entry entry = (Map.Entry) iterator.next();
			classNewsTemp = (ClassNews) entry.getValue();
			newsList = classNewsTemp.getNewsList();
			for (int j = 0; j < newsList.size(); j++) {
				newsTable = (NEWSTable) newsList.get(j);
				if (newsTable.getNewsId() == newsId) {
					newsList.remove(j);
					if(newsList.size() == 0){
						dataMap.remove(String.valueOf(classNewsTemp.getClassId()));
					}
					break;
				}
			}
		}
		return returnFlag;
	}

	public List getNewsListByClassId(String classId) {
		List newsList = null;
		ClassNews classNews = null;
		if (dataMap.containsKey(classId)) {
			classNews = (ClassNews) dataMap.get(classId);
			newsList = classNews.getNewsList();
		}
		return newsList;
	}

	public ClassNews getClassByClassId(String classId) {
		ClassNews classNews = null;
		if (dataMap.containsKey(classId)) {
			classNews = (ClassNews) dataMap.get(classId);
		}
		return classNews;
	}

	public String getClassNameByClassId(String classId) {
		ClassNews classNews = null;
		if (dataMap.containsKey(classId)) {
			classNews = (ClassNews) dataMap.get(classId);
		}
		return classNews.getClassContent();
	}	
	
	public ClassNews getClassByIndex(int index) {
		ClassNews classNewsTemp = null;
		ClassNews classNews = null;

		Iterator iterator = dataMap.entrySet().iterator();
		for (int i = 0; i < dataMap.size(); i++) {
			Map.Entry entry = (Map.Entry) iterator.next();
			classNewsTemp = (ClassNews) entry.getValue();
			if (classNewsTemp.getIndexSelect() == index) {
				classNews = classNewsTemp;
				break;
			}
		}
		if (classNews == null) {
			classNews = new ClassNews();
		}
		return classNews;
	}

	public NEWSTable getNewsByNewsId(int newsId) {
		ClassNews classNewsTemp = null;
		NEWSTable newsTableTemp = null;
		NEWSTable newsTable = null;
		List newsList = null;

		Iterator iterator = dataMap.entrySet().iterator();
		for (int i = 0; i < dataMap.size(); i++) {
			Map.Entry entry = (Map.Entry) iterator.next();
			classNewsTemp = (ClassNews) entry.getValue();
			newsList = classNewsTemp.getNewsList();
			for (int j = 0; j < newsList.size(); j++) {
				newsTable = (NEWSTable) newsList.get(j);
				if (newsTable.getNewsId() == newsId) {
					newsTableTemp = newsTable;
					break;
				}
			}
		}
		if (newsTableTemp == null) {
			newsTableTemp = new NEWSTable();
		}
		return newsTableTemp;
	}

	public NEWSTable getNewsByNewsIdAndClassId(int classId, int newsId) {
		NEWSTable newsTable = null;
		ClassNews classNews = null;

		if (dataMap.containsKey(String.valueOf(classId))) {
			classNews = (ClassNews) dataMap.get(String.valueOf(classId));
			List listTemp = classNews.getNewsList();
			for (int i = 0; i < listTemp.size(); i++) {
				newsTable = (NEWSTable) listTemp.get(i);
				if (newsTable.getNewsId() == newsId) {
					break;
				}
			}
		}

		return newsTable;
	}

	private void initData() {
		ResultSet rs = null;
		String sql = "select nc.classid,nc.flag,nc.indexSelect,nc.content as classContent,nc.imagPath,n.newsId,n.headTitle,n.content as content,n.newsFrom,n.newsTime from newsclass nc,news n where nc.flag=1 and nc.classId = n.classId order by nc.classId asc,n.newsTime desc;";

		try {
			sdbo.prepareStatement(sql);
			rs = sdbo.executeQuery();

			List list = null;
			ClassNews classNews = new ClassNews();

			while (rs.next()) {
				NEWSTable newsTable = new NEWSTable();

				int classId = rs.getInt("classId");
				if (classNews.getClassContent() == null || "".equals(classNews.getClassContent())) {
					classNews.setClassId(rs.getInt("classId"));
					classNews.setFlag(rs.getInt("flag"));
					classNews.setClassContent(new String(rs.getString("classContent").getBytes("ISO-8859-1"), "gbk"));
					classNews.setIndexSelect(rs.getInt("indexSelect"));
					classNews.setImagPath(rs.getString("imagPath"));

					list = new ArrayList();
					newsTable.setNewsId(rs.getInt("newsId"));
					newsTable.setClassId(classNews.getClassId());
					newsTable.setHeadTitle(new String(CodeFilter.toUbbHtml(rs.getString("headTitle")).getBytes("ISO-8859-1"),"gbk"));
					newsTable.setContent(new String(rs.getString("content").getBytes("ISO-8859-1"), "gbk"));
					newsTable.setNewsFrom(new String(CodeFilter.toUbbHtml(rs.getString("newsFrom")).getBytes("ISO-8859-1"),"gbk"));
					newsTable.setNewsTime(rs.getString("newsTime").substring(0,10));
					list.add(newsTable);

				} else {
					if (classId == classNews.getClassId()) {
						newsTable.setNewsId(rs.getInt("newsId"));
						newsTable.setClassId(classNews.getClassId());
						newsTable.setHeadTitle(new String(CodeFilter.toUbbHtml(rs.getString("headTitle")).getBytes("ISO-8859-1"), "gbk"));
						newsTable.setContent(new String(rs.getString("content").getBytes("ISO-8859-1"), "gbk"));
						newsTable.setNewsFrom(new String(CodeFilter.toUbbHtml(rs.getString("newsFrom")).getBytes("ISO-8859-1"), "gbk"));
						newsTable.setNewsTime(rs.getString("newsTime").substring(0, 10));
						list.add(newsTable);
					} else {
						classNews.setNewsList(list);
						dataMap.put(String.valueOf(classNews.getClassId()),classNews);

						classNews = new ClassNews();
						classNews.setClassId(rs.getInt("classId"));
						classNews.setFlag(rs.getInt("flag"));
						classNews.setClassContent(new String(rs.getString("classContent").getBytes("ISO-8859-1"), "gbk"));
						classNews.setIndexSelect(rs.getInt("indexSelect"));
						classNews.setImagPath(rs.getString("imagPath"));

						list = new ArrayList();
						newsTable.setNewsId(rs.getInt("newsId"));
						newsTable.setClassId(classNews.getClassId());
						newsTable.setHeadTitle(new String(CodeFilter.toUbbHtml(rs.getString("headTitle")).getBytes("ISO-8859-1"), "gbk"));
						newsTable.setContent(new String(rs.getString("content").getBytes("ISO-8859-1"), "gbk"));
						newsTable.setNewsFrom(new String(CodeFilter.toUbbHtml(rs.getString("newsFrom")).getBytes("ISO-8859-1"), "gbk"));
						newsTable.setNewsTime(rs.getString("newsTime").substring(0, 10));
						list.add(newsTable);
					}
				}
			}
			classNews.setNewsList(list);
			dataMap.put(String.valueOf(classNews.getClassId()), classNews);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			sdbo.Close();
		}
	}
}

⌨️ 快捷键说明

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