100% found this document useful (1 vote)
22 views

Expert Oracle Application Express 2nd Edition Doug Gault download

The document provides information about the 'Expert Oracle Application Express 2nd Edition' by Doug Gault, including links for downloading the ebook and related titles. It outlines the contents of the book, which covers various aspects of Oracle Application Express, including page design, REST data services, and chart integration. Additionally, it includes copyright information and details about the authors and contributors.

Uploaded by

gyanenjewel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
22 views

Expert Oracle Application Express 2nd Edition Doug Gault download

The document provides information about the 'Expert Oracle Application Express 2nd Edition' by Doug Gault, including links for downloading the ebook and related titles. It outlines the contents of the book, which covers various aspects of Oracle Application Express, including page design, REST data services, and chart integration. Additionally, it includes copyright information and details about the authors and contributors.

Uploaded by

gyanenjewel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

Expert Oracle Application Express 2nd Edition

Doug Gault pdf download

https://ebookgate.com/product/expert-oracle-application-
express-2nd-edition-doug-gault/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Beginning Oracle Application Express 5 3rd Edition Doug


Gault

https://ebookgate.com/product/beginning-oracle-application-
express-5-3rd-edition-doug-gault/

ebookgate.com

Expert Oracle Application Express 1st Edition Dietmar Aust

https://ebookgate.com/product/expert-oracle-application-express-1st-
edition-dietmar-aust/

ebookgate.com

Expert Oracle Application Express 1st Edition John Edward


Scott

https://ebookgate.com/product/expert-oracle-application-express-1st-
edition-john-edward-scott/

ebookgate.com

Agile Oracle Application Express Patrick Cimolini

https://ebookgate.com/product/agile-oracle-application-express-
patrick-cimolini/

ebookgate.com
Beginning Oracle Application Express Rick Greenwald

https://ebookgate.com/product/beginning-oracle-application-express-
rick-greenwald/

ebookgate.com

Expert Oracle Exadata 1st Edition Kerry Osborne

https://ebookgate.com/product/expert-oracle-exadata-1st-edition-kerry-
osborne/

ebookgate.com

Final Cut Express 2 Editing Workshop DV Expert Series 2nd


Edition Tom Wolsky

https://ebookgate.com/product/final-cut-express-2-editing-workshop-dv-
expert-series-2nd-edition-tom-wolsky/

ebookgate.com

Oracle Application Server Portal Handbook 1st Edition


Kevin Laahs

https://ebookgate.com/product/oracle-application-server-portal-
handbook-1st-edition-kevin-laahs/

ebookgate.com

Oracle ADF Enterprise Application Development Made Simple


2nd Edition Successfully plan develop test and deploy
enterprise applications with Oracle ADF Sten E. Vesterli
https://ebookgate.com/product/oracle-adf-enterprise-application-
development-made-simple-2nd-edition-successfully-plan-develop-test-
and-deploy-enterprise-applications-with-oracle-adf-sten-e-vesterli/
ebookgate.com
www.it-ebooks.info
Expert Oracle
Application Express

John Scott, Nick Buytaert, Karen Cannell,


Martin D’Souza, Doug Gault, Dimitri Gielis,
Roel Hartman, Denes Kubicek, Raj Mattamal,
Dan McGhan, Francis Mignault, Tom Petrus,
Jorge Rimblas and Christoph Ruepprich

www.it-ebooks.info
Expert Oracle Application Express
Copyright © 2015 by John Scott, Nick Buytaert, Karen Cannell, Martin D’Souza, Doug Gault,
Dimitri Gielis, Roel Hartman, Denes Kubicek, Raj Mattamal, Dan McGhan, Francis Mignault, Tom Petrus,
Jorge Rimblas and Christoph Ruepprich
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material
is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting,
reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter
developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly
analysis or material supplied specifically for the purpose of being entered and executed on a computer system,
for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only
under the provisions of the Copyright Law of the Publisher’s location, in its current version, and permission for use
must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright
Clearance Center. Violations are liable to prosecution under the respective Copyright Law.
ISBN-13 (pbk): 978-1-4842-0485-6
ISBN-13 (electronic): 978-1-4842-0484-9
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every
occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion
and to the benefit of the trademark owner, with no intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication, neither
the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may
be made. The publisher makes no warranty, express or implied, with respect to the material contained herein.
Managing Director: Welmoed Spahr
Lead Editor: Jonathan Gennick
Development Editor: Douglas Pundick
Technical Reviewers: Patrick Cimolini, Vincent Morneau, and Alex Fatkulin
Editorial Board: Steve Anglin, Louise Corrigan, Jim DeWolf, Jonathan Gennick, Robert Hutchinson,
Michelle Lowman, James Markham, Susan McDermott, Matthew Moodie, Jeffrey Pepper,
Douglas Pundick, Ben Renow-Clarke, Gwenan Spearing, Steve Weiss
Coordinating Editor: Jill Balzano
Copy Editor: Kim Wimpsett
Compositor: SPi Global
Indexer: SPi Global
Artist: SPi Global
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor,
New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-sbm.com, or visit
www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science +
Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail rights@apress.com, or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–
eBook Licensing web page at www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this text is available to
readers at www.apress.com/9781484204856. For detailed information about how to locate your book’s source code,
go to www.apress.com/source-code/. Readers can also access source code at SpringerLink in the Supplementary
Material section for each chapter.

www.it-ebooks.info
This book is dedicated to Carl Backstrom and Scott Spadafore.
All author royalties will be donated equally to the charity trust funds of their respective families.

www.it-ebooks.info
Contents at a Glance

Foreword����������������������������������������������������������������������������������������������������������������xix
First-Edition Foreword��������������������������������������������������������������������������������������������xxi
About the Authors��������������������������������������������������������������������������������������������������xxv
About the Technical Reviewers����������������������������������������������������������������������������xxix


■Chapter 1: Page Designer�������������������������������������������������������������������������������������� 1

■Chapter 2: Oracle REST Data Services����������������������������������������������������������������� 43

■Chapter 3: Oracle APEX 5.0 Charts Inside Out����������������������������������������������������� 73

■Chapter 4: Tabular Forms���������������������������������������������������������������������������������� 145

■Chapter 5: Team Development��������������������������������������������������������������������������� 215

■Chapter 6: Globalization������������������������������������������������������������������������������������ 249

■Chapter 7: Debugging���������������������������������������������������������������������������������������� 281

■Chapter 8: Dynamic Actions������������������������������������������������������������������������������ 319

■Chapter 9: Lifecycle Management��������������������������������������������������������������������� 359

■Chapter 10: Plugins������������������������������������������������������������������������������������������� 403

■Chapter 11: jQuery with APEX��������������������������������������������������������������������������� 455

■Chapter 12: Map Integration����������������������������������������������������������������������������� 477

■Chapter 13: Themes and Templates������������������������������������������������������������������ 511

■Chapter 14: Report Printing������������������������������������������������������������������������������ 539

■Chapter 15: Working with APEX Collections������������������������������������������������������ 601

Index��������������������������������������������������������������������������������������������������������������������� 621

www.it-ebooks.info
www.it-ebooks.info
Contents

Foreword����������������������������������������������������������������������������������������������������������������xix
First-Edition Foreword��������������������������������������������������������������������������������������������xxi
About the Authors��������������������������������������������������������������������������������������������������xxv
About the Technical Reviewers����������������������������������������������������������������������������xxix


■Chapter 1: Page Designer�������������������������������������������������������������������������������������� 1
Main Components������������������������������������������������������������������������������������������������������������ 1
Navigation������������������������������������������������������������������������������������������������������������������������ 2
Page Finder Icon������������������������������������������������������������������������������������������������������������������������������������� 2
Lock Pages and Undo and Redo Icons���������������������������������������������������������������������������������������������������� 4
Create, Utilities, and Component View Icons������������������������������������������������������������������������������������������ 4

Component View�������������������������������������������������������������������������������������������������������������� 9
Rendering����������������������������������������������������������������������������������������������������������������������������������������������� 9
Dynamic Actions����������������������������������������������������������������������������������������������������������������������������������� 10
Processing�������������������������������������������������������������������������������������������������������������������������������������������� 11
Page Shared Components�������������������������������������������������������������������������������������������������������������������� 12

Grid Layout��������������������������������������������������������������������������������������������������������������������� 14
Grid Layout������������������������������������������������������������������������������������������������������������������������������������������� 14
Messages��������������������������������������������������������������������������������������������������������������������������������������������� 16
Page Search����������������������������������������������������������������������������������������������������������������������������������������� 18
Help������������������������������������������������������������������������������������������������������������������������������������������������������ 19

