package eu.ggnet.dwoss.uniqueunit.entity;
import eu.ggnet.dwoss.uniqueunit.entity.PriceType;
import eu.ggnet.dwoss.uniqueunit.entity.UniqueUnitHistory;
import eu.ggnet.dwoss.uniqueunit.entity.UniqueUnit;
import eu.ggnet.dwoss.uniqueunit.entity.Product;
import java.util.*;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.embeddable.EJBContainer;
import javax.inject.Inject;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import org.junit.*;
import eu.ggnet.dwoss.configuration.SystemConfig;
import eu.ggnet.dwoss.rules.ProductGroup;
import eu.ggnet.dwoss.rules.TradeName;
import eu.ggnet.dwoss.uniqueunit.UniqueUnitAgent;
import eu.ggnet.dwoss.uniqueunit.assist.UniqueUnitPu;
import eu.ggnet.dwoss.uniqueunit.assist.UniqueUnits;
import eu.ggnet.dwoss.util.Tuple2;
import static eu.ggnet.dwoss.uniqueunit.entity.UniqueUnit.Identifier.SERIAL;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
/**
*
* @author oliver.guenther
*/
public class PersistenceIT {
private EJBContainer container;
@EJB
private UniqueUnitAgent agent;
@Inject
private PersistenceBean persistenceBean;
@Before
public void setUp() throws NamingException {
Map<String, Object> c = new HashMap<>();
c.putAll(UniqueUnitPu.CMP_IN_MEMORY);
c.putAll(SystemConfig.OPENEJB_LOG_WARN);
c.putAll(SystemConfig.OPENEJB_EJB_XML_DISCOVER);
container = EJBContainer.createEJBContainer(c);
container.getContext().bind("inject", this);
}
@After
public void after() {
container.close();
}
@Test
public void testPersistence() {
Tuple2<Integer, Integer> t = persistenceBean.fillPersistenceSource();
assertNotNull(agent.findAll(UniqueUnit.class));
UniqueUnit unit3_1 = agent.findById(UniqueUnit.class, t._1);
assertNotNull(unit3_1);
assertNull(unit3_1.getComment());
assertNull(unit3_1.getInternalComment());
UniqueUnit unit4_1 = agent.findById(UniqueUnit.class, t._2);
assertNotNull(unit4_1);
assertNotNull(unit4_1.getComment());
assertNotNull(unit4_1.getInternalComment());
}
@Stateless
//
//
public static class PersistenceBean {
@Inject
@UniqueUnits
private EntityManager em;
public Tuple2<Integer, Integer> fillPersistenceSource() {
Date now = new Date();
Product p1 = new Product(ProductGroup.DESKTOP, TradeName.ACER, "LX.11111.222", "Verition Stein");
p1.setDescription("Ein Tolles Gerät");
p1.setPrice(PriceType.MANUFACTURER_COST, 200.0, "JUnit - Testcase");
p1.setPrice(PriceType.CONTRACTOR_REFERENCE, 240.0, "JUnit - Testcase");
p1.addFlag(Product.Flag.PRICE_FIXED);
Product p2 = new Product(ProductGroup.COMMENTARY, TradeName.DELL, "DL", "Dienstleistung 1h");
p2.setDescription("Eine Dienstleistungs Stunde");
UniqueUnit unit1 = new UniqueUnit(p1, now, "");
unit1.setIdentifier(SERIAL, "ROFFFLAASSS");
unit1.setPrice(PriceType.SALE, 125, "JUnit - Testcase");
unit1.addFlag(UniqueUnit.Flag.PRICE_FIXED);
unit1.setContractor(TradeName.ONESELF);
unit1.setComment("Ein Commentar");
unit1.setCondition(UniqueUnit.Condition.AS_NEW);
UniqueUnit unit2 = new UniqueUnit(p1, now, "lila");
unit2.addHistory(new UniqueUnitHistory(UniqueUnitHistory.Type.UNDEFINED, "Aufgenommen als Sopo 332"));
unit2.addHistory(new UniqueUnitHistory(UniqueUnitHistory.Type.UNIQUE_UNIT, "Zerlegt weil kaput"));
unit2.setIdentifier(SERIAL, "DBCFDASFDSADEF");
unit2.setContractor(TradeName.ONESELF);
unit2.setComment("Auch ein Commentar");
unit2.setCondition(UniqueUnit.Condition.AS_NEW);
UniqueUnit unit3 = new UniqueUnit();
unit3.setProduct(p1);
unit3.setMfgDate(now);
unit3.setIdentifier(SERIAL, "ABCDEFJKHKZHJI");
unit3.setContractor(TradeName.ONESELF);
unit3.setCondition(UniqueUnit.Condition.AS_NEW);
UniqueUnit unit4 = new UniqueUnit(p2, now, "");
unit4.setIdentifier(SERIAL, "ABCDEFFEQGSDFD");
unit4.setContractor(TradeName.ONESELF);
unit4.setCondition(UniqueUnit.Condition.USED);
unit4.setComment("Ein sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr langer Kommentar");
unit4.setInternalComment("Ein sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr"
+ " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr langer Kommentar");
em.persist(p1);
em.persist(p2);
em.persist(unit1);
em.persist(unit2);
em.persist(unit3);
em.persist(unit4);
return new Tuple2<>(unit3.getId(), unit4.getId());
}
// public List<UniqueUnit> findAll() {
// EntityManager em = support.getEntityManager();
// CriteriaBuilder cb = em.getCriteriaBuilder();
// CriteriaQuery<UniqueUnit> cq = cb.createQuery(UniqueUnit.class);
// cq.select(cq.from(UniqueUnit.class));
// return em.createQuery(cq).getResultList();
// }
//
// public UniqueUnit findById(int id) {
// return support.getEntityManager().find(UniqueUnit.class, id);
// }
}
}