Today's schedule
| 1500 | Origami Overview | Andrew |
| 1540 | UI components | Alberto |
| 1620 | Web services | Sam |
| 1640 | Hands-on workshops | Andrew, Alberto, Sam, Kaelig |
Origami workshop
A practical journey to Web Components
by Andrew Betts, FT Labs (trib.tv / @triblondon)
Challenges
Building websites is harder today than ever before. Why?
Multiple formats
Multiple formats
Responsive.
Better usability
We are not here to do easy things for people who are like us
Alice Bartlett
Problems at FT
Meeting the challenges of modern front end development can lead to problems
Problems
- Repeating work
- Unable to let go of old tech
- Experts needed everywhere
- Square pegs, round holes
- Learning 'cliff'
Goals
What should we be aiming for?
Consistent brand experience
Not just about being responsive
(we have lots of websites to make responsive)
Living style guides
Objectives
Components
Standards
Collaboration
Encapsulation
Works with the old stuff
Don't build a monolith
Raise the bar
Make it easy
The Origami way
How does Origami meet these goals?
Origami is...
- A Specification (origami.ft.com)
- Tools
- Components!
- Modules (installable packages)
- Web services (APIs)
The spec
Agree a standard for building modules and services
Module build pattern
"Cutting the mustard"
A simple logical test that sets a movable bar for running application JavaScript
if ('querySelector' in document && 'localStorage' in window && 'addEventListener' in window) { ... }
Syntax and encapsulation (JS)
- No globals
- No modifying DOM on parse (or outside of owned DOM)
- Namespace events
- jsHint
Syntax and encapsulation (CSS)
- Namespace prefixes for classes
- No styling out of namespace
- No IDs, ever
- Minimise specificity. Use BEM or descendent selectors
o-tweet__avatar--verified
o-tweet > p
- Consider states (use ARIA):
- hover, focus, busy, selected, disabled, active, invalid, pressed, expanded
- Express responsive behaviours by exposing mixins, not using media queries:
o-tweet--large
, o-tweet--small
The tools
Make it easy to comply with the spec requirements
Build tool
> origami-build-tools install
Build modules in your own product
Serve them locally
Compile as part of your own JavaScript and CSS bundles
Auto-install all dependencies, tools, linters etc.
Registry
Scan known git servers
Index version tags
Build every version of every module
Collect all the info on one page
Act as a directory of web services
Origami registry is public on the web so anyone can collaborate with us
Build service
http://build.origami.ft.com/bundles/js
?modules=o-tweet,o-ft-header@^1.3.7,o-hoverable@2
Build any combination of modules on demand
Build, bundle, compress, optimise, serve through CDN (gzipped)
Lock to a version or automatically upgrade with semver-compliant versioning
Allow developers to work without a build step
Build process walkthrough
Build a page using Origami components


Organizing Committee
Take a look at our core organizers.
Rodolfo Ferro
General Coordination
Ricardo Mirón
General Coordination
Verónica Bañuelos
Fin. & Treas. Coord.
Ileana Cerón
Media & Logistics Coord.
Jorge A. Flores
Rels. & Pships. Coord.
Supporting Committee
The ones who were always giving us advices.
Mario Guajardo-Céspedes
Advisory Committee
Carla Márquez-Luna
Advisory Committee
Gustavo Hernández-Ábrego
Advisory Committee
Credits and Special Thanks
-
Datostada's logo created by Álvaro Carbajal
-
Web media content by Gabriela Pérez


Sphynx is an interactive data visualization tool that is easy to use by anyone.
We enable the layman to create amazing graphics that impress and catch the attention of users.

Sphynx was created at the 2014 NY Times Hackathon in New York City. All the participants are Teaching Fellows at Fullstack Academy of Code.


Our staff at the University Counseling Center has compiled a large collection of self-help information relevant to Notre Dame students, faculty, and staff. The links presented are informational and
intended as an aid in understanding the topics presented, but are not intended as a substitute for assistance from a qualified mental health professional. In addition, inclusion of these links on our website are not meant to imply an
endorsement by the University Counseling Center.
Online Screening
Therapist Assisted Online (TAO)
Crisis Services
Learn About...
Below are some of the most common situations that students across the country suffer from. Learn about each one and how you can treat these by clicking on the tiles below
Online Screening
Here, you can find information about online screening
Click HERE to be redirected to an online screening of one of the following:
Click here to take a free screening for:
Alcohol Use Disorder
Bipolar Disorder
Depression
Eating Disorders
Generalized Anxiety Disorder
Post-Traumatic Stress Disorder
Substance Use
Group Counseling
You've come to the right place!
What is group counseling and can it help me?
Each semester, the UCC offers a variety of group therapy experiences. In group therapy, can count on the expertise of the counselors who facilitate the group, and you can also get to know other students who are experiencing similar
issues as you.
Groups at the UCC are designed for students who want to understand themselves and others in greater depth. These may be students who have concerns about relationships with others; students who feel different from their peers
because of the type of problem currently being experienced; and/or students who make choices based on what others want or expect instead of evaluating decisions for themselves. A common theme for group participants is wanting to
learn how to change thinking, feelings, and/or behavior to feel better about themselves and cope more effectively with life.
Hours: Monday through Friday from 9:00am – 5:00pm*
Telephone:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Psychiatric Services
The UCC provides outpatient psychiatric services to eligible Notre Dame students who are receiving counseling at the UCC. Referrals for a psychiatric evaluation and treatment may be made following the
initial assessment and are made as a joint decision between UCC staff and the client.
Alcohol and Drugs Assessment
Lorem ipsum dolor sit amet consectetur.
 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate,
maiores repudiandae, nostrum, reiciendis facere nemo!
Date: January 2017
Client: Lines
Category: Branding
Relationship Counseling
Lorem ipsum dolor sit amet consectetur.
 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate,
maiores repudiandae, nostrum, reiciendis facere nemo!
Date: January 2017
Client: Southwest
Category: Website Design
Let's Talk: Walk-in Consultations
Lorem ipsum dolor sit amet consectetur.
 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate,
maiores repudiandae, nostrum, reiciendis facere nemo!
Date: January 2017
Client: Window
Category: Photography
Anxiety
Learn about anxiety by watching the following video and learn how you can treat it by clicking the links below
The following links provide resources that could help you deal with anxiety
The University Counseling Center is staffed by trained professionals who can provide specialized support and assistance. Students may seek counseling at any time, whether it is days, months, or years later. This confidential service is available to the victim and his or her friends who may need support in assisting a victim.
One of the best ways to deal with relationship conflicts is to talk to a professional. Schedule an appointment with the UCC by clicking HERE
Initial consult
You've come to the right place!
What is an initial consult and how can I schedule one?
An initial consult is the first step to getting the mental health treatment you need. In an initial consult, you will come into the UCC be given a consultation on your reasons for seeking help and your goals in doing so. You will fill out a form describing your reasons for seeking treatment and afterwards you will meet with a UCC therapist. After your leave your initial consult, you will be matched with a counselor and will begin your treatment at the UCC. You can schedule it by either calling the number below or visiting our schedule tab.
Come to UCC Reception Desk, 3rd Floor, St. Liam Hall
Telephone:<PHONE_NUMBER>
Therapist Assist Online
You've come to the right place!
What is TAO and how can I use it?
TAO (Therapy Assistance Online) Self-Help is a platform of tools and information to help you learn about struggles common to college students and to develop helpful strategies for navigating these challenges.


This example displays the reference frame around the camera in Cartesian coordinates (x, y, x). It puts a image in the negative and positive directions: x is left/right; y is up/down; z is back front. A div is created in each of these directions and converted to cssObject (in three.js) at 200 units from the origin. These cssObjects are then added to the eyeOrigin. The eyeOrigin is the position of the camera: the cssObjects will always appear in the same locations relative to the camera.


Enter the parameters below and the to-do list will rank items for you, with the most important at the top!


NYTimeMachine
What was happening in
Region
{{key}}
during the year
Search Region: {{timeline.region}}
Year: {{timeline.year}}
{{article.country}}
{{article.headline}}
{{article.snippet}}


Glossary
A collection of the various terminology used throughout Modulz design system.
| Term | Meaning |
|---|---|
| Hue | Hue is one of the main properties of a color, defined technically as the degree to which a stimulus can be described as different from other stimuli. |
| Saturation | The colorfulness of an area judged in proportion to its brightness, which in effect is the perceived freedom from whitishness of the light coming from the area. |
| Lightness | Lightness is a representation of variation in the perception of a color's brightness. |
| Tint | Meaning |
| Shade | Meaning |
| Component | Meaning |
| Utility | Meaning |
| Module | Meaning |
| Class | Meaning |
| Design system | Meaning |
| Screen | Page |
| Viewport | Meaning |


