Search in sources :

Example 1 with Display

use of eu.ggnet.dwoss.spec.ee.entity.piece.Display in project dwoss by gg-net.

the class ProductProcessorOperation method update.

/**
 * Updates an existing ProductSpec and the relating Product and SopoProduct.
 * <p>
 * The process has multiple steps:
 * <ol>
 * <li>Validate and throw IllegalArgumentException:
 * <ul>
 * <li>if the ProductSpec.productId == null</li>
 * <li>if there does not exist a Product with ProductSpec.productId</li>
 * <li>if there does not exist a SopoProduct with Product.partNo (unchanged)</li>
 * </ul>
 * </li>
 * <li>If Spec is a DisplayAble its assumed the Display is either existent or new.<br />
 * In case it exists, the existent value will be set in the Spec</li>
 * <li>if the supplied ProductModel is different from ProductSpec.getModel it is merged and set</li>
 * <li>Overwrite all changes in Product</li>
 * <li>Overwrite all changes in SopoProduct</li>
 * <li> If PartNo change propagate to all matching SopoUnits</li>
 * </ol>
 *
 * @param spec the spec to be updated, must not be null and not new
 * @param gtin the value of gtin
 * @throws IllegalArgumentException if spec.productId == null
 * @return the eu.ggnet.dwoss.spec.entity.ProductSpec
 */
@Override
public ProductSpec update(ProductSpec spec, long gtin) throws IllegalArgumentException {
    // 1. Validation
    if (spec.getProductId() == null)
        throw new IllegalArgumentException("ProductSpec has no productId, violation ! " + spec);
    ProductEao productEao = new ProductEao(uuEm);
    Product product = productEao.findById(spec.getProductId());
    if (product == null)
        throw new IllegalArgumentException("ProductSpec.productId=" + spec.getProductId() + " does not have a Product");
    // 2. + 3. Update Spec
    if (spec instanceof DisplayAble && ((DisplayAble) spec).getDisplay().getId() == 0) {
        DisplayAble monitor = (DisplayAble) spec;
        DisplayEao displayEao = new DisplayEao(specEm);
        Display display = monitor.getDisplay();
        display = displayEao.find(display.getSize(), display.getResolution(), display.getType(), display.getRation());
        if (display != null)
            monitor.setDisplay(display);
    }
    L.info("updateing {}", SpecFormater.toDetailedName(spec));
    spec = specEm.merge(spec);
    // 4. overwrite Product
    product.setGroup(spec.getModel().getFamily().getSeries().getGroup());
    product.setTradeName(spec.getModel().getFamily().getSeries().getBrand());
    product.setPartNo(spec.getPartNo());
    product.setName(spec.getModel().getName());
    product.setDescription(SpecFormater.toSingleLine(spec));
    product.setGtin(gtin);
    L.debug("updateing {}", product);
    return spec;
}
Also used : DisplayAble(eu.ggnet.dwoss.spec.ee.entity.DisplayAble) Product(eu.ggnet.dwoss.uniqueunit.ee.entity.Product) ProductEao(eu.ggnet.dwoss.uniqueunit.ee.eao.ProductEao) DisplayEao(eu.ggnet.dwoss.spec.ee.eao.DisplayEao) Display(eu.ggnet.dwoss.spec.ee.entity.piece.Display)

Example 2 with Display

use of eu.ggnet.dwoss.spec.ee.entity.piece.Display in project dwoss by gg-net.

the class DisplayPanel method main.

// End of variables declaration//GEN-END:variables
public static void main(String[] args) throws Exception {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    // A full Display
    // Display display = new Display(Display.Size._15_4, Display.Resolution.HD,
    // Display.Type.CRYSTAL_BRIGHT, Display.Ration.SIXTEEN_TO_NINE);
    // display.setLed(true);
    Display display = new Display(null, null, null, null);
    System.out.println(display);
    DisplayPanel view = new DisplayPanel(ProductGroup.TABLET_SMARTPHONE);
    view.setDisplay(display);
    OkCancelDialog<DisplayPanel> create = new OkCancelDialog<>(" ", view);
    create.setVisible(true);
    if (create.getCloseType() == CloseType.OK) {
        System.out.println("Result :" + view.getDisplay());
    }
    System.exit(0);
}
Also used : OkCancelDialog(eu.ggnet.dwoss.util.OkCancelDialog) Display(eu.ggnet.dwoss.spec.ee.entity.piece.Display)

