DefaultRules(Collection<NewRule> newRules) { Map<RuleKey, Rule> rulesByRuleKeyBuilder = new HashMap<>(); ImmutableListMultimap.Builder<String, Rule> builder = ImmutableListMultimap.builder(); Table<String, String, List<Rule>> tableBuilder = HashBasedTable.create(); for (NewRule newRule : newRules) { DefaultRule r = new DefaultRule(newRule); rulesByRuleKeyBuilder.put(r.key(), r); builder.put(r.key().repository(), r); addToTable(tableBuilder, r); } rulesByRuleKey = Collections.unmodifiableMap(rulesByRuleKeyBuilder); rulesByRepository = builder.build(); rulesByRepositoryAndInternalKey = ImmutableTable.copyOf(tableBuilder); }
IRule linkRule = new DefaultRule(Type.CHARACTER, "/rss/channel/item/link") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { // Also store the link, or something equivalently fancy } }
IRule titleRule = new DefaultRule(Type.CHARACTER, "/rss/channel/title") { @Override public void handleParsedCharacters(XMLParser parser, String text) { // Store the title in a DB or something fancy }}
IRule linkRule = new DefaultRule(Type.CHARACTER, "/rss/channel/item/link") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { // 'text' is the link; store it, print it, whatever you need... } }
IRule channelSubjectRule = new DefaultRule(Type.CHARACTER, "/rss/channel/[http://purl.org/dc/elements/1.1/]subject") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { // Got the Channel's dc:subject value! I win! } }
IRule roundNumRule = new DefaultRule(Type.CHARACTER, "/Game/Round/roundNumber") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { System.out.println("Round Parsed: " + text); } } IRule doorNameRule = new DefaultRule(Type.CHARACTER, "/Game/Round/Door/doorName") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { System.out.println("Door Name: " + text); } }
// Create /root/state rule IRule stateRule = new DefaultRule(Type.CHARACTER, "/root/state") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { System.out.println("State is: " + text); } } // Create /root/volume rule IRule volRule = new DefaultRule(Type.CHARACTER, "/state/volume") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { System.out.println("Volume is: " + text); } } // Create the parser with the given rules XMLParser parser = new XMLParser(stateRule, volRule);
IRule linkRule = new DefaultRule(Type.CHARACTER, "/root/Persons/list/Person/Name") { @Override public void handleParsedCharacters(XMLParser parser, String text, Object userObject) { // Get the last person we added on open-tag. Person p = personList.get(personList.size() - 1); // <Name> tag was parsed, 'text' is our parsed Name. Set it. p.setName(text); } }
DefaultRules(Collection<NewRule> newRules) { ImmutableListMultimap.Builder<String, Rule> builder = ImmutableListMultimap.builder(); for (NewRule newRule : newRules) { DefaultRule r = new DefaultRule(newRule); builder.put(r.key().repository(), r); } rulesByRepository = builder.build(); }
DefaultRules(Collection<NewRule> newRules) { Map<RuleKey, Rule> rulesByRuleKeyBuilder = new HashMap<>(); ImmutableListMultimap.Builder<String, Rule> builder = ImmutableListMultimap.builder(); Table<String, String, List<Rule>> tableBuilder = HashBasedTable.create(); for (NewRule newRule : newRules) { DefaultRule r = new DefaultRule(newRule); rulesByRuleKeyBuilder.put(r.key(), r); builder.put(r.key().repository(), r); addToTable(tableBuilder, r); } rulesByRuleKey = Collections.unmodifiableMap(rulesByRuleKeyBuilder); rulesByRepository = builder.build(); rulesByRepositoryAndInternalKey = ImmutableTable.copyOf(tableBuilder); }