From 51315fc942e8c67855d1d158b46afef4aea8f170 Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Tue, 2 Oct 2018 18:03:45 +0200 Subject: [PATCH] GH#1480: Improve conversion of incoming NS-PS name. --- .../java/info/nightscout/androidaps/db/ProfileSwitch.java | 5 +++++ .../java/info/nightscout/utils/PercentageSplitter.java | 7 +++++-- .../java/info/nightscout/utils/PercentageSplitterTest.java | 7 ++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java b/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java index 0527864fd2..7c74e365a8 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java +++ b/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java @@ -101,6 +101,11 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface { return profile; } +/** Note: the name returned here is used as the PS name when uploading to NS. When such a PS is retrieved + * again from NS, the added parts must be removed again, see + * {@link info.nightscout.utils.PercentageSplitter#pureName} */ + // TODO refactor to remove this coupling; either move this to a renamed PercentageSplitter, e.g. + // ProfileSwitchNameConverter to convert in both directions, are add the pureName method here. public String getCustomizedName() { String name = profileName; if(LocalProfilePlugin.LOCAL_PROFILE.equals(name)){ diff --git a/app/src/main/java/info/nightscout/utils/PercentageSplitter.java b/app/src/main/java/info/nightscout/utils/PercentageSplitter.java index 40dfdf2455..5f019a07f0 100644 --- a/app/src/main/java/info/nightscout/utils/PercentageSplitter.java +++ b/app/src/main/java/info/nightscout/utils/PercentageSplitter.java @@ -9,11 +9,14 @@ import java.util.regex.Pattern; public class PercentageSplitter { // "Profile name (200%,2h)" - private static final Pattern percentagePattern = Pattern.compile("(.+)\\(\\d+%,\\d+h\\)"); + private static final Pattern percentagePattern = Pattern.compile("(.+)\\(\\d+%,-?\\d+h\\)"); // "Profile name (200%)" private static final Pattern percentageShiftPattern = Pattern.compile("(.+)\\(\\d+%\\)"); - /** Removes the suffix for percentage and timeshift from a profile name. */ + /** Removes the suffix for percentage and timeshift from a profile name. This is the inverse of what + * {@link info.nightscout.androidaps.db.ProfileSwitch#getCustomizedName()} does. + * Since the customized name is used for the PS upload to NS, this is needed get the original profile name + * when retrieving the PS from NS again. */ public static String pureName(String name) { Matcher percentageMatch = percentagePattern.matcher(name); if (percentageMatch.find()) { diff --git a/app/src/test/java/info/nightscout/utils/PercentageSplitterTest.java b/app/src/test/java/info/nightscout/utils/PercentageSplitterTest.java index 7fa7190d5a..087e21ae11 100644 --- a/app/src/test/java/info/nightscout/utils/PercentageSplitterTest.java +++ b/app/src/test/java/info/nightscout/utils/PercentageSplitterTest.java @@ -19,7 +19,12 @@ public class PercentageSplitterTest { } @Test - public void pureNameTestPercentageAndShift() { + public void pureNameTestPercentageAndPositiveTimeShift() { assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,2h)")); } + + @Test + public void pureNameTestPercentageAndNegtiveTimeShift() { + assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,-2h)")); + } }