/** * @param pmml PMML model to query for extensions * @param name name of extension to query * @return content of the extension, parsed as if it were a PMML {@link Array}: * space-separated values, with PMML quoting rules */ public static List<String> getExtensionContent(PMML pmml, String name) { return pmml.getExtensions().stream().filter(extension -> name.equals(extension.getName())).findFirst(). map(extension -> { List<?> content = extension.getContent(); Preconditions.checkArgument(content.size() <= 1); return content.isEmpty() ? Collections.<String>emptyList() : Arrays.asList(TextUtils.parsePMMLDelimited(content.get(0).toString())); }).orElse(null); }
@Test public void testParsePMMLDelimited() { assertArrayEquals(new String[] {"1", "22", "3"}, TextUtils.parsePMMLDelimited("1 22 3")); assertArrayEquals(new String[] {"ab", "a b", "with \"quotes\" "}, TextUtils.parsePMMLDelimited("ab \"a b\" \"with \\\"quotes\\\" \" ")); assertArrayEquals(new String[] {"\" \""}, TextUtils.parsePMMLDelimited("\"\\\" \\\"\"")); assertArrayEquals(new String[] {" c\" d \"e ", " c\" d \"e "}, TextUtils.parsePMMLDelimited(" \" c\\\" d \\\"e \" \" c\\\" d \\\"e \" ")); }
/** * @param pmml PMML model to query for extensions * @param name name of extension to query * @return content of the extension, parsed as if it were a PMML {@link Array}: * space-separated values, with PMML quoting rules */ public static List<String> getExtensionContent(PMML pmml, String name) { return pmml.getExtensions().stream().filter(extension -> name.equals(extension.getName())).findFirst(). map(extension -> { List<?> content = extension.getContent(); Preconditions.checkArgument(content.size() <= 1); return content.isEmpty() ? Collections.<String>emptyList() : Arrays.asList(TextUtils.parsePMMLDelimited(content.get(0).toString())); }).orElse(null); }