package ch.elexis.core.data.server; import ch.elexis.core.common.ElexisEventTopics; import ch.elexis.core.data.events.ElexisEvent; import ch.elexis.core.data.events.ElexisEventDispatcher; import ch.elexis.core.jdt.Nullable; import ch.elexis.core.model.IPersistentObject; import ch.elexis.data.PersistentObject; import ch.elexis.data.User; /** * Maps internal {@link ElexisEvent} instances to outgoing ElexisEvent instances sent to * Elexis-Server */ public class ServerEventMapper { /** * Map an {@link ElexisEvent} to an Elexis-Server-Outgoing ElexisEvent * * @param ee * @return a remote event, or <code>null</code> if not supported */ public static @Nullable ch.elexis.core.common.ElexisEvent mapEvent(ElexisEvent ee){ ch.elexis.core.common.ElexisEvent remoteEvent = new ch.elexis.core.common.ElexisEvent(); String mapTopic = mapTopic(ee.getType()); if (mapTopic == null) { return null; } remoteEvent.setTopic(mapTopic); PersistentObject object = ee.getObject(); if (object != null) { remoteEvent.getProperties().put(ElexisEventTopics.PROPKEY_ID, object.getId()); remoteEvent.getProperties().put(ElexisEventTopics.PROPKEY_CLASS, object.getClass().getName()); } IPersistentObject user = ElexisEventDispatcher.getSelected(User.class); remoteEvent.getProperties().put(ElexisEventTopics.PROPKEY_USER, user.getId()); return remoteEvent; } private static String mapTopic(int type){ switch (type) { case ElexisEvent.EVENT_CREATE: return ElexisEventTopics.PERSISTENCE_EVENT_CREATE; default: break; } return null; } }