in doc-architect/doc-architect-core/src/main/java/com/docarchitect/core/generator/impl/SokratesGenerator.java [533:582]
private List<String> generatePathPatterns(Component comp, ArchitectureModel model) {
List<String> patterns = new ArrayList<>();
String baseName = comp.name()
.toLowerCase()
.replaceAll("[^a-z0-9]", "")
.replaceAll(SUFFIX_SERVICE + "$", "")
.replaceAll(SUFFIX_APPLICATION + "$", "")
.replaceAll(SUFFIX_API + "$", "");
// Add patterns based on component type
switch (comp.type()) {
case SERVICE, MODULE -> {
patterns.add("**/" + baseName + "/**");
patterns.add(PATTERN_SRC_MAIN_JAVA + "/" + baseName + "/**");
patterns.add(PATTERN_SRC + "/" + baseName + "/**");
}
case LIBRARY -> {
patterns.add("**/" + baseName + "/**");
patterns.add(PATTERN_LIB + "/" + baseName + "/**");
}
case DATABASE -> {
patterns.add(PATTERN_MIGRATIONS);
patterns.add(PATTERN_SCHEMA);
patterns.add(PATTERN_DB);
}
case API_GATEWAY -> {
patterns.add(PATTERN_GATEWAY);
patterns.add(PATTERN_API);
}
case MESSAGE_BROKER -> {
patterns.add(PATTERN_MESSAGING);
patterns.add(PATTERN_EVENTS);
}
default -> patterns.add("**/" + baseName + "/**");
}
// If repository is specified, add repository-based patterns
if (comp.repository() != null && !comp.repository().isEmpty()) {
String repoName = comp.repository().replaceAll(CHAR_SLASH, "").replaceAll("\\" + CHAR_GIT_SUFFIX + "$", "");
patterns.add(repoName + "/**");
}
// Fallback pattern
if (patterns.isEmpty()) {
patterns.add("**/*" + capitalize(baseName) + "*");
}
return patterns;
}