package org.yeeku.service;
import org.yeeku.model.*;
import org.yeeku.dao.*;
import org.yeeku.dao.impl.*;
import org.yeeku.util.HibernateUtil;
import org.yeeku.vo.*;
import java.util.List;
import java.util.ArrayList;
import java.io.Serializable;
import org.hibernate.*;
import javax.servlet.http.HttpServletRequest;
/**
* @author yeeku.H.lee kongyeeku@163.com
* @version 1.0
* <br>Copyright (C), 2005-2008, yeeku.H.Lee
* <br>This program is protected by copyright laws.
* <br>Program Name:
* <br>Date:
*/
public class AlbumService implements Serializable
{
private UserDao ud = null;
private PhotoDao pd = null;
public AlbumService()
{
ud = new UserDaoImpl();
pd = new PhotoDaoImpl();
}
/**
* 验证用户登陆是否成功,如果登陆成功,将用户名添加到session中。
* @param user 登陆用的用户名
* @param pass 登陆用的密码
* @param request 直接使用的HttpServletRequest
*/
public boolean login(String user , String pass , HttpServletRequest request)
{
Session s = HibernateUtil.currentSession();
Transaction tx = s.beginTransaction();
User u = ud.findByName(s , user);
if (u != null && u.getPass().equals(pass))
{
System.out.println(request);
request.getSession().setAttribute("user" , user);
tx.commit();
HibernateUtil.closeSession();
return true;
}
tx.rollback();
HibernateUtil.closeSession();
return false;
}
/**
* 添加新用户
* @param user 添加的用户名
* @param pass 用户对应的密码
* @param request 对于该Web应用的HttpServletRequest对象
* @return 添加用户的结果,成功返回true,否则返回false
*/
public boolean addUser(String user , String pass ,HttpServletRequest request)
{
try
{
Session s = HibernateUtil.currentSession();
Transaction tx = s.beginTransaction();
User u = new User();
u.setName(user);
u.setPass(pass);
ud.save(s , u);
tx.commit();
HibernateUtil.closeSession();
request.getSession().setAttribute("user" , user);
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
/**
* 添加照片
* @param user 添加相片的用户
* @param pass 添加相片的标题
* @param fileName 添加相片的文件名
* @return 添加相片的结果。成功返回true,否则返回false
*/
public boolean addPhoto(String user , String title , String fileName)
{
Session s = HibernateUtil.currentSession();
Transaction tx = s.beginTransaction();
Photo p = new Photo();
p.setTitle(title);
p.setFileName(fileName);
p.setUser(ud.findByName(s , user));
pd.save(s , p);
tx.commit();
HibernateUtil.closeSession();
return true;
}
/**
* 根据用户获得该用户的所有相片
* @param user 当前用户
* @param pageNo 页码
* @return 返回当前用户指定页的相片
*/
public List<PhotoHolder> getPhotoByUser(String user , int pageNo)
{
Session s = HibernateUtil.currentSession();
Transaction tx = s.beginTransaction();
List pl = pd.findByUser(s , ud.findByName(s , user) , pageNo);
List<PhotoHolder> result = new ArrayList<PhotoHolder>();
for (Object o : pl )
{
Photo p = (Photo)o;
result.add(new PhotoHolder(p.getTitle() , p.getFileName()));
}
tx.commit();
HibernateUtil.closeSession();
return result;
}
/**
* 验证用户名是否可用,即数据库里是否已经存在该用户名
* @param user 需要校验的用户名
* @return 校验该用户名后返回的字符串,该字符串会直接发送给浏览者
*/
public String valid(String user)
{
Session s = HibernateUtil.currentSession();
Transaction tx = s.beginTransaction();
User u = ud.findByName(s , user);
if (u != null)
{
tx.commit();
HibernateUtil.closeSession();
return "该用户名已经被使用了,请选择新用户名";
}
tx.commit();
HibernateUtil.closeSession();
return "这用户名还没有被使用,您可以使用该用户名";
}
}