Skip to content

Instantly share code, notes, and snippets.

@johannest
Created September 4, 2015 08:27
Show Gist options
  • Save johannest/281df45d93121e9f0dbc to your computer and use it in GitHub Desktop.
Save johannest/281df45d93121e9f0dbc to your computer and use it in GitHub Desktop.
JPA-tree-example
package org.vaadin.jpatest;
import javax.persistence.EntityManager;
import org.vaadin.jpatest.domain.AbstractEntity;
import org.vaadin.jpatest.domain.Car;
import org.vaadin.jpatest.domain.Person;
import org.vaadin.jpatest.domain.Vehicle;
import com.vaadin.addon.jpacontainer.JPAContainer;
import com.vaadin.addon.jpacontainer.JPAContainerFactory;
import com.vaadin.annotations.Theme;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Tree;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
@SuppressWarnings("serial")
@Theme("valo")
public class MyVaadinApplication extends UI {
public static final String PERSISTENCE_UNIT = "org.vaadin.jpatest";
@Override
protected void init(VaadinRequest request) {
VerticalLayout layout;
setContent(layout = new VerticalLayout());
layout.setSizeFull();
Tree navTree = new Tree();
navTree.setSelectable(true);
navTree.setNullSelectionAllowed(false);
navTree.setImmediate(true);
layout.addComponent(navTree);
JPAContainer<AbstractEntity> container = JPAContainerFactory.make(
AbstractEntity.class, PERSISTENCE_UNIT);
JPAContainer<Vehicle> container2 = JPAContainerFactory.make(
Vehicle.class, PERSISTENCE_UNIT);
Object firstId = null;
for (Object id : container.getItemIds()) {
if (firstId==null) {
firstId = id;
}
navTree.addItem(id);
navTree.setItemCaption(id, container.getItem(id).getEntity().getName());
navTree.setChildrenAllowed(id, true);
}
for (Object id : container2.getItemIds()) {
navTree.addItem(id);
navTree.setItemCaption(id, container2.getItem(id).getEntity().getName());
navTree.setParent(id,firstId);
}
}
static {
EntityManager em = JPAContainerFactory
.createEntityManagerForPersistenceUnit(PERSISTENCE_UNIT);
long size = (Long) em.createQuery(
"SELECT COUNT(p) FROM AbstractEntity p").getSingleResult();
if (size == 0) {
em.getTransaction().begin();
// extends AbstractEntity
Person boss = new Person();
boss.setFirstName("John");
boss.setLastName("Bigboss");
boss.setName(boss.getFirstName() + " " + boss.getLastName());
boss.setCity("Turku");
boss.setPhoneNumber("+358 02 555 221");
boss.setZipCode("20200");
boss.setStreet("Ruukinkatu 2-4");
em.persist(boss);
// extends AbstractEntity
Car c = new Car();
c.setMake("Honda");
c.setModel("Civic");
c.setName(c.getMake() + " " + c.getModel());
em.persist(c);
// extends AbstractEntity
Person p = new Person();
p.setFirstName("Marc");
p.setLastName("Hardworker");
p.setName(p.getFirstName() + " " + p.getLastName());
p.setCity("Turku");
p.setPhoneNumber("+358 02 555 222");
p.setZipCode("20200");
p.setStreet("Ruukinkatu 2-4");
p.setBoss(boss);
em.persist(p);
// extends AbstractEntity
Car c2 = new Car();
c2.setMake("Ford");
c2.setModel("Focus");
c2.setName(c2.getMake() + " " + c2.getModel());
em.persist(c2);
// Vehicle does NOT extend AbstractEntity
Vehicle spaceShuttle = new Vehicle();
spaceShuttle.setName("Atlantis");
em.persist(spaceShuttle);
em.getTransaction().commit();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment