From 50e6c319af42dcd9d4bbe21fd4761b88de0d6ed4 Mon Sep 17 00:00:00 2001 From: Ruslan Forostianov Date: Tue, 19 Feb 2019 10:28:40 +0100 Subject: [PATCH 1/3] Rename query type to subject dimension --- .../src/test/groovy/tests/QuerySpec.groovy | 2 +- .../domain/nl/thehyve/gb/backend/Query.groovy | 4 ++-- .../gb/backend/NotificationsMailService.groovy | 4 ++-- .../nl/thehyve/gb/backend/QueryService.groovy | 4 ++-- .../nl/thehyve/gb/backend/QuerySetService.groovy | 12 ++++++------ .../nl/thehyve/gb/backend/QueryServiceSpec.groovy | 6 +++--- .../nl/thehyve/gb/backend/QuerySetServiceSpec.groovy | 6 +++--- .../representation/QueryRepresentation.groovy | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gb-backend-e2e/src/test/groovy/tests/QuerySpec.groovy b/gb-backend-e2e/src/test/groovy/tests/QuerySpec.groovy index c317b40..121792e 100644 --- a/gb-backend-e2e/src/test/groovy/tests/QuerySpec.groovy +++ b/gb-backend-e2e/src/test/groovy/tests/QuerySpec.groovy @@ -149,7 +149,7 @@ class QuerySpec extends RESTSpec { statusCode: 201, body : [ name : 'test query', - type : 'patient', + subjectDimension : 'patient', queryConstraint : [type: 'true'],// TODO replace with TrueConstraint representation from tm-core-api bookmarked : true, subscribed : false, diff --git a/gb-backend/grails-app/domain/nl/thehyve/gb/backend/Query.groovy b/gb-backend/grails-app/domain/nl/thehyve/gb/backend/Query.groovy index 8eac22f..b1f4ea6 100644 --- a/gb-backend/grails-app/domain/nl/thehyve/gb/backend/Query.groovy +++ b/gb-backend/grails-app/domain/nl/thehyve/gb/backend/Query.groovy @@ -9,7 +9,7 @@ package nl.thehyve.gb.backend class Query { String name - String type + String subjectDimension String username String queryConstraint Boolean bookmarked = false @@ -31,7 +31,7 @@ class Query { static constraints = { name maxSize: 1000 - type maxSize: 255, nullable: false + subjectDimension maxSize: 255, nullable: false username maxSize: 50 queryConstraint type: 'text', nullable: false bookmarked nullable: true diff --git a/gb-backend/grails-app/services/nl/thehyve/gb/backend/NotificationsMailService.groovy b/gb-backend/grails-app/services/nl/thehyve/gb/backend/NotificationsMailService.groovy index db1bc70..ab99201 100644 --- a/gb-backend/grails-app/services/nl/thehyve/gb/backend/NotificationsMailService.groovy +++ b/gb-backend/grails-app/services/nl/thehyve/gb/backend/NotificationsMailService.groovy @@ -70,11 +70,11 @@ class NotificationsMailService { /** * Fetches a list of sets for all queries user subscribed to with specific frequency * for which there were instances added or removed comparing to a previous query set - * and groups it by query type + * and groups it by query type (subject dimension). * * @param frequency * @param username - * @return A map of query type to list of sets with changes + * @return A map of query subject dimension to list of sets with changes */ private Map> getQueryTypeToQuerySetChangesRepresentations( SubscriptionFrequency frequency, diff --git a/gb-backend/grails-app/services/nl/thehyve/gb/backend/QueryService.groovy b/gb-backend/grails-app/services/nl/thehyve/gb/backend/QueryService.groovy index 0182445..ce18571 100644 --- a/gb-backend/grails-app/services/nl/thehyve/gb/backend/QueryService.groovy +++ b/gb-backend/grails-app/services/nl/thehyve/gb/backend/QueryService.groovy @@ -30,7 +30,7 @@ class QueryService { query.with { new QueryRepresentation( id, - type, + subjectDimension, username, name, queryConstraint ? BindingHelper.readFromString(queryConstraint, Object) : null, @@ -97,7 +97,7 @@ class QueryService { } query.with { name = representation.name - type = representation.type // TODO TMT-741 - validate query type, currently it can be any string + subjectDimension = representation.subjectDimension // TODO TMT-741 - validate query subjectDimension, currently it can be any string queryConstraint = BindingHelper.writeAsString(representation.queryConstraint) bookmarked = representation.bookmarked ?: false subscribed = representation.subscribed ?: false diff --git a/gb-backend/grails-app/services/nl/thehyve/gb/backend/QuerySetService.groovy b/gb-backend/grails-app/services/nl/thehyve/gb/backend/QuerySetService.groovy index bb2af53..407ae35 100644 --- a/gb-backend/grails-app/services/nl/thehyve/gb/backend/QuerySetService.groovy +++ b/gb-backend/grails-app/services/nl/thehyve/gb/backend/QuerySetService.groovy @@ -82,7 +82,7 @@ class QuerySetService { } void createQuerySetWithQueryInstances(QueryRepresentation queryRepresentation) { - log.info "Create set of type ${queryRepresentation.type} for query ${queryRepresentation.id}" + log.info "Create set of subjectDimension ${queryRepresentation.subjectDimension} for query ${queryRepresentation.id}" List setInstances = getSetInstancesForQuery(queryRepresentation) Query query = queryService.getQueryById(queryRepresentation.id) QuerySet querySet = new QuerySet( @@ -167,14 +167,14 @@ class QuerySetService { private List getSetInstancesForQuery(QueryRepresentation query) { def newDimensionElements = - getDimensionElements(query.type, query.queryConstraint as Map)?.elements - listSetInstanceIds(query.type, newDimensionElements) + getDimensionElements(query.subjectDimension, query.queryConstraint as Map)?.elements + listSetInstanceIds(query.subjectDimension, newDimensionElements) } private List getSetInstancesWithImpersonation(QueryRepresentation query) { def newDimensionElements = - getDimensionElementsForUser(query.type, query.queryConstraint as Map, query.username)?.elements - listSetInstanceIds(query.type, newDimensionElements) + getDimensionElementsForUser(query.subjectDimension, query.queryConstraint as Map, query.username)?.elements + listSetInstanceIds(query.subjectDimension, newDimensionElements) } private List getQuerySets(Long queryId, User currentUser, Integer maxNumberOfSets) { @@ -289,7 +289,7 @@ class QuerySetService { set.createDate, set.query.name, set.query.id, - set.query.type, + set.query.subjectDimension, objectsAdded, objectsRemoved ) diff --git a/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QueryServiceSpec.groovy b/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QueryServiceSpec.groovy index 88e90f5..bc67a27 100644 --- a/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QueryServiceSpec.groovy +++ b/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QueryServiceSpec.groovy @@ -46,7 +46,7 @@ class QueryServiceSpec extends Specification { def query1Representation = new QueryRepresentation() query1Representation.with { name = 'test query 1' - type = 'patient' + subjectDimension = 'patient' queryConstraint = [type: 'true'] bookmarked = true subscribed = true @@ -57,7 +57,7 @@ class QueryServiceSpec extends Specification { def query2Representation = new QueryRepresentation() query2Representation.with { name = 'test query 2' - type = 'diagnosis' + subjectDimension = 'diagnosis' queryConstraint = [type: 'true'] bookmarked = true subscribed = false @@ -67,7 +67,7 @@ class QueryServiceSpec extends Specification { def query3Representation = new QueryRepresentation() query3Representation.with { name = 'test query 3' - type = 'sample1' + subjectDimension = 'sample1' queryConstraint = [type: 'negation', arg: [type: 'true']] bookmarked = false subscribed = true diff --git a/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QuerySetServiceSpec.groovy b/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QuerySetServiceSpec.groovy index 00e99b9..c763def 100644 --- a/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QuerySetServiceSpec.groovy +++ b/gb-backend/src/integration-test/groovy/nl/thehyve/gb/backend/QuerySetServiceSpec.groovy @@ -161,7 +161,7 @@ class QuerySetServiceSpec extends Specification { def query1_invalid = new Query() query1_invalid.with { name = 'fail on scan query' - type = 'patient' + subjectDimension = 'patient' queryConstraint = '{"type": "concept", "conceptCode": "NON-EXISTENT"}' bookmarked = true subscribed = true @@ -171,7 +171,7 @@ class QuerySetServiceSpec extends Specification { def query2 = new Query() query2.with { name = 'test query 1' - type = 'diagnosis' + subjectDimension = 'diagnosis' queryConstraint = '{"type": "true"}' bookmarked = true subscribed = true @@ -181,7 +181,7 @@ class QuerySetServiceSpec extends Specification { def query3 = new Query() query3.with { name = 'test query 2' - type = 'patient' + subjectDimension = 'patient' queryConstraint = '{"type": "negation", "arg": {"type": "true"}}' bookmarked = false subscribed = true diff --git a/gb-backend/src/main/groovy/nl/thehyve/gb/backend/representation/QueryRepresentation.groovy b/gb-backend/src/main/groovy/nl/thehyve/gb/backend/representation/QueryRepresentation.groovy index 1859b72..332e7f7 100644 --- a/gb-backend/src/main/groovy/nl/thehyve/gb/backend/representation/QueryRepresentation.groovy +++ b/gb-backend/src/main/groovy/nl/thehyve/gb/backend/representation/QueryRepresentation.groovy @@ -23,7 +23,7 @@ class QueryRepresentation { Long id @Size(min = 1) - String type + String subjectDimension @Size(min = 1) String username From 6c4b9315d13c2d75d0e4c72a648b0c61f0f8aefb Mon Sep 17 00:00:00 2001 From: ewelinagr Date: Thu, 21 Feb 2019 10:13:59 +0100 Subject: [PATCH 2/3] Update email template for subscription notifications TMT-675 --- .../thehyve/gb/backend/EmailGenerator.groovy | 10 ++++---- .../gb/backend/user/EmailGeneratorSpec.groovy | 24 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gb-backend/src/main/groovy/nl/thehyve/gb/backend/EmailGenerator.groovy b/gb-backend/src/main/groovy/nl/thehyve/gb/backend/EmailGenerator.groovy index ba8bb2f..0f6c81a 100644 --- a/gb-backend/src/main/groovy/nl/thehyve/gb/backend/EmailGenerator.groovy +++ b/gb-backend/src/main/groovy/nl/thehyve/gb/backend/EmailGenerator.groovy @@ -62,25 +62,25 @@ class EmailGenerator { queryTypeToQuerySetsChanges.collect { type, querySetsChanges -> String table = updatesHtmlTablePerType(querySetsChanges) [ - "For subscription of type ${type} there are the following updates:", + "Cohort changes (type ${type}):", table ].join(BR) }.join(BR) } protected static String updatesHtmlTablePerType(List querySetsChanges) { - String queryIdHeader = 'Your Query ID' - String queryNameHeader = 'Your Query Name' + String queryNameHeader = 'Your Cohort Name' + String queryIdHeader = 'Your Cohort ID' String addedSubjectHeader = 'Number of added instances' String removedSubjectHeader = 'Number of removed instances' String dateOfChangeHeader = 'Date of change' List tableRows = querySetsChanges.collect { QuerySetChangesRepresentation change -> - "${change.queryId}${change.queryName}${change.objectsAdded.size()}${change.objectsRemoved.size()}${DATE_TIME_FORMAT.format(change.createDate)}".toString() + "${change.queryName}${change.queryId}${change.objectsAdded.size()}${change.objectsRemoved.size()}${DATE_TIME_FORMAT.format(change.createDate)}".toString() } '' + - '' + th(queryIdHeader) + th(queryNameHeader) + th(addedSubjectHeader) + th(removedSubjectHeader) + th(dateOfChangeHeader) + '' + + '' + th(queryNameHeader) + th(queryIdHeader) + th(addedSubjectHeader) + th(removedSubjectHeader) + th(dateOfChangeHeader) + '' + tableRows.join('') + '
' } diff --git a/gb-backend/src/test/groovy/nl/thehyve/gb/backend/user/EmailGeneratorSpec.groovy b/gb-backend/src/test/groovy/nl/thehyve/gb/backend/user/EmailGeneratorSpec.groovy index e2eb36d..d496fe4 100644 --- a/gb-backend/src/test/groovy/nl/thehyve/gb/backend/user/EmailGeneratorSpec.groovy +++ b/gb-backend/src/test/groovy/nl/thehyve/gb/backend/user/EmailGeneratorSpec.groovy @@ -27,22 +27,22 @@ class EmailGeneratorSpec extends Specification { def 'body of the query subscription updates'() { String clientAppName = 'ABC' Map> querySetChanges = [ - diagnosis: [ + Diagnosis: [ new QuerySetChangesRepresentation( queryId: 36, queryName: 'test diagnosis query', createDate: DATE_TIME_FORMAT.parse('2019-02-07 09:59'), - queryType: 'diagnosis', + queryType: 'Diagnosis', objectsAdded: ['d1', 'd2', 'd3'], objectsRemoved: [] ) ], - patient : [ + Patient : [ new QuerySetChangesRepresentation( queryId: 35, queryName: 'first saved query', createDate: DATE_TIME_FORMAT.parse('2017-05-03 13:30'), - queryType: 'patient', + queryType: 'Patient', objectsAdded: ['subj1', 'subj2', 'subj3'], objectsRemoved: ['subj10'], @@ -51,7 +51,7 @@ class EmailGeneratorSpec extends Specification { queryId: 50, queryName: 'test query', createDate: DATE_TIME_FORMAT.parse('2017-08-16 8:45'), - queryType: 'diagnosis', + queryType: 'Diagnosis', objectsAdded: ['subj100', 'subj200', 'subj300', 'subj400', 'subj500', 'subj600'], objectsRemoved: ['subj101', 'subj201'], ), @@ -61,16 +61,16 @@ class EmailGeneratorSpec extends Specification { def expectedContent = 'Hello,

' + 'You have subscribed to be notified to data updates for one or more queries that you have saved in the "ABC" application.' + '
In this email you will find an overview of all data updates up until October 3 2018 15:25:' + - '

For subscription of type diagnosis there are the following updates:' + + '

Cohort changes (type Diagnosis):' + '
' + - '' + - '' + + '' + + '' + '
Your Query IDYour Query NameNumber of added instancesNumber of removed instancesDate of change
36test diagnosis query30February 7 2019 9:59
Your Cohort NameYour Cohort IDNumber of added instancesNumber of removed instancesDate of change
test diagnosis query3630February 7 2019 9:59
' + - '
For subscription of type patient there are the following updates:' + + '
Cohort changes (type Patient):' + '
' + - '' + - '' + - '' + + '' + + '' + + '' + '
Your Query IDYour Query NameNumber of added instancesNumber of removed instancesDate of change
35first saved query31May 3 2017 13:30
50test query62August 16 2017 8:45
Your Cohort NameYour Cohort IDNumber of added instancesNumber of removed instancesDate of change
first saved query3531May 3 2017 13:30
test query5062August 16 2017 8:45
' + '

You can login to ABC to reload your queries and review the new data available.' + '
Regards,

ABC' From e7bf64403d517b4313d960d9ec02cf68ce979b2e Mon Sep 17 00:00:00 2001 From: Ruslan Forostianov Date: Wed, 13 Mar 2019 11:20:43 +0100 Subject: [PATCH 3/3] Shorten maven group to nl.thehyve --- gb-backend/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gb-backend/build.gradle b/gb-backend/build.gradle index 185aa7e..8e917d2 100644 --- a/gb-backend/build.gradle +++ b/gb-backend/build.gradle @@ -11,7 +11,7 @@ buildscript { } version "0.1-SNAPSHOT" -group "nl.thehyve.gb.backend" +group "nl.thehyve" apply plugin:"eclipse" apply plugin:"idea"