return Geo.geoContains(value); case "textContains": return Text.textContains(value); case "textContainsFuzzy": return Text.textContainsFuzzy(value); case "textContainsPrefix": return Text.textContainsPrefix(value); case "textContainsRegex": return Text.textContainsRegex(value); case "textFuzzy": return Text.textFuzzy(value); case "textPrefix": return Text.textPrefix(value); case "textRegex": return Text.textRegex(value); default: return (P) P.class.getMethod(predicate, Object.class).invoke(null, value);
@Override public boolean evaluateRaw(String value, String regex) { for (String token : tokenize(value.toLowerCase())) { if (REGEX.evaluateRaw(token,regex)) return true; } return false; }
public void preevaluate(Object value, Object condition) { Preconditions.checkArgument(this.isValidCondition(condition), "Invalid condition provided: %s", condition); if (!(value instanceof String)) log.debug("Value not a string: " + value); }
private Set<String> findTagsFromFileClassificationsAndHints(FileModel fileModel) { Set<String> tags = new HashSet<>(); // Classifications { GraphTraversal<Vertex, Vertex> pipeline = new GraphTraversalSource(context.getGraph()).V(fileModel.getElement()); pipeline.in(ClassificationModel.FILE_MODEL).has(WindupVertexFrame.TYPE_PROP, Text.textContains(ClassificationModel.TYPE)); FramedVertexIterable<ClassificationModel> iterable = new FramedVertexIterable<>(this.context.getFramed(), pipeline.toList(), ClassificationModel.class); for (ClassificationModel classification : iterable) tags.addAll(classification.getTags()); } // Hints { GraphTraversal<Vertex, Vertex> pipeline = new GraphTraversalSource(context.getGraph()).V(fileModel.getElement()); pipeline.in(FileLocationModel.FILE_MODEL).has(WindupVertexFrame.TYPE_PROP, Text.textContains(FileLocationModel.TYPE)); pipeline.in(InlineHintModel.FILE_LOCATION_REFERENCE).has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE)); FramedVertexIterable<InlineHintModel> iterable = new FramedVertexIterable<>(this.context.getFramed(), pipeline.toList(), InlineHintModel.class); for(InlineHintModel hint : iterable) tags.addAll(hint.getTags()); } return tags; } }
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { pipeline.out(FileReferenceModel.FILE_MODEL).in(FileReferenceModel.FILE_MODEL) .has(JavaTypeReferenceModel.RESOLVED_SOURCE_SNIPPIT, Text.textRegex(compiledPattern.toString())); } });
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { switch (searchType) { case EQUALS: pipeline.has(this.propertyName, this.searchValue); break; case NOT_EQUALS: pipeline.has(this.propertyName, P.neq(this.searchValue)); break; case CONTAINS_TOKEN: pipeline.has(this.propertyName, Text.textContains(searchValue)); break; case CONTAINS_ANY_TOKEN: pipeline.has(this.propertyName, new P(new MultipleValueTitanPredicate(), searchValue)); break; case REGEX: pipeline.has(this.propertyName, Text.textRegex(searchValue)); break; case DEFINED: pipeline.has(this.propertyName); break; case NOT_DEFINED: pipeline.hasNot(this.propertyName); break; default: throw new IllegalArgumentException("Unrecognized property query type: " + searchType); } }
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE)); .has(WindupVertexFrame.TYPE_PROP, Text.textContains(JavaTypeReferenceModel.TYPE)); pipeline.select("inlineHintVertex");
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { pipeline.out(FileReferenceModel.FILE_MODEL).in(FileReferenceModel.FILE_MODEL) .has(JavaTypeReferenceModel.RESOLVED_SOURCE_SNIPPIT, Text.textRegex(compiledPattern.toString())); } });
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { switch (searchType) { case EQUALS: pipeline.has(this.propertyName, this.searchValue); break; case NOT_EQUALS: pipeline.has(this.propertyName, P.neq(this.searchValue)); break; case CONTAINS_TOKEN: pipeline.has(this.propertyName, Text.textContains(searchValue)); break; case CONTAINS_ANY_TOKEN: pipeline.has(this.propertyName, new P(new MultipleValueTitanPredicate(), searchValue)); break; case REGEX: pipeline.has(this.propertyName, Text.textRegex(searchValue)); break; case DEFINED: pipeline.has(this.propertyName); break; case NOT_DEFINED: pipeline.hasNot(this.propertyName); break; default: throw new IllegalArgumentException("Unrecognized property query type: " + searchType); } }
private Set<String> findTagsFromFileClassificationsAndHints(FileModel fileModel) { Set<String> tags = new HashSet<>(); // Classifications { GraphTraversal<Vertex, Vertex> pipeline = new GraphTraversalSource(context.getGraph()).V(fileModel.getElement()); pipeline.in(ClassificationModel.FILE_MODEL).has(WindupVertexFrame.TYPE_PROP, Text.textContains(ClassificationModel.TYPE)); FramedVertexIterable<ClassificationModel> iterable = new FramedVertexIterable<>(this.context.getFramed(), pipeline.toList(), ClassificationModel.class); for (ClassificationModel classification : iterable) tags.addAll(classification.getTags()); } // Hints { GraphTraversal<Vertex, Vertex> pipeline = new GraphTraversalSource(context.getGraph()).V(fileModel.getElement()); pipeline.in(FileLocationModel.FILE_MODEL).has(WindupVertexFrame.TYPE_PROP, Text.textContains(FileLocationModel.TYPE)); pipeline.in(InlineHintModel.FILE_LOCATION_REFERENCE).has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE)); FramedVertexIterable<InlineHintModel> iterable = new FramedVertexIterable<>(this.context.getFramed(), pipeline.toList(), InlineHintModel.class); for(InlineHintModel hint : iterable) tags.addAll(hint.getTags()); } return tags; } }
public List<FileModel> findArchiveEntryWithExtension(String... values) { // build regex if (values.length == 0) return Collections.emptyList(); final String regex; if (values.length == 1) { regex = ".+\\." + values[0] + "$"; } else { StringBuilder builder = new StringBuilder(); builder.append("\\b("); for (String value : values) { builder.append("|"); builder.append(value); } builder.append(")\\b"); regex = ".+\\." + builder.toString() + "$"; } return (List<FileModel>)getGraphContext().getQuery(FileModel.class).traverse(g -> g.has("filePath", Text.textRegex(regex))) .toList(FileModel.class); } }
@Override public boolean evaluateRaw(String value, String prefix) { for (String token : tokenize(value.toLowerCase())) { if (PREFIX.evaluateRaw(token,prefix.toLowerCase())) return true; } return false; }
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE)); .has(WindupVertexFrame.TYPE_PROP, Text.textContains(JavaTypeReferenceModel.TYPE)); pipeline.select("inlineHintVertex");
public List<FileModel> findArchiveEntryWithExtension(String... values) { // build regex if (values.length == 0) return Collections.emptyList(); final String regex; if (values.length == 1) { regex = ".+\\." + values[0] + "$"; } else { StringBuilder builder = new StringBuilder(); builder.append("\\b("); for (String value : values) { builder.append("|"); builder.append(value); } builder.append(")\\b"); regex = ".+\\." + builder.toString() + "$"; } return (List<FileModel>)getGraphContext().getQuery(FileModel.class).traverse(g -> g.has("filePath", Text.textRegex(regex))) .toList(FileModel.class); } }
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE));
@Override public Iterable<T> findAllByPropertyMatchingRegex(final String key, final String... regex) { return ExecutionStatistics.performBenchmarked("GraphService.findAllByPropertyMatchingRegex(" + key + ")", () -> { if (regex.length == 0) return IterablesUtil.emptyIterable(); final String regexFinal; if (regex.length == 1) { regexFinal = regex[0]; } else { StringBuilder builder = new StringBuilder(); builder.append("\\b("); int i = 0; for (String value : regex) { if (i > 0) builder.append("|"); builder.append(value); i++; } builder.append(")\\b"); regexFinal = builder.toString(); } return (List<T>)findAllQuery().traverse(g -> g.has(key, Text.textRegex(regexFinal))).toList(type); }); }
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.textContains(InlineHintModel.TYPE));
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { pipeline.as("result") .out(FileReferenceModel.FILE_MODEL) .out(JavaSourceFileModel.JAVA_CLASS_MODEL) .has(JavaClassModel.QUALIFIED_NAME, Text.textRegex(compiledTypeFilterPattern.pattern())) .select("result"); } }
/** * Return an {@link Iterable} containing all {@link TechnologyTagModel}s that are directly associated with the provided {@link ProjectModel}. */ public Iterable<TechnologyTagModel> findTechnologyTagsForProject(ProjectModelTraversal traversal) { Set<TechnologyTagModel> results = new TreeSet<>(new DefaultTechnologyTagComparator()); GraphTraversal<Vertex, Vertex> pipeline = new GraphTraversalSource(getGraphContext().getGraph()).V(traversal.getCanonicalProject().getElement()); pipeline.out(ProjectModel.PROJECT_MODEL_TO_FILE); pipeline.in(TechnologyTagModel.TECH_TAG_TO_FILE_MODEL).has(WindupVertexFrame.TYPE_PROP, Text.textContains(TechnologyTagModel.TYPE)); Iterable<TechnologyTagModel> modelIterable = new FramedVertexIterable<>(getGraphContext().getFramed(), pipeline.toList(), TechnologyTagModel.class); results.addAll(Iterators.asSet(modelIterable)); for (ProjectModelTraversal childTraversal : traversal.getChildren()) { results.addAll(Iterators.asSet(findTechnologyTagsForProject(childTraversal))); } return results; } }
@Override public void query(GraphRewrite event, GraphTraversal<?, Vertex> pipeline) { pipeline.as("result") .out(FileReferenceModel.FILE_MODEL) .out(JavaSourceFileModel.JAVA_CLASS_MODEL) .has(JavaClassModel.QUALIFIED_NAME, Text.textRegex(compiledTypeFilterPattern.pattern())) .select("result"); } }