Download presentation
Presentation is loading. Please wait.
Published byOscar Warren Modified over 8 years ago
1
Copyright, 1996 © Dale Carnegie & Associates, Inc. Custom SiteSearch Access Client: System Integration at the University of Chicago Tod A. Olson Programmer/Analyst University of Chicago Library
2
University of Chicago environment Horizon as integrated library system SiteSearch –CIC VEL access –Interlibrary Loan
3
Why do custom access authorization? All VEL patrons (faculty, students, staff) already in Horizon Avoid maintaining another production database
4
Guidelines Separate customizations from the distribution Hide database interaction under an abstraction layer Test the pieces individually Avoid touching the user interface Code should support policy, not set it
5
Planning Components to build Organizing customizations
6
Components Database abstraction: hides database interaction HorizonAccessServer: holds server and policy information HorizonAccessClient: implements/enforces access policy
7
Organizing customizations Java classes.ini files HTML files
8
Java classes DB abstraction and JDBC classes –May be used by other projects –Install outside of SiteSearch Access classes –Install under SiteSearch classes directory –reside in own package, edu.uchicago.lib.webz
9
.ini files and HTML files Less flexible lookup mechanism Local files in default SiteSearch directories Distinguish by “Uchi” prefix
10
Database abstraction Use JDBC for database interaction Hide JDBC code behind abstraction layer Simple abstraction: –One getXXXX() method per index –next() gets next row –One getXXXX() method per column, gets value in current row
11
Comments on the DB Abstraction Exposes tables, hides JDBC detail Extensible: could add insert, update, where Suitable for code generation Currently not full-featured –Cf. Commercial code-generators
12
HorizonAccessServer Implements AccessServerConnect Reads.ini files, stores data for AccessClient.ini files organized like default Access.ini files
13
HorizonAccessServer implementation Starting point: All methods are stubs toString() reports object state Use main() to test methods
14
HorizonAccessServer.main() Sets up ServerLog.out Looks up JaSSIServer.ini Calls init()
15
HorizonAccessServer.init() Gets server name and JaSSIServer.ini as args Parses.ini files –Server connection data in [servername].ini –JaSSI data: Look up file name in JaSSIServer.ini
16
HorizonAccessClient Implements access policy: Authenticates patron Gets patron data Determines databases patron may use
17
HorizonAccessClient implementation Starting point: Implements AccessClient All methods are stubs toString() reports object state Use main() to test methods
18
HorizonAccessClient.main() Sets up ServerLog.out Sets up a UserStateObject Looks up JaSSIServer.ini inits HorizonAccessServer Calls initialize() Calls authorizeByName()
19
HorizonAccessClient.initialize() Loads SQL driver Connects to Horizon database
20
HorizonAccessClient.authorizeByName() isFacStuStaff() –Authenticates patron by (barcode and PIN) –Checks patron has correct privileges getBorrowerInformation() –shows use of DB abstraction
21
HorizonAccessClient.setDbList() Takes Hashtable of ZDb objects Stores Vector of ZDb names –Only what patron is allowed authorizeByXXX() can edit this list –local policy –licensing agreements
22
Use the logs Gather usage information: traceLevel=TRACE_ENTERS_AND_EXITS traceLevel= TRACE_ENTERS_AND_EXITS+TRACE_PARMS TRACE_ALL usually reports too much –Use TRACE_DEBUG in examples
23
Use the logs Usually use method, trace level, String version log.println(“FooClass.initFlange()”, TRACE_DEBUG, “flange.value = “ + flange.value); Can grep by class and method name [... ] [FooClass.initFlange()] flange.value = null
24
Log useful information Report program/object state log.println(method, TRACE_DEBUG, flange.toString()); Always report errors log.println(“FooClass.initFlange()”, “Bad flange = “ + flange.toString());
25
Leave logging statements in production code May be useful in future Disable via traceLevel Negligible performance impact
26
Conclusions Custom access client worthwhile –eliminates extra production DB Test outside of JaSSI –shorter development cycle Separate customizations from distribution Logs are often useful
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.