Skip to content
Snippets Groups Projects
Commit 554e650a authored by René Schöne's avatar René Schöne
Browse files

WIP: type-level inclusion/exclusion - prepare frontend.

parent da2f1f42
No related branches found
No related tags found
No related merge requests found
aspect GenerationCommon {
// --- find{In,Ex}cludePatternCollection ---
syn PatternCollection BuildConfig.findIncludePatternCollection(String typeRegex) {
for (TypePatternCollectionMapping mapping : getIncludeTypePatternList()) {
if (mapping.getTypeRegex().equals(typeRegex)) {
return mapping.getPatternCollection();
}
}
return null;
}
syn PatternCollection BuildConfig.findExcludePatternCollection(String typeRegex) {
for (TypePatternCollectionMapping mapping : getExcludeTypePatternList()) {
if (mapping.getTypeRegex().equals(typeRegex)) {
return mapping.getPatternCollection();
}
}
return null;
}
}
...@@ -94,10 +94,10 @@ public class DumpBuilder { ...@@ -94,10 +94,10 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder disableTypes(String... regexes) { public DumpBuilder disableTypes(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getTypeIgnorePattern(), updateRegexes(() -> buildConfig.getTypeIgnorePattern(),
s -> buildConfig.setTypeIgnorePattern(s), s -> buildConfig.setTypeIgnorePattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
...@@ -109,60 +109,100 @@ public class DumpBuilder { ...@@ -109,60 +109,100 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder excludeTokens(String... regexes) { public DumpBuilder excludeTokens(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getTokenPattern(), updateRegexes(() -> buildConfig.getGlobalPatternCollection().getTokenPattern(),
s -> buildConfig.getGlobalPatternCollection().setTokenPattern(s), s -> buildConfig.getGlobalPatternCollection().setTokenPattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder excludeTokensFor(String typeRegex, String... regexes) { public DumpBuilder excludeTokensFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getTokenPattern(),
s -> collection.setTokenPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder excludeChildrenFor(String typeRegex, String... regexes) { public DumpBuilder excludeChildrenFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getChildPattern(),
s -> collection.setChildPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder excludeRelationsFor(String typeRegex, String... regexes) { public DumpBuilder excludeRelationsFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getRelationPattern(),
s -> collection.setRelationPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder excludeAttributesFor(String typeRegex, String... regexes) { public DumpBuilder excludeAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getAttributePattern(),
s -> collection.setAttributePattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder excludeNonterminalAttributesFor(String typeRegex, String... regexes) { public DumpBuilder excludeNonterminalAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getNonterminalAttributePattern(),
s -> collection.setNonterminalAttributePattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder includeTokensFor(String typeRegex, String... regexes) { public DumpBuilder includeTokensFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getTokenPattern(),
s -> collection.setTokenPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder includeChildrenFor(String typeRegex, String... regexes) { public DumpBuilder includeChildrenFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getChildPattern(),
s -> collection.setChildPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder includeRelationsFor(String typeRegex, String... regexes) { public DumpBuilder includeRelationsFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getRelationPattern(),
s -> collection.setRelationPattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder includeAttributesFor(String typeRegex, String... regexes) { public DumpBuilder includeAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getAttributePattern(),
s -> collection.setAttributePattern(s),
regex, moreRegexes);
return this; return this;
} }
/** TODO: document, implement, sort */ /** TODO: document, implement, sort */
public DumpBuilder includeNonterminalAttributesFor(String typeRegex, String... regexes) { public DumpBuilder includeNonterminalAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getNonterminalAttributePattern(),
s -> collection.setNonterminalAttributePattern(s),
regex, moreRegexes);
return this; return this;
} }
...@@ -174,10 +214,10 @@ public class DumpBuilder { ...@@ -174,10 +214,10 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder includeAttributes(String... regexes) { public DumpBuilder includeAttributes(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getAttributePattern(), updateRegexes(() -> buildConfig.getGlobalPatternCollection().getAttributePattern(),
s -> buildConfig.getGlobalPatternCollection().setAttributePattern(s), s -> buildConfig.getGlobalPatternCollection().setAttributePattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
...@@ -193,10 +233,10 @@ public class DumpBuilder { ...@@ -193,10 +233,10 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder includeNonterminalAttributes(String... regexes) { public DumpBuilder includeNonterminalAttributes(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getNonterminalAttributePattern(), updateRegexes(() -> buildConfig.getGlobalPatternCollection().getNonterminalAttributePattern(),
s -> buildConfig.getGlobalPatternCollection().setNonterminalAttributePattern(s), s -> buildConfig.getGlobalPatternCollection().setNonterminalAttributePattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
...@@ -209,10 +249,10 @@ public class DumpBuilder { ...@@ -209,10 +249,10 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder excludeChildren(String... regexes) { public DumpBuilder excludeChildren(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getChildPattern(), updateRegexes(() -> buildConfig.getGlobalPatternCollection().getChildPattern(),
s -> buildConfig.getGlobalPatternCollection().setChildPattern(s), s -> buildConfig.getGlobalPatternCollection().setChildPattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
/** /**
...@@ -225,20 +265,45 @@ public class DumpBuilder { ...@@ -225,20 +265,45 @@ public class DumpBuilder {
* @return this * @return this
* @see java.util.regex.Pattern#compile(java.lang.String) * @see java.util.regex.Pattern#compile(java.lang.String)
*/ */
public DumpBuilder excludeRelations(String... regexes) { public DumpBuilder excludeRelations(String regex, String... moreRegexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getRelationPattern(), updateRegexes(() -> buildConfig.getGlobalPatternCollection().getRelationPattern(),
s -> buildConfig.getGlobalPatternCollection().setRelationPattern(s), s -> buildConfig.getGlobalPatternCollection().setRelationPattern(s),
regexes); regex, moreRegexes);
return this; return this;
} }
private void updateRegexes(java.util.function.Supplier<String> getter, java.util.function.Consumer<String> setter, String... values) { private PatternCollection findOrCreateIncludePatternCollection(String typeRegex) {
for (String value : values) { PatternCollection result = buildConfig.findIncludePatternCollection(typeRegex);
if (result == null) {
TypePatternCollectionMapping mapping = new TypePatternCollectionMapping();
mapping.setTypeRegex(typeRegex);
result = new PatternCollection();
mapping.setPatternCollection(result);
buildConfig.addIncludeTypePattern(mapping);
}
return result;
}
private PatternCollection findOrCreateExcludePatternCollection(String typeRegex) {
PatternCollection result = buildConfig.findExcludePatternCollection(typeRegex);
if (result == null) {
TypePatternCollectionMapping mapping = new TypePatternCollectionMapping();
mapping.setTypeRegex(typeRegex);
result = new PatternCollection();
mapping.setPatternCollection(result);
buildConfig.addExcludeTypePattern(mapping);
}
return result;
}
private void updateRegexes(java.util.function.Supplier<String> getter, java.util.function.Consumer<String> setter, String regex, String... moreRegexes) {
if (getter.get().isEmpty()) { if (getter.get().isEmpty()) {
setter.accept(value); setter.accept(regex);
} else { } else {
setter.accept(getter.get() + "|" + value); setter.accept(getter.get() + "|" + regex);
} }
for (String value : moreRegexes) {
setter.accept(getter.get() + "|" + value);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment