Re-organized into two submodules: service and uploader.

Moved all the existing service code into the `service` submodule.

Stubbed out project and GUI frame for the uploader. Idea is to have a GUI that
infers all the correct meta-data from media tag values and creates service,
songs, and performance records appropriately based on the tagged mp3/ogg files
of the performances.
This commit is contained in:
Jonathan Bernard
2017-02-11 23:53:04 -06:00
parent a6a68a5320
commit 7d7f2eed87
59 changed files with 156 additions and 86 deletions

View File

@@ -0,0 +1 @@
nlsongs.media.baseUrl=https://s3.amazonaws.com/new-life-austin-songs/public

View File

@@ -0,0 +1,9 @@
dataSourceClassName=com.impossibl.postgres.jdbc.PGDataSource
dataSource.user=jdbernard
dataSource.password=wh!73bl@k
dataSource.database=nlsongs
dataSource.host=localhost
#dataSource.cachePrepStmts=true
#dataSource.prepStmtCacheSize=250
#dataSource.prepStmtCacheSqlLimit=2048
#dataSource.useServerPrepStmts=true

View File

@@ -0,0 +1,18 @@
import ch.qos.logback.core.*;
import ch.qos.logback.core.encoder.*;
import ch.qos.logback.core.read.*;
import ch.qos.logback.core.rolling.*;
import ch.qos.logback.core.status.*;
import ch.qos.logback.classic.net.*;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
appender("STDOUT", ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%level %logger - %msg%n"
}
}
root(INFO, ["STDOUT"])
logger('com.jdbernard', INFO)

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<!-- PRODUCTION -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>datasource.config.file</param-name>
<param-value>/datasource.properties</param-value>
</context-param>
<context-param>
<param-name>context.config.file</param-name>
<param-value>/context.properties</param-value>
</context-param>
<listener>
<listener-class>com.jdbernard.nlsongs.servlet.NLSongsContextListener</listener-class>
</listener>
<servlet>
<servlet-name>New Life Songs REST API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.jdbernard.nlsongs.rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>GroovyTemplate</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>SongViewServlet</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>resource.name.regex</param-name>
<param-value>/song/?.*</param-value>
</init-param>
<init-param>
<param-name>resource.name.replacement</param-name>
<param-value>/song/index.gsp</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ServiceViewServlet</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>resource.name.regex</param-name>
<param-value>/service/?.*</param-value>
</init-param>
<init-param>
<param-name>resource.name.replacement</param-name>
<param-value>/service/index.gsp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>New Life Songs REST API</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SongViewServlet</servlet-name>
<url-pattern>/song/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServiceViewServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GroovyTemplate</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.gsp</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

View File

