亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? photodao.java

?? 個人Blog java編寫的Blog可以直接使用!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 *  PhotoDAO.java
 *  
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *  
 *  Author: Winter Lau (javayou@gmail.com)
 *  http://dlog4j.sourceforge.net
 */
package com.liusoft.dlog4j.dao;

import java.sql.SQLException;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import com.liusoft.dlog4j.ObjectNotFoundException;
import com.liusoft.dlog4j.SessionUserObject;
import com.liusoft.dlog4j.base._PhotoBase;
import com.liusoft.dlog4j.base._ReplyBean;
import com.liusoft.dlog4j.beans.AlbumBean;
import com.liusoft.dlog4j.beans.DiaryBean;
import com.liusoft.dlog4j.beans.PhotoBean;
import com.liusoft.dlog4j.beans.PhotoOutlineBean;
import com.liusoft.dlog4j.beans.PhotoReplyBean;
import com.liusoft.dlog4j.beans.SiteBean;
import com.liusoft.dlog4j.beans.TagBean;
import com.liusoft.dlog4j.search.SearchDataProvider;
import com.liusoft.dlog4j.util.DLOG4JUtils;
import com.liusoft.dlog4j.util.DateUtils;
import com.liusoft.dlog4j.util.StringUtils;

/**
 * 操作照片的數據庫訪問接口
 * @author Winter Lau
 */
public class PhotoDAO extends DAO implements SearchDataProvider {

	/**
	 * 獲取具有專欄標志的Site在days天內的最熱門的照片
	 * @param days
	 * @param count
	 * @return
	 */
	public static List listHotPhotos(int days, int count){
		Calendar cal = Calendar.getInstance();
		DateUtils.resetTime(cal);
		cal.add(Calendar.DATE, -days);
		return executeNamedQuery("LIST_HOT_PHOTOS", 0, count,
				new Object[]{PhotoOutlineBean.I_STATUS_NORMAL, cal.getTime(),
				AlbumBean.I_TYPE_PUBLIC});
	}
	
	/**
	 * 返回指定網站的相片數,如果沒有指定網站則返回所有相片數
	 * @param site
	 * @return
	 */
	public static int getPhotoCount(int site){
		String hql = "SELECT COUNT(*) FROM PhotoBean AS d WHERE d.status=?";
		if(site>0){
			hql += " AND d.site.id=?";
			return executeStatAsInt(hql, PhotoBean.STATUS_NORMAL, site);
		}
		return executeStatAsInt(hql, PhotoBean.STATUS_NORMAL);
	}

	/**
	 * 得到指定照片的上一篇(用于顯示照片頁)
	 * @param site
	 * @param user
	 * @param album_id
	 * @param photo_id
	 * @return
	 */
	public static PhotoOutlineBean getPrevPhoto(SiteBean site, SessionUserObject user, int album_id, int photo_id){
		if(site==null) 
			return null;
		boolean is_owner = site.isOwner(user);
		StringBuffer hql = new StringBuffer("FROM PhotoOutlineBean AS p WHERE p.status=:photo_status AND p.site.id=:site AND p.id<:photo");
		if(!is_owner){
			//排除用戶沒有權限訪問的分類
			hql.append(" AND p.album.type=:album_type");
		}
		if (album_id > 0){
			hql.append(" AND p.album.id=:album");
		}
		hql.append(" ORDER BY p.id DESC");
		Session ssn = getSession();
		try{
			Query q = ssn.createQuery(hql.toString());
			q.setInteger("photo_status", PhotoBean.STATUS_NORMAL);
			q.setInteger("site", site.getId());
			q.setInteger("photo", photo_id);
			if(album_id > 0)
				q.setInteger("album", album_id);
			if(!is_owner)
				q.setInteger("album_type", AlbumBean.TYPE_PUBLIC);			
			q.setMaxResults(1);
			return (PhotoOutlineBean)q.uniqueResult();
		}finally{
			hql = null;
		}
	}

