private boolean isCategoricalField(HasFieldReference<?> hasFieldReference){ FieldName name = hasFieldReference.getField(); java.util.function.Predicate<Node> predicate = new java.util.function.Predicate<Node>(){ @Override public boolean test(Node node){ Predicate predicate = node.getPredicate(); if(predicate instanceof True){ predicate = TreeModelCompactor.this.replacedPredicates.get(node); } // End if if(predicate instanceof SimpleSetPredicate){ SimpleSetPredicate simpleSetPredicate = (SimpleSetPredicate)predicate; return hasFieldReference(simpleSetPredicate, name); } return false; } }; Node ancestorNode = getAncestorNode(predicate); return (ancestorNode != null); }
static public <E extends Expression & HasFieldReference<E>> FieldName ensureField(E hasField){ FieldName name = hasField.getField(); if(name == null){ throw new MissingAttributeException(MissingAttributeException.formatMessage(XPathUtil.formatElement(hasField.getClass()) + "@field"), hasField); } return name; }
private boolean isDefinedField(HasFieldReference<?> hasFieldReference){ FieldName name = hasFieldReference.getField(); Node ancestorNode = getAncestorNode(node -> hasFieldReference(node.getPredicate(), name)); return (ancestorNode != null); } }
private Map<FieldName, List<NeuralOutput>> parseNeuralOutputs(){ NeuralNetwork neuralNetwork = getModel(); ListMultimap<FieldName, NeuralOutput> result = ArrayListMultimap.create(); NeuralOutputs neuralOutputs = neuralNetwork.getNeuralOutputs(); for(NeuralOutput neuralOutput : neuralOutputs){ FieldName name; Expression expression = getOutputExpression(neuralOutput); if(expression instanceof HasFieldReference){ HasFieldReference<?> hasFieldReference = (HasFieldReference<?>)expression; name = hasFieldReference.getField(); if(name == null){ throw new MissingAttributeException(MissingAttributeException.formatMessage(XPathUtil.formatElement((Class)hasFieldReference.getClass()) + "@field"), expression); } } else { throw new MisplacedElementException(expression); } result.put(name, neuralOutput); } return (Map)result.asMap(); }