SQL Plugin

concepcionsockSoftware and s/w Development

Aug 15, 2012 (5 years ago)

234 views

SQL Wiki Plugin

Team Wirox

Team


RIT


Eugene Marcotte


Chris Daniels


Paul Yates


Matt Blackwood


J. Scott Hawker


Xerox


Tim Luksha


Peter Alfvin

History


Atlassian began in 2002 specializing in issue
tracking and collaboration software


Created Confluence Wiki in 2004


Original SQL Plugin was written by Bob Swift
(released Sept. 2006)


Currently a supported plugin for Atlassian
Confluence


Xerox uses a confluence wiki for internal
communications

Bob Swift’s SQL Plugin


Existing plugin only allows the viewing of
results


Usage


{sql
-
query:dataSource=TestDS|output=wiki}
select * from test {sql
-
query}


Xerox wishes to add more functionality to
the plugin to enhance their internal
workflow


The goal is to modify the plugin to allow wiki
users to edit database table contents

Project Requirements


Extension for the plugin which would provide them with
the basic functionality to perform row operations on
queries that are embedded in wiki pages


Row Operations


Update


Insert


Delete


Time permitting the project might include


Multi
-
row operations


Advanced data type support


Table scrolling


User
-
specific database sessions

Scope


In scope
-


Modify existing plugin to add required functionality


Integrate with Bob’s repository


Specific Data type handling (varchar2, number,
integer, decimal, float, precision, dates and
possibly timestamps)


Single and possibly multiple row transactions


Out of scope


Fixing existing plugin bugs


Handling datatypes other than those specified

Technologies Used


Java


Servlets


Velocity


XML


JavaScript


jQuery


Confluence


Maven


MySQL / Oracle


Testing


JUnit


HTTPUnit


Atlassian Integration Testing


Emma

Process (overview)


Scrum w/ XP engineering


Requirements Workshop


Two week Sprints


Sprint Planning Meeting


In Person & Remote meetings


Post
-
mortem reflections


Product & sprint backlogs


Scrums, scrum meetings


Pair programming


Group Design

Process (sequence)

http://en.wikipedia.org/wiki/Scrum_(development)

Process (Estimation /
Planning)


The team establishes underlying tasks
for a given user story


As a team we assess story points for
user stories


We also estimate time for tasks within
user stories


Delphi method for refining estimations


Product owner prioritizes user stories

User Story Example

Process (Design)


Initial refactoring of plugin


Typically for each User Story we allot a
task for designing and refactoring


Initially the macro was a “God object”


Through refactoring we have split the
functionality into more cohesive units


Process (Development)


Daily <15 minute Scrum Meeting


What you did since last meeting?


What you will do today?


Impediments?


Split into pairs for pair programming


Each pair takes on a task from a user story


During development update sprint backlog

+
getMacroName
()
+
getExtension
()
+
setBanadaManager
()
+
execute
()
+
generateOutput
()
+
stripQuote
()
+
getSqlColumnTypeAsChar
()
-
MODULE
-
FALSE
-
HTML
_
TABLE
_
START
-
HTML
_
TABLE
_
START
_
LENGTH
-
RENDER
_
MODE
-
bandanaManager
SqlMacro
+
getDatabaseConnection
()
+
cleanConnection
()
+
convertTransactionIsolation
()
+
getResults
()
+
getDataSourceString
()
+
lookUpDataSource
()
+
setStatementInputParameters
()
+
lookupDataSourceWithMacroInfo
()
+
getSqlStatementFromMacroInfor
()
+
convertTransactionIsolation
()
+
cgetSqlColumnTypeAsChar
()
+
getPrimaryKeyColumns
()
-
MACRO
_
NAME
DBManager
+
doGet
()
+
doPost
()
-
serialVersionUID
RefreshServlet
+
getters
()
+
setters
()
-
jndi
-
datasource
-
sql
-
columnTypes
-
columnNames
-
columnData
-
primaryKeyColumns
Results
+
getMacroName
()
SqlQueryMacro
+
getMacroName
()
+
getExtension
()
+
setBandanaManager
()
+
execute
()
-
MODULE
-
FALSE
-
bandanaManager
UpdatableSqlMacro
+
doGet
()
+
doPost
()
+
getExcemptionXML
()
+
doPost
2
()
+
getSetString
()
+
getWhereString
()
+
perform
()
+
lookUpColumn
()
+
getAffectedRows
()
+
getAffectedQuery
()
-
serialVersionUID
UpdateServlet
+
convertToJSMap
()
+
ConvertToArray
()
+
setUpHTMLVelocityContext
()
+
exceptionToString
()
Utils
+
abstract generateOutput
()
«interface»
OutputGenerator
+
generateOutput
()
HTMLOutputGenerator
+
generateOutput
()
HTMLTableOutputGenerator
ScriptMacro
Confluence
Tomcat
HTTPServlet
Wirox

SQL Wiki Plugin
Metrics


Coverage


User Story Status / Impediments


Burn
-
down Chart


Burn
-
up Chart


Velocity


Test Pass / Fail

Sprint Charts

Sprint One

Sprint Two

EMMA Test Coverage

Risks (Top Ten)

1.
Testing Environment




2.
Role Mapping





3.
Database Support Issues



4.
Technical Design Issues



5.
Javascript / jQuery




6.
Confluence Wiki




7.
Communication




8.
Integration





9.
Flow of Events




10.
Virtual Machine




What has not gone well…


Restricted time slots


Automated Integration testing


Concrete roles (one exception)


Development Environment


Netbeans


Eclipse

What has gone well…


Process choice


Communication


Pair programming


Wiki for team coordination and project
tracking


Consistency

Status / Future Plans


On target for completion


Extras are possible


No “show
-
stoppers”


Better development times


Plugin integration


Handball and Table Tennis

Demo / Questions