Property Editor��������������������������������������������������������������������������������������������������������������� 19
Show Common������������������������������������������������������������������������������������������������������������������������������������� 21
Show All������������������������������������������������������������������������������������������������������������������������������������������������ 21
Collapse All������������������������������������������������������������������������������������������������������������������������������������������� 21
vii

www.it-ebooks.info
■ Contents

Show All������������������������������������������������������������������������������������������������������������������������������������������������ 22
Quick Pick, Go to Group, and Go to Component Icons�������������������������������������������������������������������������� 23

Code Editor��������������������������������������������������������������������������������������������������������������������� 26
Shortcuts������������������������������������������������������������������������������������������������������������������������ 28
Help Functionalities�������������������������������������������������������������������������������������������������������� 30
Link to the APEX 5.0 Documentation���������������������������������������������������������������������������������������������������� 30
Link to the APEX 5.0 Forum at OTN ������������������������������������������������������������������������������������������������������ 31
Link to the APEX Resources at OTN ����������������������������������������������������������������������������������������������������� 31
Page Designer Help: Getting Started in Page Designer ����������������������������������������������������������������������� 32
About Page Designer ��������������������������������������������������������������������������������������������������������������������������� 33

Other Options����������������������������������������������������������������������������������������������������������������� 34
Multiple Component Selection ������������������������������������������������������������������������������������������������������������� 35
Resizing Page Designer Areas�������������������������������������������������������������������������������������������������������������� 37
Page Designer Memory Function��������������������������������������������������������������������������������������������������������� 38
Page Designer Toolbar Options������������������������������������������������������������������������������������������������������������� 38

Summary������������������������������������������������������������������������������������������������������������������������ 42

■Chapter 2: Oracle REST Data Services����������������������������������������������������������������� 43
ORDS Defined����������������������������������������������������������������������������������������������������������������� 43
ORDS Download and Setup�������������������������������������������������������������������������������������������� 44
Running the Install�������������������������������������������������������������������������������������������������������������������������������� 45
Database Users Used by ORDS������������������������������������������������������������������������������������������������������������� 50
Configuring Multiple Databases����������������������������������������������������������������������������������������������������������� 50
Configuration Files�������������������������������������������������������������������������������������������������������������������������������� 52

Administration via SQL Developer���������������������������������������������������������������������������������� 54


ORDS Development via SQL Developer�������������������������������������������������������������������������� 56
REST Enabling an Existing Table����������������������������������������������������������������������������������������������������������� 56
Invoking the New REST Service����������������������������������������������������������������������������������������������������������� 61
Creating a REST Web Service��������������������������������������������������������������������������������������������������������������� 62
Accessing Hidden Parameters�������������������������������������������������������������������������������������������������������������� 69

Accessing ORDS Web Services via APEX������������������������������������������������������������������������ 70


Summary������������������������������������������������������������������������������������������������������������������������ 71
viii

www.it-ebooks.info
■ Contents


■Chapter 3: Oracle APEX 5.0 Charts Inside Out����������������������������������������������������� 73
HTML5 Charts����������������������������������������������������������������������������������������������������������������� 74
Background������������������������������������������������������������������������������������������������������������������������������������������ 74
Creating a Chart������������������������������������������������������������������������������������������������������������������������������������ 75
The Result��������������������������������������������������������������������������������������������������������������������������������������������� 81
Page Designer vs. Component View����������������������������������������������������������������������������������������������������� 83
Understanding the Chart Region ���������������������������������������������������������������������������������������������������������� 83
Understanding the Chart Attributes������������������������������������������������������������������������������������������������������ 83

Adding Multiple Series and Combined Charts���������������������������������������������������������������� 94


Different Chart Types������������������������������������������������������������������������������������������������������ 98
Behind the Scenes������������������������������������������������������������������������������������������������������� 100
Debug and Performance���������������������������������������������������������������������������������������������� 106
Upgrading Oracle APEX 3.x/4.x Flash and SVG Charts������������������������������������������������� 111
Screen Reader Mode and Charts���������������������������������������������������������������������������������� 112
Extending Charts���������������������������������������������������������������������������������������������������������� 114
Customizing Charts by Using Custom XML����������������������������������������������������������������������������������������� 115
Customizing Charts by Using Custom XML, Dynamic Actions, and JavaScript����������������������������������� 118
Creating Charts Manually������������������������������������������������������������������������������������������������������������������� 121

Drill-Down Charts, Dashboards, and Interactivity��������������������������������������������������������� 127


Simple Dashboard with Submit���������������������������������������������������������������������������������������������������������� 128
Simple Dashboard with JavaScript����������������������������������������������������������������������������������������������������� 132
Complex Dashboard with Actions������������������������������������������������������������������������������������������������������� 134
Building Charts with the AnyChart Plugin������������������������������������������������������������������������������������������� 138
Most Common Issues��������������������������������������������������������������������������������������������������� 139
Chart Not Rendering Correctly������������������������������������������������������������������������������������������������������������ 139
Search for a Specific Feature������������������������������������������������������������������������������������������������������������� 139

Charts in the Future������������������������������������������������������������������������������������������������������ 140


Chart Plugins���������������������������������������������������������������������������������������������������������������� 140
Sample Charts in Packaged Application��������������������������������������������������������������������������������������������� 140
Inline Charts in Report������������������������������������������������������������������������������������������������������������������������ 142

ix

www.it-ebooks.info
■ Contents

Resources�������������������������������������������������������������������������������������������������������������������� 143
Summary���������������������������������������������������������������������������������������������������������������������� 144

■Chapter 4: Tabular Forms���������������������������������������������������������������������������������� 145
Changes in APEX 4.0���������������������������������������������������������������������������������������������������� 145
Changes in APEX 4.1/4.2���������������������������������������������������������������������������������������������� 146
Changes in APEX 5.0���������������������������������������������������������������������������������������������������� 146
Constraints������������������������������������������������������������������������������������������������������������������� 146
Purpose of Tabular Forms�������������������������������������������������������������������������������������������� 147
Tabular Forms Are Not Spreadsheets��������������������������������������������������������������������������� 148
Features in APEX 4������������������������������������������������������������������������������������������������������� 148
New Item Types���������������������������������������������������������������������������������������������������������������������������������� 148
Declarative Validations����������������������������������������������������������������������������������������������������������������������� 156
Other Features������������������������������������������������������������������������������������������������������������������������������������ 160

Features in APEX 4.1/4.2���������������������������������������������������������������������������������������������� 161


New Validation Types for Tabular Forms��������������������������������������������������������������������������������������������� 161
New Variables Available for the Processing���������������������������������������������������������������������������������������� 168
Tabular Forms and Dynamic Actions�������������������������������������������������������������������������������������������������� 170

Custom Coding in Tabular Forms��������������������������������������������������������������������������������� 174


Processing the Correct Rows������������������������������������������������������������������������������������������������������������� 174
Data Integrity�������������������������������������������������������������������������������������������������������������������������������������� 178
Manual Tabular Forms������������������������������������������������������������������������������������������������������������������������ 182
Tabular Forms and Collections����������������������������������������������������������������������������������������������������������� 188
Interesting Techniques������������������������������������������������������������������������������������������������� 202
Multiple Tabular Forms and Modal Pages������������������������������������������������������������������������������������������� 203
Adding Cascading Select Lists to a Tabular Form������������������������������������������������������������������������������ 207

Summary���������������������������������������������������������������������������������������������������������������������� 214

■Chapter 5: Team Development��������������������������������������������������������������������������� 215
Milestones�������������������������������������������������������������������������������������������������������������������� 215
The Basics������������������������������������������������������������������������������������������������������������������������������������������ 216
Extending Milestone Functionality������������������������������������������������������������������������������������������������������ 218

www.it-ebooks.info
■ Contents

Features����������������������������������������������������������������������������������������������������������������������� 219
The Basics������������������������������������������������������������������������������������������������������������������������������������������ 219
Extending the Features Functionality������������������������������������������������������������������������������������������������� 222

To Do’s�������������������������������������������������������������������������������������������������������������������������� 225
The Basics������������������������������������������������������������������������������������������������������������������������������������������ 225
Extending the To-Do Functionality������������������������������������������������������������������������������������������������������ 227

Bugs ���������������������������������������������������������������������������������������������������������������������������� 232


