📄 pagecache.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 + -