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

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

?? photodao.java

?? 個人Blog java編寫的Blog可以直接使用!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
	}
	
	/**
	 * 更新照片信息
	 * @param new_album_id
	 * @param photo
	 * @param newKeyword
	 * @param cover 是否設置為封面
	 * @throws ObjectNotFoundException 
	 * @throws IllegalAccessException 
	 */
	public static void update(int new_album_id, PhotoBean photo, String newKeyword, boolean cover)
			throws ObjectNotFoundException, IllegalAccessException {
		if(photo==null || new_album_id <1)
			return;
		
		try{
			beginTransaction();
			
			if(photo.getAlbum().getId() != new_album_id){
				//清除原有相簿的封面屬性
				if (photo.getAlbum().getCover() != null
						&& photo.getAlbum().getCover().getId() == photo.getId())
					photo.getAlbum().setCover(null);
				AlbumBean new_album = AlbumDAO.getAlbumByID(new_album_id);
				if(new_album == null)
					throw new ObjectNotFoundException(String.valueOf(new_album));
				if(new_album.getSite().getId()!=photo.getSite().getId())
					throw new IllegalAccessException(new_album.getName());
				//修改新相簿的相片數 (增一)
				AlbumBean parent = new_album;
				int deep = 0;
				do{
					if(parent == null)
						break;
					deep ++;
					parent.incPhotoCount(1);
					parent = parent.getParent();
				}while(deep < 10);//最多遍歷十級相簿
				
				//修改舊相簿的相片數(減一)
				parent = photo.getAlbum();
				deep = 0;
				do{
					if(parent == null)
						break;
					deep ++;
					parent.incPhotoCount(-1);
					parent = parent.getParent();
				}while(deep < 10);//最多遍歷十級相簿
				
				photo.setAlbum(new_album);
			}
			//設置相簿封面
			if(cover){
				photo.getAlbum().setCover(photo);
			}
			if (photo.getAlbum().getType() == AlbumBean.TYPE_PUBLIC
					&& photo.getStatus() != PhotoBean.STATUS_PRIVATE) {
				if(!StringUtils.equals(photo.getKeyword(), newKeyword)){
	
					TagDAO.deleteTagByRefId(photo.getId(), DiaryBean.TYPE_PHOTO);
					
					//更新標簽
					photo.setKeyword(newKeyword);
	
					List tags = photo.getKeywords();
					if(tags!=null && tags.size()>0){
						int tag_count = 0;
						for(int i=0;i<tags.size();i++){
							if(tag_count>=MAX_TAG_COUNT)
								break;
							String tag_name = (String)tags.get(i);
							if(tag_name.getBytes().length > MAX_TAG_LENGTH)
								continue;
							TagBean tag = new TagBean();
							tag.setSite(photo.getSite());
							tag.setRefId(photo.getId());
							tag.setRefType(DiaryBean.TYPE_PHOTO);
							tag.setName((String)tags.get(i));
							//System.out.println("************************ tagName: "+tag.getName());
							photo.getTags().add(tag);
							tag_count ++;
						}
					}
				}		
			}
			else{
				//對于有訪問權限控制的相簿中的照片,刪除其對應的標簽
				TagDAO.deleteTagByRefId(photo.getId(), DiaryBean.TYPE_PHOTO);
			}
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}
	
	/**
	 * 寫照片信息到數據庫
	 * @param album
	 * @param photo
	 * @param cover
	 * @throws IllegalAccessException 
	 * @throws ObjectNotFoundException 
	 */
	public static void create(AlbumBean album, PhotoBean photo, boolean cover) 
		throws IllegalAccessException, ObjectNotFoundException
	{
		if(photo==null || album ==null)
			throw new IllegalArgumentException();
		if(album.getSite().getId()!=photo.getSite().getId())
			throw new IllegalAccessException(album.getName());
		photo.setAlbum(album);
		
		Calendar cal = Calendar.getInstance();
		photo.setYear(cal.get(Calendar.YEAR));
		photo.setMonth((cal.get(Calendar.MONTH)+1));
		photo.setDate(cal.get(Calendar.DATE));
		photo.setCreateTime(cal.getTime());

		Session ssn = getSession();
		try{
			beginTransaction();
			//修改site的已用相冊空間
			int photo_site = DLOG4JUtils.sizeInKbytes(photo.getPhotoInfo().getSize());
			photo.getSite().getCapacity().incPhotoUsed(photo_site);
			//修改相簿的相片數
			album.setPhotoCount(album.getPhotoCount()+1);
			if(cover)
				album.setCover(photo);
			//遞歸所有父相簿
			AlbumBean parent = album.getParent();
			int deep = 0;
			do{
				if(parent == null)
					break;
				deep ++;
				parent.incPhotoCount(1);
				parent = parent.getParent();
			}while(deep < 10);//最多遍歷十級相簿

			photo.getUser().getCount().incPhotoCount(1);
			
			ssn.save(photo);
			
			if (album.getType() == AlbumBean.TYPE_PUBLIC
					&& photo.getStatus() != PhotoBean.STATUS_PRIVATE) {
				List tags = photo.getKeywords();
				if(tags!=null && tags.size()>0){
					int tag_count = 0;
					for(int i=0;i<tags.size();i++){
						if(tag_count>=MAX_TAG_COUNT)
							break;
						String tag_name = (String)tags.get(i);
						if(tag_name.getBytes().length > MAX_TAG_LENGTH)
							continue;
						TagBean tag = new TagBean();
						tag.setSite(photo.getSite());
						tag.setRefId(photo.getId());
						tag.setRefType(DiaryBean.TYPE_PHOTO);
						tag.setName(tag_name);
						ssn.save(tag);
						tag_count ++;
					}
				}
			}
			
			commit();			
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}
	
	/**
	 * 獲取某個網站當前所有照片的大小總和
	 * @param sid
	 * @param album_id
	 * @return
	 */
	public static int getTotalPhotoSize(int sid, int album_id){
		if(sid < 1)
			return -1;
		StringBuffer hql = new StringBuffer("SELECT SUM(p.photoInfo.size) FROM PhotoBean AS p WHERE p.site.id=?");
		if(album_id > 0)
			hql.append(" AND p.album.id=?");
		Session ssn = getSession();
		Query q = ssn.createQuery(hql.toString());
		q.setInteger(0, sid);
		if(album_id > 0)
			q.setInteger(1, album_id);
		try{
			Number size = (Number)q.uniqueResult();
			return (size!=null)?size.intValue():0;
		}finally{
			hql = null;
		}
	}

	/**
	 * 獲取某個網站當前所有照片總數
	 * @param sid
	 * @param album_id
	 * @return
	 */
	public static int getTotalPhotoCount(int sid, int album_id, int month){
		if(sid < 1)
			return -1;
		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 >= 190001 && month <= 209912){
			hql.append(" AND p.year = :year AND p.month = :month");
		}
		Session ssn = getSession();
		Query q = ssn.createQuery(hql.toString());
		q.setInteger("site", sid);
		if(album_id > 0)
			q.setInteger("album", album_id);
		if(month >= 190001 && month <= 209912){
			q.setInteger("year", month / 100);
			q.setInteger("month", month % 100);
		}
		try{
			Number size = (Number)q.uniqueResult();
			return (size!=null)?size.intValue():0;
		}finally{
			hql = null;
		}
	}
	
	/**
	 * 統計指定月份每天的照片數
	 * @param site
	 * @param loginUser
	 * @param month
	 * @return
	 */
	public static int[] statCalendarPhotoCount(SiteBean site, SessionUserObject user, Calendar month)
	{
		Calendar firstDate = (Calendar)month.clone();
		firstDate.set(Calendar.DATE,1);
		DateUtils.resetTime(firstDate);
		Calendar nextMonthFirstDate = (Calendar)firstDate.clone();
		nextMonthFirstDate.add(Calendar.MONTH,1);
		
		//計算指定月份有多少天
		Calendar tempCal = (Calendar)nextMonthFirstDate.clone();
		tempCal.add(Calendar.DATE,-1);
		int dateCount = tempCal.get(Calendar.DATE);			
		int[] logCounts = new int[dateCount+1];
		
		//查詢出當月的所有照片進行統計
		boolean is_owner = site.isOwner(user);
		StringBuffer hql = new StringBuffer("SELECT j.createTime FROM PhotoBean AS j WHERE j.createTime>=:beginTime AND j.createTime<:endTime AND j.site.id=:site");
		if(!is_owner){
			//排除用戶沒有權限訪問的分類
			hql.append(" AND j.status=:status AND j.album.type=:album_type");
		}
				
		try{
			Session ssn = getSession();
			Query q = ssn.createQuery(hql.toString()).setCacheable(true);
			q.setTimestamp("beginTime", firstDate.getTime());
			q.setTimestamp("endTime", nextMonthFirstDate.getTime());
			q.setInteger("site", site.getId());
			if(!is_owner){
				q.setInteger("status", PhotoBean.STATUS_NORMAL);
				q.setInteger("album_type", AlbumBean.TYPE_PUBLIC);
			}
			int total = 0;
			Iterator logs = q.list().iterator();
			while(logs.hasNext()){
				tempCal.setTime((Date)logs.next());
				int date = tempCal.get(Calendar.DATE);
				logCounts[date]++;
				total ++;
			}
			
			logCounts[0] = total;  
			
			return logCounts;
		}finally{
			hql = null;
			firstDate = null;
			nextMonthFirstDate = null;
			tempCal = null;
		}
	}
		
	/**
	 * @see com.liusoft.dlog4j.search.SearchDataProvider#fetchAfter(Date)
	 */
	public List fetchAfter(Date beginTime) throws Exception {
		return findNamedAll("LIST_PHOTO_AFTER", new Object[]{beginTime,
				PhotoBean.I_STATUS_NORMAL, AlbumBean.I_TYPE_PRIVATE});
	}
	/**
	 * 返回指定站點的相片評論總數
	 * @param site
	 * @return
	 */
	public static int getPhotoReplyCount(int site){
		String hql = "SELECT COUNT(*) FROM PhotoReplyBean AS d WHERE d.status=?";
		if(site>0){
			hql += " AND d.site.id=?";
			return executeStatAsInt(hql, PhotoReplyBean.STATUS_NORMAL, site);
		}
		return executeStatAsInt(hql, PhotoReplyBean.STATUS_NORMAL);
	}
	/**
	 * 獲取相冊評論總數(p_replies.vm)
	 * @param site
	 * @param user
	 * @param fromIdx
	 * @param count
	 * @return
	 */
	public static int getPhotoReplyCount(SiteBean site, SessionUserObject user){
		boolean is_owner = site.isOwner(user);
		StringBuffer hql = new StringBuffer("SELECT COUNT(*) FROM PhotoReplyBean AS r WHERE r.status=? AND r.site.id=?");
		if(!is_owner){
			//排除用戶沒有權限訪問的分類
			hql.append(" AND r.photo.album.type=? AND r.photo.status=?");
			return executeStatAsInt(hql.toString(),PhotoReplyBean.STATUS_NORMAL,site.getId(),AlbumBean.TYPE_PUBLIC,PhotoBean.STATUS_NORMAL);
		}
		return executeStatAsInt(hql.toString(),PhotoReplyBean.STATUS_NORMAL,site.getId());
	}
	/**
	 * 列出最新照片評論
	 * @param site
	 * @param user
	 * @param fromIdx
	 * @param count
	 * @return
	 */
	public static List listPhotoReplies(SiteBean site, int fromIdx, int count, SessionUserObject user){
		boolean is_owner = site.isOwner(user);
		StringBuffer hql = new StringBuffer("FROM PhotoReplyBean AS r WHERE r.status=:status AND r.site.id=:site AND r.photo.status=:photo_status");
		if(!is_owner){
			//排除用戶沒有權限訪問的分類
			hql.append(" AND r.photo.album.type=:album_type");
			hql.append(" AND (r.ownerOnly = 0 OR r.user.id=:userid)");
		}
		hql.append(" ORDER BY r.id DESC");
		Session ssn = getSession();
		Query q = ssn.createQuery(hql.toString());
		q.setInteger("status", PhotoReplyBean.STATUS_NORMAL);
		q.setInteger("photo_status", PhotoBean.STATUS_NORMAL);
		q.setInteger("site", site.getId());
		if(!is_owner){
			q.setInteger("album_type", AlbumBean.TYPE_PUBLIC);
			q.setInteger("userid", (user!=null)?user.getId():-1);
		}
		if(fromIdx>0)
			q.setFirstResult(fromIdx);
		if(count>0)
			q.setMaxResults(count);
		return q.list();
	}
	
	/**
	 * 分頁列出某張照片的評論
	 * @param log_id
	 * @param fromIdx
	 * @param count
	 * @return
	 */
	public static List listPhotoReplies(int photo_id, int fromIdx, int count){
		return executeNamedQuery("REPLIES_OF_PHOTO",fromIdx,count,photo_id);
	}
	
	/**
	 * 創建照片評論,自動更新對應照片的評論數
	 * 當評論數超過最大的允許評論數后自動鎖貼
	 * @param reply
	 */
	public static void createPhotoReply(PhotoReplyBean reply){
		try{
			Session ssn = getSession();
			int max_reply_count = ConfigDAO.getMaxReplyCount(reply.getSite().getId());
			beginTransaction();	
			reply.getPhoto().incReplyCount(1);
			if(reply.getPhoto().getReplyCount()>=max_reply_count)
				reply.getPhoto().setLock(1);
			reply.getPhoto().setLastReplyTime(new Date());
			if(reply.getUser()!=null)
				reply.getUser().getCount().incPhotoReplyCount(1);
			ssn.save(reply);
			commit();
		}catch(HibernateException e){
			rollback();
			throw e;
		}
	}
	/**
	 * 刪除照片評論,自動減少對應照片的評論數
	 * @param reply
	 */
	public static void deletePhotoReply(PhotoReplyBean reply){
		Session ssn = getSession();
		try{
			beginTransaction();	
			reply.getPhoto().incReplyCount(-1);
			if(reply.getUser()!=null)
				reply.getUser().getCount().incPhotoReplyCount(-1);
			ssn.delete(reply);
			commit();
		}catch(HibernateException e){
			rollback();
		}
	}
	/**
	 * 讀取某個時間點以后的所有正常的評論(SearchEnginePlugIn::buildReplyIndex)
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public static List listPhotoRepliesAfter(Date date){
		return executeNamedQuery("LIST_PHOTO_REPLIES_AFTER", -1, -1, new Object[]{date,
				_ReplyBean.I_STATUS_NORMAL, PhotoBean.I_STATUS_NORMAL,
				AlbumBean.I_TYPE_PRIVATE});
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97成人超碰视| av影院午夜一区| 一区二区三区四区高清精品免费观看 | 亚洲欧洲三级电影| 国产精品无人区| 欧美激情中文字幕| 国产精品久久久久久久久晋中 | 成人sese在线| av成人免费在线观看| 色婷婷综合久久久久中文一区二区 | 欧美精品亚洲一区二区在线播放| 91欧美一区二区| 91色九色蝌蚪| 欧美日韩午夜在线视频| 欧美另类高清zo欧美| 欧美一级在线视频| 久久久国产午夜精品 | 色综合久久中文字幕| 色av综合在线| 日韩一卡二卡三卡四卡| 日韩欧美成人激情| 色综合天天综合给合国产| 99国产精品久久久久久久久久| 成人激情校园春色| 精品视频资源站| ww亚洲ww在线观看国产| 中文字幕一区二区三区在线不卡| 一区二区理论电影在线观看| 亚洲一区二区欧美| 激情丁香综合五月| 91老师片黄在线观看| 欧美一区二区成人| 国产精品网站在线播放| 亚洲影院在线观看| 国产一区中文字幕| 欧美系列一区二区| 国产亚洲精品精华液| 亚洲精品国产成人久久av盗摄| 亚洲欧美日韩一区二区三区在线观看| 亚洲综合色噜噜狠狠| 极品少妇xxxx精品少妇| 色欧美片视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品美女久久久久久久网站| 亚洲一区二区在线播放相泽| 国产精品一区二区你懂的| 欧洲人成人精品| 中文无字幕一区二区三区| 五月综合激情日本mⅴ| 成人午夜激情在线| 精品成a人在线观看| 亚洲一区二区三区在线播放| 国产成人免费视频网站高清观看视频 | 欧美视频一区二| 中日韩免费视频中文字幕| 天天操天天干天天综合网| 91亚洲国产成人精品一区二三| 26uuu国产在线精品一区二区| 亚洲一区二区三区四区在线| 成人少妇影院yyyy| 精品91自产拍在线观看一区| 亚洲成av人片在www色猫咪| jizz一区二区| 国产日韩欧美高清在线| 狠狠色丁香九九婷婷综合五月| 在线视频一区二区三区| 国产色91在线| 久久er精品视频| 日韩欧美国产系列| 日本vs亚洲vs韩国一区三区二区| 欧美唯美清纯偷拍| 亚洲一级二级在线| 日本道精品一区二区三区| 中文字幕欧美一| 成人av网址在线观看| 国产日本一区二区| 国产一区二区三区免费看| 欧美mv和日韩mv的网站| 美女视频黄频大全不卡视频在线播放| 欧美日本一区二区三区| 亚洲 欧美综合在线网络| 欧美亚洲一区二区在线观看| 亚洲一区二区三区四区五区中文 | 精品视频一区二区三区免费| 一区二区三区中文字幕电影| 91片黄在线观看| 亚洲电影第三页| 91精品国产综合久久久久久久久久 | 日韩精品资源二区在线| 美女高潮久久久| 国产亚洲制服色| eeuss鲁一区二区三区| 国产精品成人在线观看| 色综合天天综合狠狠| 亚洲高清一区二区三区| 日韩一区二区在线看| 国产一区二区三区四区五区入口| 久久久久久影视| 国产精华液一区二区三区| 国产精品国产三级国产普通话三级| 成人高清视频免费观看| 亚洲欧美日本在线| 3d成人h动漫网站入口| 国产在线精品一区二区夜色| 国产精品久久777777| 欧美三区在线视频| 国产在线精品视频| 亚洲男人的天堂一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 天天色图综合网| 精品国产在天天线2019| 成人精品一区二区三区中文字幕 | 日韩精品电影在线| www国产精品av| 一本久久a久久精品亚洲| 免费成人美女在线观看.| 久久精品视频一区二区三区| 色悠久久久久综合欧美99| 久久精品国产亚洲a| 国产精品不卡在线| 日韩小视频在线观看专区| av资源网一区| 久久成人麻豆午夜电影| 亚洲人成亚洲人成在线观看图片| 这里只有精品免费| 色综合一区二区| 国产成人精品亚洲日本在线桃色| 亚洲午夜免费电影| 国产精品久99| 久久天堂av综合合色蜜桃网| 欧美日韩中文字幕精品| 99精品在线观看视频| 国产麻豆精品95视频| 日本欧美韩国一区三区| 一区二区三区中文在线观看| 国产欧美日韩久久| 337p日本欧洲亚洲大胆色噜噜| 欧美乱妇20p| 欧美日韩久久一区| 日本福利一区二区| 97久久超碰国产精品电影| 国产成a人亚洲精品| 国内成人精品2018免费看| 免费在线看一区| 日本va欧美va精品发布| 亚瑟在线精品视频| 亚洲成人福利片| 亚洲国产aⅴ天堂久久| 亚洲制服丝袜在线| 亚洲麻豆国产自偷在线| 亚洲私人影院在线观看| 亚洲欧洲精品成人久久奇米网| 久久久www成人免费无遮挡大片| 日韩欧美成人激情| 欧美成人伊人久久综合网| 欧美一区二区三区四区久久| 欧美久久婷婷综合色| 欧美日韩一区二区三区不卡| 欧美吻胸吃奶大尺度电影| 欧美羞羞免费网站| 在线播放/欧美激情| 在线综合视频播放| 欧美一级片在线看| 精品久久五月天| 久久精品一区二区| 欧美国产日韩亚洲一区| 亚洲日本成人在线观看| 亚洲一区二区三区视频在线| 天天操天天综合网| 国产专区欧美精品| 成人夜色视频网站在线观看| www.99精品| 一本到不卡精品视频在线观看 | 欧美一区二区在线视频| 精品国精品自拍自在线| 国产精品久久久久久久久久免费看 | 亚洲欧洲另类国产综合| 亚洲精品高清视频在线观看| 亚洲午夜免费电影| 国产在线精品一区在线观看麻豆| 国产高清成人在线| 色欧美片视频在线观看在线视频| 欧美猛男男办公室激情| 26uuu国产电影一区二区| 中文字幕一区二区三区不卡| 亚洲高清不卡在线观看| 欧美视频一区二区三区在线观看| 欧美日本韩国一区二区三区视频| 2欧美一区二区三区在线观看视频| 久久精品亚洲一区二区三区浴池| 亚洲色图欧美在线| 奇米色一区二区| 成人免费视频视频在线观看免费| 一本色道综合亚洲| 久久精品夜色噜噜亚洲aⅴ| 亚洲v中文字幕| 波波电影院一区二区三区| 欧美一级专区免费大片| 亚洲另类春色国产| 国产不卡视频在线观看|