Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright, 1996 © Dale Carnegie & Associates, Inc. Custom SiteSearch Access Client: System Integration at the University of Chicago Tod A. Olson Programmer/Analyst.

Similar presentations


Presentation on theme: "Copyright, 1996 © Dale Carnegie & Associates, Inc. Custom SiteSearch Access Client: System Integration at the University of Chicago Tod A. Olson Programmer/Analyst."— Presentation transcript:

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


Download ppt "Copyright, 1996 © Dale Carnegie & Associates, Inc. Custom SiteSearch Access Client: System Integration at the University of Chicago Tod A. Olson Programmer/Analyst."

Similar presentations


Ads by Google