Package net.celisdelafuente.java.Acacia.pages

Source Code of net.celisdelafuente.java.Acacia.pages.BooksPage

package net.celisdelafuente.java.Acacia.pages;

import isbndb.BookLookup;
import isbndb.Request;
import isbndb.RequestType;
import isbndb.XmlResponseParser;
import isbndb.rest.RestRequestor;

import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import net.celisdelafuente.java.Acacia.entity.Author;
import net.celisdelafuente.java.Acacia.entity.Book;
import net.celisdelafuente.java.Acacia.entity.Classification;
import net.celisdelafuente.java.Acacia.entity.Publisher;
import net.celisdelafuente.java.Acacia.entity.Supplier;

import org.apache.click.control.ActionLink;
import org.apache.click.control.Column;
import org.apache.click.control.FieldSet;
import org.apache.click.control.Form;
import org.apache.click.control.HiddenField;
import org.apache.click.control.Option;
import org.apache.click.control.Select;
import org.apache.click.control.Submit;
import org.apache.click.control.Table;
import org.apache.click.control.TextArea;
import org.apache.click.control.TextField;
import org.apache.click.dataprovider.DataProvider;
import org.apache.click.extras.control.NumberField;

import com.j256.ormlite.jdbc.JdbcConnectionSource;
import com.j256.ormlite.support.ConnectionSource;
import com.openly.info.ISBN;
import com.openly.info.InvalidStandardIDException;

public class BooksPage extends BorderTemplate {
 
  private Form form = new Form("book");
  private FieldSet bFieldset = new FieldSet("Book");
  private Select pubDate = new Select("pubDate","Publishing Date");
  private Select edition = new Select("edition", "Edition");
  private Select status = new Select("status", "Status");
  private ArrayList<String> bookStatus = new ArrayList<String>();
  private Table table = new Table("books");
  private ActionLink editBook = new ActionLink("Edit", this,
      "onEditClick");
  private ActionLink deleteBook = new ActionLink("Delete", this,
      "onDeleteClick");

  public BooksPage() {
       
    pageTitle += " : Books";
   
    addControl(form);
    addControl(table);
    addControl(editBook);
    addControl(deleteBook);
   
    bFieldset.setColumns(2);
    form.add(bFieldset);
   
    HiddenField id = new HiddenField("id", Integer.class);
    TextField title = new TextField("title", "Title", true);
    bFieldset.add(title);
    NumberField retail_price = new NumberField("retail_price",
        "Retail Price", true);
    bFieldset.add(retail_price);
    // Author
    TextField authorFullName = new TextField("authorFullName", "Author");
    bFieldset.add(authorFullName);
    NumberField isbn = new NumberField("isbn", "ISBN");
    bFieldset.add(isbn);
    NumberField quantity = new NumberField("quantity", "Qtty.");
    bFieldset.add(quantity);
    bFieldset.add(status);
    TextField subtitle = new TextField("subtitle", "Sub-title");
    bFieldset.add(subtitle);
    bFieldset.add(edition);
    bFieldset.add(pubDate);
    TextArea synopsis = new TextArea("synopsis", "Synopsis");
    synopsis.setCols(28);
    synopsis.setRows(3);
    bFieldset.add(synopsis);
    NumberField bulk_price = new NumberField("bulk_price", "Bulk Price");
    bFieldset.add(bulk_price);
    // Publisher
    TextField publisher = new TextField("publisher", "Publisher");
    bFieldset.add(publisher);
    TextField supplier = new TextField("supplier", "Supplier");
    bFieldset.add(supplier);
    // Classification
    TextField classKey = new TextField("classKey", "C. Key");
    bFieldset.add(classKey);
    TextField classDescription = new TextField("classDescription", "Classification");
    bFieldset.add(classDescription);
   
    bFieldset.add(new Submit("search", "  SEARCH  "));
    bFieldset.add(new Submit("ok""  ADD NEW  ", this, "onOkClick"));
    bFieldset.add(new Submit("cancel", "  CANCEL  ", this, "onCancelClick"));
    //bFieldset.add(new Submit("online", "  ON LINE SEARCH  ", this, "onOnlineClick"));
   
    table.setPageSize(10);
    table.setShowBanner(true);
    table.setSortable(true);
    table.addColumn(new Column("id"));
    table.addColumn(new Column("title"));
    //table.addColumn(new Column("authorFullName"));
    table.addColumn(new Column("quantity"));
    table.addColumn(new Column("retail_price"));
   
    deleteBook.setImageSrc("/images/user-trash.png");
        deleteBook.setTitle("Delete");
        deleteBook.setAttribute("onclick",
            "return window.confirm('Are you sure you want to delete this book?');");
       
        table.setDataProvider(new DataProvider<Book>() {
         
      public List<Book> getData() {
            List<Book> books = null;
            try {
              ConnectionSource connectionSource =
                  (JdbcConnectionSource) GetConnection();
              books = book.queryForAll();
              connectionSource.close();
              return books;
            } catch (SQLException e) {
              e.printStackTrace();
            }
            return books;
          }
    });
  }
 
  @Override
  public void onInit() {
    super.onInit();
   
    edition.setDefaultOption(Option.EMPTY_OPTION);
    for (int ed = 1; ed <= 30; ed++) {
      edition.add(ed);
    }
    pubDate.setDefaultOption(Option.EMPTY_OPTION);
    for (int y = 2012; y >= 1930; y-- ) {
        pubDate.add(new Option(y));
    }
    status.setDefaultOption(Option.EMPTY_OPTION);
    bookStatus.add("NEW");
    bookStatus.add("GOOD");
    bookStatus.add("POOR");
    bookStatus.add("BAD");
    status.addAll(bookStatus);       
  }
 
  @Override
  public void onRender() {
    super.onRender();
   
  }
 
  public boolean onOkClick() throws SQLException, ParseException {
    if(form.isValid()) {
      TextField fullName = (TextField)bFieldset.getControl("authorFullName");
      String[] fullNameArr = fullName.getValue().trim().split("[,]");
      TextField fPublisher = (TextField)bFieldset.getControl("publisher");
      TextField fIsbn = (TextField)bFieldset.getControl("isbn");
      Select fPubDate = (Select)bFieldset.getControl("pubDate");
      TextField fSupplier = (TextField)bFieldset.getControl("supplier");
      TextField fCkey = (TextField)bFieldset.getControl("classKey");
      TextField fClass = (TextField)bFieldset.getControl("classDescription");
      NumberField fQtty = (NumberField)bFieldset.getControl("quantity");
     
      ConnectionSource conn = (JdbcConnectionSource) GetConnection();
     
      Author a = new Author();
      if(fullNameArr.length > 1) {
        a = a.getByFullName(conn, author, fullNameArr);
        Integer author_id = a.getId();
        if (author_id != 0 && author_id != null) {
          if(fullNameArr.length > 2) {
            if (!a.getLname().equalsIgnoreCase(fullNameArr[1]) ||
                !a.getMname().equalsIgnoreCase(fullNameArr[2]) ||
                !a.getName().equalsIgnoreCase(fullNameArr[0]))
              author.update(a);
          } else if (fullNameArr.length == 2) {
            if (!a.getLname().equalsIgnoreCase(fullNameArr[1]) ||
                !a.getName().equalsIgnoreCase(fullNameArr[0]))
              author.update(a);
          }
          author.refresh(a);       
        } else {
          a = new Author(fullNameArr);
          author.create(a);
          author.refresh(a);
        }
      }
     
      Publisher p = new Publisher();
      if(!fPublisher.getValue().trim().isEmpty()) {
        p = p.getByName(conn, publisher,
            fPublisher.getValue().trim());
        Integer publisher_id = p.getId();
        if(publisher_id != 0 && publisher_id != null) {
          if(!p.getName().equalsIgnoreCase(fPublisher.getValue().trim()))
            publisher.update(p);
          publisher.refresh(p);
        } else {
          p = new Publisher(fPublisher.getValue().trim());
          publisher.create(p);
          publisher.refresh(p);
        }
      }
     
      Supplier s = new Supplier();
      if(!fSupplier.getValue().isEmpty()) {
        s.getByName(conn, supplier,
            fSupplier.getValue());
        Integer supplier_id = s.getId();
        if(supplier_id != 0 && supplier_id != null) {
          if(!s.getName().equalsIgnoreCase(fSupplier.getValue())) {
            supplier.update(s);
            supplier.refresh(s);
          }
        } else {
          s = new Supplier(fSupplier.getValue());
          supplier.create(s);
          supplier.refresh(s);
        }
      }
     
      Classification c = new Classification();
      if(!fCkey.getValue().isEmpty() &&
          !fClass.getValue().isEmpty()) {
        c.getByClassification(conn, classification,
            fCkey.getValue(), fClass.getValue());
        Integer class_id = c.getId();
        if(class_id != 0 && class_id != null) {
          if(!c.getDescription().equalsIgnoreCase(fClass.getValue())) {
            classification.update(c);
          }
          if(!c.getCkey().equalsIgnoreCase(fCkey.getValue())) {
            classification.update(c);
          }
          classification.refresh(c);
        } else {
          c = new Classification(fCkey.getValue(), fClass.getValue());
          classification.create(c);
          classification.refresh(c);
        }
      }
     
      Book b = new Book();
      form.copyTo(b);
      try {
        ISBN validIsbn = new ISBN(fIsbn.getValue());
        b.setIsbn(validIsbn.toString());
      } catch (InvalidStandardIDException e) {
        // TODO Auto-generated catch block
        b.setIsbn("");
        e.printStackTrace();
      }
      DateFormat df = new SimpleDateFormat("yyyy");
      Date year = df.parse(fPubDate.getSelectedValues().get(0).toString());
     
      if(year != null)
        b.setPubdate(year);
     
      if(a != null)
        b.setAuthor(a);
     
      if(b != null)
        b.setPublisher(p);
     
      if(c != null)
        b.setClassification(c);
     
      if(fQtty.getValue().isEmpty())
        b.setQuantity(1);
     
      Integer book_id = b.getId();
      if (book_id != 0 && book_id != null) {
        book.update(b);
      } else {
        book.create(b);
      }
     
      conn.close();
      form.clearValues();
      String msg = "New book added succesfully";
      addModel("msg", msg);
    }
    return true;
  }
 
