Skip to content

Commit 64b9b0f

Browse files
author
Satyam Saxena
committed
Merge branch 'weighted-ig-generation-formatter' of https://github.com/CyberDrudge/ranger into add-suffix-formatter
2 parents fb88bce + dea19d7 commit 64b9b0f

File tree

11 files changed

+57
-19
lines changed

11 files changed

+57
-19
lines changed

ranger-discovery-bundle/perf/results/io.appform.ranger.discovery.bundle.id.IdGeneratorPerfTest.testGenerate.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
"iterations" : 4,
55
"threads" : 1,
66
"forks" : 3,
7-
"mean_ops" : 823635.7718335792
7+
"mean_ops" : 824615.1373750888
88
}

ranger-discovery-bundle/perf/results/io.appform.ranger.discovery.bundle.id.IdGeneratorPerfTest.testGenerateBase36.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
"iterations" : 4,
55
"threads" : 1,
66
"forks" : 3,
7-
"mean_ops" : 655010.8023043653
7+
"mean_ops" : 668869.350006137
88
}

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/Base36IdFormatter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public Base36IdFormatter(IdFormatter idFormatter) {
3030
}
3131

3232
@Override
33-
public int getType() {
34-
return 1;
33+
public IdParserType getType() {
34+
throw new UnsupportedOperationException();
3535
}
3636

3737
@Override

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/DefaultIdFormatter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public class DefaultIdFormatter implements IdFormatter {
2929
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyMMddHHmmssSSS");
3030

3131
@Override
32-
public int getType() {
33-
return 0;
32+
public IdParserType getType() {
33+
return IdParserType.DEFAULT;
3434
}
3535

3636
@Override

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/IdFormatter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
public interface IdFormatter {
2424

25-
int getType();
25+
IdParserType getType();
2626

2727
String format(final DateTime dateTime,
2828
final int nodeId,

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/IdFormatters.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ public static IdFormatter original() {
2828
return originalIdFormatter;
2929
}
3030

31-
public static IdFormatter suffix() {
32-
return suffixIdFormatter;
33-
}
34-
3531
public static IdFormatter base36() {
3632
return base36IdFormatter;
3733
}
3834

35+
public static IdFormatter suffix() {
36+
return suffixIdFormatter;
37+
}
38+
3939
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.appform.ranger.discovery.bundle.id.formatter;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public enum IdParserType {
7+
DEFAULT (0),
8+
SUFFIX (11);
9+
10+
private final int value;
11+
12+
IdParserType(final int value) {
13+
this.value = value;
14+
}
15+
}

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/IdParsers.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,21 @@
2020
import lombok.extern.slf4j.Slf4j;
2121
import lombok.val;
2222

23+
import java.util.Map;
2324
import java.util.Optional;
2425
import java.util.regex.Pattern;
2526

27+
2628
@Slf4j
2729
@UtilityClass
2830
public class IdParsers {
2931
private static final int MINIMUM_ID_LENGTH = 22;
30-
private static final Pattern PATTERN = Pattern.compile("(.*)([0-9]{22})");
32+
private static final Pattern PATTERN = Pattern.compile("([A-Za-z]*)([0-9]{22})([0-9]{2})?(.*)");
33+
34+
private final Map<Integer, IdFormatter> parserRegistry = Map.of(
35+
IdFormatters.original().getType().getValue(), IdFormatters.original(),
36+
IdFormatters.suffix().getType().getValue(), IdFormatters.suffix()
37+
);
3138

3239
/**
3340
* Parse the given string to get ID
@@ -44,7 +51,18 @@ public Optional<Id> parse(final String idString) {
4451
if (!matcher.find()) {
4552
return Optional.empty();
4653
}
47-
return IdFormatters.original().parse(idString);
54+
55+
val parserType = matcher.group(3);
56+
if (parserType == null) {
57+
return IdFormatters.original().parse(idString);
58+
}
59+
60+
val parser = parserRegistry.get(Integer.parseInt(matcher.group(3)));
61+
if (parser == null) {
62+
log.warn("Could not parse idString {}, Invalid formatter type {}", idString, parserType);
63+
return Optional.empty();
64+
}
65+
return parser.parse(idString);
4866
} catch (Exception e) {
4967
log.warn("Could not parse idString {}", e.getMessage());
5068
return Optional.empty();

ranger-discovery-bundle/src/main/java/io/appform/ranger/discovery/bundle/id/formatter/SuffixIdFormatter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,19 @@
2525
import java.util.regex.Pattern;
2626

2727
public class SuffixIdFormatter implements IdFormatter {
28-
private static final int TYPE = 10;
2928
private static final Pattern PATTERN = Pattern.compile("([A-Za-z]*)([0-9]{15})([0-9]{4})([0-9]{3})([0-9]{2})([0-9]*)");
3029
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyMMddHHmmssSSS");
3130

3231
@Override
33-
public int getType() {
34-
return TYPE;
32+
public IdParserType getType() {
33+
return IdParserType.SUFFIX;
3534
}
3635

3736
@Override
3837
public String format(final DateTime dateTime,
3938
final int nodeId,
4039
final int randomNonce) {
41-
return String.format("%s%04d%03d%02d", DATE_TIME_FORMATTER.print(dateTime), nodeId, randomNonce, TYPE);
40+
return String.format("%s%04d%03d%02d", DATE_TIME_FORMATTER.print(dateTime), nodeId, randomNonce, getType().getValue());
4241
}
4342

4443
@Override

ranger-discovery-bundle/src/test/java/io/appform/ranger/discovery/bundle/id/IdGeneratorTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,13 +224,19 @@ void testParseSuccess() {
224224
id.getGeneratedDate());
225225
}
226226

227+
@Test
228+
void testParseFailAfterGeneration() {
229+
val generatedId = IdGenerator.generate("TEST123");
230+
val parsedId = IdGenerator.parse(generatedId.getId()).orElse(null);
231+
Assertions.assertNull(parsedId);
232+
}
233+
227234
@Test
228235
void testParseSuccessAfterGeneration() {
229236
val prefix = "TEST";
230237
val generatedId = IdGenerator.generate(prefix);
231238
val parsedId = IdGenerator.parse(generatedId.getId()).orElse(null);
232239
Assertions.assertNotNull(parsedId);
233-
Assertions.assertEquals(prefix, parsedId.getPrefix());
234240
Assertions.assertEquals(parsedId.getId(), generatedId.getId());
235241
Assertions.assertEquals(parsedId.getExponent(), generatedId.getExponent());
236242
Assertions.assertEquals(parsedId.getNode(), generatedId.getNode());

0 commit comments

Comments
 (0)