@@ -35,42 +35,51 @@ public PulseResponseCreateDTO get(
3535 final ObjectMapper mapper = new ObjectMapper ();
3636 final Map <String , Object > map =
3737 mapper .readValue (body , new TypeReference <>() {});
38- final Map <String , Object > view =
39- (Map <String , Object >)map .get ("view" );
40- final Map <String , Object > state =
41- (Map <String , Object >)view .get ("state" );
42- final Map <String , Object > values =
43- (Map <String , Object >)state .get ("values" );
44-
45- dumpMap (values , "" );
46-
47- // Create the pulse DTO and fill in the values.
48- PulseResponseCreateDTO response = new PulseResponseCreateDTO ();
49- response .setTeamMemberId (lookupUser (memberProfileServices , map ));
50- response .setSubmissionDate (LocalDate .now ());
51-
52- // Internal Score
53- Map <String , Object > internalBlock =
54- (Map <String , Object >)values .get ("internalNumber" );
55- response .setInternalScore (Integer .parseInt (getMappedValue (
56- internalBlock , "internalScore" , "selected_option" , true )));
57- // Internal Feelings
58- response .setInternalFeelings (getMappedValue (
59- values , "internaltext" , "internalFeelings" , false ));
60-
61- // External Score
62- Map <String , Object > externalBlock =
63- (Map <String , Object >)values .get ("externalNumber" );
64- String score = getMappedValue (externalBlock , "externalScore" ,
65- "selected_option" , false );
66- if (score != null && !score .isEmpty ()) {
67- response .setExternalScore (Integer .parseInt (score ));
38+ final String type = (String )map .get ("type" );
39+
40+ if (type .equals ("view_submission" )) {
41+ final Map <String , Object > view =
42+ (Map <String , Object >)map .get ("view" );
43+ final Map <String , Object > state =
44+ (Map <String , Object >)view .get ("state" );
45+ final Map <String , Object > values =
46+ (Map <String , Object >)state .get ("values" );
47+
48+ dumpMap (values , "" );
49+
50+ // Create the pulse DTO and fill in the values.
51+ PulseResponseCreateDTO response = new PulseResponseCreateDTO ();
52+ response .setTeamMemberId (lookupUser (memberProfileServices , map ));
53+ response .setSubmissionDate (LocalDate .now ());
54+
55+ // Internal Score
56+ Map <String , Object > internalBlock =
57+ (Map <String , Object >)values .get ("internalNumber" );
58+ response .setInternalScore (Integer .parseInt (getMappedValue (
59+ internalBlock , "internalScore" , "selected_option" , true )));
60+ // Internal Feelings
61+ response .setInternalFeelings (getMappedValue (
62+ values , "internaltext" , "internalFeelings" , false ));
63+
64+ // External Score
65+ Map <String , Object > externalBlock =
66+ (Map <String , Object >)values .get ("externalNumber" );
67+ String score = getMappedValue (externalBlock , "externalScore" ,
68+ "selected_option" , false );
69+ if (score != null && !score .isEmpty ()) {
70+ response .setExternalScore (Integer .parseInt (score ));
71+ }
72+ // External Feelings
73+ response .setExternalFeelings (getMappedValue (
74+ values , "externalText" , "externalFeelings" , false ));
75+
76+ return response ;
77+ } else {
78+ // If it's not a view submission, we need to return null so
79+ // the the caller knows that this is not the full pulse
80+ // response.
81+ return null ;
6882 }
69- // External Feelings
70- response .setExternalFeelings (getMappedValue (
71- values , "externalText" , "externalFeelings" , false ));
72-
73- return response ;
7483 } catch (JsonProcessingException ex ) {
7584 LOG .error (ex .getMessage ());
7685 throw new BadArgException (ex .getMessage ());
@@ -83,12 +92,12 @@ public PulseResponseCreateDTO get(
8392 private String getMappedValue (Map <String , Object > map , String key1 ,
8493 String key2 , boolean required ) {
8594 final String valueKey = "value" ;
86- if (map .containsKey (key1 )) {
95+ if (map != null && map .containsKey (key1 )) {
8796 Map <String , Object > firstMap = (Map <String , Object >)map .get (key1 );
88- if (firstMap .containsKey (key2 )) {
97+ if (firstMap != null && firstMap .containsKey (key2 )) {
8998 final Map <String , Object > secondMap =
9099 (Map <String , Object >)firstMap .get (key2 );
91- if (secondMap .containsKey (valueKey )) {
100+ if (secondMap != null && secondMap .containsKey (valueKey )) {
92101 return (String )secondMap .get (valueKey );
93102 }
94103 }
@@ -100,7 +109,7 @@ private String getMappedValue(Map<String, Object> map, String key1,
100109 String .format ("Expected %s.%s.%s was not found" ,
101110 key1 , key2 , valueKey ));
102111 } else {
103- return "" ;
112+ return null ;
104113 }
105114 }
106115
0 commit comments