Map<String, Person> people = new HashMap<String, Person>(); Person jim = new Person("Jim", 25); Person scott = new Person("Scott", 28); Person anna = new Person("Anna", 23); people.put(jim.getName(), jim); people.put(scott.getName(), scott); people.put(anna.getName(), anna); // not yet sorted List<Person> peopleByAge = new ArrayList<Person>(people.values()); Collections.sort(peopleByAge, new Comparator<Person>() { public int compare(Person o1, Person o2) { return o1.getAge() - o2.getAge(); } }); for (Person p : peopleByAge) { System.out.println(p.getName() + "\t" + p.getAge()); }
public class PersonComparator implements Comparator<Person> { public enum SortOrder {ASCENDING, DESCENDING} private SortOrder sortOrder; public PersonComparator(SortOrder sortOrder) { this.sortOrder = sortOrder; } @Override public int compare(Person person1, Person person2) { Integer age1 = person1.getAge(); Integer age2 = person2.getAge(); int compare = Math.signum(age1.compareTo(age2)); if (sortOrder == ASCENDING) { return compare; } else { return compare * (-1); } } }
@Override public int getValue( KnowledgeHelper khelper, Rule rule, WorkingMemory workingMemory ) { if ( khelper == null ) { return 0; } InternalFactHandle h = (InternalFactHandle) khelper.getMatch().getFactHandles().get( 0 ); return ( (Person) h.getObject() ).getAge(); }
Person per = Iterables.tryFind(persons, new Predicate<Person>() { @Override public boolean apply(Person person) { return person.getAge()> 50; } }).or(defaultPerson);
public SalienceEvaluator(InternalKnowledgeBase kBase, RuleBuildContext context, Rule rule, Salience salience, Person person) { wm = ((StatefulKnowledgeSessionImpl)kBase.newKieSession()); this.context = context; final InternalFactHandle f0 = (InternalFactHandle) wm.insert( person ); tuple = new LeftTupleImpl( f0, null, true ); this.salience = salience; this.halt = false; this.error = false; this.result = (person.getAge() + 20) / 2; RuleTerminalNode rtn = new RuleTerminalNode(); rtn.setSalienceDeclarations( context.getDeclarationResolver().getDeclarations( context.getRule() ).values().toArray( new Declaration[1] ) ); item = new AgendaItemImpl(0, tuple, 0, null, rtn, null); }
@Test public void testModifyCommand() { final String str = "rule \"sample rule\"\n" + " when\n" + " then\n" + " System.out.println(\"\\\"Hello world!\\\"\");\n" + "end"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); final Person p1 = new Person("John", "nobody", 25); ksession.execute(CommandFactory.newInsert(p1)); final FactHandle fh = ksession.getFactHandle(p1); final Person p = new Person("Frank", "nobody", 30); final List<Setter> setterList = new ArrayList<Setter>(); setterList.add(CommandFactory.newSetter("age", String.valueOf(p.getAge()))); setterList.add(CommandFactory.newSetter("name", p.getName())); setterList.add(CommandFactory.newSetter("likes", p.getLikes())); ksession.execute(CommandFactory.newModify(fh, setterList)); }
if ( other.getAddresses() != null ) return false; } else if ( !addresses.equals( other.getAddresses() ) ) return false; if ( age != other.getAge() ) return false; if ( alive != other.isAlive() ) return false; if ( bigDecimal == null ) {
@Test public void testJavaModifyBlock() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_JavaModifyBlock.drl")); final KieSession ksession = createKnowledgeSession(kbase); final List list = new ArrayList(); ksession.setGlobal("results", list); final Person bob = new Person("Bob", 30); bob.setStatus("hungry"); ksession.insert(bob); ksession.insert(new Cheese()); ksession.insert(new Cheese()); ksession.insert(new OuterClass.InnerClass(1)); ksession.fireAllRules(); assertEquals(2, list.size()); assertEquals("full", bob.getStatus()); assertEquals(31, bob.getAge()); assertEquals(2, ((OuterClass.InnerClass) list.get(1)).getIntAttr()); }
@Test public void testJoinNoLoop() { // BZ-1034094 String str = "import org.drools.compiler.Person\n" + "rule R no-loop\n" + "when\n" + " String()\n" + " $p : Person( $age : age )\n" + "then\n" + " modify($p) { setAge( $age + 1 ) }\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); Person mario = new Person( "Mario", 38 ); ksession.insert( "a" ); ksession.insert( "b" ); ksession.insert( mario ); ksession.fireAllRules(); assertEquals( 40, mario.getAge() ); }
//Get a list of Person objects using a method ArrayList<Person> people = getPeopleList(); Object[][] data = new Object[people.size()][]; for(int i = 0; i < people.size(); i++) { Person p = people.get(i); data[i] = new Object[] { i, p.getName(), p.getAge(), p.getNationality() }; }
Ord<Person> personOrd = p3Ord(stringOrd, stringOrd, stringOrd).comap( new F<Person, P3<String, String, String>>() { public P3<String, String, String> f(Person x) { return p(x.getFirstName(), x.getLastname(), x.getAge()); } } );
@Test public void testNullPointerOnModifyWithLockOnActive() { // JBRULES-3234 String str = "package org.kie.test \n" + "import org.drools.compiler.Person; \n" + "rule 'Rule 1' agenda-group 'g1' lock-on-active when \n" + " $p : Person( age != 35 ) \n" + " then \n" + " modify( $p ) { setAge( 35 ) }; \n" + "end \n" + "rule 'Rule 2' agenda-group 'g1' no-loop when \n" + " $p: Person( age == 35) \n" + " then \n" + " modify( $p ) { setAge( 36 ) }; \n" + "end \n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person p = new Person( "darth", 36 ); FactHandle fh = (FactHandle) ksession.insert( p ); ksession.getAgenda().getAgendaGroup( "g1" ).setFocus(); ksession.fireAllRules(); ksession.update( fh, p ); // normally NPE thrown here, for BUG assertEquals( 36, p.getAge() ); }
ks.fireAllRules(); assertEquals( 44, p.getAge() ); assertEquals( "john", p.getName() );
ks.fireAllRules(); assertEquals( 44, p.getAge() ); assertEquals( "john", p.getName() );