Feedback���������������������������������������������������������������������������������������������������������������������� 233
Feedback Process������������������������������������������������������������������������������������������������������������������������������ 234
Enable Feedback�������������������������������������������������������������������������������������������������������������������������������� 235
Exporting Feedback to Development�������������������������������������������������������������������������������������������������� 237
Importing Feedback into Development����������������������������������������������������������������������������������������������� 238
Team Development Integration in the Page Designer������������������������������������������������������������������������� 238
Processing Feedback������������������������������������������������������������������������������������������������������������������������� 239
Exporting Response to Deployment���������������������������������������������������������������������������������������������������� 241
Importing Response into Deployment������������������������������������������������������������������������������������������������� 242
Extending Feedback: Creating a Report��������������������������������������������������������������������������������������������� 243
Extending Feedback: Feeding Back the Follow-Up���������������������������������������������������������������������������� 245
Further Enhancements����������������������������������������������������������������������������������������������������������������������� 245

Summary���������������������������������������������������������������������������������������������������������������������� 247

■Chapter 6: Globalization������������������������������������������������������������������������������������ 249
Using the Builder in Other Languages�������������������������������������������������������������������������� 249
Translating Applications����������������������������������������������������������������������������������������������� 252
Application Language Derived From��������������������������������������������������������������������������������������������������� 253
Mapping���������������������������������������������������������������������������������������������������������������������������������������������� 256
CSV Encoding������������������������������������������������������������������������������������������������������������������������������������� 257
Translating an Application������������������������������������������������������������������������������������������������������������������ 258
Manually Translate an Application������������������������������������������������������������������������������������������������������ 263

Translating Data in the Database��������������������������������������������������������������������������������� 264


Dynamic Translations��������������������������������������������������������������������������������������������������� 265
Translating APEX Internal Text�������������������������������������������������������������������������������������� 267
xi

www.it-ebooks.info
■ Contents

The APEX_LANG API����������������������������������������������������������������������������������������������������� 269


Copying Translations to Other Environments���������������������������������������������������������������� 269
Export/Import the Primary Application with the Translations������������������������������������������������������������� 270
Export/Import the Primary Application and the Translated Applications Separately��������������������������� 271
Export Only the Primary Application and the XLIFF���������������������������������������������������������������������������� 271

Localization������������������������������������������������������������������������������������������������������������������ 271
SINCE Format Mask���������������������������������������������������������������������������������������������������������������������������� 272
Numeric Formats�������������������������������������������������������������������������������������������������������������������������������� 272
Time Zones and Territories����������������������������������������������������������������������������������������������������������������� 273

Switching Languages��������������������������������������������������������������������������������������������������� 276


Summary���������������������������������������������������������������������������������������������������������������������� 280

■Chapter 7: Debugging���������������������������������������������������������������������������������������� 281
Principles of Code Instrumentation������������������������������������������������������������������������������ 281
Debugging Basics��������������������������������������������������������������������������������������������������������� 282
Page Processing and Rendering��������������������������������������������������������������������������������������������������������� 282
Enabling Debug���������������������������������������������������������������������������������������������������������������������������������� 284
Debug Information������������������������������������������������������������������������������������������������������������������������������ 286

Benefits of Debug Mode����������������������������������������������������������������������������������������������� 290


Graphs and Charts������������������������������������������������������������������������������������������������������������������������������ 291
Interactive Reports����������������������������������������������������������������������������������������������������������������������������� 293
APEX Debugging API����������������������������������������������������������������������������������������������������� 297
APEX_DEBUG�������������������������������������������������������������������������������������������������������������������������������������� 297
Programmatic Debugging������������������������������������������������������������������������������������������������������������������� 301
Instrumenting Your Own Code������������������������������������������������������������������������������������������������������������ 305

The Data Behind Debugging����������������������������������������������������������������������������������������� 310


Tables and View���������������������������������������������������������������������������������������������������������������������������������� 310
Examining the Debug Data����������������������������������������������������������������������������������������������������������������� 312
Using Debug Data for More Than Debugging������������������������������������������������������������������������������������� 313

xii

www.it-ebooks.info
■ Contents

Debugging Dynamic Actions���������������������������������������������������������������������������������������� 314


Debugging Plugins������������������������������������������������������������������������������������������������������� 318
Summary���������������������������������������������������������������������������������������������������������������������� 318

■Chapter 8: Dynamic Actions������������������������������������������������������������������������������ 319
Custom JavaScript vs. Dynamic Actions���������������������������������������������������������������������� 319
Manual (Custom JavaScript) Method�������������������������������������������������������������������������������������������������� 320
Dynamic Action Method���������������������������������������������������������������������������������������������������������������������� 321

Dynamic Actions in Detail��������������������������������������������������������������������������������������������� 325


Identification��������������������������������������������������������������������������������������������������������������������������������������� 328
Execution Options������������������������������������������������������������������������������������������������������������������������������� 328
When�������������������������������������������������������������������������������������������������������������������������������������������������� 329
Advanced�������������������������������������������������������������������������������������������������������������������������������������������� 334
Actions������������������������������������������������������������������������������������������������������������������������������������������������ 335

Dynamic Actions in Action�������������������������������������������������������������������������������������������� 341


Business Case������������������������������������������������������������������������������������������������������������������������������������ 342
Setup�������������������������������������������������������������������������������������������������������������������������������������������������� 342
Create Department Employees Report����������������������������������������������������������������������������������������������� 343
Refresh Department Employees Report��������������������������������������������������������������������������������������������� 345
Highlight Row������������������������������������������������������������������������������������������������������������������������������������� 346
Row Click�������������������������������������������������������������������������������������������������������������������������������������������� 350
Emphasize Employee Change������������������������������������������������������������������������������������������������������������� 353
Modal Window������������������������������������������������������������������������������������������������������������������������������������ 355
Summary���������������������������������������������������������������������������������������������������������������������� 358

■Chapter 9: Lifecycle Management��������������������������������������������������������������������� 359
Challenges�������������������������������������������������������������������������������������������������������������������� 360
Deploying Database Changes������������������������������������������������������������������������������������������������������������� 360
Collaborative Development����������������������������������������������������������������������������������������������������������������� 360
Parallel Development�������������������������������������������������������������������������������������������������������������������������� 361
Enterprise APEX Development������������������������������������������������������������������������������������������������������������ 361

The Demo Project��������������������������������������������������������������������������������������������������������� 362

xiii

www.it-ebooks.info
■ Contents

Extending the APEX Development and Deployment Process���������������������������������������� 362


APEX Application Packaging��������������������������������������������������������������������������������������������������������������� 363
Apache Maven������������������������������������������������������������������������������������������������������������������������������������ 366
Liquibase�������������������������������������������������������������������������������������������������������������������������������������������� 369
The Oracle APEX Maven Plugin����������������������������������������������������������������������������������������������������������� 386
Deploying Static Files������������������������������������������������������������������������������������������������������������������������� 392

Multi-environment Setup��������������������������������������������������������������������������������������������� 394


Building with Maven to Multiple Environments���������������������������������������������������������������������������������� 395
One Code Base to Rule Them All��������������������������������������������������������������������������������������������������������� 398
Jenkins����������������������������������������������������������������������������������������������������������������������������������������������� 400

Summary���������������������������������������������������������������������������������������������������������������������� 402

■Chapter 10: Plugins������������������������������������������������������������������������������������������� 403
The APEX Plugin Architecture��������������������������������������������������������������������������������������� 403
Create/Edit Page for Plugins��������������������������������������������������������������������������������������������������������������� 404
PL/SQL APIs���������������������������������������������������������������������������������������������������������������������������������������� 412

Other Tools of the Trade������������������������������������������������������������������������������������������������ 415


jQuery and jQuery UI��������������������������������������������������������������������������������������������������������������������������� 415
jQuery UI Widget Factory�������������������������������������������������������������������������������������������������������������������� 416
Font Awesome������������������������������������������������������������������������������������������������������������������������������������ 419

Building a Region Plugin���������������������������������������������������������������������������������������������� 419


The Base Plugin���������������������������������������������������������������������������������������������������������������������������������� 419
File Setup�������������������������������������������������������������������������������������������������������������������������������������������� 424
Initial Grid Render������������������������������������������������������������������������������������������������������������������������������� 425
Adjusting the UI for APEX�������������������������������������������������������������������������������������������������������������������� 428
Getting Set Up for Success����������������������������������������������������������������������������������������������������������������� 429
Bringing on the AJAX�������������������������������������������������������������������������������������������������������������������������� 431
Using User-Specified Queries������������������������������������������������������������������������������������������������������������� 437
Enabling Frozen Columns������������������������������������������������������������������������������������������������������������������� 441
Securing the Plugin���������������������������������������������������������������������������������������������������������������������������� 446

Best Practices for Developing Plugins������������������������������������������������������������������������� 451


Summary���������������������������������������������������������������������������������������������������������������������� 453
xiv

www.it-ebooks.info
■ Contents