	/**
	 * 得到指定照片的上一篇(用于顯示照片頁)
	 * @param site
	 * @param user
	 * @param album_id
	 * @param photo_id
	 * @return
	 */
	public static PhotoOutlineBean getNextPhoto(SiteBean site, SessionUserObject user, int album_id, int photo_id){
		if(site==null) return null;
		StringBuffer hql = new StringBuffer("FROM PhotoOutlineBean AS p WHERE p.status=:photo_status AND p.site.id=:site AND p.id>:photo");
		if(user==null || !site.isOwner(user)){
			//排除用戶沒有權限訪問的分類
			hql.append(" AND p.album.type=:album_type");
		}
		if (album_id > 0){
			hql.append(" AND p.album.id=:album");
		}
		hql.append(" ORDER BY p.id ASC");
		Session ssn = getSession();
		try{
			Query q = ssn.createQuery(hql.toString());
			q.setInteger("photo_status", PhotoBean.STATUS_NORMAL);
			q.setInteger("site", site.getId());
			q.setInteger("photo", photo_id);
			if(album_id > 0)
				q.setInteger("album", album_id);
			if(!site.isOwner(user))
				q.setInteger("album_type", AlbumBean.TYPE_PUBLIC);			
			q.setMaxResults(1);
			return (PhotoOutlineBean)q.uniqueResult();
		}finally{
			hql = null;
		}
	}
	
	/**
	 * 增加照片的閱讀數
	 * @param photo_id
	 * @param incCount
	 * @return
	 */
	public static void incViewCount(int photo_id, int incCount){
		commitNamedUpdate("INC_PHOTO_VIEW_COUNT", incCount, photo_id);
	}
	
	/**
	 * 加載照片
	 * @param photo_id
	 * @return
	 */
	public static PhotoBean getPhotoByID(int photo_id){
		if(photo_id <= 0)
			return null;
		return (PhotoBean)getBean(PhotoBean.class, photo_id);
	}

	/**
	 * 加載照片
	 * @param photo_id
	 * @return
	 */
	public static PhotoOutlineBean getPhotoOutlineByID(int photo_id){
		if(photo_id <= 0)
			return null;
		return (PhotoOutlineBean)getBean(PhotoOutlineBean.class, photo_id);
	}
	
	/**
	 * 列出相片中的有效月份
	 * @param site_id
	 * @return
	 */
	public static List listMonths(int site_id){
		return findNamedAll("PHOTO_MONTHS",site_id);
	}
	
	/**
	 * 根據條件列出照片
	 * @param site
	 * @param user
	 * @param album_id
	 * @param month_stamp 月份戳,例如200506表示看2005年6月份的照片
	 * @param fromIdx
	 * @param count
	 * @return
	 * @see com.liusoft.dlog4j.velocity.DLOG_VelocityTool#list_photos(SiteBean, int, int) 
	 */
	public static List listPhotos(SiteBean site, SessionUserObject user, int album_id,
			int month_stamp, int date, int fromIdx, int count) {
		StringBuffer hql = new StringBuffer("FROM PhotoOutlineBean AS p WHERE p.site.id=:site");
		if(album_id > 0)
			hql.append(" AND (p.album.id=:album OR p.album.parent.id=:album)");
		if(month_stamp > 190000 && month_stamp < 209912){
			hql.append(" AND p.year=:year AND p.month=:month");
		}
		if(user==null || site.getOwner().getId()!=user.getId()){
			hql.append(" AND p.status<>:hidden_status AND p.album.type=:owner_album");
		}
		if(date>0){
			hql.append(" AND p.date=:date");
		}
		hql.append(" ORDER BY p.id DESC");
		Session ssn = getSession();
		try{
			Query q = ssn.createQuery(hql.toString());
			q.setInteger("site", site.getId());
			if(album_id > 0)
				q.setInteger("album", album_id);
			if(month_stamp > 190000 && month_stamp < 209912){
				q.setInteger("year", month_stamp / 100);
				q.setInteger("month", month_stamp % 100);
			}
			if(user==null || site.getOwner().getId()!=user.getId()){
				q.setInteger("hidden_status", PhotoBean.STATUS_PRIVATE);
				q.setInteger("owner_album", AlbumBean.TYPE_PUBLIC);
			}
			if(date>0){
				q.setInteger("date", date);
			}
			q.setFirstResult(fromIdx);
			q.setMaxResults(count);
			return q.list();
		}finally{
			hql = null;
		}
	}
	
	/**
	 * 列出某個相簿的照片
	 * @param album
	 * @param fromIdx
	 * @param count
	 * @return
	 */
	public static List listPhotos(AlbumBean album, int fromIdx, int count){
		Query q = getSession().getNamedQuery("PHOTOS_OF_ALBUM");
		q.setInteger("album", album.getId());
		//q.setInteger("hidden_status", PhotoBean.STATUS_PRIVATE);
		if(fromIdx > 0)
			q.setFirstResult(fromIdx);
		if(count > 0)
			q.setMaxResults(count);
		return q.list();
	}

	/**
	 * 列出所有圖片(用于管理)
	 * @param fromIdx
	 * @param count
	 * @return
	 */
	public static List listPhotos(int fromIdx, int count){
		String hql = "FROM PhotoOutlineBean AS p ORDER BY p.id DESC";
		return executeQuery(hql, fromIdx, count, null);
	}
	
	/**
	 * 獲取照片數(用于管理)
	 * @return
	 */
	public static int photoCount(){
		String hql = "SELECT COUNT(*) FROM PhotoOutlineBean AS p";
		return executeStatAsInt(hql, null);
	}
	
	/**
	 * 根據條件列出照片
	 * @param site
	 * @param user
	 * @param album_id
	 * @param month_stamp 月份戳,例如200506表示看2005年6月份的照片
	 * @param fromIdx
	 * @param count
	 * @return
	 * @see com.liusoft.dlog4j.velocity.DLOG_VelocityTool#list_photos(SiteBean, int, int) 
	 */
	public static List listPhotos(int album_id,int month_stamp, int date, int fromIdx, int count) {
		StringBuffer hql = new StringBuffer("FROM PhotoOutlineBean AS p WHERE 1=1");
		if(album_id > 0)
			hql.append(" AND (p.album.id=:album OR p.album.parent.id=:album)");
		if(month_stamp > 190000 && month_stamp < 209912){
			hql.append(" AND p.year=:year AND p.month=:month");
		}
		hql.append(" AND p.status<>:hidden_status AND p.album.type=:owner_album");
		if(date>0){
			hql.append(" AND p.date=:date");
		}
		hql.append(" AND p.site.status=:site_status ORDER BY p.id DESC");
		Session ssn = getSession();
		try{
			Query q = ssn.createQuery(hql.toString());
			if(album_id > 0)
				q.setInteger("album", album_id);
			if(month_stamp > 190000 && month_stamp < 209912){
				q.setInteger("year", month_stamp / 100);
				q.setInteger("month", month_stamp % 100);
			}
			q.setInteger("hidden_status", PhotoBean.STATUS_PRIVATE);
			q.setInteger("owner_album", AlbumBean.TYPE_PUBLIC);
			if(date>0){
				q.setInteger("date", date);
			}
			q.setInteger("site_status", SiteBean.STATUS_NORMAL);
			q.setFirstResult(fromIdx);
			q.setMaxResults(count);
			return q.list();
		}finally{
			hql = null;
		}
	}

	/**
	 * 根據條件列出照片
	 * @param site
	 * @param user
	 * @param album_id
	 * @param month_stamp 月份戳,例如200506表示看2005年6月份的照片
	 * @return
	 * @see com.liusoft.dlog4j.velocity.DLOG_VelocityTool#list_photos(SiteBean, int, int) 
	 */
	public static int getPhotoCount(SiteBean site, SessionUserObject user, int album_id,
			int month_stamp, int date) {
		boolean is_owner = site.isOwner(user);
		StringBuffer hql = new StringBuffer("SELECT COUNT(*) FROM PhotoBean AS p WHERE p.site.id=:site");
		if(album_id > 0)
			hql.append(" AND p.album.id=:album");
		if(month_stamp > 190000 && month_stamp < 209912){
			hql.append(" AND p.year=:year AND p.month=:month");
		}
		if(!is_owner){
			hql.append(" AND p.status=:normal_status AND p.album.type=:public_album");
		}
		if(date>0){
			hql.append(" AND p.date=:date");
		}
		Session ssn = getSession();
		try{
			Query q = ssn.createQuery(hql.toString());
			q.setInteger("site", site.getId());
			if(album_id > 0)
				q.setInteger("album", album_id);
			if(month_stamp > 190000 && month_stamp < 209912){
				q.setInteger("year", month_stamp / 100);
				q.setInteger("month", month_stamp % 100);
			}
			if(!is_owner){
				q.setInteger("normal_status", PhotoBean.STATUS_NORMAL);
				q.setInteger("public_album", AlbumBean.TYPE_PUBLIC);
			}
			if(date>0){
				q.setInteger("date", date);
			}
			return ((Number)q.uniqueResult()).intValue();
		}finally{
			hql = null;
		}
	}
	
