+ All Categories
Home > Documents > Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying...

Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying...

Date post: 22-Dec-2015
Category:
View: 216 times
Download: 0 times
Share this document with a friend
Popular Tags:
55
Mobile Applications at NOCCCD Brad Rippe NOCCCD
Transcript
Page 1: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Mobile Applications at NOCCCD

Brad RippeNOCCCD

Page 2: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Goal

Provide insight into developing and deploying mobile applications with

Sungard’s Mobile Connection.

Page 3: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Brad RippeIT Project Leader

North Orange County Community College District

[email protected]

Page 4: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Smartphone StatisticsTypes of Smartphones

iPhone 40%Blackberry 36%Android 22%Other 2%

Source: University Colorado Boulder

Source: Google Analytics

Page 5: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Mobile Connection 1.0

• 1.0 Release• Support multiple mobile platforms • Built on Open Source Software• Integrates with LDAP and Banner Data• Quick Start

• m-Apps (Feeds, Grades, Schedule, Restaurant)

Page 6: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

What features?

22 College/University iPhone appsNews - 21Directory - 18Maps - 18Events - 13Videos - 9Courses - 6Sports - 6Photos - 5Library - 5Twitter - 4

8 vendor solutionsUniversity Texas at Austin; Stanford; Harvard; Boston College; Saddleback; Irvine Valley College; Mt. Hood College; Rice University; more

Page 7: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

1.0 Planned Features

• m-Apps• Student’s Daily Schedule• Grades• Restaurants• News Feed• Staff Directory• Class Schedule• Campus Map

Page 8: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Mobile Connection 1.0.1

• Java Development Kit (JDK) 1.6.21+• Grails 1.3.6 - http://www.grails.org

• Spring• Hibernate • Groovy

• Rhodes Framework 2.2.5 - http://rhomobile.com/projects/rhodes

• Ruby/Rails• Android SDK and NDK • Blackberry JDE• iOS SDK/Xcode

Page 9: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Android Requirements

• Android SDK Android 2.2, API 8http://developer.android.com/sdk/index.html

• Android NDK r4bWindows - http://dl.google.com/android/ndk/android-ndk-r4b-windows.zipMac - http://dl.google.com/android/ndk/android-ndk-r4b-darwin-x86.zipLinux - http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip

Page 10: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

API

MC Architecture

request

Luminis IV LDAP

response

Banner

Mobile Server

NOCCCD Basic Configuration

Page 11: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

“The Plan”

3 institutions3 platforms~ 4 months

Page 12: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Setting up the “Team”

District/SCE

Cypress

Fullerton

TEST

Page 13: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Collaborating

Page 14: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Collaborating

Page 15: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Repository Structure

Page 16: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

MC Directory Structure

Page 17: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Android Emulator

# Android config - android doesn't respond to localhostsecurity_service_url =

'http://10.0.2.2:8001/mobileserver/rest/security'grade_service_url = 'http://10.0.2.2:8001/mobileserver/rest/grade'schedule_service_url = 'http://10.0.2.2:8001/mobileserver/rest/schedule'feed_service_url = 'http://10.0.2.2:8001/mobileserver/rest/feed/'

http://bit.ly/psZ8G7

Page 18: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

News Feeds

Page 19: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Updated Feed

Page 20: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Feed Client

2.

Page 21: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Feed – show.erb<form action="<%= url_for :action => :index %>"> <select name="id" onchange="submit()"> <% if ::Rho.get_app.feedId && ::Rho.get_app.feedId == 'cypress'%> <option selected value="cypress">Cypress College News</option> <% else %> <option value="cypress">Cypress College News</option> <%end%> <% if ::Rho.get_app.feedId && ::Rho.get_app.feedId == 'fullerton'%> <option selected value="fullerton">Fullerton College News</option> <% else %> <option value="fullerton">Fullerton College News</option> <%end%></select></form><hr />… More …

Page 22: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Feed – application.rbrequire 'rho/rhoapplication'

class AppApplication < Rho::RhoApplication attr_accessor :feedId

# more code in here def initialize super endend

Page 23: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Feed – feed_controller.rbdef index ::Rho.get_app.feedId = @params['id'] url = "#{@serviceUrl}" url << "/#{::Rho.get_app.feedId}.json"

#More code result = Rho::AsyncHttp.get( :url => url,

:callback => (url_for :action => :feed_callback))

redirect :action => :wait end

