By: Rick Varella, Cuong Nguyen, & Henry Giathi. What is Books Zen Books? Books Zen Books is an e-commerce web application designed to allow students to.

Slides:



Advertisements
Similar presentations
RP Designs Semi-Custom e-Commerce Package. Overview RP Designs semi- custom e-commerce package is a complete website solution. Visitors can browse a catalog.
Advertisements

Customizing the MOSS 2007 Search Results November 2007 Rafael Perez.
© 2010 Bennett, McRobb and Farmer1 Use Case Description Supplementary material to support Bennett, McRobb and Farmer: Object Oriented Systems Analysis.
PRACTICAL PHP AND MYSQL WALKTHROUGH USING SAMPLE CODES – MAX NG.
Let’s try Oracle. Accessing Oracle The Oracle system, like the SQL Server system, is client / server. For SQL Server, –the client is the Query Analyser.
An On-line bookstore Software Engineering II CS616 Software Engineering II Team 4:Jing Fu Hai Huang Xiao-Rong Wang Lijun Yuan.
Conference Calendar CS 337 Project Supervised by Professor Russell Abbott. Alexandre Lomovtsev, Haritha Sankavaram, Lewis Chen, Rasha Mohamed.
Input Validation For Free Text Fields ADD Project Members: Hagar Offer & Ran Mor Academic Advisor: Dr Gera Weiss Technical Advisors: Raffi Lipkin & Nadav.
Conference Calendar 1.Description Overview 2.Conference Information 3.User Information 4.Use Cases 5.Schedule.
Introduction to Structured Query Language (SQL)
UML exam advice. Minimal, yet sufficient UML course 80% of modeling can be done with 20% of the UML. Which 20% was that again? We’re supposed to be “Use.
Chapter 7 Managing Data Sources. ASP.NET 2.0, Third Edition2.
Tomslist Boston University Craigslist Ben Duong, Frank Wong, Marc Adam, Henry Huang.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
ONLINE BOOKSTORE DATABASE CSC 8490 BY: Chaya Gaddamanugu
OMap By: Haitham Khateeb Yamama Dagash Under Suppervision of: Benny Daon.
Dataface API Essentials Steve Hannah Web Lite Solutions Corp.
Lecture 6 – Form processing (Part 1) SFDV3011 – Advanced Web Development 1.
Getting started on informaworld™ How do I register with informaworld™? What do I do if I forget my password? My institution does not subscribe to any journals,
CSCI 6962: Server-side Design and Programming
Session 5: Working with MySQL iNET Academy Open Source Web Development.
Getting started on informaworld™ How do I register my institution with informaworld™? How is my institution’s online access activated? What do I do if.
Database Programming in Java Corresponds with Chapter 32, 33.
Web Application Development. Define ER model in QSEE Generate SQL Create Database mySQL Write Script to use TableEditor class Process to create A simple.
What is Sure BDCs? BDC stands for Batch Data Communication and is also known as Batch Input. It is a technique for mass input of data into SAP by simulating.
OCLC Online Computer Library Center CONTENTdm ® Digital Collection Management Software Ron Gardner, OCLC Digital Services Consultant ICOLC Meeting April.
Web Application Development. Tools to create a simple web- editable database QSEE MySQL (or PHPMyAdmin) PHP TableEditor.
Online Music Store MSE Project Presentation I Presented by: Reshma Sawant Major Professor: Dr. Daniel Andresen.
Automatic Generation of Web Interfaces From User Interaction Diagrams Filipe Bianchi Damiani Patrícia Vilain Federal University of Santa Catarina (UFSC)
Your Name Here See Page Notes for Info about Hyperlinks.
1 Online Textbook Adooptions
COMP3121 E-Commerce Technologies Richard Henson University of Worcester November 2011.
1 Working with MS SQL Server Textbook Chapter 14.
Web Scripting [PHP] CIS166AE Wednesdays 6:00pm – 9:50pm Rob Loy.
SYST Web Technologies SYST Web Technologies Databases & MySQL.
1 JSP with Custom Tags Blake Adams Introduction Advanced Java Server Pages – Custom Tags Keyterms: - Tag Library Descriptor(TLD) - Tag Libraries.
Mark Dixon 1 09 – Java Servlets. Mark Dixon 2 Session Aims & Objectives Aims –To cover a range of web-application design techniques Objectives, by end.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Outline 32.1 Reviewing the Bookstore Application 32.2.
The Pencil Company Team Slave to the WWW. Team Members  Ashley Petrinec – Co-lead of documentation and design  Jennifer Williams – Co-lead of documentation.
Searching Business Data with MOSS 2007 Enterprise Search Presenter: Corey Roth Enterprise Consultant Stonebridge Blog:
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL ADO.Net Basics Ruwan Wijesinghe Trainer.
CS4274 TERM PROJECT 2010 SOLE : SHARING OF LIVING EXPERIENCES Team Members: Tan Gui Han Wilson Duy Vinh Chuc Damien Catala Cheng Zhi Xiang.
Introducing HingX now with Capacity Development Network.
Copyright © 2006 Pilothouse Consulting Inc. All rights reserved. Search Overview Search Features: WSS and Office Search Architecture Content Sources and.
 Registry itself is easy and straightforward in implementation  The objects of registry are actually complicated to store and manage  Objects of Registry.
NMD202 Web Scripting Week5. What we will cover today PHP & MySQL Displaying Dynamic Pages Exercises Modifying Data PHP Exercises Assignment 1.
©SoftMoore ConsultingSlide 1 Filters. Filters can be used in a web application to intercept, examine, and possibly transform requests or responses associated.
 Shopping Basket  Stages to maintain shopping basket in framework  Viewing Shopping Basket.
 Pages within our Framework  Categories within Framework  Products within Framework  Model-View-Controller description of Page, category and products.
CSCI 4230 Homework #3 Group Three Samer Al Jefri * Kevin Odom * David Hood * JD Wells * Philippe Gambling.
ASSIGNMENT 2 Salim Malakouti. Ticketing Website  User submits tickets  Admins answer tickets or take appropriate actions.
Hyperion Artifact Life Cycle Management Agenda  Overview  Demo  Tips & Tricks  Takeaways  Queries.
Teaching slides Chapter 8. Chapter 8 Database design & construction Introduction Databases and software engineering methodologies Database types Database.
Starting with Oracle SQL Plus. Today in the lab… Connect to SQL Plus – your schema. Set up two tables. Find the tables in the catalog. Insert four rows.
A Mobile Library Management System Advisor: Dr. Shen Student: Ananta Gampaa November 8 th,2005.
Introduction to MySQL  Working with MySQL and MySQL Workbench.
EBay Searcher Brian Payton, Jason Nowakoski, Justin Szeluga, Salvatore Siragusa, David Wolkiser.
BTM 382 Database Management Chapter 8 Advanced SQL Chitu Okoli Associate Professor in Business Technology Management John Molson School of Business, Concordia.
Supervisor: Tran Dinh Tri Group Members: Duong Ngoc Nhat-NhatDN01687 Nguyen Quang Minh-MinhNQ01717 Nguyen Quang Minh-MinhNQ01717 Duong Hoang Nam-NamDH01552.
CS320 Web and Internet Programming Database Access with JDBC Chengyu Sun California State University, Los Angeles.
How do I find books? The UNVA Book Catalog lists the books available at the UNVA Library in Manassas. You can search by title, author or subject. Books.
CS3220 Web and Internet Programming Database Access with JDBC
Business rules.
Business Searching Interface
CS320 Web and Internet Programming Database Access with JDBC
Content - Introduction. - Problem statement. - Objectives.
Business Searching Interface
Super Market Management
CS3220 Web and Internet Programming Database Access with JDBC
CS3220 Web and Internet Programming Database Access with JDBC
Presentation transcript:

By: Rick Varella, Cuong Nguyen, & Henry Giathi

What is Books Zen Books? Books Zen Books is an e-commerce web application designed to allow students to buy and sell their textbooks to other local students.

Purpose Why sell your books to the campus bookstore and get much less money for them? Why buy them for a premium price at the bookstore? Why pay for shipping at an online store? Have books that the bookstore won’t buy? Books Zen Books solves all of that.

Features Login system giving access to certain member- only features to registered users. Advanced search options for finding books by title, author, ISBN, subject and others. Users have full control over their listing info. Shopping cart for saving listings of interest. Checkout through Google Checkout or PayPal.

Features Caching system for frequently accessed data. Admin interface for managing all aspects of the system, including users, books, and settings.

Class Diagram

Usage Scenario #1: Login Present use case while logging in to the system.

Usage Scenario #1: Login

public User checkCredentials( HttpServletRequest request ) { ResultSet result; User user = null; String = RequestHelper.getString( " ", request ); String password = RequestHelper.getString( "password", request ); String where = " = '" + + "' AND password = '" + DigestHelper.md5( password ) + "'"; /* Query for matching user */ result = bzb.getDriver().select( "user", null, where ); try { /* Make sure there's a result */ if( result.next() ) { user = new User(); user.init( bzb.getDriver() ); user.populate( result ); } } catch( SQLException e ) { } return user; }

Usage Scenario 2: Add New Listing Present use case while logging in to the system.

Usage Scenario 2: Add New Listing

