bookserviceimpl.java

来自「一个基本的图书馆管理系统」· Java 代码 · 共 532 行 · 第 1/2 页

JAVA
532
字号
		modcategory.setRemark(category.getRemark());
		
		categoryDao.update(modcategory);
		//提交
		session.getTransaction().commit();
	}

	public List getSortCategorys() throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建CategoryDao对象
		CategoryDao categoryDao = new CategoryDaoImpl(session);

		//查询
		List list = categoryDao.getCategorys();
		
		return sortCategorys(list);
	}
	
	/**
	 * 排序分类
	 * @param list
	 * @return
	 */
	private List sortCategorys(List list){
		if(list == null){
			return null;
		}
		
		Category c1 = null, c2 = null;
		int count = list.size();
		int i = 0, j = 0, k = 0;
		
		boolean bl = false;
		if (count > 0) {
			for (i = 0; i < count; i++) {
				bl = false;
				for (j = i + 1; j < count; j++) {
					c1 = (Category) list.get(i);
					c2 = (Category) list.get(j);
					if (c1.getParentNo() == c2.getCategoryNo()) {
						list.set(i, c2);
						list.set(j, c1);
						bl = true;
					}
				}
				if (bl) {
					i--;
				}
			} // for i count

			for (i = 0; i < count; i++) {
				for (j = i + 1; j < count; j++) {
					c1 = (Category) list.get(i);
					c2 = (Category) list.get(j);
					if (c2.getParentNo() == c1.getCategoryNo()) {
						list.remove(j);
						list.add(i + 1, c2);
					} // if
				} // for j count
			} // for i count
		} // if count > 0
				
		return list;
		
	}

	public Book getBook(int bookNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);

		//查询
		return bookDao.get(bookNo);
	}

	public List getCategorysBooks(int categoryNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建CategoryDao对象
		CategoryDao categoryDao = new CategoryDaoImpl(session);
		
		List list = categoryDao.getCategorys(categoryNo);

		//得到分类下的图书数
		if(list != null){
			//组建BookDao对象
			BookDao bookDao = new BookDaoImpl(session);
			for(int i=0; i<list.size(); i++){
				Category category = (Category)list.get(i);
				int count = bookDao.getBookCountByCategory(category.getCategoryNo());
				category.setBookCount(count);
				list.set(i, category);
			}
		}

		//查询
		return categoryDao.getCategorys(categoryNo);
	}

	public String getCategoryFullName(int categoryNo) throws ActionException {
		String fullname = "";
		
		//循环查询分类,直到根分类
		Category category = null;
		do{
			category = getCategory(categoryNo);
			if(category != null){
				fullname = "/" + category.getName() + fullname;
				categoryNo = category.getParentNo();
			}
		}while(category != null && category.getParentNo() != 0);
		
		return fullname;
	}

	public PageResult getBooksByCategory(int categoryNo, PageBean pageBean) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);

		//查询
		return bookDao.getBooksByCategory(categoryNo, pageBean);
	}

	public void delBook(int bookNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建CategoryDao对象
		BookDao bookDao = new BookDaoImpl(session);

		//判断是否存在图书
		Book book = bookDao.get(bookNo);
		if (book == null) { //不存在图书
			//回滚
			session.getTransaction().rollback();
			log.debug("不存在此图书,delBook()失败");
			throw new NotFindActionException("不存在此图书");
		}

		//删除与分类关系
		try {
			bookDao.delBookCategoryByBook(bookNo);
			bookDao.remove(book);
		} catch (HibernateException e) { //删除错误,回滚
			//回滚
			session.getTransaction().rollback();
			log.debug("可能存在其它引用,delBook()失败");
			throw new ExistReferActionException("此图书可能存在引用,请先删除相关引用");
		}
		//提交
		session.getTransaction().commit();
		
	}

	public void modBook(Book book, FormFile imageFile, String appPath, int[] categoryNos) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);

		//得到修改图书信息
		Book modbook = bookDao.get(book.getBookNo());
		modbook.setName(book.getName());
		modbook.setAuthor(book.getAuthor());
		modbook.setBookMan(book.getBookMan());
		modbook.setBrief(book.getBrief());
		modbook.setIsbn(book.getIsbn());
		if(imageFile != null 
				&& imageFile.getFileName() != null 
				&& !imageFile.getFileName().trim().equals("")){ 
			modbook.setImageFile(imageFile.getFileName());
		}
		modbook.setPrice(book.getPrice());
		modbook.setPublishDate(book.getPublishDate());

		bookDao.update(modbook);

		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("保存图书图片失败");
			}
		}
		
		//处理分类关系
		//删除原有分类关系
		bookDao.delBookCategoryByBook(book.getBookNo());
		//增加分类关系
		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();
	}

	public String[] getCategoryNosByBook(int bookNo) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		List list = bookDao.getBookCategoryByBook(bookNo);
		String[] result = null;
		if(list != null){
			result = new String[list.size()];
			for(int i=0; i<list.size(); i++){
				BookCategory bookcategory = (BookCategory)list.get(i);
				result[i] = String.valueOf(bookcategory.getCategoryNo());
			}
		}else{
			result = new String[0];
		}
		return result;
	}

	public PageResult findBooksByKey(String findKey, int findType, PageBean pageBean) throws ActionException {
		//得到当前Session
		Session session = HibernateSessionFactory.getSession();
		//组建BookDao对象
		BookDao bookDao = new BookDaoImpl(session);
		
		PageResult pageresult = null;
		
		//查询
		if(findType == 0){ //图书名称
			pageresult = bookDao.findBooksByProperty("name", findKey, pageBean);
		}else if(findType == 1){ //图书作者
			pageresult = bookDao.findBooksByProperty("author", findKey, pageBean);
		}else if(findType == 2){ //出版商
			pageresult = bookDao.findBooksByProperty("bookMan", findKey, pageBean);
		}else if(findType == 3){ //图书简介
			pageresult = bookDao.findBooksByProperty("brief", findKey, pageBean);
		}else{//图书名称
			pageresult = bookDao.findBooksByProperty("name", findKey, pageBean);
		}
		
		return pageresult;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?