Page 24: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Feed – Config.groovyfeed.location = [ cypress:"http://cypresscollege.edu/rss.xml", fullerton:"http://www.fullcoll.edu/rss.xml",sce:"http://sce.edu/rss.xml]sghe { plugins { banner { jdbc { … } } }}

Page 25: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Back Issue

Page 26: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Back Issue – feed_controller.rbdef index ::Rho.get_app.feedId = @params['id'] url = "#{@serviceUrl}" url << "/#{::Rho.get_app.feedId}.json"

#More code

result = Rho::AsyncHttp.get(:url => url, :callback => (url_for :action => :feed_callback))

redirect :action => :wait end

Page 27: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Back Issue – feed_controller.rb# Original Methoddef feed_callback app_info "feed_callback: #{@params}“ # log feedId # parse json response

# send browser to show view but still have wait in history?? WebView.navigate(url_for :action => :show)end

Page 28: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Fix Back Issuedef feed_callback app_info "feed_callback: #{@params}“ # parse json response

# send browser to show_feed method WebView.navigate(url_for :action => :show_feed)end

def show_feed render :action => :show, :back => '/app/Mshell'end

http://bit.ly/p44ghq

Page 29: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

MC 1.1.1 – Back Issue

def index feedId = @params['id‘] Rho::AsyncHttp.get( :url => url, :callback => (url_for :action => :feed_callback)) @response["headers"]["Wait-Page"] = "true" redirect :action => :wait end

Page 30: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

app_info or app_error

• Android• rake emulator:android:getlog

• BlackBerry• C:\Users\<username>\net\rim\fledge-2\3.0.0.118\

sdcard\Rho\<application_name>\RhoLog.txt

• iPhone• /Users/<username>/Library/Application

Support/iPhone Simulator/4.3/Applications/<GUID>/Documents/RhoLog.txt

Page 31: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Server Side Of Things

Page 32: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Class Schedule Plugin

Page 33: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

ClassScheduleUrlMappings

class ClassScheduleUrlMappings {static mappings = {"/rest/getCampuses"(controller:"search",

action:"getCampuses")"/rest/getAllTerms"(controller:"search", action:"getAllTerms")// continued…}

}

Page 34: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

SearchControllerclass SearchController { def classScheduleService def getCampuses = { if ( classScheduleService == null ) { // code here, handle null classScheduleService } else { def camps = classScheduleService.getCampuses() if (camps != null && camps.size() > 0) { response.setContentType("text/json") render camps as JSON } else { // send no information 404 error } } } …

Page 35: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

ClassScheduleServiceclass ClassScheduleService { def dataSourceBanner //defined in the server’s Config.groovy file def getCampuses() { def sql = Sql.newInstance (dataSourceBanner) def query = " " "select stvcamp_code, stvcamp_desc from stvcamp where stvcamp_code in ('1', '2', '3') order by stvcamp_desc" " " def campuses = [] // list of Campus objects try { sql.eachRow(query) { def campus = new Campus() campus.campusCode = it.stvcamp_code campus.campusDesc = it.stvcamp_desc campuses.add(campus) } } catch(Exception e) { log.error "Exception ${query} - ${e}“ } return campuses } // end getCampuses

Page 36: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

ClassSchedule Request

GrailsDispatcherServlet

/service/rest/getCampuses

SearchController

Campus

ClassScheduleServiceresponse

request

Page 37: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Automatic Marshallingimport grails.converters.*class SearchController { def getCampuses = { if ( classScheduleService == null ) { // code here, handle null classScheduleService } else { def camps = classScheduleService.getCampuses() if (camps != null && camps.size() > 0) { response.setContentType("text/json") render camps as JSON } else { // send no information 404 error } } } …

1

2

Page 38: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

JSON output?

[{"class":"edu.nocccd.Campus","id":null,"campusCode":"1","campusDesc":"Cypress College"},

{"class":"edu.nocccd.Campus","id":null,"campusCode":"2","campusDesc":"Fullerton College"},

{"class":"edu.nocccd.Campus","id":null,"campusCode":"3","campusDesc":"School of Continuing Education"}]

Page 39: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Server BootStrap.groovyimport grails.converters.JSONimport org.codehaus.groovy.grails.plugins.GrailsPluginUtilsimport edu.nocccd.Campusclass BootStrap {

def init = { } def destroy = { }}

Page 40: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Init – Override Convertersclass BootStrap { def init = { servletContext -> JSON.registerObjectMarshaller(Campus) { def returnArray = [:] returnArray['campusCode'] = it.campusCode returnArray['campusDesc'] = it.campusDesc return returnArray } // continued for each domain object } …}

Page 41: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Result JSON

[{"campusCode":"1","campusDesc":"Cypress College"},{"campusCode":"2","campusDesc":"Fullerton College"},{"campusCode":"3","campusDesc":"School of Continuing Education"}]

Page 42: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Objects with in Objects

• Sections• Multiple buildings• Multiple meeting times

• Default converters • Skip internal data

render sections as JSON

MATH 030 F Bldg 1

Bldg 2

Meet 2

Meet 1

MATH 100 F

Page 43: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

SearchControllerdef sections = classScheduleService.getSections(cCode, tCode, subCode, courNum)if (sections != null && sections.size() > 0) { def sectionList = new ArrayList() sections.each { section -> def sectionMap = new HashMap() sectionMap.put "crn", section.crn def bldgs = new ArrayList() // Done for meetings too! section.buildings.each { bldg -> def bldgMap = new HashMap() bldgMap.put "bldgCode", bldg.bldgCode bldgMap.put "bldgDesc", bldg.bldgDesc bldgMap.put "roomCode", bldg.roomCode bldgs.add bldgMap } sectionMap.put "bldgs", bldgs } sectionList.add sectionMap

Page 44: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

JSON Response[{"instructor":"Danufsky, Joshua","wDropDate":"11/20/2011","waitAvailable":10,"bldgs":[{"roomCode":"624","bldgDesc":"Math/Comp Science - FC","bldgCode":"600"}] ,"meetings":[{"startDate":"08/15/2011","wednesday":null,"thursday":null,"monday":null,"sunday":null,"beginTime":null,"saturday":null,"endDate":"12/16/2011","friday":null,"tuesday":null,"endTime":null,"arrangedHrs":"Plus arranged hours"},{"startDate":"08/15/2011","wednesday":" Wed ","thursday":null,"monday":" Mon ","sunday":null,"beginTime":"1:00","saturday":null,"endDate":"12/16/2011","friday":null,"tuesday":null,"endTime":"2:50 PM","arrangedHrs":null}]]

Page 45: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Render Results

Page 46: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Mobile Server

•Apache Tomcat 6.0.32• Run Non-Root User• Apache JMeter• JVM Options• VisualVM

http://visualvm.java.net/

Page 47: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

PSI-Probe

http://code.google.com/p/psi-probe/

Page 48: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Tips - Build for Devices

• Rhoconfig.txt• MaxLogFileSize=0 to 50• MinSeverity=1 to 3• local_server_port=8080

• build.yml • version: 1.0 to 1.0.0

rake device:android:production

Page 49: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

version: 1.0AndroidManifest.xml

<manifest xmlns:android='http://schemas.android.com/apk/res/android' package='com.north_orange_county_community_college_district.cypresscollege' android:installLocation='auto' android:versionCode='26' android:versionName='2.2.5'>…</manifest>

Page 50: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

version: 1.0.0AndroidManifest.xml

<manifest xmlns:android='http://schemas.android.com/apk/res/android' package='com.north_orange_county_community_college_district.cypresscollege' android:installLocation='auto' android:versionCode='10000' android:versionName='1.0.0'>…</manifest>

Page 51: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Demo

Page 52: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Mobile Connection

• Version 1.1.1• mApps

• Campus Directory• Event Calendar• Campus Map

• iPad Support• JQuery Mobile• Active Directory Support

1.1 Release Notes - http://bit.ly/oq90m6

Page 53: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Things to Take Away

• Collaborative Environment• Team Commitment• Developer Environment• JQuery Mobile• Steering Committee• Limited Feature Set

Page 54: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

Questions

Page 55: Mobile Applications at NOCCCD Brad Rippe NOCCCD. Goal Provide insight into developing and deploying mobile applications with Sungard’s Mobile Connection.

ResourcesGrails Tutorialhttp://www.ibm.com/developerworks/java/library/j-grails02128/Ruby Tutorialhttp://www.ruby-lang.org/en/documentation/quickstart/RhoMobile Docshttp://docs.rhomobile.com/JMeterhttp://jakarta.apache.org/jmeter/PSI-Probehttp://code.google.com/p/psi-probe/VisualVMhttp://visualvm.java.net/NOCCCD Mobile Appshttp://www.nocccd.edu/mobile


Recommended