亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品一二三四在线| 亚洲欧美日韩中文字幕一区二区三区 | 欧美一区二区啪啪| 欧美变态tickle挠乳网站| 国产精品午夜久久| 亚洲一区二区精品久久av| 看电影不卡的网站| www.在线欧美| 日韩一区二区视频| 国产精品另类一区| 天天综合网天天综合色| 国产一区二区在线免费观看| 一本到不卡免费一区二区| 日韩欧美色电影| 亚洲欧美另类小说| 久久www免费人成看片高清| 波多野结衣91| 精品国产乱码久久久久久久| 国产精品久久久久aaaa樱花| 日韩**一区毛片| 91免费观看在线| 精品少妇一区二区| 亚洲一区二区四区蜜桃| 国产一区91精品张津瑜| 欧美日韩另类一区| 国产欧美日韩中文久久| 五月婷婷欧美视频| 99久久精品国产毛片| 精品国产伦一区二区三区免费| 一区二区三区四区五区视频在线观看 | 欧美性猛片xxxx免费看久爱| 久久久久国产精品麻豆ai换脸| 亚洲成人一二三| 91蝌蚪porny| 欧美激情一区二区在线| 美国欧美日韩国产在线播放| 欧美亚洲日本国产| 综合精品久久久| 国产精品中文字幕欧美| 91精品国产美女浴室洗澡无遮挡| 亚洲日本电影在线| 国产高清成人在线| 欧美不卡在线视频| 日韩国产欧美在线观看| 色94色欧美sute亚洲线路一ni| 国产欧美一区二区精品性| 激情另类小说区图片区视频区| 欧美日韩国产美| 夜夜操天天操亚洲| 91在线视频免费观看| 国产日韩精品一区二区三区在线| 久久99精品网久久| 日韩一区二区三区视频| 日韩影院精彩在线| 欧美日韩一区三区| 亚洲一级在线观看| 在线精品视频一区二区三四| 中文字幕一区二区三区不卡| 国产91在线观看| 久久综合资源网| 久久精品国产99久久6| 在线成人av网站| 亚洲mv在线观看| 欧美天堂亚洲电影院在线播放| 亚洲桃色在线一区| 色综合天天性综合| 亚洲精品中文字幕乱码三区| 99久久综合色| 亚洲欧美日韩国产一区二区三区| 99久久亚洲一区二区三区青草| 国产精品二区一区二区aⅴ污介绍| 懂色中文一区二区在线播放| 欧美国产精品一区二区三区| 福利一区二区在线| 国产精品视频观看| 91影视在线播放| 伊人性伊人情综合网| 欧美综合一区二区| 亚洲电影第三页| 欧美精品丝袜久久久中文字幕| 蜜臀久久99精品久久久久久9| 日韩欧美一区中文| 国产在线一区观看| 欧美激情一区二区| 97se亚洲国产综合自在线| 亚洲摸摸操操av| 欧美午夜一区二区三区| 日韩福利电影在线| 精品国产一区二区三区av性色 | 中文字幕永久在线不卡| 91亚洲国产成人精品一区二三 | 日韩一级视频免费观看在线| 毛片av一区二区三区| 久久久av毛片精品| 99视频精品在线| 亚洲国产另类av| 日韩亚洲欧美中文三级| 国产一区二区久久| 亚洲视频在线一区观看| 欧美精品三级日韩久久| 久久福利资源站| 国产精品不卡视频| 欧美丝袜丝nylons| 另类成人小视频在线| 久久久久久久免费视频了| gogo大胆日本视频一区| 亚洲国产成人av好男人在线观看| 日韩午夜激情电影| 成人天堂资源www在线| 一区2区3区在线看| 精品对白一区国产伦| av亚洲精华国产精华精华| 视频一区二区国产| 中文成人av在线| 欧美日本免费一区二区三区| 国产盗摄一区二区| 亚洲一区免费观看| 国产日本一区二区| 欧美日韩一区二区欧美激情| 国产精品一品视频| 亚洲国产精品嫩草影院| 欧美精品一区二区三区四区| 色欧美88888久久久久久影院| 蜜桃一区二区三区在线观看| 亚洲私人影院在线观看| 日韩欧美高清在线| 91丨国产丨九色丨pron| 日韩电影网1区2区| 中文字幕第一区综合| 欧美亚洲图片小说| 国产99精品国产| 亚洲第一久久影院| 久久久欧美精品sm网站| 色香色香欲天天天影视综合网| 五月婷婷久久综合| 国产人成亚洲第一网站在线播放| 色婷婷综合激情| 日本在线不卡一区| 国产精品久久毛片a| 欧美理论片在线| www.色综合.com| 青青国产91久久久久久| 中文字幕一区二区三区不卡在线| 8v天堂国产在线一区二区| 91首页免费视频| 久久精品国产99国产精品| 一区二区三区在线观看国产| 久久久综合九色合综国产精品| 国产在线播放一区二区三区| 日韩精品欧美成人高清一区二区| 中文字幕在线一区免费| 欧美tickle裸体挠脚心vk| 不卡一区中文字幕| 国产一区二区影院| 舔着乳尖日韩一区| 成人欧美一区二区三区小说| 欧美成人伊人久久综合网| 正在播放亚洲一区| 99麻豆久久久国产精品免费| 韩国成人福利片在线播放| 亚洲地区一二三色| 国产欧美久久久精品影院| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美中文一区二区三区| 成人性生交大片免费| 蜜臂av日日欢夜夜爽一区| 亚洲欧美日韩国产综合| 久久综合一区二区| 欧美一区二区三区爱爱| 欧美色图一区二区三区| 91美女在线看| 国产suv精品一区二区883| 美女性感视频久久| 亚洲成av人片一区二区梦乃| 久久精品水蜜桃av综合天堂| 欧美精品一区视频| 日韩精品在线一区二区| 欧美军同video69gay| 色婷婷综合视频在线观看| 在线观看一区日韩| 99久久伊人网影院| 丁香婷婷综合激情五月色| 成人app网站| 国产99久久精品| 国产sm精品调教视频网站| 经典三级一区二区| 国产成人一级电影| 国产一区二区在线看| 国产一区二区视频在线| 国产精品456露脸| 国产精品伊人色| 国产黄色成人av| 国产一区二区三区香蕉| 国产成人精品免费网站| 国产高清一区日本| 成人永久免费视频| 国产最新精品精品你懂的| 国产最新精品免费| 国产成人在线免费观看| 成人黄色小视频在线观看|