Title Page
Document Name: Inventory Management Product Overview
Project Name: Team Assignment 1
Authors: Damon Fowler, Jose Jimenez, Karen Raymond, Lakshmi Mannem, Thomas Wester
Course Name: Software Engineering Studio, RSEG127
Instructor Name: Erik Hemdal
Date: 10/24/2017
PRODUCT OVERVIEW SPECIFICATION
PROJECT INVENTORY MANAGER
INVENTORY MANAGEMENT SYSTEM
Rev. 1.0
Change History
| Revision | Date | Author | Changes |
|---|---|---|---|
| 0.1 | 10/22/2017 | Lakshmi Mannem | Initial Revision |
| 0.2 | 10/23/2017 | Thomas Wester | Added requirements for Section 4.1 |
| 0.3 | 10/23/2017 | Lakshmi Mannem | Added requirements for Sec 4.2 and 4.4 |
| 0.4 | 10/23/2017 | Damon Fowler | Added requirements for Section 4.5, 51, 5.3, 5.4, and 5.5. Context diagram for Section 3. And partial 4.6 |
| 0.5 | 10/23/2017 | Lakshmi Mannem | Added System Admin and Security requirements (Section 4.7) |
| 0.6 | 10/23/2017 | Thomas Wester | Added Section 2.x |
| 0.7 | 10/23/2017 | Karen Raymond | Added Sections 1.0, 1.1, 1.2, 1.2.1, and 1.3. Requirements for section 4.3 |
| 0.8 | 10/24/2017 | Damon Fowler | Modified Section 5.4 and acronyms list. |
| 0.9 | 10/24/2017 | Karen Raymond | Added Section 1.4. Removed 7.2. |
| 0.10 | 10/24/2017 | Jose Jimenez | Added Sections 6.2 and 6.3. Added Draft UI Representation. |
| 1.0 | 10/24/2014 | Karen Raymond | Release version. |
Table 1.1
This document details the software Product Overview Specification for the Inventory Management System (IMS). This system will provide functionality for the online management of a retail store’s inventory, supplier items, and order items and will include functionality for performing system auditing, administration, and security. Included in this document is a listing of the IMS functional and non-functional requirements.
The following conventions are used in this document:
Main Titles
Font: Arial
Size: 20
Face: Bold
Subsection Titles
Font: Arial
Size: 16 or 14
Face: Bold or Italicized
Body
Font: Arial
Size: 11
Face: Normal
In this specification, the verbs "shall" or "must" indicate testable requirements. Each requirement must be tested during verification and/or validation. The verb "may" indicates a recommendation or desirable goal. The verb "will" indicates information provided for clarification or to provide context to or rationale for one or more requirements. The information provided is not to be considered a requirement and is therefore not testable.
This specification contains the requirements for the IMS project. The intended audience for this document includes the IMS development team, QA team, and any management, other staff, or stakeholders involved with this project.
The Accredited Standards Committee. (n.d.). What is EDI? In Frequently Asked Questions (A2). Retrieved October 23rd, 2017, from http://www.x12.org/about/faqs.cfm#a1
W3Schools. (n.d.). Introduction to XML. In XML Tutorial (XML Introduction). Retrieved October 23rd, 2017, from https://www.w3schools.com/xml/xml_whatis.asp
JScape. (n.d.). What is EDI X12? Retrieved October 24, 2017, from Managed File Transfer Solutions: http://www.jscape.com/blog/edi-x12
Measurement Equipment Corporation. (n.d.). UPC-A Barcode. Retrieved October 24, 2017, from Market barcode: http://www.makebarcode.com/specs/upc_a.html
The Inventory Management software is an online product inventory management application for tracking of a retail store’s inventory, pending purchase orders, and product backordered status and dates. Use of the Inventory Management software by a retailer will enable efficient tracking of quantities, warehouse sourcing locations, low quantity reorder requirements, and backorder lead time tracking.
The Inventory Management software will be capable of performing all necessary functions for tracking a retail store’s product on hand. This will include:
Addition and removal of products from inventory
Supplier purchase order generation
Automated supplier purchase order generation
Inventory-on-hand report generation
Supplier purchase order report generation
Product description management functions
Utilizing the Inventory Management software, inventory tracking can facilitate automated inventory management based on expected product reorder lead times versus product quantities within inventory. By utilizing the application’s automated supplier purchase order generation features, and based on consumption rate versus lead time, retail organizations may utilize lean inventory management practices while minimizing risks of product shortages.
The Inventory Management software will reside on a cloud-based web server which may be accessible through retail store workstations through all mainstream web browser applications. A backend database shall function as the product inventory information repository. Within this database shall exist the product listings with applicable ordering and pricing information, and supplier listings with applicable addressing and payment information.
The web browser interface of the Inventory Management software shall provide a consistent interfacing for retail store personnel across multiple workstation platforms and may be accessible through any workstation providing internet connectivity.
The Inventory Management software shall operate within a backend SQL database and a web browser front end interface. Management functions may be performed by retail store personnel using appropriate logins through approved web browsers. All major operating systems and web browsers shall be supported. Workstations shall be required to have internet connectivity in order to utilize the web interface.
The database server application shall exist on a Linux based x64 operating system. The database server application shall provide hosting for web socket connections with client workstations.
| Resource | Client | Server |
|---|---|---|
| Operating System | Windows Vista and later Mac OS X and later Linux V2.6 and later |
Linux x64 V2.6 and later |
| Web Browser | IE 11 and later Chrome V49 and later Firefox V40 and later Safari 9 and later |
n/a |
| RAM | >2Gb | >8Gb |
| Hard Disk | n/a | >500Gb |
| Database Server | n/a | MySQL 5.7 |
| Development Language | HTML, Java | Java |
Table 1.2
Each retail store employee must have a unique identifier for use in login authentication. Retail store personnel shall be required to maintain a confidential password, which may be reset by the database administrator.
Cost constraints dictate there shall be a single server providing data services for all retail store workstations. Retail stores shall be required to provide internet access to all workstations which require database access in order to utilize the Inventory Management web interface.
The Inventory Management software will conform to applicable industry and government regulations regarding privacy and cybersecurity.
User identification and authentication shall be required and shall conform to applicable encryption protocols.
Transactions shall be recorded electronically and optionally printed for retrieval and auditing purposes.
For the purposes of the Inventory Management software, assumptions have been made regarding the internet connectivity of the retail store’s inventory workstations. In order to function, all inventory workstations must maintain connectivity with the web server in order to access application functions and perform inventory management.
Training shall be required for retail store managers and shall be provided upon delivery and deployment of the Inventory Management as a function of an on-going service contract; in-application help prompts will be provided for training reinforcement.
Figure 1. Context diagram for the Inventory Management System.
| Object ID | Object Text |
|---|---|
| UAM-01 | The system shall require user authentication credentials for supplier access. |
| UAM-02 | The system shall require user authentication credentials for inventory management access. |
| UAM-03 | The system shall permit supplier profile updates to the logged in supplier profile with supplier access credentials. |
| UAM-04 | The system shall permit creation of purchase orders using supplier access credentials. |
| UAM-05 | The system shall permit viewing of purchase order status using supplier access credentials. |
| UAM-06 | The system shall permit supplier profile updates to all supplier profiles using management access credentials. |
| UAM-07 | The system shall permit creation of purchase orders using management access credentials. |
| UAM-08 | The system shall permit viewing of purchase order status using management access credentials. |
| UAM-09 | The system shall permit editing of purchase orders using management access credentials. |
| Object ID | Object Text |
|---|---|
| IND-01 | The system shall allow a name for an inventory item |
| IND-02 | The system shall allow a SKU number to identify each item. |
| IND-03 | The system shall allow UPC barcode for each inventory item. The system supports UPC-A barcode format. |
| IND-04 | The system shall limit UPC-A barcode field to 12 numeric digits. No characters are allowed. |
| IND-05 | The system shall support UPC-A barcode either by typing or scanning the barcode. |
| IND-06 | The system shall validate entered UPC barcode as per UPC-A Code assignment. |
| IND-07 | The system shall have a manufacturing name for each item. |
| IND-08 | The system shall have a warehouse location for each item. |
| IND-09 | The system shall maintain the number of inventory items that are available in store. |
| IND-10 | The system shall maintain the number of inventory items that are available in warehouse. |
| IND-11 | The system shall maintain a reorder quantity value for refills. |
| IND-12 | The system shall maintain a reorder unit type field for each item. |
| IND-13 | The system shall provide five reorder unit types: case, two-pack, single, by volume and by weight. |
| IND-14 | The system shall allow backorder date for each inventory item. |
| IND-15 | The system shall allow one or multiple supplier name(s) for each inventory item. |
| IND-16 | The system shall provide field for per-item retail Sale price for each inventory item. |
| IND-17 | The system shall provide entry for saving supplier item info. Info fields supported are name, address, telephone, and supplier EDI preference and payment options. |
| IND-18 | The system shall support multiple EDI options such as paper order forms, X12 and XML formats. |
| IND-19 | The system shall support multiple payment options such as cash-on-delivery, net 30 days and credit card modes. |
| IND-20 | The system shall provide following information fields with order items. 1. Supplier name, address, telephone.2.Item quantity and price. 3. Delivery date 4. Total order price |
| IND-21 | The system shall generate error messages when the user attempts to enter invalid data. |
| IND-22 | The system shall allow users to enter 10 digits for phone numbers. No characters are allowed. |
| IND-23 | The system allow users to enter email id that has @ and ‘.’ Symbols. |
| IND-24 | The system shall present a datetime picker to select a date. |
| IND-25 | The system shall display text in English language. |
| IND-26 | The system shall read bar code labels from barcode labels when an item is scanned. |
| Object ID | Object Text |
|---|---|
| IMA-01 | The system shall allow for the addition and removal of items from the store’s inventory. |
| IMA-02 | The system shall generate purchase orders to suppliers using ANSI ASC X12 EDI messages, paper, or XML. |
| IMA-03 | The system shall generate purchase orders upon request or upon the system inventory reaching designated reorder level for items. |
| IMA-04 | The system shall write purchase orders to the appropriate file type. |
| IMA-05 | The system shall update the inventory either by using a UI or by reading an XML file that has an appropriate DTD. |
| Object ID | Object Text |
|---|---|
| RPT-01 | The system shall allow the user to generate a report showing the information of a selected purchase order. |
| RPT-02 | The system shall generate report showing the information of sales by product in the specified time period. |
| RPT-03 | The system shall generate report showing the information about the inventory performance in each product category. |
| RPT-04 | The system shall provide reorder report to view a product, its associated suppliers and relevant stock level, reorder quantity information. |
| RPT-05 | The system shall provide transaction history report to view a list of transactions on a product or warehouse. |
| RPT-06 | The system shall provide backorder enquiry report to manage the creation and deployment of shipments. |
| RPT-07 | The system shall generate purchase order summary report for a selected time period. |
| RPT-08 | The system shall generate inventory on order report to view list products on an order. |
| RPT-09 | The system shall export generated report according to export preferences. |
| RPT-10 | The system shall print generated reports on a printer linked to system. |
| RPT-11 | The system shall provide statistical information reports on an hourly, daily, weekly, and monthly and annual basis. |
| RPT-12 | The system shall provide reports on statistics of records added to the database, items missing from the repository, inventory requests etc. |
| Object ID | Object Text |
|---|---|
| POM-01 | The inventory management software shall support creation of customer purchase orders. |
| POM-02 | The inventory management software shall support modification of a purchase order’s objects. |
| POM-03 | The inventory management software shall allow the list display of all purchase orders. |
| POM-04 | The inventory management software shall allow the display of one purchase order. |
| POM-05 | The inventory management software shall allow term criteria searching of purchase orders. |
| POM-01 | The inventory management software shall support creation of customer purchase orders. |
| POM-02 | The inventory management software shall support modification of a purchase order’s objects. |
| Object ID | Object Text |
|---|---|
| AOR-01 | The system shall provide logging operations for all user interactions. |
| AOR-02 | The system shall provide an interface to view auditing records. |
| AOR-03 | The system shall maintain user type record for each logged event. |
| AOR-04 | The system shall maintain date/time for each logged event. |
| Object ID | Object Text |
|---|---|
| SAS-01 | The system shall have a configuration to enable mandatory login to perform any operation. |
| SAS-02 | The system shall have the ability to configure the timeout to perform an automatic logout after a user has logged in. |
| SAS-03 | The system shall have the ability to configure minimum and maximum length of a password. |
| SAS-04 | The system shall have the ability to configure password strength to force a lowercase, uppercase letters and numbers in the password. |
| SAS-05 | The system shall prohibit the exiting of the system. |
| SAS-06 | The system shall restrict groups of users/workstations to specific functions. |
| SAS-07 | The system shall assign role based security privileges to different user groups. |
| SAS-08 | The system shall allow authorized user to conduct database backup operations to protect data integrity. |
| SAS-09 | The system shall not allow unauthorized viewing, altering or copying data from database. |
| SAS-10 | The system shall allow authorized user to backup database and verify data is secured. |
| SAS-11 | The system shall encrypt contents of database when exported. |
| SAS-12 | The system shall allow recovery operations by restoring from a backup database. It will utilize page checksums to detect data corruption. |
| SAS-13 | The system shall track and approve all database modifications. |
| SAS-14 | The system shall backup database periodically to recover from problems or to roll back to a prior point of time. |
| Object ID | Object Text |
|---|---|
| CPR-01 | The inventory management software shall notify the user when operations are completed. |
| CPR-02 | The inventory management software shall complete an operation within a reasonable amount of time. |
No safety requirements have been identified for the current system.
| Object ID | Object Text |
|---|---|
| CSR-01 | The inventory management software shall transmit sensitive data in an encrypted format. |
| CSR-02 | The inventory management software shall not display sensitive information to the user interface. |
| CSR-03 | The inventory management software shall destroy user session data upon logout. |
| Object ID | Object Text |
|---|---|
| CBR-01 | The inventory management software shall not operate outside of local/national law guidelines. |
| CBR-02 | The inventory management software shall not infringe upon any patented/copyright operations/features. |
| CBR-03 | The inventory management software shall enforce user agreement of the system’s terms of agreement. |
| CBR-04 | The inventory management software shall contain user agreement preservation. |
The systems provide a web client to add and remove items from the store's inventory.
The systems provide online reports on the client side of:
current inventory-on-hand
outstanding orders to suppliers
purchase orders to suppliers
System shall present first-time user a login page when trying to access privileged features.
Registered users should be able to login to see profile page
Each user will have a different level of accessibility.
Admin
Auditor (Admin read only)
User (read only)
User (read and modify)
Admin features allow a user to:
backing up the data on the server
checking integrity of the database
see past transactions
check logged in users and logs.
Figure 2. IMS user authentication UI.
Figure 3. IMS UI for purchase orders.
Program is written in Java programming language.
The system uses XML as its main form of interchanging data. (Note: Can XML be encrypted? Is XML interchange the same thing as “exporting data”?)
Input of data
Purchase orders.
Inventory Items
Suppliers.
Output of data
Report generator
XML
Purchase orders.
Inventory Items
Suppliers.
PDF to all Paper sizes
EDI messages
System interfaces with a PDF generator that can be send out to a printer
Validator
Should validate any entered UPC number
Address validation
Phone number validation
Valid date (Daylight saving accommodations, International orders etc.)
This will be accomplished by storing dates in a standard form (such as UTC) with adjustment for local settings.
Unit validator. (Rounding Errors preventions)
Note: If the system uses floating point calculations, this can be quite challenging.
A solution would be to provide a limit of accuracy
Money Validator (Rounding Error Preventions)
Note: If international orders are allowed, will multiple currencies be supported?
The system shall leverage existing Web Service technologies. The communication among software component would be performed through an XML or JSON API.
Client on internet will be using HTTP protocol to get latest transaction updates from the server.
| Term | Definition |
|---|---|
| EDI | Electronic Data Interchange |
| HTTPS | Hypertext Transfer Protocol Secure |
| IE | Microsoft Internet Explorer |
| IMS | Inventory Management System |
| OS | Operating System |
| Portable Document Format | |
| SKU | Stock Keeping Unit |
| UI | User Interface |
| UPC | Universal Product Code |
| X12 | One type of EDI Format |
| XML | eXtensible Markup Language |


