Skip to content

Commit

Permalink
Refactor getRandomHydrateBreakMessageForPersonality method (#378)
Browse files Browse the repository at this point in the history
* convert switch case to hashmap

* code quality improvements

* code quality improvements

* code quality improvements
  • Loading branch information
hpa16 authored Oct 30, 2022
1 parent 480d205 commit b80746d
Showing 1 changed file with 29 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadLocalRandom;

import com.hydratereminder.HydrateReminderPersonalityType;
Expand Down Expand Up @@ -308,6 +310,28 @@ public class HydrateBreakMessageDictionary {
}}
);

/**
* Mapping of {@link HydrateReminderPersonalityType} to the corresponding
* Hydrate Reminder interval break text to be displayed
*/
private static final Map<HydrateReminderPersonalityType, List<String>> HYDRATE_REMINDER_PERSONALITY_MAP;
static {
final Map<HydrateReminderPersonalityType, List<String>> mutableMap = new ConcurrentHashMap<>();
mutableMap.put(HydrateReminderPersonalityType.SIMPLE, HYDRATE_BREAK_SIMPLE_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.FUN, HYDRATE_BREAK_FUNNY_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.CARING, HYDRATE_BREAK_CARING_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.ROMANTIC, HYDRATE_BREAK_ROMANTIC_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.POLITE, HYDRATE_BREAK_POLITE_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.NERDY, HYDRATE_BREAK_NERDY_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.PIRATE, HYDRATE_BREAK_PIRATE_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.WIZARD, HYDRATE_BREAK_WIZARD_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.MOTIVATIONAL, HYDRATE_BREAK_MOTIVATIONAL_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.AGGRESSIVE, HYDRATE_BREAK_AGGRESSIVE_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.SANTA, HYDRATE_BREAK_SANTA_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.KAWAII, HYDRATE_BREAK_KAWAII_TEXT_LIST);
mutableMap.put(HydrateReminderPersonalityType.HYPE, HYDRATE_BREAK_HYPE_TEXT_LIST);
HYDRATE_REMINDER_PERSONALITY_MAP = Collections.unmodifiableMap(mutableMap);
}

private static String getRandomBreakMessage(List<String> hydrateBreakTextList)
{
Expand All @@ -319,52 +343,11 @@ private static String getRandomBreakMessage(List<String> hydrateBreakTextList)
public static String getRandomHydrateBreakMessageForPersonality(HydrateReminderPersonalityType personalityType)
{
String breakMessage;
switch (personalityType)
{
case SIMPLE:
breakMessage = HYDRATE_BREAK_SIMPLE_TEXT_LIST.get(0);
break;
case FUN:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_FUNNY_TEXT_LIST);
break;
case CARING:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_CARING_TEXT_LIST);
break;
case ROMANTIC:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_ROMANTIC_TEXT_LIST);
break;
case POLITE:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_POLITE_TEXT_LIST);
break;
case NERDY:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_NERDY_TEXT_LIST);
break;
case PIRATE:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_PIRATE_TEXT_LIST);
break;
case WIZARD:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_WIZARD_TEXT_LIST);
break;
case MOTIVATIONAL:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_MOTIVATIONAL_TEXT_LIST);
break;
case AGGRESSIVE:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_AGGRESSIVE_TEXT_LIST);
break;
case SANTA:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_SANTA_TEXT_LIST);
break;
case KAWAII:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_KAWAII_TEXT_LIST);
break;
case HYPE:
breakMessage = getRandomBreakMessage(HYDRATE_BREAK_HYPE_TEXT_LIST);
break;
case RANDOM:
breakMessage = getRandomPersonalityMessage();
break;
default:
throw new IllegalStateException("Provided personality type is not supported");
if (personalityType == HydrateReminderPersonalityType.RANDOM) {
breakMessage = getRandomPersonalityMessage();
}
else {
breakMessage = getRandomBreakMessage(HYDRATE_REMINDER_PERSONALITY_MAP.get(personalityType));
}
return breakMessage;
}
Expand Down

0 comments on commit b80746d

Please sign in to comment.