use of org.onebusaway.gtfs_transformer.match.PropertyAnyValueEntityMatch in project onebusaway-gtfs-modules by OneBusAway.
the class TransformFactory method getMatch.
private TypedEntityMatch getMatch(String line, JSONObject json) throws JSONException, TransformSpecificationException {
if (!json.has(ARG_MATCH)) {
throw new TransformSpecificationMissingArgumentException(line, ARG_MATCH);
}
JSONObject match = json.getJSONObject(ARG_MATCH);
if (match.has(ARG_COLLECTION)) {
return getCollectionMatch(line, match.getString(ARG_COLLECTION), match);
}
Class<?> entityType = getEntityClassFromJsonSpec(line, match);
if (entityType == null) {
throw new TransformSpecificationMissingArgumentException(line, new String[] { ARG_FILE, ARG_CLASS }, ARG_MATCH);
}
Map<String, DeferredValueMatcher> propertyMatches = getPropertyValueMatchersFromJsonObject(match, _excludeForMatchSpec);
List<EntityMatch> matches = new ArrayList<EntityMatch>();
for (Map.Entry<String, DeferredValueMatcher> entry : propertyMatches.entrySet()) {
String property = entry.getKey();
Matcher m = _anyMatcher.matcher(property);
if (m.matches()) {
PropertyPathCollectionExpression expression = new PropertyPathCollectionExpression(m.group(1));
expression.setPropertyMethodResolver(_propertyMethodResolver);
matches.add(new PropertyAnyValueEntityMatch(expression, entry.getValue()));
} else {
PropertyPathExpression expression = new PropertyPathExpression(property);
expression.setPropertyMethodResolver(_propertyMethodResolver);
matches.add(new PropertyValueEntityMatch(expression, entry.getValue()));
}
}
return new TypedEntityMatch(entityType, new EntityMatchCollection(matches));
}
Aggregations