@@ -0,0 +1,222 @@
services = [
[id: 2, date: '2009-03-01', serviceType: 'SUN_PM'],
[id: 3, date: '2009-03-08', serviceType: 'SUN_AM'],
[id: 4, date: '2009-03-08', serviceType: 'SUN_PM'],
[id: 5, date: '2009-03-22', serviceType: 'SUN_AM'],
[id: 6, date: '2009-03-22', serviceType: 'SUN_PM'],
[id: 7, date: '2009-04-08', serviceType: 'WED'],
[id: 8, date: '2009-04-12', serviceType: 'SUN_AM'],
[id: 9, date: '2009-04-12', serviceType: 'SUN_PM'],
[id: 10, date: '2009-02-25', serviceType: 'WED'],
[id: 11, date: '2009-04-22', serviceType: 'WED'],
[id: 12, date: '2009-05-03', serviceType: 'SUN_AM'],
[id: 13, date: '2009-05-10', serviceType: 'SUN_PM'],
[id: 14, date: '2009-05-06', serviceType: 'WED'],
[id: 17, date: '2009-04-26', serviceType: 'SUN_PM'],
[id: 18, date: '2010-05-05', serviceType: 'WED'],
[id: 19, date: '2010-05-09', serviceType: 'SUN_PM'],
[id: 20, date: '2010-05-16', serviceType: 'SUN_PM'],
[id: 21, date: '2010-08-15', serviceType: 'SUN_PM'],
[id: 22, date: '2011-03-13', serviceType: 'SUN_AM'],
[id: 23, date: '2011-03-13', serviceType: 'SUN_PM'],
[id: 24, date: '2011-03-16', serviceType: 'WED'],
[id: 25, date: '2011-03-20', serviceType: 'SUN_AM'],
[id: 26, date: '2015-02-08', serviceType: 'SUN_PM'],
[id: 27, date: '2015-01-07', serviceType: 'WED'],
[id: 28, date: '2015-02-11', serviceType: 'WED'],
[id: 29, date: '2014-02-02', serviceType: 'WED']]
songs = [
[id: 1, name: 'Welcome Holy Spirit', artists: ['Mark Condon']],
[id: 2, name: 'We Worship You', artists: ['']],
[id: 3, name: "Let's Sing Praises to our God", artists: ['Traditional']],
[id: 4, name: 'I am a Friend of God', artists: ['Israel Houghton']],
[id: 5, name: 'Blessed Assurance', artists: ['Frances J. Crosby']],
[id: 6, name: 'Sing Unto the Lord a New Song', artists: ['Becky Fender']],
[id: 7, name: 'Mighty God', artists: ['']],
[id: 8, name: 'Here I Am To Worship', artists: ['Tim Hughes', ' Chris Tomlin, Michael W. Smith']],
[id: 9, name: 'Worthy', artists: ['']],
[id: 10, name: 'Come and Let Us Sing', artists: ['Israel Houghton']],
[id: 11, name: 'I Feel the Joy', artists: ['']],
[id: 12, name: 'Healer', artists: ['Kari Jobe', ' Hillsong']],
[id: 13, name: 'This World is Not My Home', artists: ['Ricky Skaggs']],
[id: 14, name: 'Praise the Lord With Me', artists: ['Carlton Pearson', ' T.D. Jakes']],
[id: 15, name: 'I Am Free', artists: ['Newsboys']],
[id: 16, name: 'You Are Great', artists: ['Juanita Bynum']],
[id: 17, name: 'Lion of Judah', artists: ['Eddie James', ' Beverly Crawford']],
[id: 18, name: 'We Are Standing on Holy Ground', artists: ['Bill Gaither']],
[id: 19, name: 'Draw Me Nearer', artists: ['Meredith Andrews']],
[id: 20, name: 'Nothing but the Blood', artists: ['Robert Lowry']],
[id: 21, name: 'I Will Search For You', artists: ['Israel Houghton']],
[id: 22, name: 'This is How We Praise Him', artists: ['']],
[id: 23, name: 'We Have Overcome', artists: ['Israel Houghton']],
[id: 24, name: 'Breakthrough', artists: ['']],
[id: 25, name: 'He is Here', artists: ['Martha Munizzi']],
[id: 26, name: 'Lead Me Lord', artists: ['Brooklyn Tabernacle Choir']],
[id: 28, name: 'Power in the Name', artists: ['Gateway College']],
[id: 29, name: 'Praise the Lord', artists: ['']],
[id: 30, name: 'Ready Now', artists: ['Desperation Band']],
[id: 31, name: 'Come Into This House', artists: ['Carlton Pearson']],
[id: 32, name: "You're the One", artists: ['']],
[id: 33, name: 'How Great is Our God', artists: ['Chris Tomlin']],
[id: 34, name: 'We Will Worship the Lamb of Glory', artists: ['Dennis Jernigan']],
[id: 35, name: 'Let It Rise', artists: ['Big Daddy Weave']],
[id: 36, name: 'God Is My Refuge And Strength', artists: ['']],
[id: 37, name: 'Shout to the Lord', artists: ['Darlene Zschech', ' Chris Tomlin', ' Hillsong']],
[id: 38, name: 'In the Presence of Jehovah', artists: ['Damaris Carbaugh']],
[id: 39, name: 'In the Sanctuary', artists: ['']],
[id: 40, name: 'Mighty To Save', artists: ['Hillsong', ' Michael W. Smith']],
[id: 41, name: 'Rejoice', artists: ['']],
[id: 42, name: 'He Lives', artists: ['']],
[id: 43, name: 'Breathe', artists: ['']],
[id: 44, name: 'Healing Rain', artists: ['Michael W. Smith']],
[id: 51, name: 'Lord I Praise Your Name', artists: ['']],
[id: 46, name: "It's a New Season", artists: ['']],
[id: 47, name: 'Let Us Have a Little Talk With Jesus', artists: ['Jimmy Dean']],
[id: 48, name: 'Lord You Are Good', artists: ['']],
[id: 49, name: "Enemy's Camp", artists: ['']],
[id: 50, name: 'Whose Report Will You Believe?', artists: ['']],
[id: 52, name: 'Lord We Give You Glory', artists: ['']],
[id: 53, name: 'Revelation Song', artists: ['Jennie Lee Riddle', ' Phillips, Craig and Dean', ' Kari Jobe']],
[id: 54, name: 'Moving Forward', artists: ['']],
[id: 55, name: 'Let It Rain', artists: ['']],
[id: 56, name: 'Say So', artists: ['']],
[id: 57, name: 'We Praise Your Name', artists: ['']],
[id: 58, name: 'You Never Let Go', artists: ['Matt Redman']],
[id: 59, name: "I'd Rather Have Jesus", artists: ['']],
[id: 60, name: 'Everybody Will Be Happy Over There', artists: ['E.M. Bartlett']],
[id: 61, name: 'Awesome God', artists: ['']],
[id: 62, name: 'Whisper His Name', artists: ['Deluge']],
[id: 63, name: 'How He Loves Us', artists: ['John Mark McMillan', ' David Crowder Band']],
[id: 64, name: 'Lord I Lift Up My Hands', artists: ['Trent Corey']],
[id: 65, name: 'Give Him the Glory', artists: ['']],
[id: 66, name: 'Blessed Be The Name Of The Lord', artists: ['']],
[id: 67, name: 'Heart of Worship', artists: ['Matt Redman']],
[id: 68, name: 'Freedom Is', artists: ['']],
[id: 69, name: 'I Give My All', artists: ['']],
[id: 70, name: 'Come Unto Me', artists: ['']],
[id: 71, name: 'Shout With A Voice Of Triumph', artists: ['']],
[id: 72, name: 'Oh, How I Love Jesus', artists: ['']],
[id: 73, name: "It Ain't Over", artists: ['Maurette Brown Clark']],
[id: 74, name: 'Our God', artists: ['']],
[id: 75, name: "Can't Stop Praising His Name", artists: ['']],
[id: 76, name: 'Lord I Lift Your Name On High', artists: ['Petra', ' Mercy Me']],
[id: 77, name: 'We Are Here To Worship You', artists: ['']],
[id: 78, name: 'I Feel Jesus', artists: ['']],
[id: 79, name: 'It Is You', artists: ['Newsboys']],
[id: 80, name: 'I Surrender', artists: ['Hillsong']],
[id: 81, name: 'Our Father', artists: ['Israel Houghton']],
[id: 82, name: 'Kingdom Come', artists: ['']],
[id: 83, name: 'Father Along', artists: ['']],
[id: 84, name: "We'll Understand It Better By and By", artists: ['Charles Albert Tindley; arr. by F.A. Clark']],
[id: 85, name: 'Because Of You', artists: ['Eddie James']]]
performances = [
[serviceId: 7, songId: 34, pianist: 'Rachel Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 7, songId: 33, pianist: 'Rachel Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 7, songId: 32, pianist: 'Rachel Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 10, songId: 3, pianist: 'Rachel Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 10, songId: 2, pianist: 'Rachel Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 2, songId: 8, pianist: 'Nicole Brantley', organist: 'Jared Wood', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 2, songId: 9, pianist: 'Nicole Brantley', organist: 'Jared Wood', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 3, songId: 10, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 3, songId: 11, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 3, songId: 12, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 3, songId: 13, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 4, songId: 12, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 4, songId: 14, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 4, songId: 15, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 4, songId: 16, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 4, songId: 17, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 4, songId: 18, pianist: 'Jared Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 5, songId: 19, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 5, songId: 20, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 5, songId: 21, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 5, songId: 22, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 5, songId: 23, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Chris Green', guitarist: null, leader: null],
[serviceId: 6, songId: 30, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 6, songId: 24, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 10, songId: 1, pianist: 'Rachel Wood', organist: null, bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 7, songId: 31, pianist: 'Rachel Wood', organist: 'Connie Bernard', bassist: 'Jonathan Bernard', drummer: 'Jared Wood', guitarist: null, leader: null],
[serviceId: 6, songId: 25, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 2, songId: 7, pianist: 'Nicole Brantley', organist: 'Jared Wood', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 2, songId: 4, pianist: 'Nicole Brantley', organist: 'Jared Wood', bassist: 'Jonathan Bernard', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 6, songId: 26, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 6, songId: 81, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 6, songId: 28, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 6, songId: 29, pianist: 'Jared Wood', organist: 'Connie Bernard', bassist: 'Edgar Zarate', drummer: 'Daniel Bernard', guitarist: null, leader: null],
[serviceId: 11, songId: 36, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 11, songId: 35, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 11, songId: 37, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 11, songId: 38, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 12, songId: 11, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 12, songId: 39, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 8, songId: 40, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 8, songId: 41, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 8, songId: 42, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 13, songId: 7, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 13, songId: 81, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 17, songId: 43, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 17, songId: 44, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 17, songId: 46, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 17, songId: 47, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 17, songId: 48, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 18, songId: 49, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 18, songId: 50, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 18, songId: 16, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 20, songId: 51, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 20, songId: 52, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 20, songId: 28, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 20, songId: 14, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 20, songId: 53, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 56, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 44, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 54, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 55, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 57, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 21, songId: 58, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 13, songId: 68, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 14, songId: 67, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 14, songId: 65, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 14, songId: 66, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 12, songId: 64, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 12, songId: 63, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 61, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 59, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 46, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 54, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 23, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 19, songId: 62, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 13, songId: 12, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 13, songId: 58, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 22, songId: 70, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 22, songId: 69, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 22, songId: 13, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 75, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 44, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 73, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 72, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 74, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 23, songId: 71, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 24, songId: 61, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 24, songId: 78, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 24, songId: 76, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 24, songId: 77, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 25, songId: 10, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 25, songId: 73, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 25, songId: 79, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 25, songId: 6, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 8, songId: 53, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 27, songId: 80, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 27, songId: 14, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 27, songId: 23, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 28, songId: 83, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 28, songId: 82, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 28, songId: 81, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 28, songId: 84, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 29, songId: 85, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 29, songId: 57, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null],
[serviceId: 29, songId: 62, pianist: null, organist: null, bassist: null, drummer: null, guitarist: null, leader: null]]

View File

@@ -0,0 +1 @@
nlsongs.media.baseUrl=https://s3.amazonaws.com/new-life-austin-songs/public

View File

@@ -0,0 +1,4 @@
dataSourceClassName=org.h2.jdbcx.JdbcDataSource
dataSource.url=jdbc:h2:mem:
dataSource.user=test
dataSource.password=test

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<!-- PRODUCTION -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>datasource.config.file</param-name>
<param-value>/datasource.properties</param-value>
</context-param>
<context-param>
<param-name>context.config.file</param-name>
<param-value>/context.properties</param-value>
</context-param>
<listener>
<listener-class>com.jdbernard.nlsongs.servlet.NLSongsContextListener</listener-class>
</listener>
<servlet>
<servlet-name>New Life Songs REST API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.jdbernard.nlsongs.rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>GroovyTemplate</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>SongViewServlet</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>resource.name.regex</param-name>
<param-value>/song/?.*</param-value>
</init-param>
<init-param>
<param-name>resource.name.replacement</param-name>
<param-value>/song/index.gsp</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ServiceViewServlet</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>resource.name.regex</param-name>
<param-value>/service/?.*</param-value>
</init-param>
<init-param>
<param-name>resource.name.replacement</param-name>
<param-value>/service/index.gsp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>New Life Songs REST API</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SongViewServlet</servlet-name>
<url-pattern>/song/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServiceViewServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GroovyTemplate</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.gsp</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

View File

@@ -0,0 +1,34 @@
INSERT INTO SERVICES (date, service_type) values
('2015-02-01', 'SUN_AM'),
('2015-02-01', 'SUN_PM'),
('2015-02-04', 'WED'),
('2015-02-08', 'SUN_AM'),
('2015-02-08', 'SUN_PM'),
('2015-02-11', 'WED'),
('2015-02-15', 'SUN_AM'),
('2015-02-15', 'SUN_PM');
INSERT INTO songs (name, artists) VALUES
('Breathe On Us', 'Kari Jobe'),
('How Great Is Our God', 'Chris Tomlin'),
('Glorious', 'Martha Munizzi'),
('Rez Power', 'Israel Houghton');
INSERT INTO performances (service_id, song_id, rank, pianist, organist, bassist, drummer, guitarist, leader) VALUES
(1, 1, 1, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood'),
(1, 2, 2, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood'),
(1, 3, 3, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood'),
(2, 2, 1, 'Trevor Delano', 'Connie Bernard', 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser', 'Rachel Wood'),
(2, 3, 2, 'Trevor Delano', 'Connie Bernard', 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser', 'Rachel Wood'),
(2, 4, 3, 'Trevor Delano', 'Connie Bernard', 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser', 'Rachel Wood'),
(3, 1, 0, 'Rachel Wood', 'Krista Hatcher', 'Jonathan Bernard', 'Jared Wood', 'Tony Bagliore', 'Rachel Wood'),
(3, 2, 0, 'Rachel Wood', 'Krista Hatcher', 'Jonathan Bernard', 'Jared Wood', 'Tony Bagliore', 'Rachel Wood'),
(4, 3, 0, 'Trevor Delano', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser', 'Rachel Wood'),
(5, 4, 1, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Tony Bagliore', 'Rachel Wood'),
(6, 1, 1, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood'),
(7, 2, 1, 'Trevor Delano', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood'),
(8, 3, 1, 'Jared Wood', null, 'Jonathan Bernard', 'Christian Thompson', 'Andrew Fraiser; Tony Bagliore', 'Rachel Wood');
INSERT INTO users (username, pwd, role) VALUES
('admin', '', 'admin'),
('test', '', '');

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="favicon.svg"
inkscape:export-filename="/home/jdbernard/projects/new-life-songs/src/main/webapp/images/favicon.png"
inkscape:export-xdpi="180"
inkscape:export-ydpi="180">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="36.631424"
inkscape:cy="36.08398"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-196,-232.71932)">
<g
id="g3972"
transform="matrix(1.1988541,0,0,1.1988541,-34.689684,-59.360988)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3066"
d="m 197.85715,270.75504 c 18.44039,-9.68553 31.88947,-7.2133 43.21428,0.17857 l 0.17857,23.39286 c -15.06612,-7.66829 -29.63623,-7.15253 -43.75,0.89285 z"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path3836"
d="m 218.57143,288.34432 c 5.66926,-15.13182 -22.94395,-29.42428 4.28571,-44.10714 -18.57938,17.81207 6.32776,26.01559 -4.28571,44.10714 z"
style="fill:#f47321;fill-opacity:1;stroke:#f47321;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path3838"
d="m 220.89286,250.84432 c -7.46377,9.88399 15.90915,18.84168 0.89285,36.96429 5.71398,-18.35279 -10.64059,-29.80509 -0.89285,-36.96429 z"
style="fill:#f8981d;fill-opacity:1;stroke:#f8981d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
style="stroke:#666666"
transform="translate(30.241442,19.824244)"
id="g3957">
<g
style="stroke:#666666"
id="g3954">
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path3928"
d="m 181.13839,263.45593 -0.40178,-9.53125 -6.07143,-0.26785 0.37948,9.66517"
style="fill:none;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
style="fill:none;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 174.64286,256.73718 6.11607,0.29018"
id="path3930"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#666666;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3932"
sodipodi:cx="172.16518"
sodipodi:cy="261.9046"
sodipodi:rx="1.1607143"
sodipodi:ry="0.390625"
d="m 173.32589,261.9046 c 0,0.21574 -0.51967,0.39063 -1.16071,0.39063 -0.64105,0 -1.16072,-0.17489 -1.16072,-0.39063 0,-0.21573 0.51967,-0.39062 1.16072,-0.39062 0.64104,0 1.16071,0.17489 1.16071,0.39062 z"
transform="matrix(0.80146427,0,0,0.86720805,35.41978,35.950686)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#666666;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3932-8"
sodipodi:cx="172.16518"
sodipodi:cy="261.9046"
sodipodi:rx="1.1607143"
sodipodi:ry="0.390625"
d="m 173.32589,261.9046 c 0,0.21574 -0.51967,0.39063 -1.16071,0.39063 -0.64105,0 -1.16072,-0.17489 -1.16072,-0.39063 0,-0.21573 0.51967,-0.39062 1.16072,-0.39062 0.64104,0 1.16071,0.17489 1.16071,0.39062 z"
transform="matrix(0.80146427,0,0,0.86720805,41.50237,36.374793)" />
</g>
<g
style="fill:#666666;fill-opacity:1;stroke:#666666;stroke-opacity:1"
transform="translate(45.892857,26.25)"
id="g3968">
<path
style="fill:#666666;fill-opacity:1;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 187.76786,245.59879 0.13393,10.87054"
id="path3964"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:type="arc"
style="fill:#666666;fill-opacity:1;stroke:#666666;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3966"
sodipodi:cx="184.96652"
sodipodi:cy="255.05191"
sodipodi:rx="0.8370536"
sodipodi:ry="0.41294643"
d="m 185.80358,255.05191 c 0,0.22806 -0.37477,0.41295 -0.83706,0.41295 -0.46229,0 -0.83705,-0.18489 -0.83705,-0.41295 0,-0.22806 0.37476,-0.41295 0.83705,-0.41295 0.46229,0 0.83706,0.18489 0.83706,0.41295 z"
transform="matrix(1.103543,0,0,0.80447905,-18.013595,51.017545)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="319.93701"
height="41.225643"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="new-life-songs.svg"
inkscape:export-filename="/home/jdbernard/projects/new-life-songs/src/main/webapp/images/new-life-songs.png"
inkscape:export-xdpi="112.52"
inkscape:export-ydpi="112.52">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="84.054843"
inkscape:cy="-31.95016"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-102.563,-63.265607)">
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Aldrich;-inkscape-font-specification:Aldrich"
x="110"
y="95.933609"
id="text2985"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2987"
x="110"
y="95.933609">New Life Songs</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:3.84500003;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 389.73551,102.40638 c -45.27776,0 -285.24751,0.0799 -285.24751,0.0799 0.18336,-10.359756 0,-26.719287 0,-37.295643"
id="path2989"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB