Package com.ourlinc.conference.book.impl

Source Code of com.ourlinc.conference.book.impl.BookServiceImpl$BookPodiImpl

package com.ourlinc.conference.book.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import com.ourlinc.conference.DataSource;
import com.ourlinc.conference.book.Book;
import com.ourlinc.conference.book.BookService;
import com.ourlinc.omni.persistence.Persistence;
import com.ourlinc.omni.persistence.Persister;
import com.ourlinc.omni.persistence.PersisterStorage;
import com.ourlinc.omni.search.Searcher;
import com.ourlinc.swift.util.ResultPage;
/**
* 预定信息管理模块服务接口实现类
* @author pengchengji
* */
public class BookServiceImpl implements BookService{
 
  //依赖的搜索器名,每个实体存在一个搜索器名字
  static final String NAME_SEARCHER_BOOK = "book";
  final DataSource m_DataSource; // 数据源
  final BookPodiImpl m_Podi;
 
  /**
   * 构造方法
   * @param ds 数据源
   */
  public BookServiceImpl(DataSource ds) {
    m_DataSource = ds;
    m_Podi = new BookPodiImpl();
  }
 
  /**
   *
   * BookPodi的实现类,内部实现类
   * @author pengchengji
   */
  class BookPodiImpl implements BookPodi {

    // 活动线路持久器
    final PersisterStorage<Book> psBook;
    // 线路动态查询器
    final Searcher m_InfoSearcher;
    public BookPodiImpl() {
      psBook = m_DataSource.newPersister(Book.class, this);
      m_InfoSearcher = m_DataSource.newSearcher(NAME_SEARCHER_BOOK);
    }
    @SuppressWarnings("unchecked")
    public <E extends Persistence> Persister<E> getPersister(
        Class<E> classOf) {
      if (Book.class == classOf)
        return (Persister<E>) psBook;
      return m_DataSource.getPersister(classOf);
    }
    public Searcher getSearcher() {
      return m_InfoSearcher;
    }
  }
 
  /**
   * 预定会议室
   * @param date 预定日期
   * @param beginTime 开始时间
   * @param continueTime 持续时间
   * @param department 预定部门
   * @return 返回新增后的预定对象
   */
  public Book addBook(Date date, int beginTime, int continueTime, String department, String linkman) {
    return new Book(m_Podi, date, beginTime, continueTime, department,linkman,Book.STATUS_ENABLE.getId()) ;
  }
 
  /**
   * 当用户预定会议室的时候,检查是否存在冲突的预定
   * @param date 预定日期
   * @param beginTime 会议开始时间
   * @param continueTime 会议持续时间
   * @return List<Book>返回存在冲突的预定对象
   */
  public List<Book> getExistBook(Date date, int beginTime, int continueTime) {
    ResultPage<Book> rp = m_Podi.psBook.startsWith(null) ;
    rp.setPageSize(2000) ;
    rp.gotoPage(1) ;
    List<Book> books = new ArrayList<Book>() ;
    for (Book book : rp){
      if (date.equals(book.getDate()) && book.getStatus() == Book.STATUS_ENABLE.getId()){
        if (beginTime >= book.getEndTime() || book.getBeginTime() >= (beginTime + continueTime)){
          continue ;
        }
        books.add(book) ;
      }
    }
    Collections.sort(books);
    return books;
  }
 
  /**
   * 查询某一天的预定信息
   * @param oneDate
   * @return 返回某一天的预定信息
   */
  public List<Book> searchBook (Date oneDate){
    ResultPage<Book> rp = m_Podi.psBook.startsWith(null);
    rp.setPageSize(2000);
    rp.gotoPage(1);
    List<Book> books = new ArrayList<Book>();
    for (Book book : rp){
      if (book.getDate().equals(oneDate) && book.getStatus() == Book.STATUS_ENABLE.getId()){
        books.add(book);
      }
    }
    Collections.sort(books);
    return books;
  }
 
  /**
   * 查询符合组合条件的预定
   * @param department
   * @param linkman
   * @param title
   * @param content
   * @param beginDate
   * @param endDate
   * @return 返回符合搜索条件的预定
   */
  public ResultPage<Book> searchBook(String department, String linkman, String title,
      String content,Date beginDate,Date endDate) {
    ResultPage<Book> rp = m_Podi.psBook.startsWith(null);
    List<Book> list = new ArrayList<Book>();
    if ("全部".equals(department)){
      department = "";
    }
    rp.setPageSize(128);
    Book book = null;
   
    if (null == beginDate && null == endDate ){
      while (rp.gotoPage(rp.getPage()+1)){
        while (rp.hasNext()) {
          book = rp.next();
          if (book.getDepartment().contains(department)
              && book.getLinkman().contains(linkman)
              && book.getTitle().contains(title)
              && book.getContent().contains(content)
              && book.getStatus() == Book.STATUS_ENABLE.getId()) {
            list.add(book);
          }
        }
      }
    }else if (null == beginDate && null != endDate){
      while (rp.gotoPage(rp.getPage()+1)){
        while (rp.hasNext()) {
          book = rp.next();
          if (book.getDepartment().contains(department)
              && book.getLinkman().contains(linkman)
              && book.getTitle().contains(title)
              && book.getContent().contains(content)
              && book.getDate().equals(endDate)
              && book.getStatus() == Book.STATUS_ENABLE.getId()) {
            list.add(book);
          }
        }
      }
    }else if (null != beginDate && null == endDate){
      while (rp.gotoPage(rp.getPage()+1)){
        while (rp.hasNext()) {
          book = rp.next();
          if (book.getDepartment().contains(department)
              && book.getLinkman().contains(linkman)
              && book.getTitle().contains(title)
              && book.getContent().contains(content)
              && book.getDate().equals(beginDate)
              && book.getStatus() == Book.STATUS_ENABLE.getId()) {
            list.add(book);
          }
        }
      }
    }else {
      while (rp.gotoPage(rp.getPage()+1)){
        while (rp.hasNext()) {
          book = rp.next();
          if (book.getDepartment().contains(department)
              && book.getLinkman().contains(linkman)
              && book.getTitle().contains(title)
              && book.getContent().contains(content)
              && !book.getDate().before(beginDate) && !book.getDate().after(endDate)
              && book.getStatus() == Book.STATUS_ENABLE.getId()) {
            list.add(book);
          }
        }
      }
    }
    Collections.sort(list);
    return ResultPage.OnList.wrap(list);
  }
 
  /**
   * 根据ID删除相应的预定信息
   * @param id
   * @return 返回删除后的预定信息
   */
  public Book cancleBook(String id) {
    Book book = getBook(id);
    book.cancle();
    return book;
  }
 
  /**
   * 根据ID激活相应的预定信息
   * @param id
   * @return 返回激活后的预定信息
   */
  public Book activateBook(String id) {
    Book book = getBook(id);
    book.activate();
    return book;
  }
 
  /**
   * 根据ID获取预定信息
   * @param Id 预定信息的ID
   * @return 返回所查询的Book对象
   */
  public Book getBook(String id) {
    return m_Podi.psBook.get(id);
  }

}
TOP

Related Classes of com.ourlinc.conference.book.impl.BookServiceImpl$BookPodiImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.