■Chapter 11: jQuery with APEX��������������������������������������������������������������������������� 455
JavaScript and jQuery�������������������������������������������������������������������������������������������������� 455
Basics of jQuery����������������������������������������������������������������������������������������������������������� 456
The jQuery Object������������������������������������������������������������������������������������������������������������������������������� 456
Selecting Elements����������������������������������������������������������������������������������������������������������������������������� 456
DOM Nodes and jQuery Objects���������������������������������������������������������������������������������������������������������� 458
Determining and Testing Selectors����������������������������������������������������������������������������������������������������� 459
Basic Manipulations��������������������������������������������������������������������������������������������������������������������������� 460
Iterating Over a Selection of Elements����������������������������������������������������������������������������������������������� 463

Advanced Uses of jQuery��������������������������������������������������������������������������������������������� 464


Handling Events���������������������������������������������������������������������������������������������������������������������������������� 464
Traversing the DOM���������������������������������������������������������������������������������������������������������������������������� 469
Chaining Functions����������������������������������������������������������������������������������������������������������������������������� 470
APEX JavaScript APIs�������������������������������������������������������������������������������������������������������������������������� 471
AJAX Calls and AJAX Callback Processes������������������������������������������������������������������������������������������ 471
jQuery Versions����������������������������������������������������������������������������������������������������������������������������������� 475
apex.jQuery����������������������������������������������������������������������������������������������������������������������������������������� 475
Pitfalls������������������������������������������������������������������������������������������������������������������������������������������������� 475

Resources�������������������������������������������������������������������������������������������������������������������� 476
Summary���������������������������������������������������������������������������������������������������������������������� 476

■Chapter 12: Map Integration����������������������������������������������������������������������������� 477
Geocoding�������������������������������������������������������������������������������������������������������������������� 477
Coordinates���������������������������������������������������������������������������������������������������������������������������������������� 477
Web Services�������������������������������������������������������������������������������������������������������������������������������������� 478
What Are XML and JSON?������������������������������������������������������������������������������������������������������������������� 480
Processing XML/JSON Results����������������������������������������������������������������������������������������������������������� 481
Oracle Web Services��������������������������������������������������������������������������������������������������������������������������� 481
Choosing a Geocoding Service����������������������������������������������������������������������������������������������������������� 485

The Mapping API���������������������������������������������������������������������������������������������������������� 485


Including the API Libraries������������������������������������������������������������������������������������������������������������������ 486
Creating a div to Hold the Map����������������������������������������������������������������������������������������������������������� 487
xv

www.it-ebooks.info
■ Contents

Writing JavaScript to Render the Map������������������������������������������������������������������������������������������������ 488


Adding Layers������������������������������������������������������������������������������������������������������������������������������������� 490

Interacting with the Database�������������������������������������������������������������������������������������� 497


Showing Query Results on a Map������������������������������������������������������������������������������������������������������� 498

Spatial Math����������������������������������������������������������������������������������������������������������������� 504


SDO_GEOMETRY��������������������������������������������������������������������������������������������������������������������������������� 505
SDO Metadata������������������������������������������������������������������������������������������������������������������������������������� 505
Spatial Indexes����������������������������������������������������������������������������������������������������������������������������������� 506
APEX_SPATIAL Package���������������������������������������������������������������������������������������������������������������������� 506
Calculating Distance��������������������������������������������������������������������������������������������������������������������������� 507
Search Within Distance����������������������������������������������������������������������������������������������������������������������� 507
Calculate Area������������������������������������������������������������������������������������������������������������������������������������� 508

Third-Party Data����������������������������������������������������������������������������������������������������������� 508


Summary���������������������������������������������������������������������������������������������������������������������� 510

■Chapter 13: Themes and Templates������������������������������������������������������������������ 511
What Is a Template?����������������������������������������������������������������������������������������������������� 511
What Is a Theme?��������������������������������������������������������������������������������������������������������� 512
Component Defaults��������������������������������������������������������������������������������������������������������������������������� 512
Region Defaults���������������������������������������������������������������������������������������������������������������������������������� 513
Dialog Defaults����������������������������������������������������������������������������������������������������������������������������������� 513

The Substitution Strings����������������������������������������������������������������������������������������������� 514


Finding Substitution Strings in the Application���������������������������������������������������������������������������������� 518

Theme Styles���������������������������������������������������������������������������������������������������������������� 522


The Theme Roller�������������������������������������������������������������������������������������������������������������������������������� 523

Template Options���������������������������������������������������������������������������������������������������������� 524


The Grid������������������������������������������������������������������������������������������������������������������������ 528
Responsive Layout������������������������������������������������������������������������������������������������������������������������������ 532

Subregions������������������������������������������������������������������������������������������������������������������� 533
Theme Subscriptions��������������������������������������������������������������������������������������������������� 537
Summary���������������������������������������������������������������������������������������������������������������������� 538

xvi

www.it-ebooks.info
■ Contents


■Chapter 14: Report Printing������������������������������������������������������������������������������ 539
Introduction������������������������������������������������������������������������������������������������������������������ 539
Report Printing������������������������������������������������������������������������������������������������������������� 540
APEX Standard Report Printing������������������������������������������������������������������������������������ 540
Prerequisites���������������������������������������������������������������������������������������������������������������� 541
Standard Report Printing Configuration����������������������������������������������������������������������� 541
FOP Processor in ORDS���������������������������������������������������������������������������������������������������������������������� 542
External FOP Processor���������������������������������������������������������������������������������������������������������������������� 543
Enable Network Services������������������������������������������������������������������������������������������������������������������� 544

APEX Standard Report Printing ����������������������������������������������������������������������������������� 548


Classic Report Printing����������������������������������������������������������������������������������������������������������������������� 549
Column Width Settings����������������������������������������������������������������������������������������������������������������������� 556

Interactive Report PDF Output�������������������������������������������������������������������������������������� 559


Report Queries and Report Layouts������������������������������������������������������������������������������ 562
Report Query��������������������������������������������������������������������������������������������������������������������������������������� 562
Report Layouts������������������������������������������������������������������������������������������������������������������������������������ 564

XSL-FO 101������������������������������������������������������������������������������������������������������������������ 565


XSL-FO ����������������������������������������������������������������������������������������������������������������������������������������������� 566
The XML���������������������������������������������������������������������������������������������������������������������������������������������� 566
FO Document Structure���������������������������������������������������������������������������������������������������������������������� 570
Customized PDF Output for Interactive Reports����������������������������������������������������������� 582
Advanced XSL-FO Examples ��������������������������������������������������������������������������������������� 585
<xsl:value-of select=...> Conditional Formatting������������������������������������������������������������������������������� 592
<xsl:choose ...> Conditional Formatting�������������������������������������������������������������������������������������������� 594

XSL-FO Editors ������������������������������������������������������������������������������������������������������������ 595


Debugging XSL-FO ������������������������������������������������������������������������������������������������������ 596
Third-Party Report Printing Solutions��������������������������������������������������������������������������� 599
General Report Printing Solutions�������������������������������������������������������������������������������� 599
The Future�������������������������������������������������������������������������������������������������������������������� 600
Summary���������������������������������������������������������������������������������������������������������������������� 600
xvii

www.it-ebooks.info
■ Contents


■Chapter 15: Working with APEX Collections������������������������������������������������������ 601
When to Use APEX Collections������������������������������������������������������������������������������������� 601
Session State Management: A Quick Overview���������������������������������������������������������������������������������� 602
Session State–Managed Tables���������������������������������������������������������������������������������������������������������� 602
Logically Walking Through a Web Shopping Cart Implementation����������������������������������������������������� 602

A Look Under the Covers���������������������������������������������������������������������������������������������� 602


Private Collections Objects Inside the APEX Engine��������������������������������������������������������������������������� 603
Public Collections Objects Inside the APEX Engine����������������������������������������������������������������������������� 605

Getting Started with Collections����������������������������������������������������������������������������������� 607


Initializing a Collection����������������������������������������������������������������������������������������������������������������������� 607
Adding and Removing Data from Collections������������������������������������������������������������������������������������� 608
Using the Collection Contents������������������������������������������������������������������������������������������������������������� 611
Exploring Another Use Case���������������������������������������������������������������������������������������������������������������� 612
Expanding the Example���������������������������������������������������������������������������������������������������������������������� 612
Setting Up the Example���������������������������������������������������������������������������������������������������������������������� 612

Summary���������������������������������������������������������������������������������������������������������������������� 619

Index��������������������������������������������������������������������������������������������������������������������� 621

xviii

www.it-ebooks.info
Foreword