private void saveListing( BookListing listing, HttpServletRequest request ) { listing.init( bzb.getDriver() ); listing.setActive( true ); listing.setComment( RequestHelper.getString( "comment", request ) ); listing.setCondition( RequestHelper.getString( "condition", request ) ); listing.setCurrency( "usd" ); currency should be a system setting listing.setIsbn( listing.getBook().getIsbn() ); listing.setListDate( new java.util.Date() ); listing.setPrice( RequestHelper.getDouble( "price", request ) ); listing.setUserId( ( ( User ) request.getSession().getAttribute( "authUser" ) ).getUserId() ); listing.getBook().setAuthor( listing.getBook().getAuthor().replaceAll( "\n", "|" ).trim() ); listing.save(); if( listing.getBook().isNewObject() ) { listing.getBook().save(); }

Usage Scenario 3: Add Listing to Cart Present use case while logging in to the system.

Usage Scenario 3: Add Listing to Cart

result.close(); fields = new String[] { "COUNT(*) as count" }; result = bzb.getDriver().select( "shoppingcartentry", fields, where ); result.next(); if( result.getInt( "count" ) > 0 ) { isValid = false; } return isValid; } private boolean isValidListing( HttpServletRequest request ) { BookListing listing; boolean isValid = true; String[] fields = { "*" }; String where = "listId = " + RequestHelper.getInt( "listId", request ); ResultSet result = bzb.getDriver().select( "booklisting", fields, where ); if( result.next() ) { listing = new BookListing(); listing.init( bzb.getDriver() ); listing.populate( result ); if( !listing.isActive() ) { isValid = false; } else if( listing.getUserId() == bzb.getAuthenticatedUser( request ).getUserId() ) { isValid = false; } else { isValid = false; }

Third Party Tools dom4j - Dom4j is an open source library for working with XML and XSLT files. We used it for reading our database configuration settings file. This makes it easier to update database details without editing source code. Also used it for generating and reading our XML schema files for our database mapping class. This made it possible to pass a single ResultSet from the DB to an object, and the object would be populated with the result data.

A Sample XML Schema File

How dom4j Reads XML Data private SchemaColumn readSchemaColumn( Element container ) { int columnId = 0; int dbType = 0; String javaType = null; String columnName = null; String index = null; Iterator attrIterator = container.attributeIterator(); Attribute attribute; while( attrIterator.hasNext() ) { attribute = ( Attribute )attrIterator.next(); if( attribute.getName().equals( "dbType" ) ) { dbType = Integer.parseInt( attribute.getText() ); } else if( attribute.getName().equals( "name" ) ) { columnName = attribute.getText(); } else if( attribute.getName().equals( "javaType" ) ) { javaType = attribute.getText(); } else if( attribute.getName().equals( "index" ) ) { index = attribute.getText(); } return new SchemaColumn( columnId, columnName, dbType, javaType, index ); } public SchemaData getSchema( String className, Field[] fields ) { … SAXReader reader = new SAXReader(); Document document = reader.read( file ); xmlRoot = xmlDocument.getRootElement(); columnIterator = xmlRoot.elementIterator(); while( columnIterator.hasNext() ) { columnRoot = columnIterator.next(); column = readSchemaColumn( columnRoot ); columns.put( column.getName(), column ); } … }

Using the Table/Class Mapping ResultSet result = bzb.getDriver().select( "shoppingcartentry e", fields, where, join, null, null, null, 0, 0 ); entry = new ShoppingCartEntry(); entry.init( bzb.getDriver() ); entry.populate( result ); public boolean populate( ResultSet row ) throws SQLException { … for( int i = 1; i <= columnCount; i++ ) { columnName = rsMetaData.getColumnName( i ); if( schema.getColumns().containsKey( columnName ) ) { setField( columnName, row ); } private boolean setField( String key, ResultSet row ) { SchemaColumn column = schema.getColumns().get( key ); … if( javaType.equals( "class java.lang.String" ) ) { methodTypes[0] = java.lang.String.class; methodArgs[0] = row.getString( key ); } … methodName = "set" + Util.toUpperCaseFirst( key ); method = this.getClass().getMethod( methodName, methodTypes ); method.invoke( this, methodArgs ); }

Problems Encountered The NetBeans UML plugin ended up crashing NetBeans, resulting in our UML diagrams getting corrupted and unusable. Tried out other UML programs like StarUML, Umlet, and ArgoUML, settled on the trial version of Visual Paradigm.

Problems Encountered Mapping database columns to class members was troublesome. Getting existing data out of the database and filling the objects worked without an XML schema for the most part, since we could use the column datatype from the ResultSet. Creating new objects (ie. From user input) to insert into the DB was more difficult, since we didn’t have a ResultSet to refer to when building our queries. So for class datatypes that don’t map to the same column type (eg. Boolean  tinyint), we had issues.

Features That Were Not Implemented We didn’t implement checkout. We were planning to integrate with PayPal and Google Checkout. Administration interface. Ideally it would allow the manager to modify settings, update users and books, and change the content of strings that make up the system text. validation for new accounts. Because we need an SMTP server to test it out, we did not get it working.