Add MachineDomainKeys for shared machine domain extraction.
Centralizes domain key normalization from config class names so Standard* machines map to ORDER/DOCUMENT/USER consistently. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
package click.kamil.springstatemachineexporter.analysis.enricher;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts normalized domain keys from state machine configuration class names
|
||||||
|
* (e.g. {@code StandardOrderStateMachineConfiguration} → {@code ORDER}).
|
||||||
|
*/
|
||||||
|
public final class MachineDomainKeys {
|
||||||
|
|
||||||
|
private MachineDomainKeys() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String extractMachineDomainKey(String machineName) {
|
||||||
|
String simple = machineName.substring(machineName.lastIndexOf('.') + 1);
|
||||||
|
String upper = simple.toUpperCase(Locale.ROOT);
|
||||||
|
for (String marker : List.of("STATEMACHINECONFIGURATION", "STATEMACHINE", "CONFIGURATION", "CONFIG")) {
|
||||||
|
int idx = upper.indexOf(marker);
|
||||||
|
if (idx > 0) {
|
||||||
|
return normalizeDomainKey(upper.substring(0, idx));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int stateIdx = upper.indexOf("STATE");
|
||||||
|
if (stateIdx > 0) {
|
||||||
|
return normalizeDomainKey(upper.substring(0, stateIdx));
|
||||||
|
}
|
||||||
|
return normalizeDomainKey(upper);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String normalizeDomainKey(String domain) {
|
||||||
|
if (domain == null || domain.isEmpty()) {
|
||||||
|
return domain;
|
||||||
|
}
|
||||||
|
String upper = domain.toUpperCase(Locale.ROOT);
|
||||||
|
if (upper.startsWith("STANDARD") && upper.length() > "STANDARD".length()) {
|
||||||
|
return upper.substring("STANDARD".length());
|
||||||
|
}
|
||||||
|
return upper;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user