Over four years ago I had the idea for the first edition of this book, and the reason for the book was a deeply
personal one: the Oracle APEX development team had sadly lost two members of the team, Carl Backstrom
and Scott Spadafore. I knew both Carl and Scott and had met them a number of times at Oracle conferences
over the years and corresponded with them frequently.
I was struck that both of these individuals had helped me over the years, and I wondered what I could
do to help their families in some small way in return. I came up with the idea of writing a technical APEX
book and donating all author royalties to their respective families.
To ensure the book was published and didn’t just remain in my head as a “good idea,” I came up
with a plan. I approached a number of friends and fellow APEX experts and asked if they would consider
writing a chapter. I have to say when I explained the purpose of the book to each of them, they all jumped
at the chance.
Following the recent release of APEX 5, we once again decided it was time to update the book, again
with all author royalties going to the same good causes. Once again I’m honored to know each of the chapter
authors leapt at the opportunity. I thank each of them for agreeing to help update this book and continue
helping, in our small way, the families of two people who helped us all over the years.
APEX 5 is the biggest release in the history of APEX, and the Oracle development team has done a
tremendous job of making the APEX development environment a more productive, functional, and extensive
development platform than ever before. We hope this book helps to show you why APEX 5 is second to none
in terms of rapid web development backed by the security and functionality of the Oracle Database.
On a personal note, I would like to thank Jonathan Gennick and Jill Balzano of Apress for helping to
shepherd us through the process of making the book a reality and supporting each of us in bringing our
chapters to completion (which I can only imagine is like herding cats at times!).

—John Edward Scott

xix

www.it-ebooks.info
First-Edition Foreword

When I wrote my first book, Pro Oracle Application Express, in 2008 (with Scott Spendolini contributing
a chapter on themes and templates), I found it an extremely rewarding experience. However, like a lot of
first-time authors, I found it tough to fit writing into my regular day job and other commitments. Pro Oracle
Application Express ended up taking a lot longer than originally anticipated and ran to almost twice as many
pages as originally planned, mainly because of my passion for the subject matter—I kept wanting to give
more and more information.
I was extremely happy to see that when Pro Oracle Application Express was released, it was a big
success, at times ranking in the top 1,000 of all books sold on Amazon, which is quite an achievement for a
technical book, let alone for a relatively niche area like Oracle Application Express. It was also the top-selling
book at Oracle OpenWorld that year.
So I’d done it. I’d written my first book, something I always wanted to do, and it was (by relative
standards) a great success. However, the questions soon started: “Hey, John, when are you writing another
book?” Well, my reply was, “Never again!”
Are you surprised by that answer? Well, let me qualify it. I have such respect for people like Tom Kyte
(who was kind enough to write the foreword to Pro Oracle Application Express) and my good friend, Steven
Feuerstein, who write book after book, but I simply don’t know how they manage to find the time to fit it into
their schedules. Writing one book, while extremely rewarding once it was published, was at times one of the
toughest things I’ve ever done. Sitting in front of a blank page at 4 a.m., trying to meet a publishing deadline,
does not quite fit the glamorous image I had of being an author.
However, two events changed my opinion on writing another book. Those events were the deaths of my
two good friends, Carl Backstrom and Scott Spadafore. Both Carl and Scott were longtime members of the
Oracle Application Express development team, and I have lost count of the number of times both Carl and
Scott have helped me in my time as a developer with Oracle Application Express. I also had the pleasure of
meeting Carl and Scott in person many times during the various Oracle conferences we all attended over
the years. One of my most vivid, happy memories during an Oracle conference was the day that Carl took
Dimitri Gielis and myself for a tour around San Francisco during Oracle OpenWorld. One of my other vivid
memories involves a deep discussion about the internals of APEX security with Scott Spadafore, sitting in a
bar late in the evening, before Scott then turned the conversation to telling jokes.
With the sad and very unexpected passing of both Carl and Scott, I wanted to do something to help
both families. Carl often spoke of his daughter, and I know that Scott was extremely proud of his family too.
Following the success of my previous book, I felt that the best way I could do something to help would be to
write another book where all of the author royalties were split between the charities of the two families.
Now since I already knew how much work is involved in writing a book, I came up with the idea of
asking other people if they would be interested in writing a chapter. At the ODTUG Kaleidoscope event last
year (2010), I approached my good friends, the authors whose names you see in this book, and asked each of
them if they would be interested in writing a chapter. I asked every one of these people because they all knew
Carl and Scott personally. I have the honor of saying that not one person hesitated to step up to the challenge
of donating their time, experience, and knowledge to make this book happen. For that I am deeply grateful
to all the authors (in alphabetical order): Anton, Dan, Denes, Dietmar, Dimitri, Doug, Francis, Martin, Mike,
Raj, Roel, and Sharon. There were many times when it looked like this book might never make it to print; it
was certainly a struggle to coordinate the book deadlines with the challenges of everyone’s day jobs.

xxi

www.it-ebooks.info
■ First-Edition Foreword

So, then, this book is dedicated to two people who were always so amazingly generous with their time
and help, two people who were always held in the highest regard by the Oracle APEX community, and, most
importantly, two people I had the honor calling friends.
—John Edward Scott
http://jes.blogs.shellprompt.net
www.apex-evangelists.com

I was fortunate enough to meet both Carl and Scott at the ODTUG Kaleidoscope conferences in 2008 and
2009, respectively. Carl was kind enough to spend some of his personal time answering all my questions and
going through some of his examples with me. After writing about enhancing a security feature in APEX, Scott
called me up right away to discuss it on a weekend. He was always very helpful, especially on the forums.
Both Scott and Carl were great individuals who truly loved what they did and enjoyed passing along their
wealth of knowledge to others. I’m honored to be able to contribute to this book in the same spirit that Scott
and Carl engaged themselves within the Oracle community.
—Martin Giffy D’Souza
www.talkapex.com
www.clarifit.com

I had the distinct privilege of getting to know both Scott and Carl at many of the seminars and user groups
they attended. Scott was scary smart with a dry and unforgiving sense of humor. His knowledge of the
internal workings of APEX security was unmatched, and he shared the knowledge generously both in person
and on the forums. Carl was quiet until you got to know him but a great guy and awesome JavaScript coder.
In the early days, he personally helped me solve a few problems on how to integrate JavaScript into APEX,
and his passion for APEX and JavaScript was apparent. When John Scott approached me with the idea of the
book, I didn’t hesitate and am honored to be able to be part of this tribute to two truly great men.
—Doug Gault

I first got in touch with Carl and Scott “virtually” on the Internet, through the APEX forum and the blogs.
They were both extremely helpful to me and everybody in the APEX community.
I believe it was in 2007, at Oracle OpenWorld, that I met Carl and Scott personally for the first time.
I guess my blog post (http://dgielis.blogspot.com/2007/11/oow07-day-1-sessions-apex-meetup.html)
from that time says it all: “At the APEX demo grounds I met Scott Spadafore for the first time. ‘He’s the man!’
some say, and I must confirm. Such a nice person, a great guy!”
I liked Scott very much, not only for his knowledge (especially in security) but even more for the person
he was. And then Carl…I was truly shocked when I read about his car accident. Although we met in person
only at the Oracle conferences, Carl became a real friend. I remember the many chats we had (in MSN). He
was just a message away…I called him “Mister AJAX” because he was so strong in all the fancy web stuff.
During conferences, we always met up.
When you were with Carl, there was always something happening. He had so many great stories. He
liked to go out and have fun. I will never forget one Friday in San Francisco, just after OOW: Carl spent
that day with John and me and showed us the coolest places in the city. He also took us to one of the best
Chinese places in Chinatown and told us some great stories about his life. I remember Carl as an exceptional
person—a great friend who was always willing to help others.
Scott, Carl, I feel honored to have known you both personally, and I am happy I could contribute to this
book in your honor.
—Dimitri Gielis

xxii

www.it-ebooks.info
■ First-Edition Foreword

The first time I met Carl in real life, it was during ODTUG’s Kaleidoscope in New Orleans. I got the chance to
show him a plan board with a drag-and-drop feature—all built in APEX, of course. He was truly impressed
by what I’d done, saying “Did you truly build that in APEX?” He even convinced me to show it to the other
APEX development team members.
One of the most striking things about Carl, apart from the fact he always did his utmost best to help
everybody, was his fear of presenting. Although everybody recognized Carl as the leading expert, knowing
way more than everyone else, he always was so nervous. But I guess that was one of his charms as well! I also
remember, during that same event, Carl, John, and myself sitting at the bar, drinking some whiskey. And
every glass poured contained a fly! So we talked about the never-ending fly whiskey for a long time (after a
thorough inspection, the bottle itself appeared to contain a lot of flies).
Before I met Scott for real, we had some contact on the OTN Forum. All about security, of course,
because that was Scott’s main focus—but he also knew an awful lot of all other Oracle stuff! The thing I
remember most is a night in Monterey during which the usual suspects of APEX people got together for
some food and drinks. Scott was sitting next to Raj Mattamal, who is without any doubt the fastest speaker in
the Oracle world. And with that they formed two opposites: Raj rambling on about whatever, and Scott just
sitting there, most of the time silently. But every time Scott did say something it was either incredibly funny
or so spot on, you couldn’t imagine.
We owe a lot to these two great guys. APEX wouldn’t be the great product it is today without them. They
are missed a lot.
—Roel Hartman

As this book is an APEX one and nobody can deny Scott and Carl’s unbelievable contributions to the
community, I wanted to take this dedication moment to express that these guys were first and foremost
amazing people. I had the pleasure of calling these guys my friends since the early APEX days (and before),
and it’s their unique personalities that I’ll never forget. Not a week goes by that I’m not reminded of a joke
from Scott (even the bad ones) or a story from Carl —and I’m forever grateful for that. That the community
could come together to put such a book as this together in tribute to them is surely a testament to their
impact, but it’s critically important to me that people know what great guys they were as regular people.
—Raj Mattamal
http://nianticsystems.com

Unfortunately, I never had the opportunity to meet Scott, but a quick look at the APEX forum’s “Top Users
in Forum” list speaks volumes about the kind of guy he was—and his name will deservedly remain there for
a long time to come. The number of people that Scott was able to help, myself included, is truly impressive
and inspirational.
When it came to being helpful and inspirational, Carl was very much the same kind of guy that Scott
was, and I’m very grateful to have met him. He was incredibly influential in my development career, having
helped me along while I learned the basics of client-side development. He even introduced me to jQuery!
I find it especially rewarding to have been asked to write a chapter on plug-ins in APEX—a topic that
often involves lots of JavaScript. To me it’s proof positive that people like Carl and Scott live on in those they
helped and mentored. I will always strive to have the same impact on others as they had on me.

—Dan McGhan

The first time I met Scott was at my first OpenWorld in 2007. In fact, he was the first member of the APEX
development team that I’ve had the pleasure to meet. I remember that he introduced himself and that he
recognized me from the forum. He seemed happy to see me, and I immediately felt part of the community.
During the same conference, I also had the chance to meet Carl and the rest of the team. They both were
always available to answer questions and propose solutions. They took notes of our suggestions, and the
next thing we knew they were included in the next APEX release. I have been using Oracle products for more

xxiii

www.it-ebooks.info
■ First-Edition Foreword

than 20 years, and have never seen a product team as close to their users. And that is in large part because of
Scott and Carl. I am honored to contribute to this project in memory of two great colleagues and friends, and
I would like to thank John for giving me the opportunity to pay tribute to them.
—Francis Mignault
http://insum-apex.blogspot.com
www.insum.ca

Pictured left-to-right: John Scott, Carl Backstrom, and Dimitri Gielis at IOUG Collaborate event 2007

Scott Spadafore (standing) deep in discussion with John Scott

xxiv

www.it-ebooks.info
About the Authors

John Scott has been using Oracle since version 7 (around 1993) and has used pretty much every release
since then. He has had the good fortune to work on a wide range of projects for a varied group of clients.
He was lucky enough to start working with Oracle Application Express when it was first publicly released
and has worked with it nearly every day since (and loves it). John is an Oracle ACE Director and was
named Application Express Developer of the Year in 2006 by Oracle Magazine. He is also the cofounder of
ApexEvangelists (Apex-Evangelists.com), a company that specializes in providing training, development,
and consulting specifically for the Oracle Application Express product. You can contact John at
john.scott@apex-evangelists.com.
Nick Buytaert is an Oracle Certified Professional (OCP) with a bachelor’s degree in applied computer
science (2011). He works for a Belgian consulting firm called Contribute, which assists a wide variety of
organizations in making the most of their Oracle technology stacks. Nick started his career working as an
E-Business Suite consultant and then went on to specialize in APEX development. In April 2013, he became
an Oracle Application Express Developer Certified Expert.
Nick furthermore participates actively in the APEX community by publishing technical articles on his
blog APEXPLAINED (http://apexplained.wordpress.com). He also initiated and maintains several open
source projects, such as the Oracle APEX Maven plugin and a series of APEX plugins. Nick occasionally
engages in public speaking activities to share his ideas and experiences with the outside world. You can
follow Nick on Twitter @nbuytaert1 to find out more about him.
Karen Cannell is president of TH Technology, a small consulting firm providing Oracle technology services,
focusing on Application Express. A mechanical engineer by degree (one of them), she has analyzed,
designed, developed, converted, upgraded, enhanced, and otherwise worked on legacy and commercial
database applications for more than 25 years, concentrating on Oracle technologies since 1994. She has
worked with Application Express since its Web DB and HTML DB beginnings and continues to leverage the
Oracle suite of tools to build quality web applications for clients in government, medical, and engineering
industries. Karen can be contacted at kcannell@thtechnology.com.
Martin D’Souza is cofounder and CTO at ClariFit, a consulting firm and custom solutions provider
specializing in APEX and PL/SQL development. His experience in the technology industry has been focused
on developing database-centric web applications using the Oracle APEX technology stack.
In addition to his day job, Martin is the author of the popular blog www.TalkApex.com. He is also a
designated Oracle ACE Director and has coauthored and authored various APEX books. He has presented at
numerous international conferences such as APEXposed, COUG, and ODTUG Kscope, for which he won the
Presenter of the Year award in 2011.
Martin has a computer engineering degree from Queen’s University in Kingston, Ontario, Canada. You
can contact Martin at martin@clarifit.com.
Doug Gault is the APEX practice director at Enkitec, an Oracle Platinum partner founded in 2004, which
provides consulting, education, and products based around Oracle technology. He has been working with
Oracle since 1988, starting with version 5.1B, SQL*Forms 2.0, and RPT/RPF. He has focused his career on
Oracle’s development technologies, spending the majority of that time dedicated to web-based technologies
including the OWA Web Toolkit, PL/SQL Server Pages, WebDB, Oracle Portal, and more recently HTML-DB

xxv

www.it-ebooks.info
■ About the Authors

and APEX. Doug’s many years of Oracle experience have taken him all over the world to participate in
some truly groundbreaking projects. Doug has presented at and participated in roundtable discussions at a
number of conferences including Oracle OpenWorld, UKOUG, and ODTUG’s APEXposed and Kaleidoscope
conferences. He has an associate’s degree in computer science and an honorary master’s degree from The
School of Hard Knocks, believing there is no replacement for hard-earned experience. Doug is an Oracle Ace
and can be found on Twitter as @dgault_apex and on his blog at http://douggault.blogspot.com. You can
contact Doug at doug.gault@enkitec.com.
Dimitri Gielis has been working with Oracle Database since he began his career in 2000 with Oracle in
Belgium. Dimitri was an early adopter and supporter of HTML DB and later of Application Express. After
many years of honing his expertise with Oracle Database and Application Express, Dimitri cofounded APEX
Evangelists in 2007. In 2014 Dimitri set up APEX R&D (https://www.apexrnd.be), a company that focuses
on web application development and creating innovative solutions with Oracle Application Express.
The company also provides on-demand coaching and training in APEX. Dimitri is an active member of
the Application Express community. He routinely posts insights into Application Express on his blog at
http://dgielis.blogspot.com. He is a frequent presenter at the Oracle Benelux User Group (OBUG), IOUG
collaborate, ODTUG Kaleidoscope, the UKOUG conference, and Oracle OpenWorld. Dimitri has been an
Oracle ACE Director since 2008. He received the APEX Developer of the Year award from Oracle Magazine
in 2009.
Roel Hartman has been using Oracle Database since version 5. At that time, he used Oracle Case*Designer,
Oracle Forms 2.3, and other tools of the day. He has used all versions of those tools as they have evolved
during the years since, giving him great depth of experience as an Oracle Database developer. Today he is a
fierce advocate and user of Oracle Application Express. Roel has a master’s degree in business informatics
from the University of Twente in the Netherlands. He is an Oracle ACE Director. He works for Logica in
the Netherlands as a lead technical architect. Roel has presented at all major Oracle conferences, such as
ODTUG, Oracle OpenWorld, and UKOUG. He is a regular contributor to the OakTable Network APEX Forum.
Denes Kubicek is the chief executive officer and founder of bi-Cubes. He has been working with Oracle for
more than 12 years. Denes is an Oracle ACE Director and was APEX Developer of the Year in 2008. Denes is
also a coauthor of the first APEX book in German, Oracle APEX und Oracle XE in der Praxis. You can reach
him at bi-Cubes.com.
Raj Mattamal is copresident of Niantic Systems, LLC (NianticSystems.com). He started developing web
applications at Oracle in 1995 with the same people who came to create Oracle Application Express. In
his more than ten years with the company, he helped customers in a wide range of industries to deliver
web-based solutions on the Oracle Database. In addition to helping customers with their applications,
Raj developed numerous web applications for use internally at Oracle. Outside of database application
development, Raj spent much remaining time with Oracle evangelizing Oracle Application Express. This
entailed teaching Oracle software development and APEX classes globally, writing articles for Oracle
Magazine, writing Technotes for the Oracle Technology Network, and assisting with the development of
training material and workshops.
Having earned a bachelor’s degree in decision and information studies and another in marketing
from the University of Maryland, Raj continues to apply his knowledge of and passion for technology and
business to real-world issues. Since leaving Oracle in 2006, Raj offers his services and training to customers
in a wide range of business lines to help them get the most out of their Oracle environments. In recent years,
Raj has been recognized by his Oracle professional colleagues as an Oracle ACE Director, an honor, indeed,
to be earned among so many knowledgeable colleagues.
Dan McGhan is a senior technical consultant with the Accenture Enkitec Group. He suffers from compulsive
programing disorder, which is believed to be linked to his balding. Having started his development career in
the land of MySQL and PHP, he was only too happy to have stumbled upon APEX. Since then he’s dedicated
his programming efforts to learning more about Oracle and web-based technologies in general. Dan is an
Oracle Application Express Certified Expert, an Oracle PL/SQL Developer Certified Associate, and an Oracle

xxvi

www.it-ebooks.info
■ About the Authors

ACE. In addition to his “day job,” he is one of the top contributors to the APEX forum, maintains his own
Oracle and APEX blog (www.danielmcghan.us), and is a regular presenter at various events and user group
meetings.
Francis Mignault is chief technology officer and cofounder of Insum Solutions. He has been working with
Oracle Database for more than 23 years and is a certified Oracle database administrator. Francis began his
work with APEX in 2004, when it was called HTML DB. He and his team have developed bilingual software
as a service application that is now used by more than 60,000 active users. Francis is deeply involved in
the APEX community. His first-rate PL/SQL and APEX expertise led to becoming the first APEX instructor
in Quebec. He has presented at several APEX seminars and conferences in the United States and Canada,
including Oracle OpenWorld, IOUG Collaborate, ODTUG Apexposed, ODTUG Kaleidoscope, and Ora*GEC.
Tom Petrus started out as an in-house Oracle Forms developer in 2007 and made the switch to Oracle
Application Express in 2011 as a consultant. Since then he has had a wide range of projects and clients by
which he has honed his knowledge on Apex. He has a preference for everything JavaScript related and is
active on both StackOverflow and the OTN Apex forum, helping others solve problems and picking up new
nuggets of knowledge in the process. He currently works as a consultant for iAdvise Belgium.
Jorge Rimblas is a senior technical consultant with the Accenture Enkitec Group and has been an Oracle
Database professional since 1995. He started using APEX when it was known as HTML DB, starting with
version 1.6. Since 2008, APEX is all he does. His areas of expertise include Oracle Application Express,
Oracle e-Business Suite, Oracle Database, and related products. Jorge has helped several companies, in
diverse industries, implement custom themes for their applications. His knowledge and experience with UI
design, web technologies, and Adobe Photoshop uniquely position him to excel at this kind of work. He has
taught APEX to dozens of people and has been a speaker at the RMOUG Training Days and ODTUG KScope
conferences. Jorge is an Oracle ACE and can be found on Twitter as @rimblas and on his blog at
http://rimblas.com/blog.
Christoph Ruepprich has worked as an Oracle DBA and developer since 1999. As a developer, he has
worked with Oracle Forms and Reports and has extensive experience with Oracle Application Express.
In his current role as senior technical consultant at Accenture Enkitec Group, he works on various APEX
projects. He is also an active presenter on APEX topics at conferences and maintains an Oracle-related blog
at http://ruepprich.wordpress.com.

xxvii

www.it-ebooks.info
About the Technical Reviewers

Patrick Cimolini specializes in project management, development, and training services for Oracle
Application Express projects. Formal training in engineering, business administration, and project
management is complemented by more than 30 years of experience that has evolved through mainframe,
client-server, and web platforms. Patrick enjoys attending and presenting at Oracle-centric conferences such
as Kscope, Collaborate, APEXposed, and Oracle OpenWorld, all of which have contributed significantly to
his professional and personal growth. Patrick is currently working at Insum Solutions in Montréal, Québec.
Alex Fatkulin is a master of the full range of Oracle technologies. This mastery has been essential in
addressing some of the greatest challenges his customers have met.
Alex draws on years of experience working with some of the world’s largest companies, where he was
involved with almost everything related to Oracle databases, from data modeling to architecting high-
availability solutions to resolving performance issues of extremely large production sites.
Alex has a bachelor’s of computer science degree from Far Eastern National University in Vladivostok,
Russia. He is also an Oracle ACE and a proud OakTable member.
Vincent Morneau is a developer, blogger, and speaker. He has been working with APEX for more than five
years in the world’s largest APEX development team at Insum Solutions. His focus has recently shifted to the
front-end aspect of development, where he shares his vision throughout Twitter at @vincentmorneau and his
blog at http://vmorneau.me.
Vincent is also a big fan of open source coding, and he systematically shares any piece of code that he
finds valuable on his GitHub account at https://github.com/vincentmorneau.
He is on his way to earning a bachelor’s degree in software engineering by the end of 2015 and will
finally be able to dedicate more time to the APEX community.

xxix

www.it-ebooks.info
Chapter 1

Page Designer
by Denes Kubicek
The Page Designer in APEX 5.0 is one of the main new features and a major improvement for APEX
developers. It changes the way you build your application pages and also the way you think about
application development. It is also close to what you probably know from Oracle Forms. The Page Designer
provides these new features:
• Drag-and-drop functionality
• Tree view and context menus
• Seamless adjustment of the Component View and Property Editor panels

Main Components
The Page Designer has four main components (Figure 1-1).
• Navigation toolbar
• Component View on the left side of the screen
• Grid Layout for drag-and-drop functionality in the middle
• Property Editor on the right side of the screen

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-1. Page Designer components

Navigation
The navigation toolbar has lots of new options compared to previous versions of APEX. Some of them
have been reworked, and their functionality is now different. Also, there are some new options that I will
describe in detail.

Page Finder Icon


The Page Finder icon works differently compared to the old one. It will lead you to a page you type in directly
or will open a modal window if you click the pop-up list of values (see Figure 1-2 and Figure 1-3).

Figure 1-2. Page Finder icon

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-3. Page Finder list of pages

The Page Finder will also show a warning via a pop-up if you are leaving a page with unsaved changes
(Figure 1-4).

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-4. Page Finder unsaved changes prompt

One of the things missing in the navigation within the Page Finder is the old feature to go to the previous
or next page. Even if you want to go to the previous or next page, you will be forced to do a couple of clicks to
open the modal window and then search for the page number in the list.

Lock Pages and Undo and Redo Icons


The icon for locking pages (Figure 1-5) has the same functionality as it had before. The Redo and Undo icons
allow you to undo and redo the unsaved changes similar to what you know from other programs (such as
Microsoft Office). This feature is useful, but it works only for unsaved changes.

Figure 1-5. Icon for locking pages and the Undo and Redo icons

Create, Utilities, and Component View Icons


This section will cover the main set of icons in the Page Designer. You will use these icons frequently.

www.it-ebooks.info
Chapter 1 ■ Page Designer

Create Icon
The icon for Create (Figure 1-6 and 1-7) offers a couple of options.
• Create a page
• Create a page as a copy of an existing page
• Wizards to create different complex page components such as forms and reports
• Access to the shared components
• Access to the page group
• Access to the Team Development features
• Add comments to the application

Figure 1-6. Create, Utilities, and Component View icons

Figure 1-7. Create menu items

www.it-ebooks.info
Chapter 1 ■ Page Designer

When you click to create a Form or Report region, you will see the corresponding wizard as a modal
dialog (Figure 1-8).

Figure 1-8. Create Form Wizard

Utilities Icon
The icon for Utilities (Figure 1-6 and 1-9) offers lots of options.
• Delete a page
• Create a page as a copy of an existing page
• Access the Caching, Attribute Dictionary, History, and Export options
• Access the Cross Page Utilities, Application Utilities, and Page Groups options
• Access the Upgrade Application option

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-9. Utilities options

Component View Icon


The icon for the Component View (Figure 1-6 and Figure 1-10) shows the old HTML view of the Page
Designer. This view option could be useful in these cases:
• When making mass changes of column names in a classic report
• When making mass changes of column names in an interactive report
• When making mass changes of item labels in a form region

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-10. Old HTML Page Designer layout

The reason is for the old view’s sefuleness is simple. If you use the new Page Designer interface for
the purposes just listed, you will have to do lots of clicks and mouse moves to first click the corresponding
column on the left side tree menu and then move the cursor to the label attribute to change it. Using the old
view, it is possible to move faster from column to column using the Tab key.
You can always switch back to the new interface using the icon shown in Figure 1-10.

Other Navigation Bar Icons


The other icons on the navigation toolbar (Figure 1-11) are used to access the Team Development,
Developer Comments, and Shared Components features.

Figure 1-11. Other navigation toolbar icons

Team Development Icon


Using this icon, you can access Team Development features.

Developer Comments Icon


Using this icon, you create a developer comment, add a bug, or add a to-do task.

Shared Components Icon


Using this icon, you can access application shared components.

www.it-ebooks.info
Chapter 1 ■ Page Designer

Save and Save and Run Application Icons


The next set of icons is used to save the changes or save and run the application.

Save Icon
The Save icon will save the outstanding changes for the corresponding page.

Save and Run Icon


The Save icon will save the outstanding changes for the corresponding page and run the application in a
new tab.
In earlier versions of APEX, you could run the application by right-clicking and opening the application
in a new tab or in a new window. In APEX 5.0, this has changed; there is no right-click option anymore. The
button is an image running JavaScript. The consequence is that the behavior will be different depending on
the browser used and your browser settings. To see how to optimize the settings for Firefox, refer to this blog
posting:

www.deneskubicek.blogspot.de/2015/06/apex-50-run-applications-in-new-tabs.html

Component View
The Component View has four tabs.
• Rendering
• Dynamic Actions
• Processing
• Page Shared Components

Rendering
The Rendering tab (Figure 1-12) lists all the components of the page grouped by either component type
or processing order. Here, you can access all page regions, items, buttons, and processes (computations,
processes, and branches) executed during page rendering. Also, the tree view will show all the dynamic
actions or computations attached to one of the page components.

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-12. Component View: Rendering tab

Dynamic Actions
On the Dynamic Actions tab (Figure 1-13), you will find a list of all the dynamic actions used on that page.
This is a useful new feature because of the growing number of dynamic actions. Now these components are
shown and accessed separately, and this helps you keep an overview of it all.

10

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-13. Component View: Dynamic Actions tab

Processing
The Processing tab (Figure 1-14) shows a list of the processes run on page submit. This includes the following:
• Validations
• Computations
• Page processes
• Branches

11

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-14. Component View: Processing tab

Page Shared Components


The Page Shared Components tab (Figure 1-15) shows a list of the shared components used on the
corresponding page.

12

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-15. Component View: Page Shared Components tab

The Component View is a tree and provides a couple of useful features.


• Drag-and-drop functionality
• Context menu options
Using drag and drop, you can change the order sequence of the page elements and processes. Using the
context menu options (Figure 1-16), you can easily access all the relevant component options.

13

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-16. Component View: context menu options

Grid Layout
The Grid Layout also has different tabs.
• Grid Layout
• Messages
• Page Search
• Help

Grid Layout
Grid Layout (Figure 1-17) provides drag-and-drop functionality of components that can be selected from the
Gallery menu and also allows you to reorder those components.

14

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-17. Grid Layout and Gallery menu

Using the Grid Layout tab, you can reorder all page elements in order to get a desired layout of the page.
You can reorder the following elements:
• Items
• Regions
• Buttons
Using Grid Layout, you can also copy and move the copied elements. This can be achieved by selecting
an element and pressing Ctrl on the keyboard (Figure 1-18). Once you get to the position where the copied
element needs to be placed, you just release the Ctrl key and the mouse button. The element will be copied
under a new name.

15

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-18. Grid Layout: copying components

Messages
Messages (Figure 1-19) are a useful feature. In APEX 5.0 you do not need to wait for the save process to be
executed to see whether there are any errors. APEX 5.0 will evaluate your code and, in general, your input as
soon as you lose the focus of the element where you enter it. If there are any validation messages and errors,
they will show up on the Messages tab (Figure 1-20) saying what the problem is. The messages are generated
using AJAX, and they provide links that you can use to access the corresponding component.

Figure 1-19. Messages: highlighting

16

www.it-ebooks.info
Chapter 1 ■ Page Designer

Figure 1-20. Messages: content

If there are errors in your code or input, not only will the message show up, but all relevant parts of the
page structure will be highlighted.
• Component View
• Grid Layout
• Element Properties
Clicking the message text will take you to the affected element property on the right side of the screen
showing again the error in a separate widget (Figure 1-21).

Figure 1-21. Messages: link

17

www.it-ebooks.info
Chapter 1 ■ Page Designer

Page Search
The Page Search tab (Figure 1-22) works based on AJAX as well. You have two options and can search based
on one of the following:
• Match case
• Regular expression

Figure 1-22. The Page Search tab

Clicking the search result will take you to the affected element property on the right side of the screen,
and it will highlight the Component View node.

18

www.it-ebooks.info
Another Random Document on
Scribd Without Any Related Topics
here, that a more gross and unprincipled misrepresentation and
perversion of the testimony of the Ancients was never published.
See Pope’s Roman Misquotation. London. Holdsworth. 1840.
Mr. Faber in his last edition of “the Difficulties of Romanism” has left
little for any one else to say in proof that the Fathers are opposed to
the peculiarities of the Latin Church. ’Tis true that Mr. Husenbeth
has published a ponderous reply—approaching to a thousand
pages. Mr. Faber’s little pamphlet demolishes the huge affair. Its
title is: as well as I remember—“An Account of Mr. Husenbeth’s
refutation of the argument of the Difficulties of Romanism, upon the
entirely new principle of a refusal to meet it.”
The testimony of the Syrian Fathers alleged by Dr. Wiseman in favor
of the doctrine of transubstantiation in particular, is shown to be
thoroughly adverse to it by the great and good Doctor Lee. See his
Visitation Sermon. I am really surprised that Dr. Wiseman could ever
have appeared in public after the publication of Dr. Lee’s Sermon:
yet, perhaps, one might have been prepared for such want of
common propriety, by his previous conduct, after Dr. Turton’s
triumphant exposure of him and of his arguments.
[13a] Your French Testament of Bourdeaux, 1686—most
disgracefully has here—“he shall be saved, yet so as by the fire of
Purgatory”—ainsi toutefois comme par le feu du Purgatoire.
[13b] Discussion with Mr. Pope. Report, p. 150. Comp. p. 158.
[14] The Canons of your Council of Trent on these are as follow—
“If any one shall say that Confirmation is not a true and proper
Sacrament—let him be damned.” Can. 1. De Confirm.
“If any one shall say that Penance is not truly and properly a
Sacrament—let him be damned.” Can. 1. De pæn. Sac.
“If any one shall say that Extreme Unction is not truly and properly a
Sacrament—let him be damned.” Can. 1. De Sac. Ex. Unc.
And so of the others. I will here just say that this Canon adds
“instituted by Christ”—institutum.—We shall presently see that this is
an advance from the “insinuatum” of the Council.
[15a] Where did your Testament get “ease him?”
[15b] You are aware, perhaps, of the gross mistranslation of your
Testament, in Eph. v. 32. to support this notion.—μυστηριον is
mystery, not sacrament. But your French new Testament is bolder
still, and actually foists in the words—le Sacrement de Mariage in 1
Cor. vii. 10.—and again in 2 Cor. vi. 14. and in 1 Tim. iv. 3. This is a
very rare book,—a small thick octavo of 774 p. p.: I have examined
it, but believe that there are now very few copies to be found. I saw
one purchased by the present Lord Bishop of Cashel, at a public
auction, for the enormous sum—if my memory does not fail me—of
£40. Bishop Kidder, I think first called public attention to it—next Mr.
Grier—and Archdeacon Cotton, in 1827, republished Bishop Kidder’s
tract, with notes. I add here, that the book was published—“avec
approbation et permission,” abundantly.
[16] I need scarcely say, however, to any one but moderately
acquainted with the controversy, that the mere titles of the points of
difference would occupy ten times the space of Bishop Doyle’s whole
letter to Mr. Robertson. Willett’s Synopsis Papismi will afford a fair
specimen to those desirous of one.
*** END OF THE PROJECT GUTENBERG EBOOK A LETTER TO LORD
FIELDING. SUGGESTED BY THE LATE PROCEEDINGS AT THE NEW
CHURCH AT PANTASA ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is derived


from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is posted


with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute this


electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the Project
Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or providing


access to or distributing Project Gutenberg™ electronic works
provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™


electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for


the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.

1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,


the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.

The Foundation’s business office is located at 809 North 1500 West,


Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws regulating


charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states where


we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot make


any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.

Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.
back
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like