package de.mukis.gemini.sample.rcp.handlers; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.gemini.ext.di.GeminiPersistenceContext; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import de.mukis.gemini.sample.model.Person; /** * The easiest way to get an {@link EntityManager} injected. * * @author muki * */ public class SavePersonHandler { @Inject @GeminiPersistenceContext(unitName = "configured") private EntityManager em; @Execute public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) { try { EntityTransaction tx = em.getTransaction(); tx.begin(); Person person = new Person(); person.setFirstName("John"); person.setLastName("Smith"); em.persist(person); tx.commit(); MessageDialog.openInformation(shell, "Person persisted", "Persisted person in test database!"); } catch (Exception e) { MessageDialog.openError(shell, "Error persisting Person", "Derby bundle is not installed \n " + e.getMessage()); } finally { em.clear(); } } }