Example 3 with Display

use of eu.ggnet.dwoss.spec.ee.entity.piece.Display in project dwoss by gg-net.

the class DifferentVaildationIT method testDifference.

@Test
public void testDifference() throws Exception {
    // A Notebook which is valid, but not persitable
    Notebook notebook = new Notebook();
    notebook.setPartNo("LX.AAAAA.BBB");
    notebook.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class));
    notebook.setComment("Ein Kommentar");
    notebook.setCpu(new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.1, 2));
    notebook.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte"));
    notebook.setOs(Desktop.Os.LINUX);
    notebook.setMemory(12345);
    notebook.add(Desktop.Hdd.ROTATING_0500);
    notebook.add(Desktop.Odd.BLURAY_COMBO);
    notebook.setExtras(Desktop.Extra.KAMERA);
    notebook.setDisplay(new Display(Display.Size._10_1, Display.Resolution.VGA, Display.Type.MATT, Display.Ration.FOUR_TO_THREE));
    Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    assertTrue(validator.validate(notebook).isEmpty());
    try {
        utx.begin();
        em.joinTransaction();
        em.persist(notebook);
        utx.commit();
        fail("Notebook should not be persitable");
    } catch (Exception ex) {
        // This is correct
        try {
            utx.rollback();
        } catch (Exception e) {
        // Ignore
        }
    }
    // Now it's persitable
    utx.begin();
    em.joinTransaction();
    ProductSeries ps = new ProductSeries(TradeName.ACER, ProductGroup.NOTEBOOK, "TravelMate");
    em.persist(ps);
    ProductFamily pf = new ProductFamily("TravelMate 8700");
    pf.setSeries(ps);
    em.persist(pf);
    ProductModel pm = new ProductModel("TravelMate 8741-81222132");
    pm.setFamily(pf);
    em.persist(pm);
    notebook.setModel(pm);
    em.persist(notebook);
    utx.commit();
}
Also used : ProductFamily(eu.ggnet.dwoss.spec.ee.entity.ProductFamily) Notebook(eu.ggnet.dwoss.spec.ee.entity.Notebook) Cpu(eu.ggnet.dwoss.spec.ee.entity.piece.Cpu) ProductSeries(eu.ggnet.dwoss.spec.ee.entity.ProductSeries) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) Validator(javax.validation.Validator) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel) Display(eu.ggnet.dwoss.spec.ee.entity.piece.Display) Test(org.junit.Test)

Example 4 with Display

use of eu.ggnet.dwoss.spec.ee.entity.piece.Display in project dwoss by gg-net.

the class DisplayEaoIT method testFind.

@Test
public void testFind() throws Exception {
    utx.begin();
    em.joinTransaction();
    Display d = new Display(Display.Size._10_1, Display.Resolution.VGA, Display.Type.MATT, Display.Ration.SIXTEEN_TO_NINE);
    em.persist(d);
    em.persist(new Display(Display.Size._15, Display.Resolution.VGA, Display.Type.CRYSTAL_BRIGHT, Display.Ration.SIXTEEN_TO_NINE));
    utx.commit();
    utx.begin();
    em.joinTransaction();
    DisplayEao displayEao = new DisplayEao(em);
    Display display = displayEao.find(d.getSize(), d.getResolution(), d.getType(), d.getRation());
    assertNotNull(display);
    assertEquals(d.getId(), display.getId());
    display = displayEao.find(Display.Size._11_6, Display.Resolution.HD, Display.Type.MATT, Display.Ration.SIXTEEN_TO_TEN);
    assertNull(display);
    utx.commit();
}
Also used : DisplayEao(eu.ggnet.dwoss.spec.ee.eao.DisplayEao) Display(eu.ggnet.dwoss.spec.ee.entity.piece.Display) Test(org.junit.Test)

Example 5 with Display

use of eu.ggnet.dwoss.spec.ee.entity.piece.Display in project dwoss by gg-net.

the class PersistenceIT method testPersistence.

