001    /*
002    @license.text@
003     */
004    package com.hammurapi.eventbus.tests.familyties.rules;
005    
006    import com.hammurapi.eventbus.Handler;
007    import com.hammurapi.eventbus.tests.familyties.model.Father;
008    import com.hammurapi.eventbus.tests.familyties.model.Mother;
009    import com.hammurapi.eventbus.tests.familyties.model.Parent;
010    
011    public class ParentRules extends FamilyTiesRules {      
012            
013            /**
014             * Male parent is father, female parent is mother.
015             * @param parent
016             * @return Brother or Sister.
017             */
018            @Handler(posts={Father.class, Mother.class})
019            public Parent infer(Parent parent) {    
020                    
021                    if (parent.getSubject().isMale()) {
022                            if (!(parent instanceof Father)) {
023                                    return new  Father(parent.getSubject(), parent.getObject());
024                            }                       
025                    } else {
026                            if (!(parent instanceof Mother)) {
027                                    return new Mother(parent.getSubject(), parent.getObject());
028                            }                       
029                    }
030                    return null;
031            }
032    }