SlideShare a Scribd company logo
Liferay and Water For People
From Data to Information
Steve Clement
Sr. Java Developer at EffectiveUI, Inc.

#WaterForPeopleLR
Liferay Symposium 2013

Agenda
•
•
•
•
•
•

Introduction
About EffectiveUI
Water For People: Re-Imagine Reporting
What we did: DEMO
How we did it
Q&A

#WaterForPeopleLR
Liferay Symposium 2013

 World’s most mature and award winning user-focused
technology firm
 Silver Partner with Liferay
 Founded April, 2005, ~100 full-time employees
 Denver (headquarters)
 Rochester, NY
 Manhattan
 Seattle
 San Francisco

#WaterForPeopleLR
Liferay Symposium 2013

The Client

Water For People brings together local entrepreneurs,
civil society, governments, and communities to establish
creative, collaborative solutions that allow people to
build and maintain their own reliable safe water systems.

#WaterForPeopleLR
Liferay Symposium 2013

The Challenge
Provide a transparent reporting platform to show not only
the financial and water/sanitation service data, but also the
narrative story for the locales served by Water For People

#WaterForPeopleLR
Liferay Symposium 2013

Why Liferay?
• Industry leader
• Support for a mix of content publishing and custom
application
• Wealth of out-of-box tools
• Open source
• Shared vision of making a better world

#WaterForPeopleLR
Liferay Symposium 2013

Data begins at the source

Monitoring:
Data collected into
a system known as
FLOW

#WaterForPeopleLR
Liferay Symposium 2013

Data goes from FLOW to Excel

#WaterForPeopleLR
Liferay Symposium 2013

Additional Data
•
•
•
•

Financial
Community surveys
Readiness Surveys
Narrative content

…more spreadsheets

#WaterForPeopleLR
Liferay Symposium 2013

But what does it all mean?

#WaterForPeopleLR
Liferay Symposium 2013

Requirements
• Location Hierarchy: roll up the data
• Get spreadsheet data into application
• Visualize data meaningfully

Start with the ending…

#WaterForPeopleLR
Liferay Symposium 2013

DEMO
Water For People: Re-Imagine Reporting

#WaterForPeopleLR
Liferay Symposium 2013

End Demo

Let’s talk about data…

#WaterForPeopleLR
Liferay Symposium 2013

Location Hierarchy
• Four levels: district, country, region, global
• Data is tied to district level
• Data needs to roll up to higher levels

#WaterForPeopleLR
Liferay Symposium 2013

Warning!
It’s about to get technical…

#WaterForPeopleLR
Liferay Symposium 2013

Location Hierarchy: Data Model
District
Region
region_id PK
Name
latitude
longitude
…
etc.

Country
country_id PK
region_id FK
country_name
latitude
longitude
…
etc.

district_id PK
country_id FK
district_name
latitude
longitude
…
etc.

DistrictScore
Possible solution: latitude and longitude can
help plot data points on map.

#WaterForPeopleLR

district_score_id PK
district_id FK
num_water_points
year
…
etc.
Liferay Symposium 2013

But wait…

Navigation = Location Hierarchy!
Control Panel’s Site Pages:

Child page navigation perfectly matches our
location hierarchy!

#WaterForPeopleLR
Liferay Symposium 2013

Navigation as Data
Model Liferay’s Layout table to provide us with our
We can use
foreign key. The relationship of child to parent is already
provided.
Layout

DistrictScore

plid PK
parentLayoutId
name
friendlyURL
…
etc.

district_id PK
district_plid FK
num_water_points
year
…
etc.

#WaterForPeopleLR
Liferay Symposium 2013

Service Builder
We use
districtLayoutPlid as a
foreign key

Finder methods include all
districts for a year

#WaterForPeopleLR
Liferay Symposium 2013

From here to there: how do we do this?
Database

• Register a dedicated data folder in Documents & Media
• Let the admins associate the spreadsheets with
parsers for that data type
• Register parsers with parser data types
• Extract data from spreadsheet and insert into Db using
classes generated by Service Builder
#WaterForPeopleLR
Liferay Symposium 2013

Register Data Folder ID
Get Folder ID
1. URL includes …&_20_folderId=10531
2. Or SQL:
SELECT folderId FROM lportal.dlfolder where name = 'Data';

Then, in portal-ext.properties:
data.folder.id=10531

#WaterForPeopleLR
Liferay Symposium 2013

Get Folder Id Where Spreadsheets Live
Spring MVC Controller
Add FileEntry objects and data type codes to model

#WaterForPeopleLR
Liferay Symposium 2013

Display dataTypes and FileEntries
Create drop down of parser data types

Iterate to display in table

#WaterForPeopleLR
Liferay Symposium 2013

Admins select a file and associates with a parser type

#WaterForPeopleLR
Liferay Symposium 2013

Spring for map of parsers: dependency injection

In Spring Controller, inject parser map…

#WaterForPeopleLR
Liferay Symposium 2013

Extract Data From Spreadsheet
Apache POI
Java API for Microsoft Documents

Get the POI Workbook from Liferay’s FileEntry object

#WaterForPeopleLR
Liferay Symposium 2013

Pull out data of
spreadsheet
•
•

Column index from
cell
Appropriate data type
from cell

#WaterForPeopleLR
Liferay Symposium 2013

Service Builder has created our model and utility
classes to interact with the database

We look up the DistrictScore by unique
compound key. If we don’t have it, we
create it. Otherwise, we update the
values.

#WaterForPeopleLR
Liferay Symposium 2013

Show the data rolled up in the pin
What are we really asking for?
Answer:
Two scores keyed to a
location name and
rendered in a specific
location on the map

#WaterForPeopleLR
Liferay Symposium 2013

Multiple Web Content
portlets need to get the
data for the map pins

#WaterForPeopleLR
Liferay Symposium 2013

From Database to Pin
• Structured Content / Template
• System Portlet for Ajax call
• Render data using Highcharts

#WaterForPeopleLR
Liferay Symposium 2013

Structured Content
Central America
(174, 103)

Need to put in X and Y
coordinates of map point
Possible default values if data
not in system but still known

#WaterForPeopleLR
Liferay Symposium 2013

Template for structured content

Call JavaScript function
with structured content
data

#WaterForPeopleLR
Liferay Symposium 2013

JavaScript calls
for “efScores”
resource and
expects JSON
response called
“scoreMap”

#WaterForPeopleLR
Liferay Symposium 2013

Create a system portlet for serving resources called from
theme
liferay-portlet.xml

#WaterForPeopleLR
Liferay Symposium 2013

In the call for the “efScores” resource, we get the current
layout (i.e., the page we are on) and pass it and the year
parameter into a service class
Spring MVC
Controller used to
serve JSON
resource

Current page

“scoreMap” returned
in JSON view

#WaterForPeopleLR
Liferay Symposium 2013

So how do we get the rollup?

Liferay’s Layout API!

#WaterForPeopleLR
Liferay Symposium 2013

We can start with the current layout plid and walk down to all
the district-level plids using the API:
Pseudo code:
IF
layout.hasChildren()
THEN
List<Layout> children = layout.getChildren()
//Go through all children until we get to lowest level
ELSE
Add layout.getPlid() to collection of district-level plids

#WaterForPeopleLR
Liferay Symposium 2013

Service Builder Finder Methods

#WaterForPeopleLR
Liferay Symposium 2013

Average the District Scores and
group by the Layout names that are
one level beneath the current layout
“Guatemala”
• Service: 65
• Sustainability: 28

#WaterForPeopleLR

Example:
Central America
• Guatemala
• Honduras
• Nicaragua
Liferay Symposium 2013

Get the scores from scoreMap[location name]

If we don’t have a
score defined in
the content
structure (-1), get
the score from the
map.

Send to function for creating pins

#WaterForPeopleLR
Liferay Symposium 2013

Create HTML
element containers
for the pins and then
call Highcharts API

#WaterForPeopleLR
Liferay Symposium 2013

Rich charting and graphing tool
with JavaScript API

#WaterForPeopleLR
Liferay Symposium 2013

Successes
• Rapid development
• Complex data rendered into easily understood visual
information
• Out-of-box tools for CMS and DMS helped guide
solution
• Liferay Theming gave consistent look and feel
• Customizing existing portlets gave us exactly what we
needed
• Portlets as page composition: breaking up
development tasks into manageable units

#WaterForPeopleLR
Liferay Symposium 2013

Looking forward
• Show trends
• Establish as a platform for other non-profits
• Continue innovation based on Water for
People’s rich data and Liferay’s capabilities
• Improve lives

#WaterForPeopleLR
Liferay Symposium 2013

Thank you!
Questions: #WaterForPeopleLR
Resource

URL

EffectiveUI

www.effectiveui.com

Water For People

www.waterforpeople.org

Water For People: Re-imagine
Reporting

reporting.waterforpeople.org

Spring MVC and Liferay

www.effectiveui.com/blog/2013/09/17/l
iferay-and-spring-mvc

Apache POI - the Java API for
Microsoft Documents

poi.apache.org

Highcharts JS

www.highcharts.com/

#WaterForPeopleLR

More Related Content

Viewers also liked

Mobile Website Design: Responsive, Adaptive or Both?
Mobile Website Design: Responsive, Adaptive or Both?Mobile Website Design: Responsive, Adaptive or Both?
Mobile Website Design: Responsive, Adaptive or Both?Effective
 
A Blended Space for Heritage Storytelling
A Blended Space for Heritage StorytellingA Blended Space for Heritage Storytelling
A Blended Space for Heritage Storytelling
Effective
 
Getting into the Game: How EA Put User Research into Practice
Getting into the Game: How EA Put User Research into PracticeGetting into the Game: How EA Put User Research into Practice
Getting into the Game: How EA Put User Research into Practice
Effective
 
The SoDA Report (Volume 2, 2013)
The SoDA Report (Volume 2, 2013)The SoDA Report (Volume 2, 2013)
The SoDA Report (Volume 2, 2013)
Society of Digital Agencies
 
Making Mobile Meaningful NY 2013
Making Mobile Meaningful NY 2013Making Mobile Meaningful NY 2013
Making Mobile Meaningful NY 2013
Effective
 
Give Them What They Want: Discovering Customer Need with Wearable Technology
Give Them What They Want: Discovering Customer Need with Wearable TechnologyGive Them What They Want: Discovering Customer Need with Wearable Technology
Give Them What They Want: Discovering Customer Need with Wearable Technology
Effective
 
The Rules of UX - Enterprise 2.0
The Rules of UX - Enterprise 2.0The Rules of UX - Enterprise 2.0
The Rules of UX - Enterprise 2.0
Effective
 

Viewers also liked (7)

Mobile Website Design: Responsive, Adaptive or Both?
Mobile Website Design: Responsive, Adaptive or Both?Mobile Website Design: Responsive, Adaptive or Both?
Mobile Website Design: Responsive, Adaptive or Both?
 
A Blended Space for Heritage Storytelling
A Blended Space for Heritage StorytellingA Blended Space for Heritage Storytelling
A Blended Space for Heritage Storytelling
 
Getting into the Game: How EA Put User Research into Practice
Getting into the Game: How EA Put User Research into PracticeGetting into the Game: How EA Put User Research into Practice
Getting into the Game: How EA Put User Research into Practice
 
The SoDA Report (Volume 2, 2013)
The SoDA Report (Volume 2, 2013)The SoDA Report (Volume 2, 2013)
The SoDA Report (Volume 2, 2013)
 
Making Mobile Meaningful NY 2013
Making Mobile Meaningful NY 2013Making Mobile Meaningful NY 2013
Making Mobile Meaningful NY 2013
 
Give Them What They Want: Discovering Customer Need with Wearable Technology
Give Them What They Want: Discovering Customer Need with Wearable TechnologyGive Them What They Want: Discovering Customer Need with Wearable Technology
Give Them What They Want: Discovering Customer Need with Wearable Technology
 
The Rules of UX - Enterprise 2.0
The Rules of UX - Enterprise 2.0The Rules of UX - Enterprise 2.0
The Rules of UX - Enterprise 2.0
 

Similar to Liferay and Water For People: From Data to Information

Neo4j Aura on AWS: The Customer Choice for Graph Databases
Neo4j Aura on AWS: The Customer Choice for Graph DatabasesNeo4j Aura on AWS: The Customer Choice for Graph Databases
Neo4j Aura on AWS: The Customer Choice for Graph Databases
Neo4j
 
Mstr meetup
Mstr meetupMstr meetup
Mstr meetup
Bhavani Akunuri
 
SQL Server and Azure Mobile Business Intelligence
SQL Server and Azure Mobile Business IntelligenceSQL Server and Azure Mobile Business Intelligence
SQL Server and Azure Mobile Business IntelligenceJen Stirrup
 
E2D3 introduction
E2D3 introductionE2D3 introduction
E2D3 introduction
E2D3
 
_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf
Jim Dowling
 
SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?
Nicolas Georgeault
 
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
Databricks
 
How to Create Dashboards People Love to Use
How to Create Dashboards People Love to UseHow to Create Dashboards People Love to Use
How to Create Dashboards People Love to Use
QuestionPro
 
java mini project for college students
java mini project for college students java mini project for college students
java mini project for college students
SWETALEENA2
 
Enabling Data centric Teams
Enabling Data centric TeamsEnabling Data centric Teams
Enabling Data centric Teams
Data Con LA
 
#SPSOttawa introduction to the #microsoftGraph
#SPSOttawa introduction to the #microsoftGraph#SPSOttawa introduction to the #microsoftGraph
#SPSOttawa introduction to the #microsoftGraph
Vincent Biret
 
Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?
Takumi Sakamoto
 
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
SensorUp
 
Microservices, Events, and Breaking the Data Monolith with Kafka
Microservices, Events, and Breaking the Data Monolith with KafkaMicroservices, Events, and Breaking the Data Monolith with Kafka
Microservices, Events, and Breaking the Data Monolith with Kafka
VMware Tanzu
 
Nitin_updated_Profile
Nitin_updated_ProfileNitin_updated_Profile
Nitin_updated_ProfileNitin Saxena
 
CDS + Power Apps
CDS + Power Apps CDS + Power Apps
CDS + Power Apps
Juan Fabian
 

Similar to Liferay and Water For People: From Data to Information (20)