  public boolean onCancelClick() {
    setRedirect(HomePage.class);
    return false;
  }
 
  public boolean onOnlineClick() {
   
    TextField fullName = (TextField)bFieldset.getControl("authorFullName");
    String[] fullNameArr = fullName.getValue().trim().split("[,]");
    TextField fPublisher = (TextField)bFieldset.getControl("publisher");
    TextField fIsbn = (TextField)bFieldset.getControl("isbn");
    Select fPubDate = (Select)bFieldset.getControl("pubDate");
    TextField fSupplier = (TextField)bFieldset.getControl("supplier");
    TextField fCkey = (TextField)bFieldset.getControl("classKey");
    TextField fClass = (TextField)bFieldset.getControl("classDescription");

    BookLookup lookup = new BookLookup();
   
    Request request = new Request(getIsbnkey(), RequestType.ISBN,
        fIsbn.getValue());
   
    RestRequestor restRequestor = new RestRequestor();
    restRequestor.request(request);
   
    XmlResponseParser xmlResponseParser = new XmlResponseParser();
   
    lookup.setAccessKey(getIsbnkey());
    lookup.setRequestor(restRequestor);
    lookup.setResponseParser(xmlResponseParser);
   
    isbndb.Book expectedBook = lookup.byIsbn(fIsbn.getValue());
    if(expectedBook != null)
      expectedBook.getTitle();
   
   
    /*
    ConnectionSource conn = (JdbcConnectionSource) GetConnection();
   
    Author a = new Author();
    if(fullNameArr.length > 1) {
      a = a.getByFullName(conn, author, fullNameArr);
      Integer author_id = a.getId();
      if (author_id != 0 && author_id != null) {
        if(fullNameArr.length > 2) {
          if (!a.getLname().equalsIgnoreCase(fullNameArr[1]) ||
              !a.getMname().equalsIgnoreCase(fullNameArr[2]) ||
              !a.getName().equalsIgnoreCase(fullNameArr[0]))
            author.update(a);
        } else if (fullNameArr.length == 2) {
          if (!a.getLname().equalsIgnoreCase(fullNameArr[1]) ||
              !a.getName().equalsIgnoreCase(fullNameArr[0]))
            author.update(a);
        }
        author.refresh(a);       
      } else {
        a = new Author(fullNameArr);
        author.create(a);
        author.refresh(a);
      }
    }
   
    Publisher p = new Publisher();
    if(!fPublisher.getValue().trim().isEmpty()) {
      p = p.getByName(conn, publisher,
          fPublisher.getValue().trim());
      Integer publisher_id = p.getId();
      if(publisher_id != 0 && publisher_id != null) {
        if(!p.getName().equalsIgnoreCase(fPublisher.getValue().trim()))
          publisher.update(p);
        publisher.refresh(p);
      } else {
        p = new Publisher(fPublisher.getValue().trim());
        publisher.create(p);
        publisher.refresh(p);
      }
    }*/
    String msg = "No book found!";
    addModel("msg", msg);
    return true;
  }
 
  public boolean onSearchClick() {
    return true;
  }
 
}
TOP

Related Classes of net.celisdelafuente.java.Acacia.pages.BooksPage

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.