Skip to content

Commit 4c4ba84

Browse files
authored
Merge pull request #339 from eclipse-esmf/338-improve-aspect-model-performance
Improve performance
2 parents d79eaf8 + e5059ee commit 4c4ba84

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

.github/workflows/pull-request-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
- main
66
jobs:
77
build-test:
8-
runs-on: ubuntu-20.04
8+
runs-on: ubuntu-latest
99

1010
steps:
1111
- name: Checkout

.github/workflows/release-artifact.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
required: true
88
jobs:
99
build-and-release:
10-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-latest
1111

1212
steps:
1313
- name: Checkout

esmf-semantic-aspect-meta-model/src/main/java/org/eclipse/esmf/samm/KnownVersion.java

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,65 @@
1414
package org.eclipse.esmf.samm;
1515

1616
import java.util.Arrays;
17+
import java.util.Comparator;
1718
import java.util.List;
1819
import java.util.Optional;
1920

2021
/**
2122
* The known versions of the Aspect Meta Model
2223
*/
2324
public enum KnownVersion {
24-
SAMM_1_0_0,
25-
SAMM_2_0_0,
26-
SAMM_2_1_0,
27-
SAMM_2_2_0;
25+
SAMM_1_0_0( 1, 0, 0 ),
26+
SAMM_2_0_0( 2, 0, 0 ),
27+
SAMM_2_1_0( 2, 1, 0 ),
28+
SAMM_2_2_0( 2, 2, 0 );
29+
30+
private final int major;
31+
private final int minor;
32+
private final int patch;
33+
private final String versionString;
34+
35+
KnownVersion( int major, int minor, int patch ) {
36+
this.major = major;
37+
this.minor = minor;
38+
this.patch = patch;
39+
this.versionString = String.format( "%d.%d.%d", major, minor, patch );
40+
}
2841

2942
/**
3043
* Returns this version as a standard version string, e.g. 1.2.3
3144
*
3245
* @return version string representation
3346
*/
3447
public String toVersionString() {
35-
return toString().replaceFirst( "SAMM_(\\d+)_(\\d+)_(\\d+)", "$1.$2.$3" );
48+
return versionString;
3649
}
3750

3851
public static Optional<KnownVersion> fromVersionString( final String version ) {
39-
return Arrays.stream( KnownVersion.values() )
40-
.filter( value -> value.toVersionString().equals( version ) )
52+
return Arrays.stream( values() )
53+
.filter( v -> v.versionString.equals( version ) )
4154
.findAny();
4255
}
4356

4457
public static KnownVersion getLatest() {
45-
return Arrays.asList( KnownVersion.values() ).get( KnownVersion.values().length - 1 );
58+
return Arrays.stream( values() )
59+
.max( Comparator.comparingInt( KnownVersion::versionCode ) )
60+
.orElseThrow(); // Should never be empty
4661
}
4762

4863
public static List<KnownVersion> getVersions() {
49-
return Arrays.asList( values() );
64+
return List.of( values() );
65+
}
66+
67+
public boolean isNewerThan( final KnownVersion other ) {
68+
return this.versionCode() > other.versionCode();
5069
}
5170

52-
public boolean isNewerThan( final KnownVersion otherVersion ) {
53-
return toVersionString().compareTo( otherVersion.toVersionString() ) > 0;
71+
public boolean isOlderThan( final KnownVersion other ) {
72+
return this.versionCode() < other.versionCode();
5473
}
5574

56-
public boolean isOlderThan( final KnownVersion otherVersion ) {
57-
return toVersionString().compareTo( otherVersion.toVersionString() ) < 0;
75+
private int versionCode() {
76+
return major * 1_000_000 + minor * 1_000 + patch;
5877
}
5978
}

0 commit comments

Comments
 (0)