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.gemini.ext.di.GeminiPersistenceProperty; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.persistence.config.PersistenceUnitProperties; import org.eclipse.swt.widgets.Shell; import de.mukis.gemini.sample.model.Person; /** * Configure your persistence unit inside the POJO. * * @author muki * */ public class SavePersonHandler2 { @Inject @GeminiPersistenceContext(unitName = "unconfigured", properties = { @GeminiPersistenceProperty(name = PersistenceUnitProperties.JDBC_DRIVER, value = "org.apache.derby.jdbc.EmbeddedDriver"), // com.mysql.jdbc.Driver @GeminiPersistenceProperty(name = PersistenceUnitProperties.JDBC_URL, value = "jdbc:derby:memory:test2;create=true"), // jdbc:mysql://127.0.0.1/test @GeminiPersistenceProperty(name = PersistenceUnitProperties.DDL_GENERATION, value = PersistenceUnitProperties.CREATE_ONLY), @GeminiPersistenceProperty(name = PersistenceUnitProperties.DDL_GENERATION_MODE, value = PersistenceUnitProperties.DDL_DATABASE_GENERATION), @GeminiPersistenceProperty(name = PersistenceUnitProperties.LOGGING_LEVEL, value = "FINE"), @GeminiPersistenceProperty(name = PersistenceUnitProperties.WEAVING, value = "false"), @GeminiPersistenceProperty(name = PersistenceUnitProperties.WEAVING_INTERNAL, value = "false") }) private EntityManager em; @Execute public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) { try { EntityTransaction tx = em.getTransaction(); tx.begin(); Person person = new Person("John", "Smith"); em.persist(person); tx.commit(); MessageDialog.openInformation(shell, "Person persisted", "Persisted person in test2 database!"); } catch (Exception e) { MessageDialog.openError(shell, "Error persisting Person", "Derby bundle is not installed \n " + e.getMessage()); } finally { em.clear(); } } }