	/**
	 * 刪除某張照片
	 * @param photo
	 * @throws SQLException 
	 */
	public static void delete(_PhotoBase photo) throws SQLException{
		if(photo == null)
			return;
		Session ssn = getSession();
		try{
			beginTransaction();
			//釋放相冊空間
			int photo_size = DLOG4JUtils.sizeInKbytes(photo.getPhotoInfo().getSize());
			photo.getSite().getCapacity().incPhotoUsed(photo_size);
			photo.getAlbum().incPhotoCount(-1);
			photo.getUser().getCount().incPhotoCount(-1);
			//遞歸所有父相簿
			AlbumBean parent = photo.getAlbum().getParent();
			int deep = 0;
			do{
				if(parent == null)
					break;
				deep ++;
				parent.incPhotoCount(-1);
				parent = parent.getParent();
			}while(deep < 10);//最多遍歷十級相簿

			//刪除標簽
			TagDAO.deleteTagByRefId(photo.getId(), TagBean.TYPE_PHOTO);
			
			//所有參與該相片評論者的相冊評論數減一
			List rpls = photo.getReplies();
			for(int i=0;rpls!=null&&i<rpls.size();i++){
				PhotoReplyBean prb = (PhotoReplyBean)rpls.get(i);
				if(prb.getUser()!=null){
					prb.getUser().getCount().incPhotoReplyCount(-1);
				}
			}
			
			//修改設置該照片為封面的相簿
			executeUpdate("UPDATE AlbumBean AS a SET a.cover = NULL WHERE a.cover.id=?", photo.getId());
			
			ssn.delete(photo);
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看91视频大全| 亚洲成人免费在线| 成人国产精品免费观看视频| 亚洲国产精品成人综合色在线婷婷| 蜜桃av一区二区在线观看| 欧美乱妇20p| 国产在线精品一区二区夜色| 欧美va在线播放| 国产成人在线网站| 亚洲国产成人va在线观看天堂| 欧美日韩久久久久久| 国产精品综合一区二区| 中文一区二区完整视频在线观看| 精品视频999| 欧美优质美女网站| 一本色道久久综合精品竹菊| 丰满少妇久久久久久久| 国产精品一区在线| 久久91精品国产91久久小草| 日日夜夜精品视频免费| 日本不卡视频一二三区| 日韩av电影免费观看高清完整版在线观看| 一区二区三区日韩| 亚洲自拍欧美精品| 日韩高清电影一区| 男人操女人的视频在线观看欧美 | 91精品国产91综合久久蜜臀| 欧美日韩精品一二三区| 91精品国产高清一区二区三区 | 欧美在线观看一区| 欧美色倩网站大全免费| 欧美性一二三区| 日韩三级在线免费观看| 久久婷婷国产综合精品青草| 亚洲国产精品精华液2区45| 中文字幕一区二区三区av| 亚洲男帅同性gay1069| 舔着乳尖日韩一区| 国产一区二区三区免费| av电影天堂一区二区在线观看| 色综合久久久久| 欧美一区二区三区免费| 国产女主播视频一区二区| 一区二区三区精品久久久| 午夜视频在线观看一区二区三区| 国内精品嫩模私拍在线| 欧美在线啊v一区| 亚洲成av人片观看| 狠狠色综合日日| 91污在线观看| 久久网站热最新地址| 首页亚洲欧美制服丝腿| 国产91精品入口| 欧美电影免费观看高清完整版| 国产精品久久久久久久久免费丝袜| 亚洲mv在线观看| 国产成人免费网站| 日韩一区二区中文字幕| 亚洲国产一区二区三区| 99久久精品费精品国产一区二区| 欧美成人a视频| 美女视频黄频大全不卡视频在线播放 | 成人h动漫精品一区二| 在线观看91av| 综合网在线视频| www.色精品| 国产精品国产三级国产三级人妇| 久久不见久久见免费视频7| 91精品国产综合久久精品| 伊人夜夜躁av伊人久久| 色综合久久中文综合久久牛| √…a在线天堂一区| 91香蕉视频污在线| 亚洲免费资源在线播放| 欧美在线观看视频在线| 亚洲永久免费av| 7777精品伊人久久久大香线蕉 | 免费三级欧美电影| 欧美日韩精品欧美日韩精品一综合| 欧美高清在线一区二区| 91网址在线看| 亚洲午夜影视影院在线观看| 91亚洲精品久久久蜜桃网站| 亚洲人成网站在线| 成人综合在线网站| 国产精品色噜噜| 99re这里只有精品6| 一区精品在线播放| 在线亚洲免费视频| 一区二区中文视频| 欧美三级在线看| 久久99国产乱子伦精品免费| 精品国产免费一区二区三区香蕉| 国产aⅴ精品一区二区三区色成熟| 国产精品久久久久一区二区三区 | 国产白丝网站精品污在线入口 | 日本一区二区视频在线| 91免费看片在线观看| 亚洲综合色区另类av| 欧美一级理论片| 成人午夜av电影| 日韩专区在线视频| 国产亚洲婷婷免费| 欧美日韩一级大片网址| 精品一区二区三区在线播放视频| 欧美极品xxx| 欧美妇女性影城| 国产成人精品网址| 久久九九影视网| 欧美性三三影院| 久久99精品久久久久婷婷| 夜夜亚洲天天久久| 欧美不卡一区二区三区| 欧美亚洲尤物久久| www.欧美色图| 一区二区三区欧美久久| 久久人人爽爽爽人久久久| 色呦呦一区二区三区| 精久久久久久久久久久| 日韩国产欧美在线播放| 中文字幕在线视频一区| 欧美精品一区视频| 日韩欧美www| 日韩午夜在线影院| 日韩欧美色综合网站| 99久久久久久| 成人午夜av影视| 国产成人精品影视| 黄页网站大全一区二区| 亚洲成人中文在线| 视频在线观看91| 午夜免费欧美电影| 亚洲午夜国产一区99re久久| 一区二区三区日本| 亚洲国产精品视频| 亚洲欧美日本在线| 亚洲在线视频网站| 亚洲成人综合网站| 麻豆精品国产传媒mv男同| 蜜桃av一区二区在线观看| 美女久久久精品| 国产精品一二一区| 综合久久久久久久| 男女视频一区二区| 免费成人小视频| 国产毛片一区二区| 国产成人精品免费一区二区| 波多野结衣亚洲| 99国产精品99久久久久久| 欧美人动与zoxxxx乱| 久久久精品欧美丰满| 亚洲视频免费在线观看| 亚洲超碰97人人做人人爱| 国产又粗又猛又爽又黄91精品| 99re视频精品| 欧美精品在线观看一区二区| 久久亚洲一级片| 亚洲小少妇裸体bbw| 国产jizzjizz一区二区| 日韩欧美一级在线播放| 国产精品传媒入口麻豆| 99国产一区二区三精品乱码| 国产成a人无v码亚洲福利| 91女厕偷拍女厕偷拍高清| 7777精品伊人久久久大香线蕉超级流畅| 26uuu久久天堂性欧美| 中文字幕制服丝袜一区二区三区 | 亚洲欧美另类久久久精品2019| 天天av天天翘天天综合网| 成人高清伦理免费影院在线观看| 色婷婷亚洲婷婷| 一区二区三区视频在线看| 国产a精品视频| 精品国产91久久久久久久妲己| 亚洲综合久久久| 欧美人妇做爰xxxⅹ性高电影| 亚洲美女屁股眼交3| 成人性视频免费网站| 国产欧美一二三区| 美女久久久精品| 欧美大片在线观看一区| 亚洲免费视频成人| 成人免费观看视频| 国产精品盗摄一区二区三区| 成人免费视频国产在线观看| 亚洲色图在线播放| 91色porny| 日韩成人一区二区三区在线观看| 欧美久久高跟鞋激| 水蜜桃久久夜色精品一区的特点 | 一本大道久久精品懂色aⅴ| 亚洲欧洲av一区二区三区久久| 国产毛片精品一区| 久久久久国产精品麻豆ai换脸| 波多野结衣在线aⅴ中文字幕不卡| 中文字幕欧美三区| 色系网站成人免费| 亚洲人123区| 日韩视频在线观看一区二区| 免费亚洲电影在线|