SlideShare a Scribd company logo
Take aTrip into the Forest:A Java Primer on
Maps,Trees, and Collections
Sep. 8, 2016
This webinar is brought to you as part of the
free monthly webinar series from:
Howard Greenberg
@TLCC
Paul Della-Nebbia
@PaulDN
Courtney Carter
@Teamstudio
Teamstudio provides products that help
organizations with customized business
applications implement best practices, work
more efficiently, and prepare for the future.
AboutTeamstudio
https://www.teamstudio.com/
1
• Save hundreds and even Thousands of Dollars
on the most popular courses and packages:
XPages Development
Notes and Domino Development
Domino Administration
• Ends on September 30th
http://www.tlcc.com/fallsale
TLCC Development Services
• Let us help with your development needs
– Bootstrap
– Java
• Convert Notes Apps to mobile and the web!
• Modernize old Domino web applications
• Interface with backend data systems
• Skills transfer
2
Upcoming and Recorded Webinars
• October – Bootstrap Data Tables with Michael Smith
• November – TBD
• December – Application Modernization Options
www.tlcc.com/xpages-webinar
View Previous Webinars
(use url above)
Asking Questions – Q and A at the end
Use the Orange Arrow button to
expand the GoToWebinar panel
Then ask your questions in the
Questions pane!
We will answer your questions
verbally at the end of the
webinar
5
Take a Trip Into the Forest - A Java Primer on
Maps, Trees, and Collections
Your Presenter Today – Howard Greenberg
• Certified Lotus Instructor since R3
• Co-founded TLCC in 1997
• IBM Champion
• Prior to that 12 years at IBM in the PC group
• Also…
– Certified Public Accountant
– Certified Information Systems Auditor (CISA)
– Certified Flight Instructor
6
Agenda
• Why Use Java Objects in Xpages?
• Introduction to Managed Beans
• Scoped Variables in SSJS
• Introduction to Maps
• The DataObject Implementation
• A Reporting Example
• Questions???
7
Why Use Java in XPages?
• Performance (see my recorded webinar)
• Reporting
– Easily combine data from different sources
• Portability
– Back end
– Front end
• Code Maintenance
• Lots of code/knowledge out there
8
Review - Managed Beans
• The XPages runtime manages the creation of your
“managed bean”
– Request, View, Session, or Application scope
• Refer to methods on your XPages or from other Java
code
• How to:
– Create an entry in the Faces-Config file
– Create your Java code
• Getters and Setters
• No argument constructor
• Don’t have to use Managed Beans!
9
SampleBean.java
SampleBeanDemo.xsp
Scoped Variables in SSJS
• sessionScope.testName
– read/write to a variable that is session scope
• Can store anything (string, Boolean, date, array, etc)
– Just don’t store Domino objects
• Why do we care???
– Scoped variables are stored as HashMaps
– Another way to access is:
• sessionScope.get(“testName”)
• sessionScope.put(“testName” , “A value”)
• Same as a Java Hash Map
– Let’s Learn more about these HashMaps!
10
Some Java Terms - Collections, Interfaces and implementations
• Collections is a Framework/root interface
– Architecture for representing collections
• Has Interfaces, Implementations, Algorithms
• Interfaces
– Abstract Data Type
– Defines a base used by all the classes that implement
• An interface in Java is similar to a class, but the body of
an interface can include only abstract methods and final fields
(constants). A class implements an interface by providing code for
each method declared by the interface.
• Implementations
– A class that uses an interface (we use this!)
11
Collections Interface
12
Map Interface
13
Java HashMap Documentation
14
Java documentation on HashMap
Some Different Collection Implementations
• Set, SortedSet
– No duplicate elements
• HashSet, TreeSet, LinkedHashSet
• List
– Allows duplicates
– Ordered
• ArrayList, LinkedList
• Map, SortedMap
– Key/Value pairs
• HashMap, LinkedHashMap, TreeMap
15
Which one do I use?
16
Use Case: Configuration Data
• Goal
– Store configuration information
– Managed Bean with Application Scope
• Best choice is a HashMap
– Why? Back to the previous chart!
– Access values with a key
17
Working with Maps
• Creation
private HashMap<String,String> configData = new HashMap<String,
String>();
• Set a value
configData.put(key ,value);
• Get a value (and test to see if key is there)
public String getConfig(String key) {
String rtnString = "";
if (this.configData.containsKey(key)){
rtnString = this.configData.get(key);
}
return rtnString;
}
18
Steps
1. Notes view/form to hold configuration data
2. Create new Java Class
3. Add Managed Bean to faces-config
– Set scope as needed
4. Implement Serializable in the Java class
5. Create “private” variable for HashMap
6. Create constructor to initialize data
– Walk the view to load up the keys/values
7. Generate Getter/Setter
8. Use on XPage or in other Java code
19
ConfigBean.java
ConfigBeanDemo.xsp
More on HashMaps - Iterate through Map
• Get all the keys as a Set
– statesHashMap.keySet()
• Get all the values as a Set
– statesHashMap.values()
• Get the key and value as a Set
– statesHashMap.entrySet()
• Get the key with getKey() and the value with
getValue()
20
for (Entry<String, String> state :statesHashMap.entrySet()){
myString = state.getValue() + "|" + state.getKey() ;
debugMsg(myString);
}
LinkedHashMap
• A HashMap does not keep the insertion order (random)
• Need to keeps insertion order?  LinkedHashMap
• Good when loading data from a Notes view (that is
ordered already)
– Keeps same (insertion) order
• Otherwise basically the same as HashMap
21
ArrayLists
• A list of objects (like an Array)
– Hold any data type/object
– Can search the values
– Can access an element in a certain position
• Perfect for feeding to:
– Values in a combo box, list box, etc.
– Repeats
– Data Tables
• To add at end:
– rtnList.add(stateLine);
22
Use Case: Return values to a Combo Box
• Stop doing @DbColumns
– Slow!
• Load values from a view, store in memory
– FAST!
• Use Expression Language
– configBean.statesHashMap
• Use same ConfigBean as before (application scope)
– Method in Java is getStatesHashMap()
– Returns a List
23
ConfigBean.java
ConfigBeanDemo.xsp
Time Out for a Message!
• Do you Recycle?
– View looping
– NotesDateTime?
– columnValues with a Date creates NotesDateTime objects
• Instead use the Domino API
– Simpler code patterns
– Never have to worry about recycle
– Try/Catch block not required
– Support for logging
– Lots of cool new stuff
• Available on OpenNTF – Link to version 3
– Get help via Slack/Stack Overflow
24
Code Comparison – The Old Way
25
private void initBean(Database curDb, String viewName) {
try {
View setupVw = curDb.getView(viewName);
String key = "";
String value = "";
ViewEntry tempEntry;
if (setupVw != null) {
ViewEntryCollection vwEntryCol = setupVw.getAllEntries();
ViewEntry entryDoc = vwEntryCol.getFirstEntry();
while (entryDoc != null){
Vector<?> colValues = entryDoc.getColumnValues();
key = (String) colValues.elementAt(0);
value = (String) colValues.elementAt(1);
this.configData.put(key , value);
tempEntry = vwEntryCol.getNextEntry(entryDoc);
entryDoc.recycle();
entryDoc = tempEntry;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Code Comparison – The Domino API Way
26
private void initBean(Database curDb, String viewName) {
View setupVw = curDb.getView(viewName);
String key = "";
String value = "";
if (setupVw != null) {
for (ViewEntry entryDoc : setupVw.getAllEntries()){
Vector<?> colValues = entryDoc.getColumnValues();
key = (String) colValues.elementAt(0);
value = (String) colValues.elementAt(1);
this.configData.put(key , value);
}
}
}
No Recycle!
Uses a for loop
No Try/Catch block
ConfigBean2.java
DomAPIDemo.xsp
Ordered Lists
• Use Case
– Get a list of values always sorted by the value
• “Natural” sort order
– No duplicates
• TreeSet!
• Good for looping through a view, getting a value
from a column
– Add to TreeSet and then you always have a
sorted, unique list
27
TreeSetBean.java
TreeSetBeanDemo.xsp
Custom Sorting of a TreeSet
• Suppose you don’t want the “natural” order???
– Use a custom sort when defining the TreeSet
– Comparator function
– Will always sort using this new sort definition
28
public List<String> getArizonaTownsReversed() {
TreeSet<String> sorted = new TreeSet<String>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
sorted.addAll(ArizonaTowns);
return new ArrayList<String>(sorted);
}
TreeSetBean.java
TreeSetBeanDemo.xsp
Add all the towns in all the states in one object?
• Use a TreeMap
– Key,Value pair
• In this case, a state is the key, a list of towns
(TreeSet) is the value
– Sorted on the Key value, natural order
29
DataObject
• Way to implement an interface that works well
with the Expression Language
– Any data type
– Must implement certain methods
30
DataObjectBean.java
DataObjectBeanDemo.xsp
Filtering and Sorting
• Goal is to store information in the bean to allow fast
filtering and sorting
• Base storage is a LinkedHashMap
– Key is the city name
– Values are an ArrayList
• The ArrayList holds a Person object
–First and last name, city, state, email, etc.
–Universal doc id to retrieve Notes document
31
Data Model
32
Houston
LinkedHashMap<String,ArrayList
<Person>> customers
Key is City Name
Lorie Mason
Brad Hunt
Jessie Lang
Mark Travis
firstName
lastName
City
State
eMail
Notes ID
DocUNID
Person ObjectDallas
Austin
ArrayList<Person>
The customers HashMap
stores all the people from a
selected state
More on Filtering and Sorting
• Methods of the Bean are used to:
– Return data as an ArrayList to a Repeat
• Sorted (last name, city, email)
• Filter on a city or show all
– Switch to a different state
– Get the cities for the selected state (unique, ordered)
– Store information like:
• City filter
• Desired sorting
• Ascending or Descending sorting
33
ReportBean.java
ReportBeanDemo.xsp
Homework and Resources
• TLCC’s Java Classes (two)
http://www.tlcc.com/admin/tlccsite.nsf/coursedetails.xsp?ccode=ND9XJVKPG
• My Session on Xpages Performance (recorded)
– October, 2015
http://www.tlcc.com/admin/tlccsite.nsf/pages/recorded-xpages-
webinars?opendocument
• List of Collections with a summary of features
– http://www.janeve.me/articles/which-java-collection-to-use
• The Sun Java documentation (version 6, aka 1.6)
• StackOverflow
• Google!!!
34
35
 Email: howardg@tlcc.com
 Twitter: @TLCCLtd
 Web: www.tlcc.com
Special Offer!!!
Save 20% (5% on sale items) on any TLCC course or
package until 9/30
To take advantage of this offer or to download the demonstration databases
www.tlcc.com/mwlug
Questions????
Use the Orange Arrow button to
expand the GoToWebinar panel
Then ask your questions in the
Questions panel!
Remember, we will answer your
questions verbally
#XPages
@TLCCLtd
@Teamstudio
@PaulDN
Upcoming Events:
 ICON UK, London – Sept. 15th and 16th
 Connect 2017 in San Francisco, CA – Feb. 20th to 23rd
Question and Answer Time!
Teamstudio Questions?
contactus@teamstudio.com
978-712-0924
TLCC Questions?
howardg@tlcc.com paul@tlcc.com
888-241-8522 or 561-953-0095
Howard Greenberg
Courtney Carter
Paul Della-Nebbia
Save on TLCC Training with the Fall Sale!
Ad

More Related Content

What's hot (20)

The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your ApplicationsThe Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
balassaitis
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Kathy Brown
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUG
Paul Withers
 
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
Cathrine Wilhelmsen
 
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Gaelyk - SpringOne2GX - 2010 - Guillaume LaforgeGaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Guillaume Laforge
 
 Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage?  Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage? 
Michael Yagudaev
 
Microsoft SQL Server Query Tuning
Microsoft SQL Server Query TuningMicrosoft SQL Server Query Tuning
Microsoft SQL Server Query Tuning
Mark Ginnebaugh
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul Withers
 
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
Stephan H. Wissel
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
balassaitis
 
Getting started with rails active storage wae
Getting started with rails active storage waeGetting started with rails active storage wae
Getting started with rails active storage wae
Bishal Khanal
 
Plone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group searchPlone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group search
fredvd
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
Angela Byron
 
A Notes Developer's Journey into Java
A Notes Developer's Journey into JavaA Notes Developer's Journey into Java
A Notes Developer's Journey into Java
Teamstudio
 
Hibernate performance tuning
Hibernate performance tuningHibernate performance tuning
Hibernate performance tuning
Sander Mak (@Sander_Mak)
 
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODIEssbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Rodrigo Radtke de Souza
 
Eureka moment
Eureka momentEureka moment
Eureka moment
Paul Withers
 
Advanced Zen
Advanced ZenAdvanced Zen
Advanced Zen
InterSystems Corporation
 
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Cathrine Wilhelmsen
 
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your ApplicationsThe Grid the Brad and the Ugly: Using Grids to Improve Your Applications
The Grid the Brad and the Ugly: Using Grids to Improve Your Applications
balassaitis
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Kathy Brown
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUG
Paul Withers
 
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
S.M.A.R.T. Biml - Standardize, Model, Automate, Reuse and Transform (SQLSatur...
Cathrine Wilhelmsen
 
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Gaelyk - SpringOne2GX - 2010 - Guillaume LaforgeGaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Guillaume Laforge
 
 Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage?  Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage? 
Michael Yagudaev
 
Microsoft SQL Server Query Tuning
Microsoft SQL Server Query TuningMicrosoft SQL Server Query Tuning
Microsoft SQL Server Query Tuning
Mark Ginnebaugh
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul Withers
 
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
Stephan H. Wissel
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
balassaitis
 
Getting started with rails active storage wae
Getting started with rails active storage waeGetting started with rails active storage wae
Getting started with rails active storage wae
Bishal Khanal
 
Plone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group searchPlone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group search
fredvd
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
Angela Byron
 
A Notes Developer's Journey into Java
A Notes Developer's Journey into JavaA Notes Developer's Journey into Java
A Notes Developer's Journey into Java
Teamstudio
 
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODIEssbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Essbase Statistics DW: How to Automatically Administrate Essbase Using ODI
Rodrigo Radtke de Souza
 
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Don't Repeat Yourself - Agile SSIS Development with Biml and BimlScript (SQL ...
Cathrine Wilhelmsen
 

Similar to Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections (20)

MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
Howard Greenberg
 
Java SE 8 - New Features
Java SE 8 - New FeaturesJava SE 8 - New Features
Java SE 8 - New Features
Naveen Hegde
 
Cassandra
CassandraCassandra
Cassandra
exsuns
 
Skillwise - Enhancing dotnet app
Skillwise - Enhancing dotnet appSkillwise - Enhancing dotnet app
Skillwise - Enhancing dotnet app
Skillwise Group
 
Data mining with Weka
Data mining with WekaData mining with Weka
Data mining with Weka
AlbanLevy
 
2. Lecture2_NOSQL_KeyValue.ppt
2. Lecture2_NOSQL_KeyValue.ppt2. Lecture2_NOSQL_KeyValue.ppt
2. Lecture2_NOSQL_KeyValue.ppt
ShaimaaMohamedGalal
 
What's new in pandas and the SciPy stack for financial users
What's new in pandas and the SciPy stack for financial usersWhat's new in pandas and the SciPy stack for financial users
What's new in pandas and the SciPy stack for financial users
Wes McKinney
 
Scaling Web Applications with Cassandra Presentation.ppt
Scaling Web Applications with Cassandra Presentation.pptScaling Web Applications with Cassandra Presentation.ppt
Scaling Web Applications with Cassandra Presentation.ppt
ssuserbad56d
 
AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
Paul Chao
 
ZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine ProjectZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine Project
Jonathan Wage
 
Where to save my data, for devs!
Where to save my data, for devs!Where to save my data, for devs!
Where to save my data, for devs!
SharePoint Saturday New Jersey
 
Emerging technologies /frameworks in Big Data
Emerging technologies /frameworks in Big DataEmerging technologies /frameworks in Big Data
Emerging technologies /frameworks in Big Data
Rahul Jain
 
mongodb-aggregation-may-2012
mongodb-aggregation-may-2012mongodb-aggregation-may-2012
mongodb-aggregation-may-2012
Chris Westin
 
Building a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationBuilding a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management Application
Jonathan Katz
 
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 TaipeiPostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
Satoshi Nagayasu
 
Things you can find in the plan cache
Things you can find in the plan cacheThings you can find in the plan cache
Things you can find in the plan cache
sqlserver.co.il
 
Jdbc Java Programming
Jdbc Java ProgrammingJdbc Java Programming
Jdbc Java Programming
chhaichivon
 
MongoDB's New Aggregation framework
MongoDB's New Aggregation frameworkMongoDB's New Aggregation framework
MongoDB's New Aggregation framework
Chris Westin
 
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami
 
Entity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic UnicornsEntity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic Unicorns
Richie Rump
 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
Howard Greenberg
 
Java SE 8 - New Features
Java SE 8 - New FeaturesJava SE 8 - New Features
Java SE 8 - New Features
Naveen Hegde
 
Cassandra
CassandraCassandra
Cassandra
exsuns
 
Skillwise - Enhancing dotnet app
Skillwise - Enhancing dotnet appSkillwise - Enhancing dotnet app
Skillwise - Enhancing dotnet app
Skillwise Group
 
Data mining with Weka
Data mining with WekaData mining with Weka
Data mining with Weka
AlbanLevy
 
What's new in pandas and the SciPy stack for financial users
What's new in pandas and the SciPy stack for financial usersWhat's new in pandas and the SciPy stack for financial users
What's new in pandas and the SciPy stack for financial users
Wes McKinney
 
Scaling Web Applications with Cassandra Presentation.ppt
Scaling Web Applications with Cassandra Presentation.pptScaling Web Applications with Cassandra Presentation.ppt
Scaling Web Applications with Cassandra Presentation.ppt
ssuserbad56d
 
AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
Paul Chao
 
ZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine ProjectZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine Project
Jonathan Wage
 
Emerging technologies /frameworks in Big Data
Emerging technologies /frameworks in Big DataEmerging technologies /frameworks in Big Data
Emerging technologies /frameworks in Big Data
Rahul Jain
 
mongodb-aggregation-may-2012
mongodb-aggregation-may-2012mongodb-aggregation-may-2012
mongodb-aggregation-may-2012
Chris Westin
 
Building a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationBuilding a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management Application
Jonathan Katz
 
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 TaipeiPostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
Satoshi Nagayasu
 
Things you can find in the plan cache
Things you can find in the plan cacheThings you can find in the plan cache
Things you can find in the plan cache
sqlserver.co.il
 
Jdbc Java Programming
Jdbc Java ProgrammingJdbc Java Programming
Jdbc Java Programming
chhaichivon
 
MongoDB's New Aggregation framework
MongoDB's New Aggregation frameworkMongoDB's New Aggregation framework
MongoDB's New Aggregation framework
Chris Westin
 
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami
 
Entity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic UnicornsEntity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic Unicorns
Richie Rump
 
Ad

More from Teamstudio (20)

Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or MigratingSearch Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Teamstudio
 
SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!
Teamstudio
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good Server
Teamstudio
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access Information
Teamstudio
 
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
Teamstudio
 
IBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino RoadmapIBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino Roadmap
Teamstudio
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Teamstudio
 
Optimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep DiveOptimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep Dive
Teamstudio
 
Getting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino APIGetting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino API
Teamstudio
 
Understand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage AuditorUnderstand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage Auditor
Teamstudio
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
Using Cool New Frameworks in (Mobile) Domino Apps
Using Cool New Frameworks in (Mobile) Domino AppsUsing Cool New Frameworks in (Mobile) Domino Apps
Using Cool New Frameworks in (Mobile) Domino Apps
Teamstudio
 
Ask the XPages Experts
Ask the XPages ExpertsAsk the XPages Experts
Ask the XPages Experts
Teamstudio
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
Teamstudio
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
Teamstudio
 
An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller Pattern
Teamstudio
 
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Teamstudio
 
Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?
Teamstudio
 
App.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application DevelopmentApp.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application Development
Teamstudio
 
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or MigratingSearch Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Teamstudio
 
SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!
Teamstudio
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good Server
Teamstudio
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access Information
Teamstudio
 
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
Teamstudio
 
IBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino RoadmapIBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino Roadmap
Teamstudio
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Teamstudio
 
Optimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep DiveOptimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep Dive
Teamstudio
 
Getting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino APIGetting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino API
Teamstudio
 
Understand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage AuditorUnderstand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage Auditor
Teamstudio
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
Using Cool New Frameworks in (Mobile) Domino Apps
Using Cool New Frameworks in (Mobile) Domino AppsUsing Cool New Frameworks in (Mobile) Domino Apps
Using Cool New Frameworks in (Mobile) Domino Apps
Teamstudio
 
Ask the XPages Experts
Ask the XPages ExpertsAsk the XPages Experts
Ask the XPages Experts
Teamstudio
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
Teamstudio
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
Teamstudio
 
An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller Pattern
Teamstudio
 
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Teamstudio
 
Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?
Teamstudio
 
App.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application DevelopmentApp.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application Development
Teamstudio
 
Ad

Recently uploaded (20)

Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 

Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections

  • 1. Take aTrip into the Forest:A Java Primer on Maps,Trees, and Collections Sep. 8, 2016
  • 2. This webinar is brought to you as part of the free monthly webinar series from:
  • 4. Teamstudio provides products that help organizations with customized business applications implement best practices, work more efficiently, and prepare for the future. AboutTeamstudio
  • 6. 1 • Save hundreds and even Thousands of Dollars on the most popular courses and packages: XPages Development Notes and Domino Development Domino Administration • Ends on September 30th http://www.tlcc.com/fallsale
  • 7. TLCC Development Services • Let us help with your development needs – Bootstrap – Java • Convert Notes Apps to mobile and the web! • Modernize old Domino web applications • Interface with backend data systems • Skills transfer 2
  • 8. Upcoming and Recorded Webinars • October – Bootstrap Data Tables with Michael Smith • November – TBD • December – Application Modernization Options www.tlcc.com/xpages-webinar View Previous Webinars (use url above)
  • 9. Asking Questions – Q and A at the end Use the Orange Arrow button to expand the GoToWebinar panel Then ask your questions in the Questions pane! We will answer your questions verbally at the end of the webinar
  • 10. 5 Take a Trip Into the Forest - A Java Primer on Maps, Trees, and Collections
  • 11. Your Presenter Today – Howard Greenberg • Certified Lotus Instructor since R3 • Co-founded TLCC in 1997 • IBM Champion • Prior to that 12 years at IBM in the PC group • Also… – Certified Public Accountant – Certified Information Systems Auditor (CISA) – Certified Flight Instructor 6
  • 12. Agenda • Why Use Java Objects in Xpages? • Introduction to Managed Beans • Scoped Variables in SSJS • Introduction to Maps • The DataObject Implementation • A Reporting Example • Questions??? 7
  • 13. Why Use Java in XPages? • Performance (see my recorded webinar) • Reporting – Easily combine data from different sources • Portability – Back end – Front end • Code Maintenance • Lots of code/knowledge out there 8
  • 14. Review - Managed Beans • The XPages runtime manages the creation of your “managed bean” – Request, View, Session, or Application scope • Refer to methods on your XPages or from other Java code • How to: – Create an entry in the Faces-Config file – Create your Java code • Getters and Setters • No argument constructor • Don’t have to use Managed Beans! 9 SampleBean.java SampleBeanDemo.xsp
  • 15. Scoped Variables in SSJS • sessionScope.testName – read/write to a variable that is session scope • Can store anything (string, Boolean, date, array, etc) – Just don’t store Domino objects • Why do we care??? – Scoped variables are stored as HashMaps – Another way to access is: • sessionScope.get(“testName”) • sessionScope.put(“testName” , “A value”) • Same as a Java Hash Map – Let’s Learn more about these HashMaps! 10
  • 16. Some Java Terms - Collections, Interfaces and implementations • Collections is a Framework/root interface – Architecture for representing collections • Has Interfaces, Implementations, Algorithms • Interfaces – Abstract Data Type – Defines a base used by all the classes that implement • An interface in Java is similar to a class, but the body of an interface can include only abstract methods and final fields (constants). A class implements an interface by providing code for each method declared by the interface. • Implementations – A class that uses an interface (we use this!) 11
  • 19. Java HashMap Documentation 14 Java documentation on HashMap
  • 20. Some Different Collection Implementations • Set, SortedSet – No duplicate elements • HashSet, TreeSet, LinkedHashSet • List – Allows duplicates – Ordered • ArrayList, LinkedList • Map, SortedMap – Key/Value pairs • HashMap, LinkedHashMap, TreeMap 15
  • 21. Which one do I use? 16
  • 22. Use Case: Configuration Data • Goal – Store configuration information – Managed Bean with Application Scope • Best choice is a HashMap – Why? Back to the previous chart! – Access values with a key 17
  • 23. Working with Maps • Creation private HashMap<String,String> configData = new HashMap<String, String>(); • Set a value configData.put(key ,value); • Get a value (and test to see if key is there) public String getConfig(String key) { String rtnString = ""; if (this.configData.containsKey(key)){ rtnString = this.configData.get(key); } return rtnString; } 18
  • 24. Steps 1. Notes view/form to hold configuration data 2. Create new Java Class 3. Add Managed Bean to faces-config – Set scope as needed 4. Implement Serializable in the Java class 5. Create “private” variable for HashMap 6. Create constructor to initialize data – Walk the view to load up the keys/values 7. Generate Getter/Setter 8. Use on XPage or in other Java code 19 ConfigBean.java ConfigBeanDemo.xsp
  • 25. More on HashMaps - Iterate through Map • Get all the keys as a Set – statesHashMap.keySet() • Get all the values as a Set – statesHashMap.values() • Get the key and value as a Set – statesHashMap.entrySet() • Get the key with getKey() and the value with getValue() 20 for (Entry<String, String> state :statesHashMap.entrySet()){ myString = state.getValue() + "|" + state.getKey() ; debugMsg(myString); }
  • 26. LinkedHashMap • A HashMap does not keep the insertion order (random) • Need to keeps insertion order?  LinkedHashMap • Good when loading data from a Notes view (that is ordered already) – Keeps same (insertion) order • Otherwise basically the same as HashMap 21
  • 27. ArrayLists • A list of objects (like an Array) – Hold any data type/object – Can search the values – Can access an element in a certain position • Perfect for feeding to: – Values in a combo box, list box, etc. – Repeats – Data Tables • To add at end: – rtnList.add(stateLine); 22
  • 28. Use Case: Return values to a Combo Box • Stop doing @DbColumns – Slow! • Load values from a view, store in memory – FAST! • Use Expression Language – configBean.statesHashMap • Use same ConfigBean as before (application scope) – Method in Java is getStatesHashMap() – Returns a List 23 ConfigBean.java ConfigBeanDemo.xsp
  • 29. Time Out for a Message! • Do you Recycle? – View looping – NotesDateTime? – columnValues with a Date creates NotesDateTime objects • Instead use the Domino API – Simpler code patterns – Never have to worry about recycle – Try/Catch block not required – Support for logging – Lots of cool new stuff • Available on OpenNTF – Link to version 3 – Get help via Slack/Stack Overflow 24
  • 30. Code Comparison – The Old Way 25 private void initBean(Database curDb, String viewName) { try { View setupVw = curDb.getView(viewName); String key = ""; String value = ""; ViewEntry tempEntry; if (setupVw != null) { ViewEntryCollection vwEntryCol = setupVw.getAllEntries(); ViewEntry entryDoc = vwEntryCol.getFirstEntry(); while (entryDoc != null){ Vector<?> colValues = entryDoc.getColumnValues(); key = (String) colValues.elementAt(0); value = (String) colValues.elementAt(1); this.configData.put(key , value); tempEntry = vwEntryCol.getNextEntry(entryDoc); entryDoc.recycle(); entryDoc = tempEntry; } } } catch (Exception e) { e.printStackTrace(); } }
  • 31. Code Comparison – The Domino API Way 26 private void initBean(Database curDb, String viewName) { View setupVw = curDb.getView(viewName); String key = ""; String value = ""; if (setupVw != null) { for (ViewEntry entryDoc : setupVw.getAllEntries()){ Vector<?> colValues = entryDoc.getColumnValues(); key = (String) colValues.elementAt(0); value = (String) colValues.elementAt(1); this.configData.put(key , value); } } } No Recycle! Uses a for loop No Try/Catch block ConfigBean2.java DomAPIDemo.xsp
  • 32. Ordered Lists • Use Case – Get a list of values always sorted by the value • “Natural” sort order – No duplicates • TreeSet! • Good for looping through a view, getting a value from a column – Add to TreeSet and then you always have a sorted, unique list 27 TreeSetBean.java TreeSetBeanDemo.xsp
  • 33. Custom Sorting of a TreeSet • Suppose you don’t want the “natural” order??? – Use a custom sort when defining the TreeSet – Comparator function – Will always sort using this new sort definition 28 public List<String> getArizonaTownsReversed() { TreeSet<String> sorted = new TreeSet<String>(new Comparator<String>() { public int compare(String o1, String o2) { return o2.compareTo(o1); } }); sorted.addAll(ArizonaTowns); return new ArrayList<String>(sorted); } TreeSetBean.java TreeSetBeanDemo.xsp
  • 34. Add all the towns in all the states in one object? • Use a TreeMap – Key,Value pair • In this case, a state is the key, a list of towns (TreeSet) is the value – Sorted on the Key value, natural order 29
  • 35. DataObject • Way to implement an interface that works well with the Expression Language – Any data type – Must implement certain methods 30 DataObjectBean.java DataObjectBeanDemo.xsp
  • 36. Filtering and Sorting • Goal is to store information in the bean to allow fast filtering and sorting • Base storage is a LinkedHashMap – Key is the city name – Values are an ArrayList • The ArrayList holds a Person object –First and last name, city, state, email, etc. –Universal doc id to retrieve Notes document 31
  • 37. Data Model 32 Houston LinkedHashMap<String,ArrayList <Person>> customers Key is City Name Lorie Mason Brad Hunt Jessie Lang Mark Travis firstName lastName City State eMail Notes ID DocUNID Person ObjectDallas Austin ArrayList<Person> The customers HashMap stores all the people from a selected state
  • 38. More on Filtering and Sorting • Methods of the Bean are used to: – Return data as an ArrayList to a Repeat • Sorted (last name, city, email) • Filter on a city or show all – Switch to a different state – Get the cities for the selected state (unique, ordered) – Store information like: • City filter • Desired sorting • Ascending or Descending sorting 33 ReportBean.java ReportBeanDemo.xsp
  • 39. Homework and Resources • TLCC’s Java Classes (two) http://www.tlcc.com/admin/tlccsite.nsf/coursedetails.xsp?ccode=ND9XJVKPG • My Session on Xpages Performance (recorded) – October, 2015 http://www.tlcc.com/admin/tlccsite.nsf/pages/recorded-xpages- webinars?opendocument • List of Collections with a summary of features – http://www.janeve.me/articles/which-java-collection-to-use • The Sun Java documentation (version 6, aka 1.6) • StackOverflow • Google!!! 34
  • 40. 35  Email: [email protected] Twitter: @TLCCLtd  Web: www.tlcc.com Special Offer!!! Save 20% (5% on sale items) on any TLCC course or package until 9/30 To take advantage of this offer or to download the demonstration databases www.tlcc.com/mwlug
  • 41. Questions???? Use the Orange Arrow button to expand the GoToWebinar panel Then ask your questions in the Questions panel! Remember, we will answer your questions verbally
  • 42. #XPages @TLCCLtd @Teamstudio @PaulDN Upcoming Events:  ICON UK, London – Sept. 15th and 16th  Connect 2017 in San Francisco, CA – Feb. 20th to 23rd Question and Answer Time! Teamstudio Questions? [email protected] 978-712-0924 TLCC Questions? [email protected] [email protected] 888-241-8522 or 561-953-0095 Howard Greenberg Courtney Carter Paul Della-Nebbia Save on TLCC Training with the Fall Sale!