Fix name of incoming profile from NS with timeshift/percentage.

This commit is contained in:
Johannes Mockenhaupt 2018-06-25 11:53:11 +02:00
parent c177c2f620
commit e4a72c8175
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1
3 changed files with 27 additions and 16 deletions

View file

@ -103,14 +103,11 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
if(LocalProfilePlugin.LOCAL_PROFILE.equals(name)){
name = DecimalFormatter.to2Decimal(getProfileObject().percentageBasalSum()) + "U ";
}
//Test if name is already containing percentage or timeshift
if (!name.endsWith("h)") || !name.endsWith("%)")) {
if (isCPP) {
name += "(" + percentage + "%";
if (timeshift != 0)
name += "," + timeshift + "h";
name += ")";
}
if (isCPP) {
name += "(" + percentage + "%";
if (timeshift != 0)
name += "," + timeshift + "h";
name += ")";
}
return name;
}

View file

@ -8,14 +8,23 @@ import java.util.regex.Pattern;
*/
public class PercentageSplitter {
// "Profile name (200%,2h)"
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. */
public static String pureName(String name) {
String newName = name;
String s = "(.*)\\((\\d+)\\%\\)";
Pattern r = Pattern.compile(s);
Matcher m = r.matcher(name);
if (m.find()) {
newName = m.group(1);
Matcher percentageMatch = percentagePattern.matcher(name);
if (percentageMatch.find()) {
return percentageMatch.group(1).trim();
}
return newName;
Matcher percentageShiftMatch = percentageShiftPattern.matcher(name);
if (percentageShiftMatch.find()) {
return percentageShiftMatch.group(1).trim();
}
return name;
}
}

View file

@ -14,7 +14,12 @@ public class PercentageSplitterTest {
}
@Test
public void pureNameTest() throws Exception {
public void pureNameTestPercentageOnly() {
assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp(101%)"));
}
@Test
public void pureNameTestPercentageAndShift() {
assertEquals("Fiasp", PercentageSplitter.pureName("Fiasp (101%,2h)"));
}
}