NewsService.java
上传用户:junmaots
上传日期:2022-07-09
资源大小:2450k
文件大小:14k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * Created on 2005-11-10
  3.  *
  4.  * TODO To change the template for this generated file go to
  5.  * Window - Preferences - Java - Code Style - Code Templates
  6.  */
  7. package com.mycompany.news.service;
  8. import java.sql.Connection;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11. import java.sql.SQLException;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. import com.jspsmart.upload.File;
  15. import com.jspsmart.upload.SmartUpload;
  16. import com.mycompany.database.Database;
  17. import com.mycompany.news.dao.NewsAttachmentDAO;
  18. import com.mycompany.news.dao.NewsAttributeDAO;
  19. import com.mycompany.news.dao.NewsCommentDAO;
  20. import com.mycompany.news.dao.NewsDAO;
  21. import com.mycompany.news.dao.impl.NewsAttachmentDAOImpl;
  22. import com.mycompany.news.dao.impl.NewsAttributeDAOImpl;
  23. import com.mycompany.news.dao.impl.NewsCommentDAOImpl;
  24. import com.mycompany.news.dao.impl.NewsDAOImpl;
  25. import com.mycompany.news.dto.News;
  26. import com.mycompany.news.dto.NewsAttachment;
  27. import com.mycompany.tools.DTOPopulator;
  28. /**
  29.  * @author Administrator
  30.  * 
  31.  * TODO To change the template for this generated type comment go to Window -
  32.  * Preferences - Java - Code Style - Code Templates
  33.  */
  34. public class NewsService extends BaseService{
  35. private NewsDAO newsDAO=new NewsDAOImpl();
  36. private int count;
  37. /**
  38.  * modify 
  39.  * @param news
  40.  * @param upload
  41.  * @return
  42.  */
  43. public boolean modifyNews(News news,SmartUpload upload) {
  44. Connection connection = null;
  45. try {
  46. String updateAttr=upload.getRequest().getParameter("updateattr");
  47. connection = Database.getConnection();
  48. NewsAttachmentDAO attachmentDAO = new NewsAttachmentDAOImpl();
  49. newsDAO.setConnection(connection);
  50. attachmentDAO.setConnection(connection);
  51. newsDAO.updateNews(news);
  52. if(updateAttr!=null&&updateAttr.equals("y")){
  53. attachmentDAO.deleteAttrByNews(news);
  54. Long currentID = news.getNewsId();
  55. for(int i=0;i<upload.getFiles().getCount();i++){
  56. File f = upload.getFiles().getFile(i);
  57. if(f.isMissing())continue;
  58. NewsAttachment newsAttachment=new NewsAttachment();
  59. newsAttachment.setNewsId(currentID);
  60. newsAttachment.setAttachmentName(f.getFileName());
  61. newsAttachment.setAttachmentContent(f.getFileBinaryData());
  62. attachmentDAO.addNewsAttachment(newsAttachment);
  63. }
  64. }
  65. Database.commit();
  66. return true;
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. message = e.getMessage();
  70. Database.rollback();
  71. return false;
  72. } finally {
  73. Database.releaseConnection(connection);
  74. }
  75. };
  76. public boolean addNews(News news,SmartUpload upload) {
  77. Connection connection = null;
  78. try {
  79. connection = Database.getConnection();
  80. NewsAttachmentDAO attachmentDAO = new NewsAttachmentDAOImpl();
  81. newsDAO.setConnection(connection);
  82. attachmentDAO.setConnection(connection);
  83. newsDAO.addNews(news);
  84. Long currentID = newsDAO.getCurrentID();
  85. for(int i=0;i<upload.getFiles().getCount();i++){
  86. File f = upload.getFiles().getFile(i);
  87. if(f.isMissing())continue;
  88. NewsAttachment newsAttachment=new NewsAttachment();
  89. newsAttachment.setNewsId(currentID);
  90. newsAttachment.setAttachmentName(f.getFileName());
  91. newsAttachment.setAttachmentContent(f.getFileBinaryData());
  92. attachmentDAO.addNewsAttachment(newsAttachment);
  93. }
  94. Database.commit();
  95. return true;
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. message = e.getMessage();
  99. Database.rollback();
  100. return false;
  101. } finally {
  102. Database.releaseConnection(connection);
  103. }
  104. };//添加News信息
  105. //
  106. public boolean updateNews(News news) {
  107. Connection connection = null;
  108. try {
  109. connection = Database.getConnection();
  110. newsDAO.setConnection(connection);
  111. newsDAO.updateNews(news);
  112. Database.commit();
  113. return true;
  114. } catch (Exception e) {
  115. e.printStackTrace();
  116. message = e.getMessage();
  117. Database.rollback();
  118. return false;
  119. } finally {
  120. Database.releaseConnection(connection);
  121. }
  122. };//修改News信息
  123. //
  124. public boolean deleteNews(News news) {
  125. Connection connection = null;
  126. try {
  127. connection = Database.getConnection();
  128. NewsAttachmentDAO attachmentDAO =new NewsAttachmentDAOImpl();
  129. NewsAttributeDAO attrDAO = new NewsAttributeDAOImpl();
  130. NewsCommentDAO commentDAO = new NewsCommentDAOImpl();
  131. newsDAO.setConnection(connection);
  132. attachmentDAO.setConnection(connection);
  133. attrDAO.setConnection(connection);
  134. newsDAO.deleteNews(news);
  135. attachmentDAO.deleteAttrByNews(news);
  136. attrDAO.deleteByNews(news);
  137. commentDAO.deleteCommentByNews(news);
  138. Database.commit();
  139. return true;
  140. } catch (Exception e) {
  141. e.printStackTrace();
  142. message = e.getMessage();
  143. Database.rollback();
  144. return false;
  145. } finally {
  146. Database.releaseConnection(connection);
  147. }
  148. };//删除News信息
  149. //
  150. public List listAllNewses() {
  151. Connection connection = null;
  152. try {
  153. connection = Database.getConnection();
  154. newsDAO.setConnection(connection);
  155. return newsDAO.listAllNews();
  156. } catch (Exception e) {
  157. e.printStackTrace();
  158. message = e.getMessage();
  159. Database.rollback();
  160. } finally {
  161. Database.releaseConnection(connection);
  162. }
  163. return new ArrayList();
  164. };//列出所有的News信息
  165. //
  166. public List listNewses(News newsCondition,int pageNo,int pageSize) {
  167. Connection conn =null;
  168. try{
  169. conn = Database.getConnection();
  170. newsDAO.setConnection(conn);
  171. return newsDAO.listNews(newsCondition,pageNo,pageSize);
  172. }catch(Exception e){
  173. e.printStackTrace();
  174. message = e.getMessage();
  175. return null;
  176. }finally{
  177. Database.releaseConnection(conn);
  178. }
  179. };//组合条件查询
  180. //
  181. public News getByID(long id) {
  182. Connection conn =null;
  183. try{
  184. conn = Database.getConnection();
  185. newsDAO.setConnection(conn);
  186. newsDAO.updateVisitCount(id);
  187. News news =  newsDAO.getByID(id);
  188. Database.commit();
  189. return news;
  190. }catch(Exception e){
  191. e.printStackTrace();
  192. message = e.getMessage();
  193. return null;
  194. }finally{
  195. Database.releaseConnection(conn);
  196. }
  197. }
  198. public List getRecommendedNews(long channelid,int curPage,int max){
  199. Connection conn =null;
  200. try{
  201. conn = Database.getConnection();
  202. newsDAO.setConnection(conn);
  203. return newsDAO.getRecommendedNews(channelid,curPage,max);
  204. }catch(Exception e){
  205. e.printStackTrace();
  206. message = e.getMessage();
  207. return new ArrayList();
  208. }finally{
  209. Database.releaseConnection(conn);
  210. }
  211. }
  212. public int getRecommendedNewsCount(long channelid){
  213. Connection conn =null;
  214. try{
  215. conn = Database.getConnection();
  216. newsDAO.setConnection(conn);
  217. return newsDAO.getRecommendedNewsCount(channelid);
  218. }catch(Exception e){
  219. e.printStackTrace();
  220. message = e.getMessage();
  221. }finally{
  222. Database.releaseConnection(conn);
  223. }
  224. return 0;
  225. }
  226. /**
  227.  * @return Returns the NewsDAO.
  228.  */
  229. public NewsDAO getNewsDAO() {
  230. return newsDAO;
  231. }
  232. /**
  233.  * @param NewsDAO
  234.  *            The NewsDAO to set.
  235.  */
  236. public void setNewsDAO(NewsDAO NewsDAO) {
  237. this.newsDAO = NewsDAO;
  238. }
  239. public NewsAttachment loadAttachment(long attid){
  240. Connection conn =null;
  241. NewsAttachmentDAO attDAO = new NewsAttachmentDAOImpl();
  242. try {
  243. conn = Database.getConnection();
  244. attDAO.setConnection(conn);
  245. return attDAO.getByID(attid);
  246. } catch (SQLException e) {
  247. // TODO Auto-generated catch block
  248. e.printStackTrace();
  249. } catch (Exception e) {
  250. // TODO Auto-generated catch block
  251. e.printStackTrace();
  252. }finally{
  253. Database.releaseConnection(conn);
  254. }
  255. return null;
  256. }
  257. public long getVisitCount(long newsid){
  258. Connection conn =null;
  259. NewsAttributeDAO attDAO = new NewsAttributeDAOImpl();
  260. try {
  261. conn = Database.getConnection();
  262. attDAO.setConnection(conn);
  263. String strVisitCount = attDAO.getAttributeValue(newsid,"visit_count",0);
  264. if(strVisitCount==null)
  265. return 0;
  266. return Long.parseLong(strVisitCount);
  267. } catch (SQLException e) {
  268. // TODO Auto-generated catch block
  269. e.printStackTrace();
  270. }finally{
  271. Database.releaseConnection(conn);
  272. }
  273. return 0;
  274. }
  275. public List getAttachments(long newsId){
  276. Connection conn =null;
  277. NewsAttachment condition=new NewsAttachment();
  278. condition.setNewsId(new Long(newsId));
  279. try {
  280. NewsAttachmentDAO attDAO = new NewsAttachmentDAOImpl();
  281. conn = Database.getConnection();
  282. attDAO.setConnection(conn);
  283. return attDAO.listNewsAttachments(condition);
  284. } catch (Exception e) {
  285. // TODO Auto-generated catch block
  286. e.printStackTrace();
  287. }finally{
  288. Database.releaseConnection(conn);
  289. }
  290. return null;
  291. }
  292. public int searchCount(String keyword){
  293. StringBuffer sqlStr = new StringBuffer();
  294. sqlStr.append("select count(*) as count from News_Info where"); 
  295. sqlStr.append(" UPPER(content) like ? ");
  296. sqlStr.append(" or UPPER(author) like ?");
  297. sqlStr.append(" or UPPER(subject) like ?");
  298. sqlStr.append(" or news_id ");
  299. sqlStr.append(" in(select entity_id from News_Attribute"); 
  300. sqlStr.append(" where");
  301. sqlStr.append(" (");
  302. sqlStr.append(" (");
  303. sqlStr.append(" news_attr_name='Vice_Subject'"); 
  304. sqlStr.append(" or news_attr_name ='Source'");
  305. sqlStr.append(" )");
  306. sqlStr.append(" and UPPER(news_attr_value) like ?");
  307. sqlStr.append(" and news_attr_type='0'");
  308. sqlStr.append(" ))");
  309. Connection conn =null;
  310. try {
  311. conn = Database.getConnection();
  312. PreparedStatement preparedStatement = conn.prepareStatement(sqlStr.toString());
  313. int i=1;
  314. for(i=1;i<=4;i++){
  315. preparedStatement.setString(i,"%"+ keyword.toUpperCase().replace(' ','%')+"%");
  316. }
  317. ResultSet resultSet = preparedStatement.executeQuery();
  318. if(resultSet.next()){
  319. return resultSet.getInt("count");
  320. }
  321. } catch (Exception e) {
  322. // TODO Auto-generated catch block
  323. e.printStackTrace();
  324. }finally{
  325. Database.releaseConnection(conn);
  326. }
  327. return 0;
  328. }
  329. public List search(String keyword,int pageNo,int pageSize){
  330. StringBuffer sqlStr = new StringBuffer();
  331. sqlStr.append("select * from News_Info where"); 
  332. sqlStr.append(" UPPER(content) like ? ");
  333. sqlStr.append(" or UPPER(author) like ?");
  334. sqlStr.append(" or UPPER(subject) like ?");
  335. sqlStr.append(" or news_id ");
  336. sqlStr.append(" in(select entity_id from News_Attribute"); 
  337. sqlStr.append(" where");
  338. sqlStr.append(" (");
  339. sqlStr.append(" (");
  340. sqlStr.append(" news_attr_name='Vice_Subject'"); 
  341. sqlStr.append(" or news_attr_name ='Source'");
  342. sqlStr.append(" )");
  343. sqlStr.append(" and UPPER(news_attr_value) like ?");
  344. sqlStr.append(" and news_attr_type='0'");
  345. sqlStr.append(" )) limit ?,?");
  346. System.out.println("sqlstr = "+sqlStr);
  347. Connection conn =null;
  348. try {
  349. conn = Database.getConnection();
  350. PreparedStatement preparedStatement = conn.prepareStatement(sqlStr.toString());
  351. int i=1;
  352. for(i=1;i<=4;i++){
  353. preparedStatement.setString(i,"%"+ keyword.toUpperCase().replace(' ','%')+"%");
  354. }
  355. preparedStatement.setInt(i++,(pageNo-1)*pageSize);
  356. preparedStatement.setInt(i++,pageNo*pageSize);
  357. ResultSet resultSet = preparedStatement.executeQuery();
  358. return DTOPopulator.populate(resultSet,News.class);
  359. } catch (Exception e) {
  360. // TODO Auto-generated catch block
  361. e.printStackTrace();
  362. }finally{
  363. Database.releaseConnection(conn);
  364. }
  365. return new ArrayList();
  366. }
  367. public int getNewsCountByColumn(Long columnid){
  368. StringBuffer sqlStr = new StringBuffer();
  369. sqlStr.append("select count(*) as count from News_Info where"); 
  370. sqlStr.append(" column_id=?");
  371. Connection conn =null;
  372. try {
  373. conn = Database.getConnection();
  374. PreparedStatement preparedStatement = conn.prepareStatement(sqlStr.toString());
  375. int i=1;
  376. preparedStatement.setLong(i++, columnid.longValue());
  377. ResultSet resultSet = preparedStatement.executeQuery();
  378. if(resultSet.next())
  379. return resultSet.getInt("count");
  380. } catch (Exception e) {
  381. // TODO Auto-generated catch block
  382. e.printStackTrace();
  383. }finally{
  384. Database.releaseConnection(conn);
  385. }
  386. return 0;
  387. }
  388. public List listNewsByColumn(Long columnid,int pageNo,int pageSize){
  389. StringBuffer sqlStr = new StringBuffer();
  390. sqlStr.append("select * from News_Info where"); 
  391. sqlStr.append(" column_id=?");
  392. sqlStr.append(" limit ?,?");
  393. Connection conn =null;
  394. try {
  395. conn = Database.getConnection();
  396. PreparedStatement preparedStatement = conn.prepareStatement(sqlStr.toString());
  397. int i=1;
  398. preparedStatement.setLong(i++, columnid.longValue());
  399. preparedStatement.setInt(i++,(pageNo-1)*pageSize);
  400. preparedStatement.setInt(i++,pageNo*pageSize);
  401. ResultSet resultSet = preparedStatement.executeQuery();
  402. return DTOPopulator.populate(resultSet,News.class);
  403. } catch (Exception e) {
  404. // TODO Auto-generated catch block
  405. e.printStackTrace();
  406. }finally{
  407. Database.releaseConnection(conn);
  408. }
  409. return new ArrayList();
  410. }
  411. public boolean isImage(NewsAttachment attachment){
  412. if(
  413. attachment.getAttachmentName().toUpperCase().endsWith("JPG")||
  414. attachment.getAttachmentName().toUpperCase().endsWith("BMP")||
  415. attachment.getAttachmentName().toUpperCase().endsWith("JPEG")||
  416. attachment.getAttachmentName().toUpperCase().endsWith("GIF")
  417. )
  418. return true;
  419. return false;
  420. }
  421. public boolean recommendNews(long newsid) throws Exception{
  422. Connection conn =null;
  423. try{
  424. conn = Database.getConnection();
  425. NewsAttributeDAO naDAO = new NewsAttributeDAOImpl();
  426. naDAO.setConnection(conn);
  427. naDAO.recommendNews(newsid);
  428. Database.commit();
  429. return true;
  430. }finally{
  431. Database.releaseConnection(conn);
  432. }
  433. }
  434. public boolean cancelRecommendNews(long newsid) throws Exception{
  435. Connection conn =null;
  436. try{
  437. conn = Database.getConnection();
  438. NewsAttributeDAO naDAO = new NewsAttributeDAOImpl();
  439. naDAO.setConnection(conn);
  440. naDAO.cancelRecommend(newsid);
  441. Database.commit();
  442. return true;
  443. }finally{
  444. Database.releaseConnection(conn);
  445. }
  446. }
  447. public static void main(String[] args) {
  448. // NewsService cs = new NewsService();
  449. // List Newss = new ArrayList();
  450. // News c0 = new News();
  451. // c0.setNewsId(new Long(1));
  452. // try {
  453. // cs.setNewsDAO(new NewsDAOImpl());
  454. // News byID = cs.getByID(13);
  455. // } catch (Exception e) {
  456. // // TODO Auto-generated catch block
  457. // e.printStackTrace();
  458. // }
  459. NewsService s = new NewsService();
  460. s.search("adf",1,23);
  461. }
  462. /**
  463.  * @return Returns the count.
  464.  */
  465. public int getCount() {
  466. return count;
  467. }
  468. /**
  469.  * @param count The count to set.
  470.  */
  471. public void setCount(int count) {
  472. this.count = count;
  473. }
  474. }