From aacedd2e565b42e2fe66b915db465f69abded2ff Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Thu, 3 Aug 2017 12:14:38 +0200 Subject: [PATCH 1/7] Replace all NaN defaults with null --- commons/application/application_external_time.avsc | 6 +++--- commons/phone/phone_call.avsc | 2 +- commons/phone/phone_relative_location.avsc | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/commons/application/application_external_time.avsc b/commons/application/application_external_time.avsc index 1b0f9f25..556a4792 100755 --- a/commons/application/application_external_time.avsc +++ b/commons/application/application_external_time.avsc @@ -6,9 +6,9 @@ "fields": [ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, - {"name": "externalTime", "type": "double", "doc": "timestamp in UTC according to an external source (s)", "default": "NaN"}, + {"name": "externalTime", "type": "double", "doc": "timestamp in UTC according to an external source (s)"}, {"name": "host", "type": ["null", "string"], "doc": "hostname or IP address that time was polled from", "default": null}, {"name": "protocol", "type": {"name": "ExternalTimeProtocol", "type": "enum", "symbols": ["SNTP", "NTP"], "doc": "SNTP (Simple Network Time Protocol) synchronizes with a single server once, NTP (Network Time Protocol) may synchronize with multiple servers and derive some continuous measures."}, "doc": "protocol for external time synchronization", "default": "SNTP"}, - {"name": "delay", "type": "double", "doc": "delay between sending and receiving a message from the host (s). The lower this delay, the more precise the external timestamp is expected to be.", "default": "NaN"} + {"name": "delay", "type": ["null", "double"], "doc": "delay between sending and receiving a message from the host (s). The lower this delay, the more precise the external timestamp is expected to be.", "default": null} ] -} \ No newline at end of file +} diff --git a/commons/phone/phone_call.avsc b/commons/phone/phone_call.avsc index 4997dddf..81d575b6 100644 --- a/commons/phone/phone_call.avsc +++ b/commons/phone/phone_call.avsc @@ -6,7 +6,7 @@ "fields": [ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, - {"name": "duration", "type": "float", "doc": "duration of the call (s)", "default": "NaN"}, + {"name": "duration", "type": [null, "float"], "doc": "duration of the call (s)", "default": null}, {"name": "target", "type": ["null", "bytes"], "doc": "HMAC SHA-256 one-way source/target of the call. This hash of a given phone number will be the same unless the app is reinstalled. If the number is unknown or anonymous, this contains null.", "default": null}, {"name": "type", "type": {"name": "PhoneCallType", "type": "enum", "symbols": ["INCOMING", "OUTGOING", "MISSED", "VOICEMAIL", "UNKNOWN"]}, "doc": "direction of phone call", "default": "UNKNOWN"}, {"name": "targetIsContact", "type": ["null","boolean"], "doc": "call to/from a known contact, null if unknown", "default": null}, diff --git a/commons/phone/phone_relative_location.avsc b/commons/phone/phone_relative_location.avsc index 4136d3e2..a9548426 100644 --- a/commons/phone/phone_relative_location.avsc +++ b/commons/phone/phone_relative_location.avsc @@ -7,11 +7,11 @@ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, {"name": "provider", "type": {"name": "LocationProvider", "type": "enum", "symbols": ["GPS", "NETWORK", "OTHER"]}, "doc": "Android provider of the location data"}, - {"name": "latitude", "type": "double", "doc": "relative latitude from an initial random reference latitude (degrees with range [-90, 90])", "default": "NaN"}, - {"name": "longitude", "type": "double", "doc": "relative longitude from an initial reference longitude (degrees with range [-180, 180])", "default": "NaN"}, - {"name": "altitude", "type": "float", "doc": "height above the WGS 84 reference ellipsoid (m)", "default": "NaN"}, - {"name": "accuracy", "type": "float", "doc": "The estimated horizontal accuracy of this location, radial (m). We define horizontal accuracy as the radius of 68% confidence. In other words, if you draw a circle centered at this location's latitude and longitude, and with a radius equal to the accuracy, then there is a 68% probability that the true location is inside the circle.", "default": "NaN"}, - {"name": "speed", "type": "float", "doc": "speed over ground (m/s)", "default": "NaN"}, - {"name": "bearing", "type": "float", "doc": "the horizontal direction of travel of this device (degrees with range (0, 360])", "default": "NaN"} + {"name": "latitude", "type": ["null", "double"], "doc": "relative latitude from an initial random reference latitude (degrees with range [-90, 90])", "default": null}, + {"name": "longitude", "type": ["null", "double"], "doc": "relative longitude from an initial reference longitude (degrees with range [-180, 180])", "default": null}, + {"name": "altitude", "type": ["null", "float"], "doc": "height above the WGS 84 reference ellipsoid (m)", "default": null}, + {"name": "accuracy", "type": ["null", "float"], "doc": "The estimated horizontal accuracy of this location, radial (m). We define horizontal accuracy as the radius of 68% confidence. In other words, if you draw a circle centered at this location's latitude and longitude, and with a radius equal to the accuracy, then there is a 68% probability that the true location is inside the circle.", "default": null}, + {"name": "speed", "type": ["null", "float"], "doc": "speed over ground (m/s)", "default": null}, + {"name": "bearing", "type": ["null", "float"], "doc": "the horizontal direction of travel of this device (degrees with range (0, 360])", "default": null} ] -} \ No newline at end of file +} From 53d113019f51b06e81191c3685c1c978e095e36c Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Fri, 11 Aug 2017 16:48:27 +0200 Subject: [PATCH 2/7] Added documentation to all enums --- commons/application/application_external_time.avsc | 7 ++++++- commons/phone/phone_battery_level.avsc | 7 ++++++- commons/phone/phone_call.avsc | 9 +++++++-- commons/phone/phone_relative_location.avsc | 7 ++++++- commons/phone/phone_sms.avsc | 7 ++++++- commons/phone/phone_usage_event.avsc | 9 ++++++--- commons/phone/phone_user_interaction.avsc | 7 ++++++- commons/questionnaire/questionnaire.avsc | 7 ++++++- 8 files changed, 49 insertions(+), 11 deletions(-) diff --git a/commons/application/application_external_time.avsc b/commons/application/application_external_time.avsc index 556a4792..5d62642b 100755 --- a/commons/application/application_external_time.avsc +++ b/commons/application/application_external_time.avsc @@ -8,7 +8,12 @@ {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, {"name": "externalTime", "type": "double", "doc": "timestamp in UTC according to an external source (s)"}, {"name": "host", "type": ["null", "string"], "doc": "hostname or IP address that time was polled from", "default": null}, - {"name": "protocol", "type": {"name": "ExternalTimeProtocol", "type": "enum", "symbols": ["SNTP", "NTP"], "doc": "SNTP (Simple Network Time Protocol) synchronizes with a single server once, NTP (Network Time Protocol) may synchronize with multiple servers and derive some continuous measures."}, "doc": "protocol for external time synchronization", "default": "SNTP"}, + {"name": "protocol", "type": { + "name": "ExternalTimeProtocol", + "type": "enum", + "symbols": ["SNTP", "NTP", "UNKNOWN"], + "doc": "SNTP (Simple Network Time Protocol) synchronizes with a single server once, NTP (Network Time Protocol) may synchronize with multiple servers and derive some continuous measures." + }, "doc": "protocol for external time synchronization", "default": "UNKNOWN"}, {"name": "delay", "type": ["null", "double"], "doc": "delay between sending and receiving a message from the host (s). The lower this delay, the more precise the external timestamp is expected to be.", "default": null} ] } diff --git a/commons/phone/phone_battery_level.avsc b/commons/phone/phone_battery_level.avsc index dec81bc3..0e46ce57 100644 --- a/commons/phone/phone_battery_level.avsc +++ b/commons/phone/phone_battery_level.avsc @@ -8,6 +8,11 @@ {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, {"name": "batteryLevel", "type": "float", "doc": "battery level from 0 to 1"}, {"name": "isPlugged", "type": "boolean", "doc": "whether the phone is connected to a power source"}, - {"name": "status", "type": {"name": "BatteryStatus", "type": "enum", "symbols": ["UNKNOWN", "CHARGING", "DISCHARGING", "NOT_CHARGING", "FULL"]}, "doc": "Android battery states", "default": "UNKNOWN"} + {"name": "status", "type": { + "name": "BatteryStatus", + "type": "enum", + "doc": "Android device battery states", + "symbols": ["UNKNOWN", "CHARGING", "DISCHARGING", "NOT_CHARGING", "FULL"] + }, "doc": "Android battery states", "default": "UNKNOWN"} ] } diff --git a/commons/phone/phone_call.avsc b/commons/phone/phone_call.avsc index 81d575b6..ae60663b 100644 --- a/commons/phone/phone_call.avsc +++ b/commons/phone/phone_call.avsc @@ -6,9 +6,14 @@ "fields": [ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, - {"name": "duration", "type": [null, "float"], "doc": "duration of the call (s)", "default": null}, + {"name": "duration", "type": ["null", "float"], "doc": "duration of the call (s)", "default": null}, {"name": "target", "type": ["null", "bytes"], "doc": "HMAC SHA-256 one-way source/target of the call. This hash of a given phone number will be the same unless the app is reinstalled. If the number is unknown or anonymous, this contains null.", "default": null}, - {"name": "type", "type": {"name": "PhoneCallType", "type": "enum", "symbols": ["INCOMING", "OUTGOING", "MISSED", "VOICEMAIL", "UNKNOWN"]}, "doc": "direction of phone call", "default": "UNKNOWN"}, + {"name": "type", "type": { + "name": "PhoneCallType", + "type": "enum", + "doc": "Type of Android call", + "symbols": ["INCOMING", "OUTGOING", "MISSED", "VOICEMAIL", "UNKNOWN"] + }, "doc": "direction of phone call", "default": "UNKNOWN"}, {"name": "targetIsContact", "type": ["null","boolean"], "doc": "call to/from a known contact, null if unknown", "default": null}, {"name": "targetIsNonNumeric", "type": "boolean", "doc": "sms sender ID is replaced by text, e.g. a company name", "default": false}, {"name": "targetLength", "type": "int", "doc": "length of the target phone number, -1 if not collected.", "default": -1} diff --git a/commons/phone/phone_relative_location.avsc b/commons/phone/phone_relative_location.avsc index a9548426..1034a414 100644 --- a/commons/phone/phone_relative_location.avsc +++ b/commons/phone/phone_relative_location.avsc @@ -6,7 +6,12 @@ "fields": [ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, - {"name": "provider", "type": {"name": "LocationProvider", "type": "enum", "symbols": ["GPS", "NETWORK", "OTHER"]}, "doc": "Android provider of the location data"}, + {"name": "provider", "type": { + "name": "LocationProvider", + "type": "enum", + "doc": "Type of provider of location data.", + "symbols": ["GPS", "NETWORK", "OTHER"] + }, "doc": "Android provider of the location data"}, {"name": "latitude", "type": ["null", "double"], "doc": "relative latitude from an initial random reference latitude (degrees with range [-90, 90])", "default": null}, {"name": "longitude", "type": ["null", "double"], "doc": "relative longitude from an initial reference longitude (degrees with range [-180, 180])", "default": null}, {"name": "altitude", "type": ["null", "float"], "doc": "height above the WGS 84 reference ellipsoid (m)", "default": null}, diff --git a/commons/phone/phone_sms.avsc b/commons/phone/phone_sms.avsc index 46bb17c1..1babdb85 100644 --- a/commons/phone/phone_sms.avsc +++ b/commons/phone/phone_sms.avsc @@ -7,7 +7,12 @@ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, {"name": "target", "type": ["null", "bytes"], "doc": "HMAC SHA-256 one-way source/target of the SMS. This hash of a given phone number will be the same unless the app is reinstalled. If the number is unknown or anonymous, this contains null.", "default": null}, - {"name": "type", "type": {"name": "PhoneSmsType", "type": "enum", "symbols": ["INCOMING", "OUTGOING", "OTHER", "UNKNOWN"]}, "doc": "direction of the SMS", "default": "UNKNOWN"}, + {"name": "type", "type": { + "name": "PhoneSmsType", + "type": "enum", + "doc": "Direction of an SMS", + "symbols": ["INCOMING", "OUTGOING", "OTHER", "UNKNOWN"] + }, "doc": "direction of the SMS", "default": "UNKNOWN"}, {"name": "length", "type": ["null","int"], "doc": "number of characters in the message (null if unknown)", "default": null}, {"name": "targetIsContact", "type": ["null","boolean"], "doc": "sms sender is a known contact, null if unknown", "default": null}, {"name": "targetIsNonNumeric", "type": "boolean", "doc": "sms sender ID is replaced by text, e.g. a company name", "default": false}, diff --git a/commons/phone/phone_usage_event.avsc b/commons/phone/phone_usage_event.avsc index ff9a9f34..9289812c 100644 --- a/commons/phone/phone_usage_event.avsc +++ b/commons/phone/phone_usage_event.avsc @@ -9,8 +9,11 @@ {"name": "packageName", "type": "string", "doc": "package name of the launched app"}, {"name": "categoryName", "type": ["null", "string"], "doc": "app category as given by the play store, null if a category is not listed or unable to be fetched", "default": null}, {"name": "categoryNameFetchTime", "type": ["null", "double"], "doc": "timestamp in UTC when the category was attempted to fetch from the play store (s), null if not fetched", "default": null}, - {"name": "eventType", "type": - {"name": "UsageEventType", "type": "enum", "symbols": ["FOREGROUND", "BACKGROUND", "CONFIG", "SHORTCUT", "INTERACTION", "NONE"]}, - "doc": "whether the event brought app to foreground or background or neither", "default": "NONE"} + {"name": "eventType", "type": { + "name": "UsageEventType", + "type": "enum", + "doc": "Android activity usage event type.", + "symbols": ["FOREGROUND", "BACKGROUND", "CONFIG", "SHORTCUT", "INTERACTION", "UNKNOWN"] + }, "doc": "whether the event brought app to foreground or background or neither", "default": "NONE"} ] } diff --git a/commons/phone/phone_user_interaction.avsc b/commons/phone/phone_user_interaction.avsc index 781f696b..3373720d 100644 --- a/commons/phone/phone_user_interaction.avsc +++ b/commons/phone/phone_user_interaction.avsc @@ -6,6 +6,11 @@ "fields": [ {"name": "time", "type": "double", "doc": "device timestamp in UTC (s)"}, {"name": "timeReceived", "type": "double", "doc": "device receiver timestamp in UTC (s)"}, - {"name": "interactionState", "type": {"name": "PhoneInteractionState", "type": "enum", "symbols": ["STANDBY", "UNLOCKED","SHUTDOWN","BOOTED"]}, "doc": "what interaction state the phone has"} + {"name": "interactionState", "type": { + "name": "PhoneInteractionState", + "type": "enum", + "doc": "Interaction type with an Android device", + "symbols": ["STANDBY", "UNLOCKED", "SHUTDOWN", "BOOTED"] + }, "doc": "what interaction state the phone has"} ] } diff --git a/commons/questionnaire/questionnaire.avsc b/commons/questionnaire/questionnaire.avsc index 6a36c15d..fafb958b 100644 --- a/commons/questionnaire/questionnaire.avsc +++ b/commons/questionnaire/questionnaire.avsc @@ -6,7 +6,12 @@ "fields": [ { "name": "time", "type": "double", "doc": "timestamp in UTC (s) when the questionnaire is submitted to the subject" }, { "name": "timeCompleted", "type": "double", "doc": "timestamp in UTC (s) when subject marks the questionnaire as" }, - { "name": "name", "type": {"name": "QuestionnaireType", "type": "enum", "symbols": ["PHQ8", "ESM", "UNKNOWN"]}, "doc": "Questionnaire names", "default": "UNKNOWN" }, + { "name": "name", "type": { + "name": "QuestionnaireType", + "type": "enum", + "doc": "Types of supported questionnaires", + "symbols": ["PHQ8", "ESM", "UNKNOWN"] + }, "doc": "Questionnaire names", "default": "UNKNOWN" }, { "name": "version", "type": "string", "doc": "It reports the questionnaire version stated in the JSON specification" }, { "name": "answers", "type": { From ca72223027f3b4a325a2137e252cbc15ff2e547f Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Mon, 14 Aug 2017 08:54:54 +0200 Subject: [PATCH 3/7] Snapshot version --- java-sdk/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index bdd72bf2..2ab1ca89 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -15,7 +15,7 @@ subprojects { apply plugin: 'maven-publish' // Configuration - version = '0.2-alpha.1' + version = '0.2-alpha.2-SNAPSHOT' group = 'org.radarcns' ext.githubRepoName = 'RADAR-CNS/RADAR-Schemas' From 2e66d6812b34afc97ddf57e253f4bd20db2d41b1 Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Mon, 28 Aug 2017 15:22:44 +0200 Subject: [PATCH 4/7] Updated gradle wrapper --- java-sdk/build.gradle | 4 ++-- java-sdk/gradle/wrapper/gradle-wrapper.jar | Bin 54212 -> 54783 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index 2ab1ca89..defb8603 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -114,6 +114,6 @@ subprojects { } task wrapper(type: Wrapper) { - gradleVersion = '3.4.1' - distributionUrl distributionUrl.replace("bin", "all") + gradleVersion = '3.5' + distributionType 'all' } diff --git a/java-sdk/gradle/wrapper/gradle-wrapper.jar b/java-sdk/gradle/wrapper/gradle-wrapper.jar index 188bc2c03d03b19aae4467279dc344e7e7b8cf24..2e42c380d4750b43bcebff00cbd682b4c443cfdf 100644 GIT binary patch delta 6730 zcmaKR2{@E*_x~6>*>_p8?_`VYWy>ZW2!wzD0)bqE#F285 zoPBx{w)iT78iP0`1L|+?d+u0}e*udw;h+o#c+j6mBB;*_H@+*lCjDk>u2Ahv>y%AO*<@+?W!~EKn$-Fjy+EHTg~*?k@vDc zSbgKF2zkCYp+Tjq;|&fIUEXH2hDyG^T6`w&mlZeMQCI?8^NC9bj` zA|GlDyMo)MKTFoJF}E0a)AjJ05=D*hMY)OP9;x4m%lXs(NpF$NT(Nj#nJ!T`f0Mk< zvvIQs$-Y??;8hXm#UMX@M9 zV62u({AE}K7MbbX_KV^UHs#@&sQC6#?9kFjkArd&SgZL%D%e7K#KTXMQ!``Y2!x#O zzb?{5P*U{L9XMT>WDq)VTJgQL5*;D=%ZVvjBr?2K)mK6bS-IaeOx)UfAj)pp6>$mX z^oagAJgQQL18Qc*c2OB`65*bZgV*b?{ypQOY)jBZuTm<`rlnTV&5!Ue3b5zBF+CK? ztyPHHf;$|xLeABRec_kKZ5n9ISo2FskEGmEO0+B}am|9B7T<}}ImSDGYMRp`7YPYS zArK}e2!stlSkVGXodif>TW4zzj|>w+E9y@^Cz+M?;*3v8jc&ZP+O=sW$oTNViug%f zFeH#Om^MO?ewt(J#%<&Nu8N9)nenH~gEBCxRfY6Xo%G6W^UY8iLY>WgA;*#N#b#h2Gk3zy$tNN-1O9OlQI4($qI|K5v_aorbqHycb|eoK`# z;vTlTsuJBb<>26aVsk1<_ntx3QekZp*AbNrwy&yBgcXIbOP z^8}q~$H3iJs}>e({f8CR%RB{w^FMIDs(0!zF& z3J@xOws6;foj@Sc7Msm3+;~yrU!`u_S%+DjWHl7m}*7!J2n{f+M9?V_Mb@ zmOpAS!zUnV?W1vZKo{?LlGD7=Q4(;>sV}md@AtIax#E)Ip0WN}`$I*q-isNFS^kLc zDi%+hOG~d_joI>wjU`#hwaF!dC!QQ4aOFl2vG79%5L#wG;IF*(s1Fh`3s+) zg>Zar*$a=sz5B?IW%?4_%XvL7N#jZtfa=CM23ayKJYO+!c_9k@ht;tM(kZo~rc)N3 zjl;4h&$jvwE27P@;D21y_}RK*<08M~)=Yga@)U1U(i)neVn8Y^kAzf9s&8QteX$=G zsfhGhnt;3WynLnU-dNkExc0o<$UQ5FD zAX7dgr+RyaaUEt#LFZ64GiYi-tfQUD14Ngl*Z&Tdvhpc>`SPA{Hh*ir(z}}A%P*I@ z2I?qD4S$CsN1;CBmn{p#_vVx=SSPnAG;`(P(ECv}?WYEDcVIfHzYcPv6!H zVq4{Q=3#Skx$pAqjki-`Vx$L~RE9vZq)Xj{@=s~(nNO3`_VS%mV8IBiHgo-$2rX~z zE3OivvFh61H_~?PfEHD%`Br!{(W?q=QI`;MwD*Vr?JEpAg!%KjOQinx$zXtCwotS2RqdSI23%8P{(C zo3V}bQ;m&aZ4u|TXpVXiEb$)hV?p&>8<92P8i~E+4`-roOkERKeJ}ko0t?PWtFDbO zU_5X^`ZSMm+cEEo?Kfo%wu{1<=#-(bj!}8N;8dlT3xR7~0?b0zoAI7;u1+Ma_3o$fe7-6jvZ)IZOI$qS@%aKWspTdtoTf6}pCjxeiEPc=(+yUAyVdu9IGA5u z`YqP|T=T=t0l9T%oBdqx0cyZK3C?a!WU5_}d1Fqv2=?$tVdTpQ26!Klk*00o=-col zJ7g8#Koqgh=jY|F0`8-$n*DrIci|R>jx9qfJ=7jSvIH?%GBX+hwKo0?=7Cj(*J&uj zdnS9$lUDW30S%s^hh5)!x3-0@y6Yg@Tz@gANLeIB^) zG{SC$!(@E<)<3?c{C!8}>pOpmjFc=dM`a{?Pc1HO^jcYjHSVOkahSCS-gQ?r24R;M*O~l*g-?YSrLTug0 z>o=~R1j)!58NMK0NX&^TFRqEJ{-bl^;nbqp98vpBjhe`w9F zc+g4IZ+?Tbv9fM5gRSXt(yb?yJ$X)JspAP=^*5ZpI1R=N`S{y2WGsG9ni0M7ywKQF z{azus$HNS^2OJC*Oi9P}xvhCGzx}ArM6&SJx|MMzyt{J*)3&hsm1If2p4&3~&61yY zp-|TD?GNWHPX3nmLK6|>Y@fFnZOGm?0VS72-;Mb7mb|vy@A=aFS}H?L`9ve5Z@v=L z^3RUkX>VHg3o?GD9LB%HYqyO!y_{f0q)ALw z*76gH9J0JetI$$z;n6IEQvsgc3W1g&8=$%ijG?>bM zbho-RhIyslPlGGg*R$r}4XtuSPhQOphp8Vcg72M)Y2*y8iGBE;uR+_$-%_;VA=5i? z58#lZ%bjI#F;9v_U7UlqZwW7&{7-sopzrYd_HOi{ywx=FEaS6hM{2*PlBNUP3#v#xo(=HwEF)0QLpYfy$}6b zJ>W!8sS5o>?!56Xl$@@Tt1&IRY!<0`f11}-_A5em+yadv#JEIia5;iW%gzPV$xlyfz4$%t_mXRZWkAhAH? zACRutl}2T6jLr3R@Bma3v0SR#VU9o7je ztJI-U#_GCnc81sk-8ggX%GfBoY;1Mi`eQyMeP=O`ahbFo-7GDgG^Ha{`!0B; zd{phmM0!UltIB>i>|CSf`sK6g&`aF>3~>{@$PWFJ8(%mEmYf8{}va ztdnugDHV^}UM;IC$o^Kx{fUD_O7;plqYiUf=~>pG9~^cgg7BkceO6@FwEfl_*q*0S+BQ zS5`ItnCQQclx_+TKcpO3>XiYXPgpw5BjWH&EY#eBG$&HIG1U!0H49<% zgR*0LPtSnQEO?=$!;l<&vt?cmzmM>p&=%j#)8O{%T&(kIHk38C=w zAumh9)=PNRQNPC$bYHe9^5@dyV1t`$-iiuJNWp8`NjtygGGpNdI7^8a-*L<(b_lnu z=$y=SWX&GerYZW-mi@dp)X&!8*2Jk-y`U_Ct4hPl&BglLhvwtwjgNuV$OF|G@!_MZ zI2Hu+(>mrR-{nZ)A%3iFvlLA`cn6(yh)a)!tTX(IE`S0LIGI+g6M&R!XGQ(B3{dOq~<%o=2zX-C{)h@9ez_r2!bP=b2OqdwA z3CQjsq#wQfH6oqbv2a8E5Sh%xO6JD&#-;UUbcKAN&b6RLK{el?I3>=mu|@BPeupZw zxt#PqxIAy-CAm#>6Ux+}Ig~!S3wR%v7YS2l3oP^FWcH*#ycad9>on~4Hn=}|(|9Bz zeGrf&xzv$2fkXD`UFlJj7FQ)t?G^X5F^QzR1Yh>w-P=L7z8vO{L=(Cusb!H+J2m z2RvUcbGz6Xx%R22ulv6(S(r|7~5-Pk@2nWdBrdNzu4_GIWveAm7avQu0BVQX)d>tm2D9QvnFO) zO~hy2^e)%Cwa8|LUFIE-WhFSk+qslY;CGvoI%;F9%-iFT{0oYl-C!p?u_oari)p49@{T4uR8a$<$%-{#RugVpq+*KqlqB$W_ zPWLih{@s8@`134-RK*aJhoY}qC7hTTA08piZ?qm-o`0Pj)e)J^2D=nJ;3fLsx5=CC zu6Nz-JUp}=Js#M(*tw(ME+0N^AqrBWR^1U8xksbYd!RZvSZ7DUc|C5_e>jY9sjDyf zbUcS_Etmai^=!wY3+d_)e>tp@%exCcYgF82MNwwm(v`zT_8x$0tEjacv6xR%j+MYb z!Jnz0t8}fG4H9C!lUB5oU65bZ^oms~M6cZwq$^1()iCDG2v_NqzN_bCl33EA7;^d7 z$~SHi(ofMG8MmJTn zgOO|-STHO!9!D5w1Ge*++3m_TjFeOk$4IA-WH1);0R@z3W}nQP-@6Oy)~ezRs4K&4LE6) zM4oNz*?^+{LLguae~na7c6Gli@^7*;$bT$||H4BcO&E*2?$&pl?f$=pXOaG8ync2B z1pn=6$M<&94j9xJAp|0H&Jz4-EYLs-Lq0i~1LV$u4vQ6wvHqgvzpmIziw@_XU*k>ZY+r z5g5}nc(H@mKZ8pM<;9GM4A|^MgENZh4@bcwyh8SGFqtq4jASPx|DTYL!CZ4lV&?Gy zi7xcn1*|~5{|%Hru9F_UFA5!uPzo(j#|}Kgr21Ut{}Uc4U4(%^UZB4n9o-$@zWI2N zMjqV#%jbaV1}HCC%*_8A-5)R~JSM1lT`YVc#)=9^{fH)u{zVOeEI9+#ubBX)VGb0K z2j|8G1`v1`1oE8&db^;2ZU3asgJo=rt+QIh=NaUc$i5 zl|M&78w`jJXrYZyJ~Be3qfy54gXo_RfQ%tVs7x$?Xy5~uhS*WjFgekd^@CwggT*0r zj!Y;X1YZ5G*K}vIj|E`b^TE)i&jEE4P>k9h6oA_RIz;s$`^|WeH62X-`DAD(p}+z? z^eFcYB`~o#5cmWHo?nYdDhlX@iBpKiAqXD?)`P1PJLmpl25OOA<^Q<$p^3QP3LV+(oW;u%$ovD_7M(EodP|psW_G2o%2+W>o6%hD>9a#H_(cJ`f;*FqA z7})H=*b0J&_-Zq7>7m@&kwfzZ3@}1TT7mQdb@X?E5k}}j8^F@a1~`mdxODa~`}+w7 f{+sdF5N!usTN#1ZBLt*k;6g3IXIy0a+5Gc)+RN_S%M7kRUqy%=QOMw-X22mO% zMf_iO`M>Yy-*e{7J$IhxnR{pM%$|4t7UOs3<5S&J#V4SHKuAa+_!(9zu~a;iCq2|D zcku=U0?~`TuEVg*yzQ~&fd}~)`ZFDb7H|+?`#uD&-xJ05)#pt}Nzb2*d|Nf}ECNL) z!Nvu+6EOg7UDSY$a19Q}ug*t|vu2oDh;SCWDiM_AguCZo(gvsz--NEY05QazNJlbS zgX*uG9UO~>YJo(5tXR|oA?!WA#04}e1?$lbKI^i3Q=WFV$m7FZ{Oioo&fKxpvmAC7 z!jDs>$0}pnY@xmAW*aN=x6Zd?-&Q!!Qr$XAW4F`=|0{fz|B9R*h>uq{vClZTov`-|I+fr)P`=h`#AEk?E5Az7-79E>a!c zHj21}Kf6P}@$lL9{jNt$N>g917-zOue4+6V9r>*#g}7+;oPy=x<{$aLZO!-WU8M^x zXGQRt#(sJRBnsMYc4>xl`cTEbpL!)fdQLP*;?WN}0T@4(mO&2eTbHGQljB!@q<3GJ z>${tV_1`i{q6fA_-BKK5;zFvP{`NJOyHc|m_GTX$+8uL{?LcObep&36e-hJX#o`)O zqY6slipfpWmTk)#vtfLnW?)0KIS)JNeobt79VT3b?lBJ zu@Xibzu&Q#_z{D|PwZ}7;L&X3!PKiTeD8EUTWHq)ebd#3Iv4_6iNHn9otBLNo-`rW z2Uru$;0B|VqM_K@`+7Ld&qN7)Y>#b8TIolv3Z;a}}|2pf~oqLfr42=1sne zET2I0OyuhN?IWFQZ|mNYJQE-2i&E!LMH0b%@&eGcdE(xCgyTJnPHzM5!PjYr>e=d+ zoKi0O4#>HB*_EuS`Lz3d{LIY8awVg}RCLXn-vcR^x=T&=tIqV!l80EYkGC2L!C@MI zk*QSDz(mJEgYu-jg}QA#=iQzjH3Ju;GSyT(q_lckS!w=$g(qjKdkOzUfO=2&U1Yx9 zc3CssJ+G%|=|aQT0%9ai4+LR}wSU&PDt)^@)qIqX8Nl?Y^{1qGI7c_8Ix2@B#;+ZG zcT)ED6c(*qX-%r~+>YrJj+C1>oc6BPdyZcC+DB9P)Y@?%pf123E#j9{p|O;opNn9* zyEl^I^vIZ!5ap4M?!;{)EltpAgcs;pY%rK_`8VZi;x^bS*;7#Cut zSVkwANr!mBuzyu)Q6j-LI?iQ1R81Szpw|2y(%9G&S_gC!r9Yw5HT5o4Se;VP1E&9x->(C3WkI zc3k8iZr`P16w~Om4Z6nI+r65w>tG4+m%YCLtt{4g&XSO*UvzHV!LpjaF06pJE@e*6 zy_w(T+@#u-;NR*;ypMY6E=8;f2}Cvw71Io76b7x;ua=3{O?xqH&Mpb&*1eR8GKCrO4oapi^M=gIK7eC%Ayli~JPA4cq^ z&Q)}NE_sR2{x$EeP0=+QCgXsNs853f9dK4Y*P%}1O$7ADceX*gTb2ehZ-7wr^Z5?N zta-M1g#WM3@Zo|Yg5e3Rb6x|JE}wcvR0i)>`YH;3X4^?$wp@#fI%)e#(a_bGclGWC;$tEIq9Ks1%QO z{s|o|T~k9z_a3@@RQfZ&qt5H&Y}#q(eMX0btI7(sT?n!~_AFQDOn9Y}2kxS%j9V55 zzd4N=$z5;0srQYqO*CZ;+3SH&Y#c4`&ZZQ zRKH~3*=|U?#gdoxCDqO*j4hQ(>y7^X+wI%z)EamBRsSqAdwO0k0 z1FiSss>NEIM!F^gy55o>BI#GM-y8PV<*JP3Ip5!t7M-Z;pUgjAD?p~CSZd`cdAt(u z)YAGUd0)0=*Fnk&5u%Twa26v;>@Ey?=5}C)7$)d zKmT{Z^pP}eY|%gjPa#>{M1rGwy7R7k*$=#@&iMg8osK3*%R1khxDcJ2E%jwVxr{#i zk8CC)^`|ID)29nc2zvVqCh{KXigf9gZ^XSkNS-Er*kEE?xSi*KTxv1wRaY{v=6{#> zLN=#haU4==Xgv5;^4pWtU1oEbMfitYycb6lbB_e(eXFQBSHnM*2y2_n9~I0Wpg!|C zMw7MpK5#zh^GUCs_cLa=k*thgCMA)7nEhpN@%!TCt-tK4P0C@J2F$LcW4Q_1OKRhT zqrVgGdsV@I^}53RG>|(9S+5=2Z#%CGq8)V^1teUU4I6Hl>hA?F_X=ohRj>WM=&f1# z3uE~)C;*=EvDddKSIBYx(ou=TTH(%|Ba?a$HM&ZXFPg zKia`q*vc{LB&n90eH`&?;WQbccQL=Z}vKG7VWQWKa_SjOBfy&SJl-K9Um=f=K{sEwDs z>!93PR2@uDn1qkQCNRBVrA}1Ugw=ip+)kNcF`Fd6_h{|Ypc?L+1!=3bc+FY z10CK+x9v(6x+7PM0-nGVhfLavGKOqwxJ9kJ;vzc84J24e>5&z6h@q+Tq(bKKO6Rp< zuE(2)VR~)Pl`?~sG~9M}6ZV$n{Xe=~pov;0bW&S)aPXy75V6q48^7|zOJjCoa|v2! zq9DmU)fl{z;V3mGC2zeZZS(NL8a{GG95;DsemjqQ;eNBs9^Ld@FecZ6;pdY}p2 zB=q0LSTb6C?YIB@)ET3i8Q@zLjoiy-BxdS(YjN)FJRKD$Dm`FGk?|MpI$jfv;-(QR zDqBWD{?@){`yWY#O%c`))lAuF&cL*Q*RxZM4STxlK>!;vQKZj;aHj>YHHw(I^wP&N zGmEANpL~d@XXzjA5h!dG_W`^=uH7*$f5K_1?|m3)lizCK;g8?)SbtuM;-#}MTkCT( zI}(B|sUsq`rD__Q#v?vq)HGb6H@Gx$IN3=wQ`IeOYrKD2{b+4rV~Mb7AzVC=6Xm9_ zYwpTJAv*7g)I_Z)b&GzAi@2oKpjQ8M4NhKfQ@`?uEyG;ofBeDC&gwat1^z z9FIcVBx3@oAL-}rXN_vEZ)=w(tS8gv8+1=GK7*Zv#(Q7 zckRSN#=Fr{GAT1I8kwpw9QWHQGt9Zqk#0+7IIWUQYqoKazLbxCgXoguGE_{gP=IE! z`Dx6EzeIFciL=lS4lAWsN-A9AwLiocKm~c(FtaoI`Lh>~|5;vo72x|_Od&MqisA&Z zPLq5A2eJ{!n7$sNxD`O~Cbf2JPnO)x4*&SN>>8_u@VdN`Vk;@K%kYWcmSS2r^p_j+ zR49FXpsSeWUnW<*%C3!lt*?Q)g&rFeug$-*l0|#6t~Wgq?i*9*iLO3cbN$Y5o>jcO zgL7=^#+l@j5~|Wt)xtigEFP8mHd&7) z@@p%MByXxd7&4bBjJnM8g8cOohL&WSpZ)zN^8rc7hQsiy0H%r;;nu;?*SVBM5pi#n zF2;W1dUIQALy6n?W;$z4StrkzKb>(ELBjq1@CD?|vt*9*L{{+_XSfq*yt+)zp-yFDfXsQH3CM>+S$F-VK688^(BeSCYvtI9=EL38S=acC=MlM zh{0I^n~gESA_xb9Yy`1JwNc_U6lY!a-#oRJTt^6TKJUjxI3LjDwTyF_zB<6eS&D5# zr`B^9lT+)GeJufQH2Ad~KF(^%%BR6u+|SrZa28AZ;3=cPJMI*BqZxW?J*fRejKe8J z9Yd*3BEB`uu=E2T0tqAs?nNQ0t%9ge=iyJ+J`GzwW%<-nirzT2Hl5;5=eZomcB)=t z6MCA|dWSjzquMhS;993F_pk&3_`E_)LRss#Ko35b(1PurDjt*$^6%RWkkTn}_HhQ7 z=#m^0CN-!_gVc21;bmxKHQX}C~z+M zUKo@O54a&r54iMl;(XCvFsL9I=;Hu;a&Q5+Dc7!*PS`!v5+6bx#~kHv1HcyYnN&@gD4$Ul=s6OjPM=+oeX zz(9jVv18>*6hLD)1vZc~Zw+Sxp%p(BI-O7y6mYl(`WOIUp{{L1K^%+pCRa_q&dq9ArVHmW{3aI?Z1-K3q z12;yPuv|0ht0UPUnV%Q}kvPN6w#9-s2iS1}ulr%p#0Q{{6*%Wc0m$@I;QT>@FsQRD z7W-~c94jhrW)qzUiYJA5IlPphUq80_{$6I|IacV{-`ZXTilE+y{fo z_yY2M%)otn?tcUpEJqQuAlU_6m}_SQwgRzXRlH^g)P``gh2+*S+R;EDXs{}H&wxdP zL9irlrY&%#CgQMU(II}E@9!rV^e6>j8CAsQr%*?-ClBV<1D=!1XM_gRu*A&)B4Em! z9&jE!U4D5`z$O#WXcjry60C@^uS-%q81{$r{~wKGHVEVb5T9`OEMPJOgWf8}3a1S5 zVafmApAg8EGZEY=!vZaXSWjlhf`#erpAdtK^bS1Q;%C6&RamfLI?c%<;c_({fk9_# zu>O-heVD=k)Q{kV>e?zilR%*&@L?>IzF)(pLjAWxAH2UI;4VVg&j>=>fujyiq5s~> kB;fP=$$!EBUjN{I@IOE8c3^Oni%RSyFmMaX+E2#*0}7s$OaK4? diff --git a/java-sdk/gradle/wrapper/gradle-wrapper.properties b/java-sdk/gradle/wrapper/gradle-wrapper.properties index 31764595..1d06d876 100644 --- a/java-sdk/gradle/wrapper/gradle-wrapper.properties +++ b/java-sdk/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 04 09:32:46 CEST 2017 +#Mon Aug 28 15:22:25 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip From 234d8066493e0f9f64e7cae92d38b83b204b4c3f Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Wed, 30 Aug 2017 12:10:50 +0200 Subject: [PATCH 5/7] Updated gradle version to 4.1 --- java-sdk/build.gradle | 2 +- java-sdk/gradle/wrapper/gradle-wrapper.jar | Bin 54783 -> 54708 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +-- java-sdk/gradlew | 6 +++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index defb8603..6b7479ef 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -114,6 +114,6 @@ subprojects { } task wrapper(type: Wrapper) { - gradleVersion = '3.5' + gradleVersion = '4.1' distributionType 'all' } diff --git a/java-sdk/gradle/wrapper/gradle-wrapper.jar b/java-sdk/gradle/wrapper/gradle-wrapper.jar index 2e42c380d4750b43bcebff00cbd682b4c443cfdf..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 100644 GIT binary patch delta 17061 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 Date: Thu, 31 Aug 2017 09:08:32 +0200 Subject: [PATCH 6/7] Bumped version --- java-sdk/README.md | 6 +++--- java-sdk/build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java-sdk/README.md b/java-sdk/README.md index 92b34160..0a95d799 100644 --- a/java-sdk/README.md +++ b/java-sdk/README.md @@ -9,13 +9,13 @@ repositories { dependencies { // Commons schemas (backend, passive remote monitoring app) - compile 'org.radarcns:radar-schemas-commons:0.1' + compile 'org.radarcns:radar-schemas-commons:0.2-alpha.2' // REST API schemas (REST API, testing) - compile 'org.radarcns:radar-schemas-restapi:0.1' + compile 'org.radarcns:radar-schemas-restapi:0.2-alpha.2' // Questionnaire schemas (active remote monitoring app) - compile 'org.radarcns:radar-schemas-questionnaire:0.1' + compile 'org.radarcns:radar-schemas-questionnaire:0.2-alpha.2' } ``` Usually, you only need to include the schemas you actually need in your dependencies. diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index 6b7479ef..e5c55434 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -15,7 +15,7 @@ subprojects { apply plugin: 'maven-publish' // Configuration - version = '0.2-alpha.2-SNAPSHOT' + version = '0.2-alpha.2' group = 'org.radarcns' ext.githubRepoName = 'RADAR-CNS/RADAR-Schemas' From 499902d88c1e46a5dd8a6cb31c3f30f97d09a206 Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Thu, 31 Aug 2017 09:18:42 +0200 Subject: [PATCH 7/7] Updated style guide --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ad2e56e..2e794eb1 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,12 @@ In addition, schemas in the `commons` directory should follow the following guid - Try to avoid abbreviations in the field names and write out the field name instead. - There should be no need to add `value` at the end of a field name. - Enumerator items should be written in uppercase characters separated by underscores. -- Add documentation (the `doc` property) to each schema and each field. The documentation should show in text what is being measured, how, and what units or ranges are applicable. Abbreviations and acronyms in the documentation should be written out. -- Prefer a categorical specification (an Avro enum) over a free string. This disambiguates the possible values for analysis. +- Add documentation (the `doc` property) to each schema, each field, and each enum. The documentation should show in text what is being measured, how, and what units or ranges are applicable. Abbreviations and acronyms in the documentation should be written out. +- Prefer a categorical specification (an Avro enum) over a free string if that categorization is expected to remain very stable. This disambiguates the possible values for analysis. If a field is expected to be extended outside this project or very often within this project, use a free string instead. - Prefer a flat record over a hierarchical record. This simplifies the organization of the data downstream, for example, when mapping to CSV. - Prefer written out fields to arrays. This simplifies the organization of the data downstream, for example, when mapping to CSV. - Give each schema a proper namespace, preferably `org.radarcns.deviceproducer` fully in lowercase, without any numbers, uppercase letters or symbols (except `.`). For the Empatica E4, the producer is Empatica, so the namespace is `org.radarcns.empatica`. For generic types, like a phone, Android Wear device or Android application, the namespace could just be `org.radarcns.phone`, `org.radarcns.wear`, or `org.radarcns.application`. - In the schema name, use upper camel case and name the device explicitly (for example, `EmpaticaE4Temperature`). +- For fields that are inherent to a record, and will never be removed or renamed, no default value is needed. For all other fields: + - if the type is an enum, use an `UNKNOWN` symbol as default value + - otherwise, set the type to a union of `["null", ]` and set the default value to `null`.