Neo4j Aura on AWS: The Customer Choice for Graph Databases
Neo4j Aura on AWS: The Customer Choice for Graph DatabasesNeo4j Aura on AWS: The Customer Choice for Graph Databases
Neo4j Aura on AWS: The Customer Choice for Graph Databases
 
Mstr meetup
Mstr meetupMstr meetup
Mstr meetup
 
SQL Server and Azure Mobile Business Intelligence
SQL Server and Azure Mobile Business IntelligenceSQL Server and Azure Mobile Business Intelligence
SQL Server and Azure Mobile Business Intelligence
 
E2D3 introduction
E2D3 introductionE2D3 introduction
E2D3 introduction
 
_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf_Python Ireland Meetup - Serverless ML - Dowling.pdf
_Python Ireland Meetup - Serverless ML - Dowling.pdf
 
SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?
 
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
Deploying Python Machine Learning Models with Apache Spark with Brandon Hamri...
 
How to Create Dashboards People Love to Use
How to Create Dashboards People Love to UseHow to Create Dashboards People Love to Use
How to Create Dashboards People Love to Use
 
java mini project for college students
java mini project for college students java mini project for college students
java mini project for college students
 
Enabling Data centric Teams
Enabling Data centric TeamsEnabling Data centric Teams
Enabling Data centric Teams
 
#SPSOttawa introduction to the #microsoftGraph
#SPSOttawa introduction to the #microsoftGraph#SPSOttawa introduction to the #microsoftGraph
#SPSOttawa introduction to the #microsoftGraph
 
SaurabhKasyap
SaurabhKasyapSaurabhKasyap
SaurabhKasyap
 
Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?
 
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
Visualize Your Smart City: Build a Real-Time Smart City Dashboard for SensorT...
 
Microservices, Events, and Breaking the Data Monolith with Kafka
Microservices, Events, and Breaking the Data Monolith with KafkaMicroservices, Events, and Breaking the Data Monolith with Kafka
Microservices, Events, and Breaking the Data Monolith with Kafka
 
B.Karthik
B.KarthikB.Karthik
B.Karthik
 
Nitin_updated_Profile
Nitin_updated_ProfileNitin_updated_Profile
Nitin_updated_Profile
 
RamaRaju_Profile
RamaRaju_ProfileRamaRaju_Profile
RamaRaju_Profile
 
CDS + Power Apps
CDS + Power Apps CDS + Power Apps
CDS + Power Apps
 
Prateek Agnihotri5
Prateek Agnihotri5Prateek Agnihotri5
Prateek Agnihotri5
 

More from Effective

User Testing: Adapt to Fit Your Needs
User Testing: Adapt to Fit Your NeedsUser Testing: Adapt to Fit Your Needs
User Testing: Adapt to Fit Your Needs
Effective
 
Death of a Design: 5 Stages of Grief
Death of a Design: 5 Stages of GriefDeath of a Design: 5 Stages of Grief
Death of a Design: 5 Stages of Grief
Effective
 
UX Design Process 101: Where to start with UX
UX Design Process 101: Where to start with UXUX Design Process 101: Where to start with UX
UX Design Process 101: Where to start with UX
Effective
 
Common Innovation Myths (World Usability Day)
Common Innovation Myths (World Usability Day)Common Innovation Myths (World Usability Day)
Common Innovation Myths (World Usability Day)
Effective
 
Introduction to UX
Introduction to UXIntroduction to UX
Introduction to UX
Effective
 
2016 SXSW Measures for Justice Panel Picker Presentation
2016 SXSW Measures for Justice Panel Picker Presentation2016 SXSW Measures for Justice Panel Picker Presentation
2016 SXSW Measures for Justice Panel Picker Presentation
Effective
 
Water For People UX Awards Submission
Water For People UX Awards SubmissionWater For People UX Awards Submission
Water For People UX Awards Submission
Effective
 
SXSW 2013 Daily Recap - Sunday GoodxGlobal
SXSW 2013 Daily Recap - Sunday GoodxGlobalSXSW 2013 Daily Recap - Sunday GoodxGlobal
SXSW 2013 Daily Recap - Sunday GoodxGlobal
Effective
 
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
Effective
 
Interaction13 Daily Recap - Monday
Interaction13 Daily Recap - MondayInteraction13 Daily Recap - Monday
Interaction13 Daily Recap - Monday
Effective
 
Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?
Effective
 
Stop Telling, Start Proving
Stop Telling, Start ProvingStop Telling, Start Proving
Stop Telling, Start Proving
Effective
 
Creating a Patient-Centric Online Experience
Creating a Patient-Centric Online ExperienceCreating a Patient-Centric Online Experience
Creating a Patient-Centric Online Experience
Effective
 
User Experience Matters: Making Sure Web Experiences Don't Suck
User Experience Matters: Making Sure Web Experiences Don't SuckUser Experience Matters: Making Sure Web Experiences Don't Suck
User Experience Matters: Making Sure Web Experiences Don't Suck
Effective
 
Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android Developer
Effective
 
Blue Angels Case Study
Blue Angels Case StudyBlue Angels Case Study
Blue Angels Case Study
Effective
 

More from Effective (16)

User Testing: Adapt to Fit Your Needs
User Testing: Adapt to Fit Your NeedsUser Testing: Adapt to Fit Your Needs
User Testing: Adapt to Fit Your Needs
 
Death of a Design: 5 Stages of Grief
Death of a Design: 5 Stages of GriefDeath of a Design: 5 Stages of Grief
Death of a Design: 5 Stages of Grief
 
UX Design Process 101: Where to start with UX
UX Design Process 101: Where to start with UXUX Design Process 101: Where to start with UX
UX Design Process 101: Where to start with UX
 
Common Innovation Myths (World Usability Day)
Common Innovation Myths (World Usability Day)Common Innovation Myths (World Usability Day)
Common Innovation Myths (World Usability Day)
 
Introduction to UX
Introduction to UXIntroduction to UX
Introduction to UX
 
2016 SXSW Measures for Justice Panel Picker Presentation
2016 SXSW Measures for Justice Panel Picker Presentation2016 SXSW Measures for Justice Panel Picker Presentation
2016 SXSW Measures for Justice Panel Picker Presentation
 
Water For People UX Awards Submission
Water For People UX Awards SubmissionWater For People UX Awards Submission
Water For People UX Awards Submission
 
SXSW 2013 Daily Recap - Sunday GoodxGlobal
SXSW 2013 Daily Recap - Sunday GoodxGlobalSXSW 2013 Daily Recap - Sunday GoodxGlobal
SXSW 2013 Daily Recap - Sunday GoodxGlobal
 
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
 
Interaction13 Daily Recap - Monday
Interaction13 Daily Recap - MondayInteraction13 Daily Recap - Monday
Interaction13 Daily Recap - Monday
 
Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?
 
Stop Telling, Start Proving
Stop Telling, Start ProvingStop Telling, Start Proving
Stop Telling, Start Proving
 
Creating a Patient-Centric Online Experience
Creating a Patient-Centric Online ExperienceCreating a Patient-Centric Online Experience
Creating a Patient-Centric Online Experience
 
User Experience Matters: Making Sure Web Experiences Don't Suck
User Experience Matters: Making Sure Web Experiences Don't SuckUser Experience Matters: Making Sure Web Experiences Don't Suck
User Experience Matters: Making Sure Web Experiences Don't Suck
 
Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android Developer
 
Blue Angels Case Study
Blue Angels Case StudyBlue Angels Case Study
Blue Angels Case Study
 

Recently uploaded

Grow Your Reddit Community Fast.........
Grow Your Reddit Community Fast.........Grow Your Reddit Community Fast.........
Grow Your Reddit Community Fast.........
SocioCosmos
 
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
AJHSSR Journal
 
Unlock TikTok Success with Sociocosmos..
Unlock TikTok Success with Sociocosmos..Unlock TikTok Success with Sociocosmos..
Unlock TikTok Success with Sociocosmos..
SocioCosmos
 
Social Media Marketing Strategies .
Social Media Marketing Strategies                     .Social Media Marketing Strategies                     .
Social Media Marketing Strategies .
Virtual Real Design
 
The Evolution of SEO: Insights from a Leading Digital Marketing Agency
The Evolution of SEO: Insights from a Leading Digital Marketing AgencyThe Evolution of SEO: Insights from a Leading Digital Marketing Agency
The Evolution of SEO: Insights from a Leading Digital Marketing Agency
Digital Marketing Lab
 
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
AJHSSR Journal
 
SluggerPunk Angel Investor Final Proposal
SluggerPunk Angel Investor Final ProposalSluggerPunk Angel Investor Final Proposal
SluggerPunk Angel Investor Final Proposal
grogshiregames
 
HOW TO USE FACEBOOK _ by Clarissa Credito
HOW TO USE FACEBOOK _ by Clarissa CreditoHOW TO USE FACEBOOK _ by Clarissa Credito
HOW TO USE FACEBOOK _ by Clarissa Credito
ClarissaAlanoCredito
 
SluggerPunk Final Angel Investor Proposal
SluggerPunk Final Angel Investor ProposalSluggerPunk Final Angel Investor Proposal
SluggerPunk Final Angel Investor Proposal
grogshiregames
 
Buy Pinterest Followers, Reactions & Repins Go Viral on Pinterest with Socio...
Buy Pinterest Followers, Reactions & Repins  Go Viral on Pinterest with Socio...Buy Pinterest Followers, Reactions & Repins  Go Viral on Pinterest with Socio...
Buy Pinterest Followers, Reactions & Repins Go Viral on Pinterest with Socio...
SocioCosmos
 
Surat Digital Marketing School - course curriculum
Surat Digital Marketing School - course curriculumSurat Digital Marketing School - course curriculum
Surat Digital Marketing School - course curriculum
digitalcourseshop4
 
Project Serenity — 33% Life-time Commissions.docx
Project Serenity — 33% Life-time Commissions.docxProject Serenity — 33% Life-time Commissions.docx
Project Serenity — 33% Life-time Commissions.docx
zeqirielmedina8
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAMLORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
lorraineandreiamcidl
 
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANEEASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
Febless Hernane
 
Your Path to YouTube Stardom Starts Here
Your Path to YouTube Stardom Starts HereYour Path to YouTube Stardom Starts Here
Your Path to YouTube Stardom Starts Here
SocioCosmos
 
Transform Your Presence Now!..............
Transform Your Presence Now!..............Transform Your Presence Now!..............
Transform Your Presence Now!..............
SocioCosmos
 
HOW TO USE THREADS an Instagram App_ by Clarissa Credito
HOW TO USE THREADS an Instagram App_ by Clarissa CreditoHOW TO USE THREADS an Instagram App_ by Clarissa Credito
HOW TO USE THREADS an Instagram App_ by Clarissa Credito
ClarissaAlanoCredito
 
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
ryxqoswi
 
Your LinkedIn Success Starts Here.......
Your LinkedIn Success Starts Here.......Your LinkedIn Success Starts Here.......
Your LinkedIn Success Starts Here.......
SocioCosmos
 

Recently uploaded (19)

Grow Your Reddit Community Fast.........
Grow Your Reddit Community Fast.........Grow Your Reddit Community Fast.........
Grow Your Reddit Community Fast.........
 
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
Exploring The Dimensions and Dynamics of Felt Obligation: A Bibliometric Anal...
 
Unlock TikTok Success with Sociocosmos..
Unlock TikTok Success with Sociocosmos..Unlock TikTok Success with Sociocosmos..
Unlock TikTok Success with Sociocosmos..
 
Social Media Marketing Strategies .
Social Media Marketing Strategies                     .Social Media Marketing Strategies                     .
Social Media Marketing Strategies .
 
The Evolution of SEO: Insights from a Leading Digital Marketing Agency
The Evolution of SEO: Insights from a Leading Digital Marketing AgencyThe Evolution of SEO: Insights from a Leading Digital Marketing Agency
The Evolution of SEO: Insights from a Leading Digital Marketing Agency
 
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
Improving Workplace Safety Performance in Malaysian SMEs: The Role of Safety ...
 
SluggerPunk Angel Investor Final Proposal
SluggerPunk Angel Investor Final ProposalSluggerPunk Angel Investor Final Proposal
SluggerPunk Angel Investor Final Proposal
 
HOW TO USE FACEBOOK _ by Clarissa Credito
HOW TO USE FACEBOOK _ by Clarissa CreditoHOW TO USE FACEBOOK _ by Clarissa Credito
HOW TO USE FACEBOOK _ by Clarissa Credito
 
SluggerPunk Final Angel Investor Proposal
SluggerPunk Final Angel Investor ProposalSluggerPunk Final Angel Investor Proposal
SluggerPunk Final Angel Investor Proposal
 
Buy Pinterest Followers, Reactions & Repins Go Viral on Pinterest with Socio...
Buy Pinterest Followers, Reactions & Repins  Go Viral on Pinterest with Socio...Buy Pinterest Followers, Reactions & Repins  Go Viral on Pinterest with Socio...
Buy Pinterest Followers, Reactions & Repins Go Viral on Pinterest with Socio...
 
Surat Digital Marketing School - course curriculum
Surat Digital Marketing School - course curriculumSurat Digital Marketing School - course curriculum
Surat Digital Marketing School - course curriculum
 
Project Serenity — 33% Life-time Commissions.docx
Project Serenity — 33% Life-time Commissions.docxProject Serenity — 33% Life-time Commissions.docx
Project Serenity — 33% Life-time Commissions.docx
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAMLORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE TELEGRAM
 
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANEEASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
EASY TUTORIAL OF HOW TO USE G-TEAMS BY: FEBLESS HERNANE
 
Your Path to YouTube Stardom Starts Here
Your Path to YouTube Stardom Starts HereYour Path to YouTube Stardom Starts Here
Your Path to YouTube Stardom Starts Here
 
Transform Your Presence Now!..............
Transform Your Presence Now!..............Transform Your Presence Now!..............
Transform Your Presence Now!..............
 
HOW TO USE THREADS an Instagram App_ by Clarissa Credito
HOW TO USE THREADS an Instagram App_ by Clarissa CreditoHOW TO USE THREADS an Instagram App_ by Clarissa Credito
HOW TO USE THREADS an Instagram App_ by Clarissa Credito
 
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
快速办理(BCR毕业证书)加州大学河滨分校毕业证文凭证书一模一样
 
Your LinkedIn Success Starts Here.......
Your LinkedIn Success Starts Here.......Your LinkedIn Success Starts Here.......
Your LinkedIn Success Starts Here.......
 

