Skip to content

Commit

Permalink
make regex more explicit
Browse files Browse the repository at this point in the history
add platform string
  • Loading branch information
ubamrein committed Jun 24, 2020
1 parent 8c07b3e commit ef7ff1b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public DPPPTConfigController() {
//update message for various old builds
var appVersion = new Version(appversion);
if(!appVersion.isValid() || appVersion.isSmallerVersionThan(initialReleaseVersion)) {
config = generalUpdateRelease1(buildnr.toLowerCase().startsWith("ios"));
config = generalUpdateRelease1(appVersion.isIOS());
}
//if we have testflight builds suggest to switch to store version
if(testflightVersions.contains(buildnr)) {
Expand Down Expand Up @@ -166,14 +166,15 @@ private ConfigResponse generalUpdateRelease1(boolean isIos){
String appstoreUrl = isIos? "https://apps.apple.com/ch/app/id1509275381" : "https://play.google.com/store/apps/details?id=ch.admin.bag.dp3t";

String store = isIos? "App Store" : "Play Store";
String storeFr = isIos? "l'App Store" : "le Play Store";

InfoBox infoBoxde = new InfoBox();
infoBoxde.setMsg("Es ist eine neuere Version von SwissCovid verfügbar. Um die bestmögliche Funktionsweise der App zu erhalten, laden Sie die neuste Version vom " + store);
infoBoxde.setTitle("App-Update verfügbar");
infoBoxde.setUrlTitle("Aktualisieren");
infoBoxde.setUrl(appstoreUrl);
InfoBox infoBoxfr = new InfoBox();
infoBoxfr.setMsg("Une nouvelle version de SwissCovid est disponible. Afin que l'application fonctionne au mieux, téléchargez la dernière version sur " + store);
infoBoxfr.setMsg("Une nouvelle version de SwissCovid est disponible. Afin que l'application fonctionne au mieux, téléchargez la dernière version sur " + storeFr);
infoBoxfr.setTitle("Mise à jour disponible");
infoBoxfr.setUrlTitle("Mettre à jour");
infoBoxfr.setUrl(appstoreUrl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ public class Version implements Comparable<Version> {
private Integer patch;
private String preReleaseString = "";
private String metaInfo = "";
private String platform = "";

private final Pattern semVerPattern = Pattern.compile("(?<major>0|[1-9]\\d*)\\.(?<minor>0|[1-9]\\d*)\\.(?<patch>0|[1-9]\\d*)(?:-(?<prerelease>(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$");
private final Pattern semVerPattern = Pattern.compile("^(?:(?<platform>ios|android)-)?(?<major>0|[1-9]\\d*)\\.(?<minor>0|[1-9]\\d*)\\.(?<patch>0|[1-9]\\d*)(?:-(?<prerelease>(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$");

public Version() {
}
Expand All @@ -26,6 +27,9 @@ public Version(String versionString) {
this.major = Integer.parseInt(matches.group("major"));
this.minor = Integer.parseInt(matches.group("minor"));
this.patch = Integer.parseInt(matches.group("patch"));
if(matches.group("platform") != null) {
this.platform = matches.group("platform");
}
if(matches.group("prerelease") != null) {
this.preReleaseString = matches.group("prerelease");
}
Expand Down Expand Up @@ -105,6 +109,13 @@ public String getMetaInfo() {
public void setMetaInfo(String metaInfo) {
this.metaInfo = metaInfo;
}
public String getPlatform() {
return this.platform;
}

public void setPlatform(String platform) {
this.platform = platform;
}

public Version major(Integer major) {
this.major = major;
Expand Down Expand Up @@ -135,6 +146,13 @@ public boolean isPrerelease() {
return !preReleaseString.isEmpty();
}

public boolean isAndroid() {
return platform.contains("android") || metaInfo.contains("android");
}
public boolean isIOS() {
return platform.contains("ios") || metaInfo.contains("ios");
}

@Override
public boolean equals(Object o) {
if (o == this)
Expand All @@ -143,7 +161,7 @@ public boolean equals(Object o) {
return false;
}
Version version = (Version) o;
return Objects.equals(major, version.major) && Objects.equals(minor, version.minor) && Objects.equals(patch, version.patch) && Objects.equals(preReleaseString, version.preReleaseString) && Objects.equals(metaInfo, version.metaInfo);
return Objects.equals(major, version.major) && Objects.equals(minor, version.minor) && Objects.equals(patch, version.patch) && Objects.equals(preReleaseString, version.preReleaseString) && Objects.equals(metaInfo, version.metaInfo) && Objects.equals(platform, version.platform);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,26 @@ public void testVersionFromString() throws Exception {
var sameIosVersion = new Version("1.0.0+ios");
assertTrue( metaInfoVersion.equals(sameIosVersion));
}
// @Test
// public void testInvalidVersion() throws Exception {
// var invalid = new Version("ios-1.0.0");
// assertFalse(invalid.isValid());
// }
@Test
public void testPlatform() throws Exception {
var iosNonStandard = new Version("ios-1.0.0");
var iosStandard = new Version("1.0.0+ios");
assertTrue(iosNonStandard.isIOS());
assertTrue(iosStandard.isIOS());
assertFalse(iosNonStandard.isAndroid());
assertFalse(iosStandard.isAndroid());

var androidNonStandard = new Version("android-1.0.0");
var androidStandard = new Version("1.0.0+android");
assertFalse(androidNonStandard.isIOS());
assertFalse(androidStandard.isIOS());
assertTrue(androidNonStandard.isAndroid());
assertTrue(androidStandard.isAndroid());

var random = new Version("1.0.0");
assertFalse( random.isAndroid());
assertFalse( random.isIOS());
}
@Test
public void testVersionFromExplicit() throws Exception {
var cases = List.of(new Version(0,1,0),new Version(0,1,1),new Version(0,2,0),new Version(1,0,0,"prerelease", ""),new Version(1,0,0),new Version(1,0,1,"", "ios"));
Expand Down

0 comments on commit ef7ff1b

Please sign in to comment.