GH#1480: Improve conversion of incoming NS-PS name.

This commit is contained in:
Johannes Mockenhaupt 2018-10-02 18:03:45 +02:00
parent 9309729ca1
commit 51315fc942
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1
3 changed files with 16 additions and 3 deletions

View file

@ -101,6 +101,11 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
return profile; 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() { public String getCustomizedName() {
String name = profileName; String name = profileName;
if(LocalProfilePlugin.LOCAL_PROFILE.equals(name)){ if(LocalProfilePlugin.LOCAL_PROFILE.equals(name)){

View file

@ -9,11 +9,14 @@ import java.util.regex.Pattern;
public class PercentageSplitter { public class PercentageSplitter {
// "Profile name (200%,2h)" // "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%)" // "Profile name (200%)"
private static final Pattern percentageShiftPattern = Pattern.compile("(.+)\\(\\d+%\\)"); 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) { public static String pureName(String name) {
Matcher percentageMatch = percentagePattern.matcher(name); Matcher percentageMatch = percentagePattern.matcher(name);
if (percentageMatch.find()) { if (percentageMatch.find()) {

View file

@ -19,7 +19,12 @@ public class PercentageSplitterTest {
} }
@Test @Test
public void pureNameTestPercentageAndShift() { public void pureNameTestPercentageAndPositiveTimeShift() {
assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,2h)")); assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,2h)"));
} }
@Test
public void pureNameTestPercentageAndNegtiveTimeShift() {
assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,-2h)"));
}
} }