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 }