@Test
public void testPersistence() throws Exception {
    utx.begin();
    em.joinTransaction();
    // A Notebook
    ProductSeries ps = new ProductSeries(TradeName.ACER, ProductGroup.NOTEBOOK, "TravelMate");
    em.persist(ps);
    ProductFamily pf = new ProductFamily("TravelMate 8700");
    pf.setSeries(ps);
    em.persist(pf);
    ProductModel pm = new ProductModel("TravelMate 8741-81222132");
    pm.setFamily(pf);
    em.persist(pm);
    Notebook notebook = new Notebook();
    notebook.setPartNo("LX.AAAAA.BBB");
    notebook.setModel(pm);
    notebook.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class));
    notebook.setComment("Ein Kommentar");
    notebook.setCpu(new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.1, 2));
    notebook.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte"));
    notebook.setOs(Desktop.Os.LINUX);
    notebook.setMemory(12345);
    notebook.add(Desktop.Hdd.ROTATING_0500);
    notebook.add(Desktop.Odd.BLURAY_COMBO);
    notebook.setExtras(Desktop.Extra.KAMERA);
    notebook.setDisplay(new Display(Display.Size._10_1, Display.Resolution.VGA, Display.Type.MATT, Display.Ration.FOUR_TO_THREE));
    em.persist(notebook);
    // An AllInOne
    ps = new ProductSeries(TradeName.ACER, ProductGroup.ALL_IN_ONE, "AllInOne");
    em.persist(ps);
    pf = new ProductFamily("Z5600");
    pf.setSeries(ps);
    em.persist(pf);
    pm = new ProductModel("Z6523");
    pm.setFamily(pf);
    em.persist(pm);
    Notebook allInOne = new Notebook();
    allInOne.setPartNo("PX.AASAA.BBB");
    allInOne.setModel(pm);
    allInOne.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class));
    allInOne.setComment("Ein Kommentar");
    allInOne.setCpu(new Cpu(Cpu.Series.CELERON, "Eine CPU", Cpu.Type.MOBILE, 123.1, 2));
    allInOne.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte"));
    allInOne.setOs(Desktop.Os.LINUX);
    allInOne.setMemory(12345);
    allInOne.add(Desktop.Hdd.ROTATING_0500);
    allInOne.add(Desktop.Odd.BLURAY_COMBO);
    allInOne.setExtras(Desktop.Extra.KAMERA);
    allInOne.setDisplay(new Display(Display.Size._10_1, Display.Resolution.VGA, Display.Type.MATT, Display.Ration.FOUR_TO_THREE));
    em.persist(allInOne);
    // A Desktop
    ProductSeries veriton = new ProductSeries(TradeName.ACER, ProductGroup.DESKTOP, "Veriton");
    em.persist(veriton);
    ProductFamily m400 = new ProductFamily("M400");
    m400.setSeries(veriton);
    em.persist(m400);
    ProductModel M480G = new ProductModel("M480G");
    M480G.setFamily(m400);
    em.persist(M480G);
    Gpu gpu = new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte");
    em.persist(gpu);
    Cpu cpu = new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.1, 2);
    cpu.setEmbeddedGpu(gpu);
    em.persist(cpu);
    Desktop M480G_1 = new Desktop("PX.99999.321", 2L);
    M480G_1.setModel(M480G);
    M480G_1.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class));
    M480G_1.setComment("Ein Kommentar");
    M480G_1.setCpu(cpu);
    M480G_1.setGpu(gpu);
    M480G_1.setOs(Desktop.Os.LINUX);
    M480G_1.setMemory(12345);
    M480G_1.add(Desktop.Hdd.ROTATING_0500);
    M480G_1.add(Desktop.Odd.BLURAY_COMBO);
    M480G_1.setExtras(Desktop.Extra.KAMERA);
    em.persist(M480G_1);
    // A Monitor
    ProductSeries a = new ProductSeries(TradeName.ACER, ProductGroup.MONITOR, "A");
    em.persist(a);
    ProductFamily a230 = new ProductFamily("A230");
    a230.setSeries(a);
    em.persist(a230);
    ProductModel a231Hbmd = new ProductModel("A231Hbmd");
    a231Hbmd.setFamily(a230);
    em.persist(a231Hbmd);
    Monitor A231spec = new Monitor(new Display(Display.Size._11_6, Display.Resolution.VGA, Display.Type.CRYSTAL_BRIGHT, Display.Ration.SIXTEEN_TO_NINE));
    A231spec.setModel(a231Hbmd);
    A231spec.setPartNo("ET.VA1HE.008");
    A231spec.setProductId(3L);
    A231spec.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class));
    A231spec.setComment("Ein Kommentar");
    em.persist(A231spec);
    // A Bundle
    ProductSeries box = new ProductSeries(TradeName.ACER, ProductGroup.DESKTOP_BUNDLE, "Veriton");
    em.persist(box);
    ProductFamily boxf = new ProductFamily("M480");
    boxf.setSeries(box);
    em.persist(boxf);
    ProductModel boxm = new ProductModel("M480G + A231MuhMäh");
    boxm.setFamily(boxf);
    em.persist(boxm);
    DesktopBundle bundle = new DesktopBundle();
    bundle.setPartNo("BL.32199.321");
    bundle.setProductId(1L);
    bundle.setDesktop(M480G_1);
    bundle.setMonitor(A231spec);
    bundle.setModel(boxm);
    em.persist(bundle);
    utx.commit();
    utx.begin();
    em.joinTransaction();
    CriteriaQuery<ProductSeries> cq = em.getCriteriaBuilder().createQuery(ProductSeries.class);
    cq.select(cq.from(ProductSeries.class));
    List<ProductSeries> serieses = em.createQuery(cq).getResultList();
    assertFalse(serieses.isEmpty());
    for (ProductSeries series : serieses) {
        assertNotNull(series.getFamilys());
        assertFalse(series.getFamilys().isEmpty());
        for (ProductFamily family : series.getFamilys()) {
            assertNotNull(family.getModels());
            assertFalse(family.getModels().isEmpty());
            for (ProductModel model : family.getModels()) {
                assertNotNull(model.getSpecs());
                assertFalse(model.getSpecs().isEmpty());
                for (ProductSpec spec : model.getSpecs()) {
                    assertNotNull(spec.getPartNo());
                    assertNotNull(spec.getModel());
                    assertNotNull(spec.getModel().getFamily());
                    assertNotNull(spec.getModel().getFamily().getSeries());
                    assertNotNull(spec.getModel().getFamily().getSeries().getBrand());
                    assertNotNull(spec.getModel().getFamily().getSeries().getGroup());
                }
            }
        }
    }
    utx.commit();
}
Also used : ProductFamily(eu.ggnet.dwoss.spec.ee.entity.ProductFamily) Notebook(eu.ggnet.dwoss.spec.ee.entity.Notebook) Cpu(eu.ggnet.dwoss.spec.ee.entity.piece.Cpu) ProductSpec(eu.ggnet.dwoss.spec.ee.entity.ProductSpec) DesktopBundle(eu.ggnet.dwoss.spec.ee.entity.DesktopBundle) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) Monitor(eu.ggnet.dwoss.spec.ee.entity.Monitor) Desktop(eu.ggnet.dwoss.spec.ee.entity.Desktop) ProductSeries(eu.ggnet.dwoss.spec.ee.entity.ProductSeries) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel) Display(eu.ggnet.dwoss.spec.ee.entity.piece.Display) Test(org.junit.Test)