prediction feature Tpn peptide AVPs peptides .() using model []. antiviral Vpn method Meta-iAVP respectively. used AVP amino (i.e., <. .%, Figure features Table web datasets proposed dataset new viral learning five-fold acid benchmark independent sequence {border-style activity server PseAAC based performance protein px;} virus #ffffff;} AAC results values human respectively, test various Chang [], analysis comparisons discriminating machine study, DPC al.’s methods package represent representation validation viruses (%) (.%, MDGI Non-AVPs effective meta-predictor models number shown algorithms composition existing i.e., important random types AVPpred AntiVPP MCC Non-AVPs, SVM antimicrobial called classification experimental five-repeated host importance input observed obtained predicting properties sequences Am-PseAAC acids best cross-validation different efficient experimentally given model, proteins provided regression virus, Amino Biol. Feature Non-AVP Thus, XGBoost addition, biological develop developed distribution glm index information kinase parameters process pseudo px; sequence-based set shows validated value {font-family (., AAC, Acids Meanwhile, Non-AVPs. Vpn, algorithm database datasets, decrease derived described development font-size hepatitis influenza k-NN linear novel predict prediction. predictors previous representation, represented role space study therapeutic type AVPs. Furthermore, GDC Gini ONEe./journal.pone. Performance PseAAC, [,,] [,]. approach assessed cationic class compared constructed constructing dataset. double; drug ensemble features, following function mean model. output parameter peptides. performed predicted provide reported rpart scores structure studies tool useful .%) Analysis DPC, Finally, Learning Meta-iAVP, Meta-iAVP. Meta-predictor Prediction RF, Thr- Tpn, ability aforementioned anticancer border-color border-width caret cells computational conducted construct data dengue dipeptide drugs essential gradient highly identifying ijms---t_Table inhibiting label natural performance. phosphorylation predictive query replication represents sample search single solid; steps summarized terms tree utilized {font-style {font-weight (weight .), AVPred Ac, Acid Am-PseAAC, Antimicrobial Antiviral CSV Computational Data Firstly, HIV HN, Herein, Identification Lys Meta-Predictor Peptides Representation Results Sn, Stat. Step XGBoost, according accuracy accurate achieved activities antigen available average basic bold button cell classifier clinical compare component compositions courier; deployed determined effectiveness em; error established estimated evaluate false file final follows: forest freely fusion gene great having herpes high higher highest http://codes.bio/meta-iavp/. hydrophobicity informative inhibitors k-fold lamda) leukocyte measure mentioned models. optimized outperformed performances physicochemical positive potent production promising pt;} repeated residues resistance respiratory result resulting rigorous scheme seen sequences. step superiority targeting testing train training unknown vector


The JavaScript Math object allows you to perform mathematical tasks on numbers.
Math.PI returns the ratio of a circle's circumference to its diameter:
Math.round(x) returns the value of x rounded to its nearest integer:
Math.pow(x,y) returns the value of x to the power of y:
Math.sqrt(x) returns the square root of x:
Math.abs(x) returns the absolute (positive) value of x:
Math.ceil() rounds a number up to its nearest integer:
Math.floor(x) returns the value of x rounded down to its nearest integer:


Keith Scarmato's it162 Portal
Welcome
I love meeting new people and discovering new places! I've backpacked most of the United States, all of Canada and Puerto Rico.
As a lifelong student of anthropology & archaeology, patterns of culture and human ecology are my passion.
A few key travel priorites still on my bucket list include treks to visit Olduvai Gorge & the Serengeti plains of East Africa; Turkey's ancient archeological sites including Gobekli Tepe (the world oldest temple) and a touring trip of medieval historical sights in Prague and Eastern Europe.
My 20+ years working in the hospitality/event management industry in 3 major US cities has allowed me to work with a broad spectrum of people and global cultures. I'm currently pursuing a career in web development & design while honing my skills in creative content writing.
An ideal career environment for me would combine my love of travel with my passion to write and work on creative web design & development projects in the fields of hospitality, cultural events, museums and archaeological tourism.


Why engineering?
Engineers work to solve global problems such as world hunger, clean water, protecting the environment and improving the quality of everyday life. Engineering allows you to use your creativity every day. Engineering gives you the chance to collaborate with other professionals such as lawyers, doctors, government officials, scientists, statisticians and more. Engineering is a global endeavor, frequently affording the opportunity for travel. Engineers have the opportunity for rapid advancement in their companies. Engineers frequently have a high level of responsibility and autonomy in their positions Engineering salaries remain high. Engineering degrees provide excellent preparation for other professional degrees such as medicine, law or business. While working as a scientist frequently requires advanced degrees, engineers are very employable with a bachelors degree. Engineering has more impact on the world than any other profession.


arrow_back
Adventure.Rocks
{ACTION_ICON}
{ACTION_TOOLTIP}
lock_open
Sign Out
home
Home
info_outline
About
smartphone
Apps
local_drink
Buy us Beer!
grade
Highlights
description
Blog
photo_library
Albums
map
Heatmap
camera
360 Photos
local_movies
Videos
camera_alt
Today's Photo
{FILE {BODY_FILE}}


Coverage Summary for Class: Turn (it.polimi.ingsw.model)
| Class | Class, % | Method, % | Line, % |
|---|---|---|---|
| Turn | 100% (1/1) | 88,9% (8/9) | 91,7% (11/12) |
1 package it.polimi.ingsw.model; 2 3 /** 4 * This class represents a turn of the game flow phase of the game. 5 * During each turn a player can perform only one normal action between {@link TakeResourcesFromMarket}, {@link ActivateProduction} 6 * and {@link BuyDevCard}. Afterwards he can activate or discard a leader card, or he can move the resources in his warehouse. 7 * The players that are not in turn can only see parts of the board without actively interacting with them. 8 */ 9 10 public class Turn { 11 /** 12 * The game instance. 13 */ 14 private final Game game; 15 /** 16 * The {@link TurnState} instance associated to this turn. 17 */ 18 private final TurnState turnState; 19 /** 20 * The player in turn. 21 */ 22 private Player player; 23 /** 24 * Flag that indicates whether the player in turn has already done a normal action for this turn. 25 */ 26 private boolean doneNormalAction; 27 28 public Turn(Game game, Player player) { 29 this.game = game; 30 this.player = player; 31 this.turnState = new TurnState(); 32 } 33 34 /** 35 * Builds the concrete action class by calling the {@link TurnState} factory method. 36 * @param actionType the action the player wants to perform. 37 */ 38 public void setTurnState(TurnState.ActionType actionType) { 39 this.turnState.setActionType(actionType); 40 } 41 42 public TurnState.ActionType getActionType() { return turnState.getActionType(); } 43 44 public AbstractTurnPhase getTurnPhase() { return turnState.getTurnPhase(); } 45 46 /** 47 * @return the player in turn. 48 */ 49 public Player getPlayer() { 50 return player; 51 } 52 53 /** 54 * @return the game instance. 55 */ 56 public Game getGame() { 57 return game; 58 } 59 60 /** 61 * Sets the normal action flag when the normal action has been done for this turn. 62 */ 63 public void normalActionDone() { 64 this.doneNormalAction = true; 65 } 66 67 /** 68 * @return whether the normal action has been already done for this turn. 69 */ 70 public boolean isDoneNormalAction() { 71 return doneNormalAction; 72 } 73 74 public void setPlayer(Player player) { 75 this.player = player; 76 } 77 }


Admin Dashboard Login
User Name
Please fill in your text
Password
please fill in your password
Remember Me
Login


Your account Teds pharmacy Logout
{{totalUnpaidItemsCount+1}}
unpaid items
Why are these unpaid?
{% if rejectedItemsCount==0 %}
{% endif %} {% if rejectedItemsCount>0 %}
{% endif %} {% if rejectedItemsCount==0 %} {% endif %} {% if rejectedItemsCount>0 %} {% endif %} {{rejectedItemsCount}} item(s) Missing information {% if rejectedItemsCount>0 %} Add information {% endif %}
{{pendingItemsCount}} item(s) Information received and being reviewed
31/12/2016
next payment
Items received and approved by 19/12/2016 will be added to this payment
1 item(s)Approved and added to payment


--- layout: home title: "Page not found" nav_exclude: "true" ---
The requested page could not be found. Please report this issue, and then, revisit the Meshery documentation.


@* * Copyright 2010-2023 Artima, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import controllers.Application.scaladocsPageUrl @import controllers.Application.scalacticScaladocsPageUrl @import controllers.Application.latestVersion @import controllers.Application.majorMinorScalaVersion @userGuidePage("Using expectations") {
ScalaTest expectations is different from assertions in the way that when failure happens, it does not
throw Exception
but will return a Fact
instead.
ScalaTest makes three assertions available by default in any style trait. You can use:
expect
for general expectations;expectResult
to differentiate expected from actual values;expectThrows
to ensure a bit of code throws an expected exception.
ScalaTest's expectations are defined in trait Expectations
. You'll
need to include an extra dependency to your build file.
To include ScalaTest Expectations in your sbt project, simply add this line:
libraryDependencies += "org.scalatest" %% "scalatest-expectations" % "@{latestVersion}" % "test"
To include ScalaTest in your Maven project, use:
<dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest-expectations_@{majorMinorScalaVersion}</artifactId> <version>@{latestVersion}</version> <scope>test</scope> </dependency>
Trait Expectations
also provides:
expectDoesNotCompile
to ensure a bit of code does not compile;expectCompiles
to ensure a bit of code does compile;expectTypeError
to ensure a bit of code does not compile because of a type (not parse) error;
The Fact
returned from the functions above is composable, with &&
, &
, ||
and |
.
!
can also be used to negate a Fact
.
All of these constructs are described below.
expect
macroIn any Scala program, you can write expectations by invoking expect
and passing in a Boolean
expression,
such as:
val left = 2 val right = 1 expect(left == right)
If the passed expression is true
, expect
will return a Yes
. If false
,
Scala's expect
will return No
.
The Yes
and No
returned from ScalaTest's expect
provides error messages related to the expression.
If you pass the previous Boolean
expression, left == right
to expect
in a ScalaTest test,
a failure message will be reported in the No
, because expect
is implemented as a macro,
includes reporting the left and right values.
For example, given the same code as above but using ScalaTest expectations:
import org.scalatest.Assertions._ val left = 2 val right = 1 expect(left == right)
The detail message in the returned No
from this expect
will be: "2 did not equal 1".
ScalaTest's expect
macro works by recognizing patterns in the AST of the expression passed to expect
and,
for a finite set of common expressions, giving an error message that an equivalent ScalaTest matcher
expression would give. Here are some examples, where a
is 1, b
is 2, c
is 3, d
is 4, xs
is List(a, b, c)
, and num
is 1.0:
expect(a == b || c >= d) // No(1 did not equal 2, and 3 was not greater than or equal to 4) expect(xs.exists(_ == 4)) // No(List(1, 2, 3) did not contain 4) expect("hello".startsWith("h") && "goodbye".endsWith("y")) // No("hello" started with "h", but "goodbye" did not end with "y") expect(num.isInstanceOf[Int]) // No(1.0 was not instance of scala.Int) expect(Some(2).isEmpty) // No(Some(2) was not empty)
For expressions that are not recognized, the macro currently prints out a string
representation of the (desugared) AST and adds "was false"
. Here are some examples of
error messages for unrecognized expressions:
expect(None.isDefined) // No(scala.None.isDefined was false) expect(xs.exists(i => i > 10)) // No(xs.exists(((i: Int) => i.>(10))) was false)
The error messages generated for ==
and ===
comparisons
don't distinguish between actual and expected values. The operands are just called left
and right
,
because if one were named expected
and the other actual
, it would be difficult for people to
remember which was which. To help with these limitations of assertions, Expectations
includes a method called expectResult
that
can be used as an alternative to expect
. To use expectResult
, you place
the expected value in parentheses after expectResult
, followed by curly braces containing code
that should result in the expected value. For example:
val a = 5 val b = 2 expectResult(2) { a - b }
In this case, the expected value is 2
, and the code being tested is a - b
. This expectation will return a No
, and
the detail message in the No
will read, "Expected 2, but got 3."
Sometimes you need to test whether a method throws an expected exception under certain circumstances, such as when invalid arguments are passed to the method. You can do this in the JUnit 3 style, like this:
val s = "hi" val f = try { s.charAt(-1) No("Failed, should not reach here.") } catch { case _: IndexOutOfBoundsException => Yes("Success") // Expected, so return yes }
If charAt
throws IndexOutOfBoundsException
as expected, control will transfer
to the catch case, which returns a Yes
. If, however, charAt
fails to throw an exception,
the next statement, No("Failed, should not reach here.")
, will be run and return a No
.
To make this common use case easier to express and read, ScalaTest provides expectThrows
.
Here's how you use expectThrows
:
val s = "hi" val r = expectThrows[IndexOutOfBoundsException] { // Result type: Fact s.charAt(-1) }
This code behaves much like the previous example. If charAt
throws an instance of IndexOutOfBoundsException
,
expectThrows
will return Yes
. But if charAt
completes normally, or throws a different
exception, expectThrows
will return a No
.
You may need to ensure that exception returned with have expected values. Here's an example how you do it:
val s = "hi" val fact = expectThrows[IndexOutOfBoundsException] { // Result type: Fact s.charAt(-1) } fact.cause // fact.cause is Option[Throwable], you may do further checks on it.
Often when creating libraries you may wish to ensure that certain arrangements of code that
represent potential “user errors” do not compile, so that your library is more error resistant.
ScalaTest's Expectations
trait includes the following syntax for that purpose:
expectDoesNotCompile("val a: String = 1") // Result type: Fact
If you want to check that a snippet of code does not compile because of a type error (as opposed to a syntax error), use:
expectTypeError("val a: String = 1") // Result type: Fact
Note that the expectTypeError
call will only return Yes
if the given snippet of code does not
compile because of a type error. A syntax error will still result on a No
.
If you want to state that a snippet of code does compile, you can make that more obvious with:
expectCompiles("val a: Int = 1") // Result type: Fact
Although the previous three constructs are implemented with macros that determine at compile time whether
the snippet of code represented by the string does or does not compile, errors
are returned as Fact
at runtime.
If you want more information than is provided by default by the methods of this trait,
you can supply a "clue" string in one of several ways.
The extra information (or "clues") you provide will
be included in the fact message of the returned Fact
. Both
expect
and expectResult
provide a way for a clue to be
included directly.
Here's an example of clues provided directly in expect
:
val fact = expect(1 + 1 === 3, "this is a clue")
and in expectResult
:
val fact = expectResult(3, "this is a clue") { 1 + 1 }
The Fact
returned by the previous two statements will include the clue
string, "this is a clue"
, in the fact message.
To get the same clue in the fact message of an Fact
returned
by a expectThrows
call requires using withClue
:
withClue("this is a clue") { val fact = expectThrows[IndexOutOfBoundsException] { "hi".charAt(-1) } }
The withClue
method will only prepend the clue string to the fact
message of Fact
.
If you wish to place a clue string after a block of code, see the documentation for
AppendedClues
.
You may compose 2 Fact
using &&
, &
, ||
and |
like this:
val a = 1 val b = 2 expect(a == 1) && expect(b == 2) // Yes(1 equaled 1, and 2 equaled 2) expect(a == 1) && expect(b == 3) // No(1 equaled 1, but 2 did not equal 3) expect(a == 2) && expect(b == 2) // No(2 did not equal 1), short-circuit after the first fact. expect(a == 2) & expect(b == 2) // No(2 did not equal 1, but 2 equaled 2), you may use & if you do not want it to short-circuit. expect(a == 2) || expect(b == 1) // No(1 did not equal 2, and 2 did not equal 1) expect(a == 2) || expect(b == 2) // Yes(1 did not equal 2, but 2 equaled 2) expect(a == 1) || expect(b == 2) // Yes(1 equaled 1), short-circuit after the first fact. expect(a == 1) | expect(b == 2) // Yes(1 equaled 1, and 2 equaled 2), you may use & if you do not want it to short-circuit.
you can use !
to negate a Fact
, like this:
!expect(a == 1)
// No(!Yes(1 equaled 1))
Next, learn about tagging your tests.


--- title: Our Ravishing Rose Garden date: 2013-06-19 00:00:00 -06:00 categories: - whats-blooming layout: post blog-banner: whats-blooming-now-summer.jpg post-date: June 19, 2013 post-time: 2:39 PM blog-image: wbn-default.jpg ---
Violette Rose Rosa 'Violette'
The beautiful Violette Rose welcomes you at the entrance to the Rose Garden.
Violette Rose Rosa 'Violette'
Ancot Smoketree Cotinus coggygria 'Ancot'
Spiny Bear's Breeches Acanthus spinosus
Fredric Mistral® Rose Rosa 'MEItebros'
The roses have finally covered the Wedding Lawn Arbor!


The Spring Petclinic Application
Updated : 23-JUL-2003
Introduction
Spring is a collection of small, well-focused, loosely coupled Java
frameworks that can be used independently or collectively to build
industrial strength applications of many different types. It is
particularly useful for building enterprise applications. Enterprise
applications tend to have the following attributes:
- Large amounts of Persistent data to access
- Large amounts of User Interface displays and data entry forms
- Complex Business logic
- Concurrent access by potentially many simultaneous users
The Petclinic sample application is designed to show how the Spring
application frameworks can be used to build simple, but powerful
database-oriented enterprise applications. It will demonstrate the use
of Spring's core functionality:
- JavaBeans based application configuration
- Model-View-Controller web Presentation Layer
- Practical database access through JDBC
- Data Validation that supports but is not dependent on the
Presentation Layer
The Spring frameworks provide a great deal of useful infrastructure to
simplify the tasks faced by application developers. This infrastructure
helps developers to create applications that are :
- concise
by handling a lot of the complex control flow that is needed to use the
Java API's, such as JDBC, JNDI, JTA, RMI, and EJB.
- flexible
by simplifying the process of external application configuration through
the use of Reflection and JavaBeans. This allows the developer to
achieve a clean separation of configuration data from application code.
All application and web application objects, including validators,
workflow controllers, and views, are JavaBeans that can be configured
externally. The validation and web application frameworks provide good
support for Internationalization.
- testable
by supplying an interface based design to maximize pluggability. This
facilitates the testing of Business Logic without requiring the presence
of application or live database servers.
- maintainable
by facilitating a clean separation of the application layers. It most
importantly helps maintain the independence of the Business Layer
from the Presentation layer through the use of a Model-View-Controller
based web presentation framework that can work seamlessly with many
different types of view technologies. The web Spring web application
framework helps developers to implement their Presentation as a clean
and thin layer focused on its main missions of translating user actions
into application events and rendering model data.
It is assumed that users of this tutorial will have a basic knowledge
of object-oriented design, Java, Servlets, JSP, and relational
databases. It also assumes a basic knowledge of the use of a J2EE web
application container, Tomcat in particular.
Since the purpose of the sample application is tutorial in nature, the
implementation presented here will of course provide only a small subset
of the functionality that would be needed by a real world version of a
Petclinic.
Petclinic Sample Application Requirements
The application requirement is for an information system that is
accessible through a web browser. The users of the application are
employees of the clinic who in the course of their work need to view and
manage information regarding the veterinarians, the clients, and their
pets. The sample application supports the following:
Use Cases:
- View a list of veterinarians and their specialties
- View information pertaining to a pet owner
- Update the information pertaining to a pet owner
- Add a new pet owner to the system
- View information pertaining to a pet
- Update the pertaining to a pet
- Add a new pet to the system
- View information pertaining to a pet's visitation history
- Add information pertaining to a visit to the pet's visitation
history
Business Rules:
- An owner may not have multiple pets with the same
case-insensitive name.
Petclinic Sample Application Design & Implementation
Server
Technology
The sample application should be usable with any J2EE web application
container that is compatible with the Servet 2.3 and JSP 1.2
specifications. Some of the deployment files provided are designed
specifically for Apache Tomcat. These files specify container-supplied
connection-pooled data sources. It is not necessary to use these files.
The application has been configured by default to use a data source
without connection pooling to simplify usage. Configuration details are
provided in the Developer Instructions section. The view technologies
that are to be used for rendering the application are Java Server Pages
(JSP) along with the Java Standard Tag Library (JSTL).
Database
Technology
The sample application uses a relational database for data storage.
Support has been provided for a choice of 1 of 2 database selections,
Mysql or HypersonicSQL. HypersonicSQL version 1.7.1 is the default
choice and a copy is provided with the application. It is possible to
easily configure the application to use either database. Configuration
details are provided in the Developer Instructions section.
Development
Environment
A copy of the Spring runtime library jar file is provided with the
sample application along with some of the other required jar files. The
developer will need to obtain the following tools externally, all of
which are freely available:
- Java SDK 1.4.1
- Ant 1.5.1
- Tomcat 4.1.18, or some other web application container
- JUnit 3.8.1 - needed to run the unit tests
- Mysql 3.23.53 with mysql-connector 2.0.14 (optional)
NOTE: The version numbers listed
are those that were used in the development of the Petclinic
application. Other versions of the same tools may or may not work.
Download links for the various tools needed are provided in the
Developer Instructions section.
Petclinic
Database
The following is an overview of the database schema used in Petclinic.
Detailed field descriptions can be found in the "initDB.txt"
SQL script
files in the database-specific "db" sub-directories. All "id" key fields
are of Java type int.
For each table with a PRIMARY KEY there is a corresponding sequencer
table that is used to aid in the generation of new primary keys. The
name of the sequencer table is a conjunction of the original table's
name with "_seq".
TABLE: owners
PRIMARY KEY id
TABLE: owners_seq
- sequencer for owners
TABLE: types
PRIMARY KEY id
TABLE: types_seq -
sequencer for types
TABLE: pets
PRIMARY KEY id
FOREIGN KEY type_id
references the types
table id field
FOREIGN KEY owner_id
references the owners
table id field
TABLE: pets_seq
- sequencer for pets
TABLE: vets
PRIMARY KEY id
TABLE: vets_seq -
sequencer for vets
TABLE: specialties
PRIMARY KEY id
TABLE: specialties_seq-
sequencer for specialties
TABLE: vet_specialties-
a link table for vets
and their specialties
FOREIGN KEY vet_id
references the vets table id field
FOREIGN KEY specialty_id
references the specialties
table id field
TABLE: visits
PRIMARY KEY id
FOREIGN KEY pet_id
references the pets table id field
TABLE: visits_seq -
sequencer for visits
Directory
Structure
f-- indicates a file
d-- indicates a directory
D-- indicates a directory that is created by the Ant build script
d-- petclinic :
the root directory of the project
f-- build.xml : the
Ant build script
f-- build.properties :
a properties file for customizing the Ant build script
d-- src : contains
Java source code files
d-- war : contains
the web application resource files
d-- test : contains
testing related files
d-- src : contains
Java source code and other files used for testing
D-- .classes :
contains compiled Java class files used for testing
D-- reports/html :
contains generated html-formatted test reports
d-- db : contains
database sql scripts and other related files/directories
d-- hsqldb :
contains files related to HSQL, contains scripts and a Tomcat
context definition file
d-- mysql :
contains files related to MYSQL, contains scripts and a Tomcat context
definition file
f-- petclinic_tomcat_all.xml
: a Tomcat context definition for all db's
f-- build.xml : Ant
script for populating/emptying the database
D-- .classes :
contains compiled Java class files
D-- dist : contains
packaged archives of files
D-- docs : contains
Javadoc files
Petclinic Application Design
Business
Layer
The
Business Layer consists of a number of basic JavaBean classes
representing the application domain objects and associated Validators that are used by the
Presentation Layer.
- petclinic.Entity
is a simple JavaBean superclass used for all database related objects.
- petclinic.NamedEntity
is an extension of Entity that
a adds name property and is used directly to implement specialties and
pet type objects.
- petclinic.Person is
an extension of Entity that
provides a superclass for all objects that implement the notion of
a person.
- petclinic.Vet is
an extension of Person that implements a
veterinarian. It holds a List of
specialties that the Vet is
capable of.
- petclinic.Owneris
an extension of Person that implements a pet owner.
It holds a List of pets
owned.
- petclinic.Pet
is an extension of
NamedEntity that implements a pet. It holds a List of visits made concerning the
pet.
- petclinic.Visit
is a simple JavaBean that implements the notion of a clinic visit
for a pet.
- petclinic.NoSuchEntityException(unchecked)
is a RuntimeException thrown
when an erroneous reference is made to a non-existent Entity.
- petclinic.validation.FindOwnerValidator is
a Spring Validator that
verifies correct data entry for the FindOwner form.
- petclinic.validation.OwnerValidator
is a Spring Validator that
verifies correct data entry for the Add and Edit Owner forms.
- petclinic.validation.PetValidator
is a Spring Validator that
verifies correct data entry for the Add and Edit Pet forms.
- petclinic.validation.VisitValidator
is a Spring Validator that
verifies correct data entry for the AddVisit form.
Business/Persistence
Layer
Since
the Petclinic application is all about database access and there is
very little business logic in the application outside of that, there is
no separation of the primary Business and Persistence Layer API's. While
this design technique should not be used for an application with more
complex business logic, it is acceptable here because all of the
non-persistence related business rules have been implemented in business
objects and have not leaked into the Persistence Layer. The most
important facet of the design is that the Business and Persistence
Layers are COMPLETELY independent
of the Presentation Layer.
The Persistence Layer is implemented using JDBC aided by infrastructure
provided by Spring. Spring provides a number of high-level database
access convenience classes in the package com.interface21.jdcb.object. These
classes and the lower-level Spring classes that they use provide a
higher level of abstraction for using JDBC that keeps the developer
from having to correctly implement the handling of the checked SqlExceptions with ugly error-prone
nested try-catch-finally blocks. Using the classes in this package
allows the developer to focus efforts on the functionality being
implemented rather than the mechanics of error handling. Spring catches
the SqlExceptions thrown by
JDBC and maps them to unchecked, meaningful Spring DataAccessExceptions that
developers can catch if it's appropriate to do so. These classes also
take care of closing connections to prevent hard to find resource
leakage problems. It should be noted that instances of these classes are
lightweight, reusable, and threadsafe.
Examination of the Petclinic source code will show that the
persistence-oriented code is completely focused on the relevant SQL and
the transfer of data to/from the referenced objects without extraneous
error handling. All of the objects used to implement database transfer
are derived from the Spring class RdbmsOperation
which supports using SQL or stored procedures.
All of these objects that are defined for use in Petclinic use SQL in
their implementation. SQL implementations of RdbmsOperation typically only need
to provide a constructor to initialize and compile an SQL PreparedStatement and a callback
method that performs the actual data transfer. SQL "Select" type
queries are implemented by subclassing com.interface21.jdcb.object.MappingSqlQuery.
These subclasses implement the mapRow(ResultSet,
int) method to extract data from the ResultSet returned to the framework
by execution of the query. The framework calls this method once for
every row in the ResultSet.
SQL "Update" and "Insert" type queries are implemented by
subclassing com.interface21.jdcb.object.SqlUpdate.
These subclasses implement an update(Object[]) method that places the
domain object data into an Object array which is substituted into the
appropriate SqlParameters of
a PreparedStatement.
- petclinic.Clinic(interface)
defines the high-level business/persistence API for Petclinic.
- petclinic.jdbc.AbstractJdbcClinic is
the default JDBC implementation of the Clinic
interface. It provides caches of all specialties, all vets, all pet
types, as well as of owners and their pets and visits that have been
found. It also provides an RdbmsOperation
reference and setter and execution ("do") method along with a default inner class
implementation for each of the required Spring RdbmsOperation objects.
- VetsQuery is
the base class for any Vet Query
Objects. It provides an "All Vets" query as a convenience.
- SpecialtiesQuery
is the "All Vet's Specialties"
Query Object.
- VetSpecialtiesQuery
is a particular Vet's specialties
Query Object.
- OwnersQuery
is an abstract base class for all Owner
Query Objects.
- OwnerQuery
is an Owner by id Query Object.
- OwnersByNameQuery
is an Owners by last name
Query Object.
- OwnerUpdate
is an Owner Update Object.
- OwnerInsert
is an Owner Insert Object.
- TypesQuery is
an "All Pet types" Query
Object.
- PetsQuery is an abstract
base class for all Pet Query
Objects.
- PetQuery is a Pet by id Query Object.
- PetsByOwnerQuery
is a Pets by Owner Query Object.
- PetUpdate is
a Pet Update Object.
- PetInsert is
a Pet Insert Object.
- VisitsQuery
is a Visits by Pet Query Object.
- VisitInsert
is a Visit Insert Object.
- petclinic.jdbc.HsqlClinic is
an Hsql specific extension of AbstractJdbcClinic.
It provides Hsql implementations of the required RdbmsOperation Insertion objects.
This class can be extended to substitute customized implementations of
the RdbmsOperation objects and their respective execution ("do")
methods for the default versions.
- petclinic.jdbc.MyqlClinic is a
Mysql specific extension of AbstractJdbcClinic.
It provides Mysql implementations of the required RdbmsOperation Insertion objects.
This class can be extended to substitute customized implementations of
the RdbmsOperation objects and their respective execution ("do")
methods for the default versions.
Presentation
Layer
The
Presentation Layer is implemented as a J2EE Web Application and
provides a very thin and concise Model-View-Controller type user
interface to the Business and Persistence Layers.
The Petclinic web application is configured via the following files:
- war/WEB-INF/web.xml
is the standard web application configuration file.
- war/WEB-INF/applicationContext.xml
configures application wide objects.
- war/WEB-INF/petclinic-servlet.xml
configures the petclinic dispatcher servlet and the other controllers
and forms that it uses.
- war/WEB-INF/classes/views*.properties
configures the definition of internationalizable Spring views.
- war/WEB-INF/classes/messages*.properties
configures the definition of internationalizable message resources.
- war/WEB-INF/classes/log4j.properties
configures the definition of Log4j loggers.
Examine the comments provided in each of these files for a more
in-depth understanding of the details of how the application is
configured.
General
- In web.xml,
a context-param, "webAppRootkey",
provides the key for a system property that specifies the root
directory for the web application. This parameter, "petclinic.root", can be used to aid
in configuring the application.
- In web.xml,
a ContextLoaderListener is
defined that loads the root ApplicationContext
object of this webapp at startup, by default from /WEB-INF/applicationContext.xml.
A Spring ApplicationContext object
provides a map of user-defined JavaBeans that specify either a
singleton object or the initial construction of prototype instances. The
root ApplicationContext of
Petclinic is an instance of XmlWebApplicationContext and
is the parent of all servlet-specific ApplicationContexts.
The Spring root ApplicationContext object
provides a map of user-defined JavaBeans that can be used in any and
all layers of the application. Beans defined in the root ApplicationContext are automatically
available in all child ApplicationContext objects
as (external) bean references. Beans defined in an ApplicationContext can also be
accessed directly by Java code through getBean(name)
method calls.
- In web.xml,
a Servlet named "petclinic" is specified to act as
a dispatcher for the entire application. This com.interface21.web.servlet.DispatcherServlet
is used to handle all URL's matching the pattern "*.htm". As with any Servlet, multiple URL mappings may
be defined. It is also possible to define multiple instances of DispatcherServlet. Each DispatcherServlet dispatches
requests to registered handlers (Controller
interface implementations). Each DispatcherServlet
has its own ApplicationContext,
by default defined in "{servlet-name}-servlet.xml".
In this case, it is in the file "petclinic-servlet.xml".
This ApplicationContext is
used to specify the various web application user interface beans and the
URL mappings that are used by the DispatcherServlet
to control the handling of requests.
- In web.xml,
the Spring tag library uri and location are specified for use by the
JSP pages.
ApplicationContext
3 globally accessible beans are defined in the Petclinic applicationContext.xml
file:
- messageSource
is a singleton bean that defines a message source for this and all child ApplicationContexts. Messages are
loaded from localized "messages_xx"
files in the classpath, such as "/WEB-INF/classes/messages.properties"
or "/WEB-INF/classes/messages_de.properties". getMessage() calls to this context will use this
source. Child contexts can have their own message sources, which will
inherit all messages from this source and are able to define new
messages and override ones defined in the primary message source.
- dataSource is
a singleton bean that defines the implementation of the source of
database connections used by the application.
- clinic is
a singleton bean that defines the implementation of the Clinic interface that provides the
primary Business Layer API of the application.
Logging
Spring supports the use of the Apache
Commons Logging API.This API provides the ability to use Java 1.4
loggers, the simple Commons loggers, and Apache Log4J loggers. Petclinic uses Log4J
to provide sophisticated and configurable logging capabilities. The
files web.xml and log4j.properties specify
the configuration of logging in the system:
- In web.xml,
a "log4jConfigLocation" context-param
is specified that sets the location of the Log4j configuration file. The
default location for this file is /WEB-INF/classes/log4j.properties.
Specifying this parameter explicitly allows the location to be changed
from the default and is also used to cause periodic Log4j configuration refresh checks.
- In web.xml,
a Log4jConfigListener is
specified that will initialize Log4j using
the specified configuration file when the web app starts.
- In log4j.properties,
the following loggers are specified:
- "stdout" provides
logging messages to the container's log file.
- "logfile" provides
logging messages to a rolling file that is specifed using the
previously defined "petclinic.root".
Examination and study of these logging files will provide insight into
the operation of the Spring framework and the application as well as
valuable troubleshooting information should something not work
correctly.
DispatcherServlet
The following beans are accessible to the "petclinic" DispatcherServlet and are defined
in the Petclinic petclinic-servlet.xml
file. This dispatcher uses these defintions to delegate actual display
and form processing tasks to implementations of the Spring Controller interface. The DispatcherServlet
acts as the main application controller and is responsible for
dispatching all requests to the appropriate Controller. These Controllers are responsible for the
mechanics of interaction with the user and ultimately delegate action
to the Business/Persistence Layers.
- viewResolver is
a singleton bean that defines the view mappings used by the dispatcher.
This definition specifies explicit view mappings in a resource bundle
(properties file) instead of using the default InternalResourceViewResolver. It
fetches the view mappings from localized "views_xx.properties" files, i.e. "/WEB-INF/classes/views.properties"
or "/WEB-INF/classes/views_de.properties"
that are loaded from the classpath. Symbolic view names returned by
controllers will be resolved in the respective properties file, allowing
for arbitrary mappings between view names and resources.
- urlMapping is
a singleton bean that defines the URL mapping handler that is to be
used by the dispatcher. The definition specifies the use of a SimpleUrlHandlerMapping instead of
the default BeanNameUrlHandlerMapping.
This allows specific URL's to be mapped directly to display or form
Controllers.
- clinicController
is a singleton bean that defines the Controller
that is used by the dispatcher to handle non-form based display tasks.
This bean is a MultiActionController that
can handle multiple request URLs. A method is provided to handle each
type of request that is supported.
- clinicControllerMethodnameResolver
is a singleton bean that defines a mapping of URL's to method names for
the clinicController
bean.
- 6 singleton Form beans are defined that are extensions of
the Petclinic class AbstractClinicForm which
is itself an extension of the Spring class SimpleFormController. These beans
are used to handle the various Search, Add and Edit form processing
tasks for the dispatcher.
- 4 singleton beans are defined that are implementations of the com.interface21.validation.Validator interface.
These beans are used by the Form beans to validate their input
parameters and to bind localizable error messages for display should a
processing error occur on submission.
Controllers
Spring provides a
number of useful M-V-C abstractions to developers of J2EE web
applications. The Controller interface
specifies a single method, handleRequest(HttpServletRequest, HttpServletResponse) that must be provided by
implementing classes to handle request processing. This method returns
a com.interface21.web.servlet.mvc.ModelAndView
to the DispatcherServlet for
rendering. Spring provides several convenient implementations of the Controller interface that
developers can use to simplify their task, the most significant of which
are MultiActionController, SimpleFormController, and AbstractWizardFormController. AbstractWizardFormController is not
used in Petclinic and is not discussed here. A MultiActionController is used to
define a Controller with
multiple handling methods the selection of which can be configured using
a separate MethodNameResolver object.
"FormControllers", including SimpleFormController, are used to process html forms and
can automatically populate "command" objects with data supplied via
request parameters and vice versa. SimpleFormController
is part of a deep hierarchy of objects which is discussed here.
Additional detail is avaliable in the Spring API Javadoc.
- com.interface21.context.support.ApplicationObjectSupport
is an implementation of com.interface21.context.ApplicationContextAware
which provides its subclasses with a method, initApplicationContext(), which can
be overridden to provide custom initialization behavior.
- com.interface21.web.servlet.mvc.WebContentGeneratoris
an ApplicationObjectSupport
extension that is a convenient superclass for any kind of web content
generator, like AbstractController and MultiActionController. It
supports HTTP cache control options.
- com.interface21.web.servlet.mvc.AbstractController is a WebContentGenerator extension that is
a convenient superclass for controller implementations. It provides
several properties that can be set by users, supportedMethods i.e. "GET", "POST",
etc., requireSession, and cacheSeconds. It uses the Template
Method design pattern in its final
implementation of handleRequest()whichcoordinates
how these properties are used and calls a similar handleRequestInternal() method
that subclasses must override to provide their own processing of request
handling.
- com.interface21.web.servlet.mvc.BaseCommandControlleris
an AbstractController extension that provides
infrastructure to its subclasses to support the binding and validating
process. This infrastructure creates a "command" object on receipt of a
request, and attempts to populate the command's JavaBean properties with
request attributes. Once created, commands can be validated using a
Validator associated with this class. Type mismatches populating a
command are treated as validation errors, but are caught by the
framework, not application code. Users can directly set the commandClass and validator properties to specify
the objects of interest. It also provides default implementations of
several methods that can be overridden to further customize the binding
and validation process. These methods are:
- userObject(HttpServletRequest
request) is used to create the command object.
- initBinder(HttpServletRequest request, ServletRequestDataBinder binder) is
used to initialize the binder instance and is typically overridden to
specify a custom PropertyEditor.
- onBindAndValidate(HttpServletRequest
request, Object command, BindException errors) is used to provide
custom post-processing for the binding and validation process. It is
called after standard binding and validation and before error evaluation.
- com.interface21.web.servlet.mvc.AbstractFormController is a BaseCommandController extension that provides infrastructure to its subclasses to
support html forms. It controls the form display and submission process
in its final implementation of handleRequestInternal().
- The sessionForm property, when true,
forces the creation of an HttpSession to hold the command object so that
it is retained between requests.
- The bindOnNewFormproperty,
when true, forces population of the form from data provided by the
command object. This is particularly useful for forms that are used to
edit an existing object.
- It provides an isFormSubmission(HttpServletRequest)method that subclasses can override to determine
if a given request represents a form submission. The default implementation treats a POST request as
form submission. If the form
session attribute doesn't exist when using session form mode, the request is always treated as
new form by handleRequestInternal(). Subclasses can override this to implement
a custom strategy. Petclinic uses the default implementation.
- It provides a final method showNewForm(HttpServletRequest,
HttpServletResponse) to
handle display and data binding of a new form.
- It provides a method formBackingObject(HttpServletRequest) that subclasses can override to provide a preinitialized backing object.
- It provides a method referenceData(HttpServletRequest,
Object, Errors) that
subclasses can override to provide reference data to be used in rendering
the view.
- It provides a method handleInvalidSubmit(HttpServletRequest,
HttpServletResponse) to handle an invalid form submission.
Subclasses should override this method to disallow duplicate form
submission. The default implementation simply resubmits the form.
- It provides a method processSubmit(HttpServletRequest,
HttpServletResponse, Object, BindException) that
subclasses must override to
provide custom submission handling.
- It provides several showForm() methods that are used
to display the form.
- com.interface21.web.servlet.mvc.SimpleFormController is a concrete extension of AbstractFormController that provides configurable
form and success views,
and an onSubmit chain for convenient overriding.
Views
The Controllers used by the
dispatcher handle the work flow of the application. The actual display
tasks are delegated by the Controllers
to implementations of the Spring View interface.
These View objects are
themselves beans that can render a particular type of view. The handling Controller supplies the View with a data model to render.
The data model is provided to the Viewas
a Map of objects. Views are only responsible for
rendering a display of the data model and performing any display logic
that is particular to the type of View being
rendered. Spring provides support for rendering many different types of
views: JSP, XSLT, PDF, Velocity templates, Excel files, and others. By
using a View mapping strategy,
Spring supplies the developer with a great deal of flexibility in
supporting easily configurable view substitution. Petclinic defines 10
View beans in the file, views.properties.
2 of these beans are instances of RedirectView
which simply redirects to another URL. The other View beans are instances of JstlView which provides some handy
support for supporting internationalization/localization in JSP pages
that use JSTL.
Messages
The messages*.properties
files are loaded from the classpath to provide localized messages for
the supported languages. Petclinic supplies only a single localized
message, "welcome" in the
default, English, and German properties files respectively. See the
"countries" sample application for a more detailed example of Spring's
support for internationalization.
Presentation
Layer classes
- petclinic.web.ClinicController
is an extension of MultiactionController
that is used to handle simple display oriented URLs.
- petclinic.web.AbstractClinicForm
is an extension of SimpleFormController
that is the superclass of Petclinic's form objects. It provides its
subclasses with a some commonly needed form behavior:
- It provides a clinic property
that gives access to the Clinic implementation
that is used to access the Business/Persistence Layer.
- It provides access to commonly used Pet type reference data.
- It overrides initBinder() to
provide a DateFormat PropertyEditor to handle the
specialized binding of request parameters to Date fields.
- It provides correct handling of form submission accessed using
the "Back" button:
- It disallows duplicate form submission for "Add" forms by
overriding handleInvalidSubmit().
- It allows duplicate form submission for "Edit" forms by not overriding handleInvalidSubmit().
- petclinic.web.FindOwnersForm is an extension
of AbstractClinicForm that
is used to find owners by last name.
- petclinic.web.AddOwnerForm is an extension
of AbstractClinicForm that
is used to add a new Owner. A
session is not created because a preinitialized backing object is not
needed. This is accomplished by setting the commandClass property in the
constructor.
- petclinic.web.EditOwnerForm is an extension
of AbstractClinicForm that
is used to edit an existing Owner. A
copy of the existing Owner is
used for editing.
- petclinic.web.AddPetForm is an extension
of AbstractClinicForm that
is used to add a new Pet to
an existing Owner.
- petclinic.web.EditPetForm is an extension
of AbstractClinicForm that
is used to edit an existing Pet.
A copy of the existing Pet is
used for editing.
- petclinic.web.AddVisitForm is an extension
of AbstractClinicForm that
is used to add a new Visit to
an existing Pet.
Views, Forms
& Implemented Use Cases
- welcomeView is
the "home" screen. It provides links to display a list of all vets,
find an owner, or view documentation (see petclinic.web.ClinicController).
- vetsView displays
all vets and their specialties (see petclinic.web.ClinicController).
- findOwnersForm
(see petclinic.web.FindOwnersForm)
- findOwnersRedirectView
redirects to findOwnerForm.
- selectOwnerView
allows user to select from a list of multiple owners with the same last
name.
- ownerView displays
a owner's data and a list of the owner's pets and their data (see petclinic.web.ClinicController).
- ownerRedirect
redirects to ownerView.
- ownerForm (see petclinic.web.AddOwnerFormandpetclinic.web.EditOwnerForm)
- petForm (seepetclinic.web.AddPetForm
and petclinic.web.EditPetForm)
- visitForm (seepetclinic.web.AddVisitForm)
JSP Pages
- index.jsp redirects
to the "welcome" page.
- includes.jsp is
statically included in all
JSP's used in the application. It sets session="false" to prevent
inappropriate session creation and specifies the taglibs that are in
use.
- uncaughtException.jsp
is the web.xml configured
"error-page". It displays a stack trace and normally wouldn't be used
in a production version of an application. It can be seen in action by
entering a URL of "editOwner.htm" or "editpet.htm". The handlers for
these URLs normally expect to see a respective "ownerId" or "petId"
request parameter and throw a ServletExceptionwhen
it isn't found.
- welcome.jsp implements welcomeView.
- vets.jsp implements vetsView.
- findOwners.jsp implements findOwnersForm.
- owners.jsp implements selectOwnerView.
- owner.jsp implements ownerView.
- ownerForm.jsp implements ownerForm.
- petForm.jsp implements petForm.
- visitForm.jsp implements visitForm.
The following JSP's each display a form field and the bound error data
for that field:
- address.jsp
- city.jsp
- telephone.jsp
- lastName.jsp
- firstName.jsp
The following JSTL tags are used in Petclinic:
- c:out
- c:redirect
- c:url
- c:forEach
- c:if
- fmt:message
- fmt:formatDate
The following items should be noted regarding the web application
implementation design:
- all JSP's are stored under /WEB-INF/jsp except
for index.jsp which
is the configured "welcome-file"
- The use of JSP technology in the appplication is not exposed to
the user, i.e., the end user never sees a URL ending in ".jsp".
- By convention, all URL's in the application ending in ".htm" are
handled by web application controllers. Static html pages ending in ".html", such as
Javadocs, will be directly served to the end user.
- The results of all form entries are handled using browser round
trip redirection to minimize possible end user confusion.
- All pages are extremely simple JSP implementations that focus
only on providing the necessary functionality.
- References to Entity objects
are passed around in the application by supplying the object's Id as a
request parameter.
Testing
- petclinic.OwnerTest is a JUnit
TestCase that supports Business Rule #1.
- petclinic.jdbc.JdbcClinicTest
is a JUnit TestCase requiring a live database connection that is used to
confirm correct operation of the database access objects implemented in AbstractJdbcClinic and its
subclasses.
Developer Instructions
Tools
- Download and install the Spring
Framework (examples, including Petclinic are provided)
- Download and install a Java
Software Developer Kit, preferably version 1.4 or later
- Download and install Apache Ant,
preferably version 1.5.1 or later
- Download and install JUnit,
preferably version 3.8.1 or later
- Download and install Apache Tomcat,
preferably version 4.1.18 or later
- Download and install Mysql,
(optional)
- Hypersonic SQL
version 1.7.1 is provided with the application.
- Petclinic and Spring use the Apache Commons Logging
and Log4J
packages
Ant Setup
Make sure that the Ant executable is in your command shell path. Ant
will need to reference classes from JUnit and
the database(s) of interest. Place a copy of any needed jar files in
Ant's /lib directory,
i.e.:
- JUnit - junit.jar
- HSQL - hsqldb.jar
- MYSQL - mysql-connector-java-2.0.14-bin.jar
or other
HSQL Setup
Create a new directory containing the a copy of the entire contents of
the directory petclinic/db/hsqldb.
The file petclinic.script
is the data file that will be used by the server. It has been
initialized with some sample data. Start a server on the standard port
9001 by executing server.sh(Unix)
or server.bat (Windows).
A useful database manager can be started by by executing manager.sh (Unix)
or manager.bat (Windows).
When the application opens, connect to the "HSQL Database Engine
Server" using the default parameters. This tool can also be used to
manage other databases. To use a different port, it will be necessary to
change the Petclinic Database Setup. It may also be necessary to consult
the HSQL documentation for instructions on to change the port the server
uses.
MYSQL
Setup (optional)
Add the Petclinic database to a running server by running the SQL
script db/mysql/initDB.txt.
Petclinic expects, by default to be able to access the server via the
standard port 3306. To use a different port, it will be necessary to
change the Petclinic Database Setup.
Petclinic
Database Setup
To use a connection-pooled data source with Tomcat, it will be
necessary to use and possibly edit the appropriate context definition
file for the petclinic webapp. To use it, deploy a copy of the
appropriate context definition file in Tomcat's webapps directory and
restart the server. Consult the Tomcat log files if something goes
wrong when starting either Tomcat or the Petclinic application. The
context files are named petclinic_tomcat_*.xml,
where * is
a codename for the database. There is a context file supplied for each
database in its respective directory. There is also a context file db/petclinic_tomcat_all.xml
that will provide a JNDI connection-pooled datasource for all supported
databases.
Should you use this file, you must of course make sure that all the
database servers are running when you restart Tomcat.
NOTES:
- Should you deploy one of the context files or define a context in
Tomcat's server.xml,
Tomcat will not automatically deploy the webapp from the petclinic.war file.
The webapp will then need to be manually extracted to the target
directory.
- The context files will also configure logging to supply a
separate log file for the petclinic context. This will separate the
container logging for petclinic from that of the other webapps. This
should not be confused with the application log file provided through Log4j.
- An Ant script (db/build.xml )
has been provided that can be used to re-initialize either database. To
select or configure the data source used for the webapp and for testing,
you will need to edit the files:
- war/WEB-INF/applicationContext.xml
(for the webapp)
- build.properties
(for testing)
- test/src/testContext.xml (for testing)
Building
the Petclinic Application
Open a command line shell and navigate to the directory containing
Petclinic and execute "ant". This will display a list of the Ant targets
that are available. Make sure the database is running and execute "ant
all". This will run the Ant "all" target which will clean and compile
everything, produce Javadocs, and execute the JUnit tests, including a
live test using the database. The other Ant targets provide subsets of
this functionality.
Deploying
the Petclinic Application
Deploy the web application to the server in the usual way (see notes regarding database setup). If you need
instructions for web application deployment, see the Tomcat
documentation for details. The Web ARchive file is petclinic.war and
can be found in the dist directory.
Using the
Petclinic Application
Make sure the Petclinic web application is running and browse to http://localhost:8080/petclinic
or check it
out online.


Comet parameter: nucleotide_reading_frame
- This parameter is used to search nucleotide sequence databases.
- It controls how the nucleotides are translated specifically
which sets of reading frames are translated.
- Valid values are 0 through 9.
- Set this parameter to 0 for a protein sequence database.
- Set this parameter to 1 to search the 1st forward reading frame.
- Set this parameter to 2 to search the 2nd forward reading frame.
- Set this parameter to 3 to search the 3rd forward reading frame.
- Set this parameter to 4 to search the 1st reverse reading frame.
- Set this parameter to 5 to search the 2nd reverse reading frame.
- Set this parameter to 6 to search the 3rd reverse reading frame.
- Set this parameter to 7 to search all 3 forward reading frames.
- Set this parameter to 8 to search all 3 reverse reading frames.
- Set this parameter to 9 to search all 6 reading frames.
- The default value is "0" if this parameter is missing.
Example:
nucleotide_reading_frame = 0
nucleotide_reading_frame = 9


This function expects a smoof function and returns a ggplot object depicting
the function landscape. The output depends highly on the decision space of the
smoof function or more technically on the ParamSet
of the function. The following destinctions regarding the parameter types are
made. In case of a single numeric parameter a simple line plot is drawn. For
two numeric parameters or a single numeric vector parameter of length 2 either a
contour plot or a heatmap (or a combination of both depending on the choice
of additional parameters) is depicted. If there are both up to two numeric
and at least one discrete vector parameter, ggplot facetting is used to
generate subplots of the above-mentioned types for all combinations of discrete
parameters.
# S3 method for smoof_function autoplot(x, show.optimum = FALSE, main = getName(x), render.levels = FALSE, render.contours = TRUE, log.scale = FALSE, length.out = 50L, ...)
| x | [ |
|---|---|
| show.optimum | [ |
| main | [ |
| render.levels | [ |
| render.contours | [ |
| log.scale | [ |
| length.out | [ |
| ... | [any] Not used. |
[ggplot
]
Keep in mind, that the plots for mixed parameter spaces may be very large and computationally expensive if the number of possible discrete parameter values is large. I.e., if we have d discrete parameter with each n_1, n_2, ..., n_d possible values we end up with n_1 x n_2 x ... x n_d subplots.
library(ggplot2) # Simple 2D contour plot with activated heatmap for the Himmelblau function fn = makeHimmelblauFunction() print(autoplot(fn))print(autoplot(fn, render.levels = TRUE, render.contours = FALSE))print(autoplot(fn, show.optimum = TRUE))# Now we create 4D function with a mixed decision space (two numeric, one discrete, # and one logical parameter) fn.mixed = makeSingleObjectiveFunction( name = "4d SOO function", fn = function(x) { if (x$disc1 == "a") { (x$x1^2 + x$x2^2) + 10 * as.numeric(x$logic) } else { x$x1 + x$x2 - 10 * as.numeric(x$logic) } }, has.simple.signature = FALSE, par.set = makeParamSet( makeNumericParam("x1", lower = -5, upper = 5), makeNumericParam("x2", lower = -3, upper = 3), makeDiscreteParam("disc1", values = c("a", "b")), makeLogicalParam("logic") ) ) pl = autoplot(fn.mixed) print(pl)# Since autoplot returns a ggplot object we can modify it, e.g., add a title # or hide the legend pl + ggtitle("My fancy function") + theme(legend.position = "none")


Video: 'Rocket Man' Performs Demo Flight Around Warship HMS Queen Elizabeth
The Twitter account representing UK aircraft carrier HMS Queen Elizabeth released on Thursday footage documenting a demo flight of a real-life 'rocket man' launched from the giant warship currently berthed three miles off of Annapolis, Maryland.
Demo flight pilot Richard Browning, a former Royal Marine reservist and ultra-marathon runner, invented the jet pack and worked with the Royal Navy on the development of his project.
Browning, who founded Gravity Industries in 2017, made a short flight around the aircraft carrier, stunning the passengers of a nearby passing private yacht.
"Now this is the way to travel to work! What a fantastic viewpoint of the ship - what you can’t see is the queue of excited matelots wanting to have a go! From one type of jet #UKF35 to another @takeonGravity #WESTLANT19," wrote the Twitter account of the HMS Queen on the post.
Browning’s jet pack uses five small but powerful gas turbines to produce over 1,000 horsepower, allowing it to travel at speeds up to 89 km/h.
The longest flight made by Browning and his new jet pack occurred in September, as he succeeded in crossing a distance of 1.3 km from Hurst Castle in Lymington, to Fort Albert in Freshwater.


By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress".
Copyright © The Internet Society (2012). All Rights Reserved.
This specification defines an HTML format that can be used for the production of RFCs.
Distribution of this document is unlimited. Please send comments to ...
The intro
The format
The following rules SHALL be enforced before submittal.
This draft itself is a good example of how to use the format. Please view-source.
#include <stdio.h> int main(int argc, char **argv) { printf("Hello, IETF\n"); return 0; }
something informative


Ticket ID: 409788
Name:
Parker Seidel
No Active Support
Email:
<EMAIL_ADDRESS>Response Time:
72 hours, 60 hours left
Last Action:
Never been locked.
Link to public post
Status:
Not answered


People whom have contributed to Zppixbot
- Zppix - Operator/Creator
- tom29739 - Developer
- SwisterTwister - Zppixbot web design, and friend.
- Reception123 - Helps with new features/Operator
- MacFan4000 - Web design/Operator
- Phantom42 - Web design/developer
- Paladox - Developer
- Voidwalker - Operator/Developer


Happy Teachers Day
Teaching is the only major occupation...for which we have not developed tools that make an average person capable of competence and performance. In teaching we rely on the naturals, the ones who somehow know how to teach.
― Peter Drucker


LOGOUT
This is the profile page of {{username}}
There, you can do listener related operations, and can view {{username}}'s liked songs
Search
View all songs
View all albums
View all artists
View liked songs of {{username}}


We are really sorry, but the page you requested is missing.. Perhaps searching again can help. Or back to home page
This page not be found
OR
© 2016 Amwal - Powered By Mohamed Arafa


Angela Merkel Says Freedom of Speech Must be Curtailed to Keep Society Free
Wait, what?
by Paul Joseph WatsonGerman Chancellor Angela Merkel says that freedom of expression must be curtailed in order to keep society free.
Yes, really.
“For all those who claim that they can no longer express their opinion, I say this to them; If you express a pronounced opinion, you must live with the fact that you will be contradicted,” said Merkel during a speech to the German Parliament.
“Expressing an opinion does not come at zero cost, but freedom of expression has limits,” she added, as some in the Bundestag could be heard voicing their disagreement.
“Those limits begin where hatred is spread, they begin where the dignity of other people is violated. This house will and must oppose extreme speech otherwise our society will no longer be the free society that it was,” said Merkel.
Of course, what “violates” the “dignity” of other people is completely subjective and could include all manner of speech that most people would find perfectly acceptable.
The debate over free speech in Germany has intensified since the country accepted over a million migrants from the Middle East and North Africa from 2015 onwards.
Many Germans have found themselves hit with charges of hate speech for pointing out ‘hate facts’ like migrants being responsible for crimes and sexual assaults
This happened despite the German government’s own numbers showing violent crime in Germany rose by 10 per cent between 2015 and 2016 and that more than 90 per cent of the rise was attributable to young male “refugees.”
Lawmakers in one area of Germany even attempted to pass a law that would have jailed people for insulting the EU anthem or burning the EU flag.
As we document in the video below, Germans were subjected to a re-education campaign to encourage them to accept their new reality rather than the government actually addressing their concerns about mass migration.
SUBSCRIBE on YouTube:


About me
I'm Creative web developer from KPK, Pakistan, working in Next.js development and software quality assurance. I enjoy turning complex problems into simple, beautiful and intuitive designs.
My job is to build your website and mobail apps so that it is functional and user-friendly but at the same
time attractive.
Moreover, I
add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring
across your
message and identity in the most creative way.
I am looking for a challenging and rewarding position where I can use my skills and experience to make a
positive impact.
What i'm doing
-
Web design
The most modern and high-quality design made at a professional level.
-
Web development
High-quality development of sites at the professional level.
-
Mobile apps
Professional development of applications for iOS and Android.
-
Photography
I make high-quality photos of any category at a professional level.


Welcome, my name is Lianlian and this is my website.
About Me
Contact Me
This is not a styled button.
What's your name?
Checkbox - click me!
Checkbox - click me2!
Checkbox - click me3!
Radio button - click me!
Radio button - click me!
Radio button - click me!
What is your occupation?
Submit
What's your gender?
Male
Female
Other
Please add ant comments below:
Submit


property "name" into a memory scope/view model - making an empty view model and filling it with a name property
Angularjs Directive: ng-app, ng-model, bind-data-to-model
Angularjs Directive: ng-app, ng-init, ng-repeat, bind-data-to-model
using filters
.
Name:
{{name}}
looping with the ng-repeat Directive
{{pesoneName | uppercase}}
looping with the ng-repeat Directive + 2 filters: by the ''filter''
text box and orderBy 'name'/'city' field + filter lowercase/uppercase