001    package com.hammurapi.eventbus.tests.familyties;
002    
003    import com.hammurapi.convert.AbstractReflectiveAtomicConvertersBundle;
004    import com.hammurapi.convert.Converter;
005    import com.hammurapi.convert.ConverterMethod;
006    import com.hammurapi.eventbus.snapshot.CompositeEvent;
007    import com.hammurapi.eventbus.snapshot.Event;
008    import com.hammurapi.eventbus.snapshot.SnapshotFactory;
009    import com.hammurapi.eventbus.tests.familyties.model.Person;
010    import com.hammurapi.eventbus.tests.familyties.model.Relative;
011    
012    public class FamilyTiesConvertersBundle extends AbstractReflectiveAtomicConvertersBundle {
013            
014            /**
015             * Converter method for relative. 
016             * @param relative
017             * @return
018             */
019            @ConverterMethod
020            public CompositeEvent convertToEvent(Relative relative, Converter master) {
021                    CompositeEvent ce = SnapshotFactory.eINSTANCE.createCompositeEvent();
022                    int idx = relative.getClass().getName().lastIndexOf('.');
023                    ce.setName(relative.getClass().getName().substring(idx+1));
024                    ce.setDetails(relative.toString());
025                    
026                    Event subj = master.convert(relative.getSubject(), Event.class, null);
027                    subj.setPartRole("subject");
028                    subj.setId("");
029                    ce.getParts().add(subj);
030                    
031                    Event obj = master.convert(relative.getObject(), Event.class, null);
032                    obj.setPartRole("object");
033                    obj.setId("");
034                    ce.getParts().add(obj);
035                    
036                    return ce;
037            }
038            
039            @ConverterMethod
040            public Event convertToEvent(Person person) {
041                    Event ret = SnapshotFactory.eINSTANCE.createEvent();
042                    ret.setName(person.getName());
043                    ret.setDetails(person.toString());
044                    return ret;
045            }
046    }