Dao接口
public interface BookDao {
List selectAllBook();
List selectBookByCondition(String type, String query);
boolean appendBook(Book book);
boolean updateBook(Book book);
}
Dao接口实现类
public class BookDaoImpl implements BookDao {
@Override
public List selectAllBook() {
List res = new ArrayList();
try (BufferedReader br = new BufferedReader(new FileReader(BMS.DB_BOOKS));) {
String line = null;
while ((line = br.readLine()) != null) {
Book book = BMSUtil.str2Book(line);
res.add(book);
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
@Override
public List selectBookByCondition(String type, String query) {
if (StringUtil.isBlank(type) || StringUtil.isBlank(query)) {
throw new GlobalException("待查找的类型or查询内容不能为空");
}
List res = new ArrayList();
String bookInfo = BMSUtil.getBookInfo(type, query);
String[] split = bookInfo.split("\n");
for (String line : split) {
Book book = BMSUtil.str2Book(line);
res.add(book);
}
return res;
}
@Override
public boolean appendBook(Book book) {
if (book == null) {
throw new GlobalException("图书信息不能为空");
}
//获取文件的长度
long pos = new File(BMS.DB_BOOKS).length();
BMSUtil.fileRandInsert(pos, "\n" + book.toString());
return true;
}
@Override
public boolean updateBook(Book book) {
if (book == null || book.getIsbn() == null) {
throw new GlobalException("book不能为空且ISBN不能为空");
}
boolean res = BMSUtil.updateBook(book.toString());
return res;
}
}
Service接口
public interface BookService {
/**
* 查询出所有的书籍
*
* @return
*/
List getAllBooks();
/**
* 查询
*
* @param type
* @param query
* @return
*/
List getBookByCondition(String type, String query);
/**
* 增加书籍
*
* @param book
* @return
*/
String appendBook(Book book);
/**
* 更新图书
*
* @param book
* @return
*/
String updateBook(Book book);
}
Service接口实现类
@Slf4j
public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
@Override
public List getAllBooks() {
log.info("类{}的{}方法在{}被调用","BookServiceImpl","getAllBooks()", LocalDateTime.now());
List res = bookDao.selectAllBook();
return res;
}
@Override
public List getBookByCondition(String type, String query) {
log.info("类{}的{}方法在{}被调用","BookServiceImpl","getBookByCondition()", LocalDateTime.now());
if (StringUtil.isBlank(type) || StringUtil.isBlank(query)) {
log.warn("类型or查询内容不能为空");
throw new GlobalException("待查找的类型or查询内容不能为空");
}
List res = bookDao.selectBookByCondition(type, query);
return res;
}
@Override
public String appendBook(Book book) {
log.info("类{}的{}方法在{}被调用","BookServiceImpl","appendBook()", LocalDateTime.now());
if (book == null) {
log.warn("图书信息不能为空");
throw new GlobalException("图书信息不能为空");
}
boolean res = bookDao.appendBook(book);
return res ? "添加成功" : "添加失败";
}
@Override
public String updateBook(Book book) {
log.info("类{}的{}方法在{}被调用","BookServiceImpl","updateBook()", LocalDateTime.now());
if (book == null || book.getIsbn() == null) {
log.warn("book不能为空且ISBN不能为空");
throw new GlobalException("book不能为空且ISBN不能为空");
}
boolean res = bookDao.updateBook(book);
return res ? "修改成功" : "修改失败";
}
}