Aggregations

Display (eu.ggnet.dwoss.spec.ee.entity.piece.Display)13 Test (org.junit.Test)8 Notebook (eu.ggnet.dwoss.spec.ee.entity.Notebook)7 Cpu (eu.ggnet.dwoss.spec.ee.entity.piece.Cpu)7 Gpu (eu.ggnet.dwoss.spec.ee.entity.piece.Gpu)7 ProductFamily (eu.ggnet.dwoss.spec.ee.entity.ProductFamily)6 ProductModel (eu.ggnet.dwoss.spec.ee.entity.ProductModel)6 ProductSeries (eu.ggnet.dwoss.spec.ee.entity.ProductSeries)6 ProductSpec (eu.ggnet.dwoss.spec.ee.entity.ProductSpec)5 DisplayEao (eu.ggnet.dwoss.spec.ee.eao.DisplayEao)2 Monitor (eu.ggnet.dwoss.spec.ee.entity.Monitor)2 Product (eu.ggnet.dwoss.uniqueunit.ee.entity.Product)2 DisplayEmo (eu.ggnet.dwoss.spec.ee.emo.DisplayEmo)1 Desktop (eu.ggnet.dwoss.spec.ee.entity.Desktop)1 DesktopBundle (eu.ggnet.dwoss.spec.ee.entity.DesktopBundle)1 DisplayAble (eu.ggnet.dwoss.spec.ee.entity.DisplayAble)1 ProductEao (eu.ggnet.dwoss.uniqueunit.ee.eao.ProductEao)1 OkCancelDialog (eu.ggnet.dwoss.util.OkCancelDialog)1 Validator (javax.validation.Validator)1 Ignore (org.junit.Ignore)1