Liferay and Water For People: From Data to Information

  • 1. Liferay and Water For People From Data to Information Steve Clement Sr. Java Developer at EffectiveUI, Inc. #WaterForPeopleLR
  • 2. Liferay Symposium 2013 Agenda • • • • • • Introduction About EffectiveUI Water For People: Re-Imagine Reporting What we did: DEMO How we did it Q&A #WaterForPeopleLR
  • 3. Liferay Symposium 2013  World’s most mature and award winning user-focused technology firm  Silver Partner with Liferay  Founded April, 2005, ~100 full-time employees  Denver (headquarters)  Rochester, NY  Manhattan  Seattle  San Francisco #WaterForPeopleLR
  • 4. Liferay Symposium 2013 The Client Water For People brings together local entrepreneurs, civil society, governments, and communities to establish creative, collaborative solutions that allow people to build and maintain their own reliable safe water systems. #WaterForPeopleLR
  • 5. Liferay Symposium 2013 The Challenge Provide a transparent reporting platform to show not only the financial and water/sanitation service data, but also the narrative story for the locales served by Water For People #WaterForPeopleLR
  • 6. Liferay Symposium 2013 Why Liferay? • Industry leader • Support for a mix of content publishing and custom application • Wealth of out-of-box tools • Open source • Shared vision of making a better world #WaterForPeopleLR
  • 7. Liferay Symposium 2013 Data begins at the source Monitoring: Data collected into a system known as FLOW #WaterForPeopleLR
  • 8. Liferay Symposium 2013 Data goes from FLOW to Excel #WaterForPeopleLR
  • 9. Liferay Symposium 2013 Additional Data • • • • Financial Community surveys Readiness Surveys Narrative content …more spreadsheets #WaterForPeopleLR
  • 10. Liferay Symposium 2013 But what does it all mean? #WaterForPeopleLR
  • 11. Liferay Symposium 2013 Requirements • Location Hierarchy: roll up the data • Get spreadsheet data into application • Visualize data meaningfully Start with the ending… #WaterForPeopleLR
  • 12. Liferay Symposium 2013 DEMO Water For People: Re-Imagine Reporting #WaterForPeopleLR
  • 13. Liferay Symposium 2013 End Demo Let’s talk about data… #WaterForPeopleLR
  • 14. Liferay Symposium 2013 Location Hierarchy • Four levels: district, country, region, global • Data is tied to district level • Data needs to roll up to higher levels #WaterForPeopleLR
  • 15. Liferay Symposium 2013 Warning! It’s about to get technical… #WaterForPeopleLR
  • 16. Liferay Symposium 2013 Location Hierarchy: Data Model District Region region_id PK Name latitude longitude … etc. Country country_id PK region_id FK country_name latitude longitude … etc. district_id PK country_id FK district_name latitude longitude … etc. DistrictScore Possible solution: latitude and longitude can help plot data points on map. #WaterForPeopleLR district_score_id PK district_id FK num_water_points year … etc.
  • 17. Liferay Symposium 2013 But wait… Navigation = Location Hierarchy! Control Panel’s Site Pages: Child page navigation perfectly matches our location hierarchy! #WaterForPeopleLR
  • 18. Liferay Symposium 2013 Navigation as Data Model Liferay’s Layout table to provide us with our We can use foreign key. The relationship of child to parent is already provided. Layout DistrictScore plid PK parentLayoutId name friendlyURL … etc. district_id PK district_plid FK num_water_points year … etc. #WaterForPeopleLR
  • 19. Liferay Symposium 2013 Service Builder We use districtLayoutPlid as a foreign key Finder methods include all districts for a year #WaterForPeopleLR
  • 20. Liferay Symposium 2013 From here to there: how do we do this? Database • Register a dedicated data folder in Documents & Media • Let the admins associate the spreadsheets with parsers for that data type • Register parsers with parser data types • Extract data from spreadsheet and insert into Db using classes generated by Service Builder #WaterForPeopleLR
  • 21. Liferay Symposium 2013 Register Data Folder ID Get Folder ID 1. URL includes …&_20_folderId=10531 2. Or SQL: SELECT folderId FROM lportal.dlfolder where name = 'Data'; Then, in portal-ext.properties: data.folder.id=10531 #WaterForPeopleLR
  • 22. Liferay Symposium 2013 Get Folder Id Where Spreadsheets Live Spring MVC Controller Add FileEntry objects and data type codes to model #WaterForPeopleLR
  • 23. Liferay Symposium 2013 Display dataTypes and FileEntries Create drop down of parser data types Iterate to display in table #WaterForPeopleLR
  • 24. Liferay Symposium 2013 Admins select a file and associates with a parser type #WaterForPeopleLR
  • 25. Liferay Symposium 2013 Spring for map of parsers: dependency injection In Spring Controller, inject parser map… #WaterForPeopleLR
  • 26. Liferay Symposium 2013 Extract Data From Spreadsheet Apache POI Java API for Microsoft Documents Get the POI Workbook from Liferay’s FileEntry object #WaterForPeopleLR
  • 27. Liferay Symposium 2013 Pull out data of spreadsheet • • Column index from cell Appropriate data type from cell #WaterForPeopleLR
  • 28. Liferay Symposium 2013 Service Builder has created our model and utility classes to interact with the database We look up the DistrictScore by unique compound key. If we don’t have it, we create it. Otherwise, we update the values. #WaterForPeopleLR
  • 29. Liferay Symposium 2013 Show the data rolled up in the pin What are we really asking for? Answer: Two scores keyed to a location name and rendered in a specific location on the map #WaterForPeopleLR
  • 30. Liferay Symposium 2013 Multiple Web Content portlets need to get the data for the map pins #WaterForPeopleLR
  • 31. Liferay Symposium 2013 From Database to Pin • Structured Content / Template • System Portlet for Ajax call • Render data using Highcharts #WaterForPeopleLR
  • 32. Liferay Symposium 2013 Structured Content Central America (174, 103) Need to put in X and Y coordinates of map point Possible default values if data not in system but still known #WaterForPeopleLR
  • 33. Liferay Symposium 2013 Template for structured content Call JavaScript function with structured content data #WaterForPeopleLR
  • 34. Liferay Symposium 2013 JavaScript calls for “efScores” resource and expects JSON response called “scoreMap” #WaterForPeopleLR
  • 35. Liferay Symposium 2013 Create a system portlet for serving resources called from theme liferay-portlet.xml #WaterForPeopleLR
  • 36. Liferay Symposium 2013 In the call for the “efScores” resource, we get the current layout (i.e., the page we are on) and pass it and the year parameter into a service class Spring MVC Controller used to serve JSON resource Current page “scoreMap” returned in JSON view #WaterForPeopleLR
  • 37. Liferay Symposium 2013 So how do we get the rollup? Liferay’s Layout API! #WaterForPeopleLR
  • 38. Liferay Symposium 2013 We can start with the current layout plid and walk down to all the district-level plids using the API: Pseudo code: IF layout.hasChildren() THEN List<Layout> children = layout.getChildren() //Go through all children until we get to lowest level ELSE Add layout.getPlid() to collection of district-level plids #WaterForPeopleLR
  • 39. Liferay Symposium 2013 Service Builder Finder Methods #WaterForPeopleLR
  • 40. Liferay Symposium 2013 Average the District Scores and group by the Layout names that are one level beneath the current layout “Guatemala” • Service: 65 • Sustainability: 28 #WaterForPeopleLR Example: Central America • Guatemala • Honduras • Nicaragua
  • 41. Liferay Symposium 2013 Get the scores from scoreMap[location name] If we don’t have a score defined in the content structure (-1), get the score from the map. Send to function for creating pins #WaterForPeopleLR
  • 42. Liferay Symposium 2013 Create HTML element containers for the pins and then call Highcharts API #WaterForPeopleLR
  • 43. Liferay Symposium 2013 Rich charting and graphing tool with JavaScript API #WaterForPeopleLR
  • 44. Liferay Symposium 2013 Successes • Rapid development • Complex data rendered into easily understood visual information • Out-of-box tools for CMS and DMS helped guide solution • Liferay Theming gave consistent look and feel • Customizing existing portlets gave us exactly what we needed • Portlets as page composition: breaking up development tasks into manageable units #WaterForPeopleLR
  • 45. Liferay Symposium 2013 Looking forward • Show trends • Establish as a platform for other non-profits • Continue innovation based on Water for People’s rich data and Liferay’s capabilities • Improve lives #WaterForPeopleLR
  • 46. Liferay Symposium 2013 Thank you! Questions: #WaterForPeopleLR Resource URL EffectiveUI www.effectiveui.com Water For People www.waterforpeople.org Water For People: Re-imagine Reporting reporting.waterforpeople.org Spring MVC and Liferay www.effectiveui.com/blog/2013/09/17/l iferay-and-spring-mvc Apache POI - the Java API for Microsoft Documents poi.apache.org Highcharts JS www.highcharts.com/ #WaterForPeopleLR

Editor's Notes

  1. SHOW Water For People VIDEO
  2. FileId input parameter is used later to look up document
  3. Love Spring! SPEL (Spring Expression Language) makes it easy to provide a parser map with enumeration as keys
  4. POI = Poor Obfuscation Implementation, referring to the fact that the file formats seemed deliberately obfuscated, but poorly, since they were successfully reverse engineered.
  5. Proud to have worked with WFP. Inspiring to work with an organization that is doing so much good and is so forward thinking in terms of a platform.
  6. Proud to have worked with WFP. Inspiring to work with an organization that is doing so much good and is so forward thinking in terms of a platform.