?? linkdao.java
字號:
/*
* LinkDAO.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.util.List;
import org.hibernate.HibernateException;
import com.liusoft.dlog4j.base.Orderable;
import com.liusoft.dlog4j.beans.LinkBean;
import com.liusoft.dlog4j.beans.SiteBean;
/**
* 友情鏈接的數據庫訪問接口
* @author liudong
*/
public class LinkDAO extends DAO {
/**
* 獲取友情鏈接數
* @param site
* @return
*/
public static int getLinkCount(SiteBean site){
if(site == null)
return -1;
return executeNamedStatAsInt("GET_LINK_COUNT", site.getId());
}
/**
* 分頁列出某個網站的所有友情鏈接,主要用于WML頁面,因為HTML頁面無需分頁可以直接從site.links獲取
* @param site
* @param fromIdx
* @param count
* @return
*/
public static List getLinksOfSite(SiteBean site, int fromIdx, int count){
if(site == null)
return null;
return executeNamedQuery("LIST_LINKS", fromIdx, count, site.getId());
}
/**
* 判斷友情鏈接中是不是已經包含有某個網站的鏈接
* @param site
* @param lnk_site_id
* @return
*/
public static boolean isInnerSiteExists(SiteBean site, int lnk_site_id) {
return executeNamedStatAsInt("CHECK_LINK_URL", new Object[] {
new Integer(site.getId()), new Integer(LinkBean.TYPE_INNER),
String.valueOf(lnk_site_id) }) > 0;
}
/**
* 添加友情鏈接
* @param lnk
* @param pos
* @param dir
* @throws SQLException
*/
public static void create(LinkBean lnk, int pos, boolean up){
int order_value = 1;
if(pos > 0){
LinkBean friend = (LinkBean)getBean(LinkBean.class, pos);
order_value = friend.getSortOrder();
}
lnk.setSortOrder(order_value - (up?1:0));
try{
beginTransaction();
getSession().save(lnk);
//重新讀取鏈接列表,依照順序進行整理
List links = findNamedAll("LIST_LINKS", lnk.getSiteId());
for(int i=0;i<links.size()&&links.size()>1;i++){
LinkBean lb = (LinkBean)links.get(i);
executeNamedUpdate("UPDATE_LINK_ORDER", (i+1), lb.getId());
}
commit();
}catch(HibernateException e){
rollback();
throw e;
}
}
/**
* 根據編號來獲取鏈接信息
* @param site
* @param lnk_id
* @return
*/
public static LinkBean getLinkByID(int lnk_id){
if(lnk_id < 0)
return null;
return (LinkBean)getBean(LinkBean.class, lnk_id);
}
/**
* 刪除友情鏈接
* @param siteid
* @param linkid
* @return
* @throws SQLException
*/
public static int delete(int siteid, int linkid){
return commitNamedUpdate("DELETE_LINK", siteid, linkid);
}
/**
* 更新鏈接
* @param lnk
*/
public static void update(LinkBean lnk){
flush();
}
/**
* 調整鏈接順序
* 由于在創建鏈接的時候已經可以保證所有鏈接是有序的遞增的
* 因此直接交換兩個鏈接的排序值即可
* @param site
* @param linkid
* @param up 向上調整或者向下調整
* @throws SQLException
*/
public static void move(SiteBean site, int linkid, boolean up){
List links = site.getLinks();
for(int i=0;i<links.size();i++){
Orderable link = (Orderable)links.get(i);
int sort_order = link.getSortOrder();
if(link.getId()==linkid){
if(up){
if(i > 0){
try{
Orderable prev = (Orderable)links.get(i-1);
int prev_order = prev.getSortOrder();
beginTransaction();
executeNamedUpdate("UPDATE_LINK_ORDER", sort_order, prev.getId());
executeNamedUpdate("UPDATE_LINK_ORDER", prev_order, link.getId());
commit();
}catch(HibernateException e){
rollback();
throw e;
}
}
}
else{
if(i < (links.size()-1)){
try{
Orderable next = (Orderable)links.get(i+1);
int next_order = next.getSortOrder();
beginTransaction();
executeNamedUpdate("UPDATE_LINK_ORDER", sort_order, next.getId());
executeNamedUpdate("UPDATE_LINK_ORDER", next_order, link.getId());
commit();
}catch(HibernateException e){
rollback();
throw e;
}
}
}
break;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -