package c18.service;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.upload.FormFile;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import c18.dao.CategoryDao;
import c18.dao.CategoryDaoImpl;
import c18.dao.HibernateSessionFactory;
import c18.dao.BookDao;
import c18.dao.BookDaoImpl;
import c18.entity.Book;
import c18.entity.BookCategory;
import c18.entity.Category;
import c18.helper.PageBean;
import c18.helper.PageResult;
import c18.struts.action.exception.ActionException;
import c18.struts.action.exception.ExistChildActionException;
import c18.struts.action.exception.ExistNameActionException;
import c18.struts.action.exception.ExistReferActionException;
import c18.struts.action.exception.NotFindActionException;
import c18.struts.action.exception.SaveBookImageFailActionException;
public class BookServiceImpl implements BookService {
/**
* 日志操作对象
*/
private static final Log log = LogFactory.getLog(BookServiceImpl.class);
public PageResult getBooks(PageBean pageBean) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
//组建BookDao对象
BookDao bookDao = new BookDaoImpl(session);
//查询
return bookDao.getBooks(pageBean);
}
public void addBook(Book book, FormFile imageFile, String appPath, int[] categoryNos)
throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
//组建BookDao对象
BookDao bookDao = new BookDaoImpl(session);
//设置余量为总数量
book.setRemain(book.getAmount());
bookDao.save(book);
if(imageFile != null
&& imageFile.getFileName() != null
&& !imageFile.getFileName().trim().equals("")){
//保存图片到"/images/book/" + bookNo目录下
//去掉appPath结尾的/或\
if (appPath != null) {
if (appPath.endsWith(File.separator)) {
appPath = appPath.substring(0, appPath.length() - 1);
}
}
String path = appPath + File.separator + "images" + File.separator
+ "book" + File.separator + book.getBookNo();
if (saveFile(imageFile, path) < 0) { //保存失败
log.error("保存图书图片失败");
//回滚
session.getTransaction().rollback();
throw new SaveBookImageFailActionException("保存图书图片失败");
}
}
//增加分类关系
if(categoryNos != null){
for(int i=0; i<categoryNos.length; i++){
BookCategory bookcategory = new BookCategory();
bookcategory.setBookNo(book.getBookNo());
bookcategory.setCategoryNo(categoryNos[i]);
bookDao.save(bookcategory);
}
}
//提交
session.getTransaction().commit();
}
private int saveFile(FormFile imageFile, String path) {
//判断路径是否存在
File pathfile = new File(path);
if (pathfile.exists()) { //已存在同名的
if (!pathfile.isDirectory()) { //不是目录
log.error("存在同名,但不是目录");
return -1;
}
} else {//不存在,创建目录
if (!pathfile.mkdirs()) { //创建目录不成功
log.error("创建目录[" + path + "]不成功");
return -2;
}
}
//判断是否存在同名文件
pathfile = new File(path + File.separator + imageFile.getFileName());
if (pathfile.exists()) { //已存在同名文件,删除
if (!pathfile.delete()) {
log.error("已存在同名文件[" + path + File.separator
+ imageFile.getFileName() + "],删除不成功");
return -3;
}
}
//保存文件
try {
InputStream stream = imageFile.getInputStream();//把文件读入
//建立一个输出流,将文件存入目录path。
OutputStream bos = new FileOutputStream(path + File.separator
+ imageFile.getFileName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);//将文件写入服务器
}
bos.close();
stream.close();
} catch (FileNotFoundException e) {
log.error(e);
return -4;
} catch (IOException e) {
log.error(e);
return -5;
}
return 0;
}
public List getCategorys() throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//查询
return categoryDao.getCategorys();
}
public List getCategorys(int categoryNo) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//查询
return categoryDao.getCategorys(categoryNo);
}
public Category getCategory(int categoryNo) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//查询
return categoryDao.get(categoryNo);
}
public void addCategory(Category category) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//判断是否有同名分类
List list = categoryDao.findByName(category.getName());
if (list != null && list.size() > 0) {//存在同名分类
//回滚
session.getTransaction().rollback();
log.debug("存在同名分类,addCategory()失败");
throw new ExistNameActionException("已存在同名分类,请输入其它分类名");
}
categoryDao.save(category);
//提交
session.getTransaction().commit();
}
public void delCategory(int categoryNo) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//判断是否存在分类
Category category = categoryDao.get(categoryNo);
if (category == null) { //不存在分类
//回滚
session.getTransaction().rollback();
log.debug("不存在此分类,delCategory()失败");
throw new NotFindActionException("不存在此分类");
}
//判断是否存在子分类
List list = categoryDao.getCategorys(category.getCategoryNo());
if (list != null && list.size() > 0) {
//存在子分类
//回滚
session.getTransaction().rollback();
log.debug("存在子分类,delCategory()失败");
throw new ExistChildActionException("此分类存在子分类,请先删除子分类");
}
try {
categoryDao.remove(category);
} catch (HibernateException e) { //删除错误,回滚
//回滚
session.getTransaction().rollback();
log.debug("可能存在其它引用,delCategory()失败");
throw new ExistReferActionException("此分类可能存在引用,请先删除相关引用");
}
//提交
session.getTransaction().commit();
}
public void modCategory(Category category) throws ActionException {
//得到当前Session
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
//组建CategoryDao对象
CategoryDao categoryDao = new CategoryDaoImpl(session);
//判断是否存在分类
Category modcategory = categoryDao.get(category.getCategoryNo());
if (modcategory == null) { //不存在分类
//回滚
session.getTransaction().rollback();
log.debug("不存在此分类,modCategory()失败");
throw new NotFindActionException("不存在此分类");
}
if (modcategory.getName() != null
&& !modcategory.getName().equals(category.getName())) {
//判断是否有同名分类
List list = categoryDao.findByName(category.getName());
if (list != null && list.size() > 0) {
//回滚
session.getTransaction().rollback();
log.debug("存在同名分类,modCategory()失败");
throw new ExistN
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
struts+hibernate图书借阅管理系统 (245个子文件)
book_category.css 797B
defaultpage.css 279B
Thumbs.db 66KB
Thumbs.db 15KB
Thumbs.db 14KB
Thumbs.db 14KB
Thumbs.db 13KB
Thumbs.db 9KB
Thumbs.db 6KB
tushu.gif 6KB
b_center_button_newbook.gif 291B
m_center_button_moreinfo.gif 250B
m_icon_arrow4.gif 102B
hibernate3.jar 1.88MB
struts.jar 531KB
mysql-connector-java-5.0.4-bin.jar 484KB
antlr.jar 350KB
dom4j-1.6.jar 306KB
cglib-2.1.3.jar 276KB
ehcache-1.2.3.jar 203KB
commons-collections.jar 167KB
commons-beanutils.jar 116KB
commons-digester.jar 107KB
commons-validator.jar 82KB
jakarta-oro.jar 64KB
commons-logging-1.0.4.jar 37KB
asm.jar 26KB
commons-fileupload.jar 22KB
jta.jar 9KB
BookServiceImpl.java 15KB
BorrowServiceImpl.java 9KB
UserServiceImpl.java 6KB
BookDaoImpl.java 6KB
BookForm.java 6KB
BorrowDaoImpl.java 5KB
RegisterForm.java 5KB
UserSession.java 4KB
UserDaoImpl.java 3KB
PageBean.java 3KB
BookService.java 3KB
BorrowInfoByPreAction.java 3KB
BorrowInfoAction.java 3KB
CategoryAddSubAction.java 3KB
PreBorrowInfoAction.java 3KB
HibernateSessionFactory.java 3KB
BookCategoryAction.java 3KB
CategoryModSubAction.java 3KB
CategoryDelSubAction.java 3KB
BorrowDao.java 2KB
LoginAction.java 2KB
BookModAction.java 2KB
CategoryModAction.java 2KB
UserDelSubAction.java 2KB
BookDao.java 2KB
BookAddSubAction.java 2KB
BorrowSubAction.java 2KB
PreBorrowAction.java 2KB
BookModSubAction.java 2KB
CategoryDaoImpl.java 2KB
BookDelSubAction.java 2KB
CategoryMainAction.java 2KB
BookInfoAction.java 2KB
CategoryAddAction.java 2KB
BookQueryAction.java 2KB
Book.java 2KB
User.java 2KB
UserService.java 2KB
CancelPreBorrowAction.java 2KB
UserModSubAction.java 2KB
ReturnSubAction.java 2KB
UserInfoAction.java 2KB
RegisterAction.java 2KB
CategoryForm.java 2KB
BorrowService.java 2KB
MyPreBorrowAction.java 2KB
ConvertUtil.java 2KB
MyAccountAction.java 2KB
MyBorrowAction.java 2KB
BookMainAction.java 2KB
BookAllAction.java 2KB
UserManAction.java 2KB
BookManAction.java 2KB
BookAddAction.java 2KB
UserDao.java 2KB
MainAction.java 2KB
LogoutAction.java 1KB
CategoryDao.java 1KB
PreBorrow.java 1KB
PageDao.java 1KB
Borrow.java 1KB
Category.java 1023B
LoginForm.java 839B
Renew.java 835B
GbkFilter.java 817B
BookCategory.java 814B
PageResult.java 707B
ActionException.java 471B
Service.java 435B
SaveBookImageFailActionException.java 278B
InvalidPasswordActionException.java 272B
共 245 条
- 1
- 2
- 3
资源评论
FG2006
- 粉丝: 396
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功