Search in sources :

Example 1 with ProductModel

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

the class SimpleView method addModelButtonActionPerformed.

// GEN-LAST:event_familyBoxActionPerformed
private void addModelButtonActionPerformed(java.awt.event.ActionEvent evt) {
    // GEN-FIRST:event_addModelButtonActionPerformed
    String modelName = (String) modelBox.getSelectedItem();
    if (StringUtils.isBlank(modelName)) {
        error("Keine Modellname hinterlegt!");
        return;
    }
    for (ProductSeries series : allSeries) {
        for (ProductFamily family : series.getFamilys()) {
            for (ProductModel model : family.getModels()) {
                if (model.getName().equals(modelName)) {
                    error("Modell " + modelName + " existiert schon in " + series.getName() + "/" + family.getName());
                    // Found an equal, so nothing to do
                    return;
                }
            }
        }
    }
    if (!getSelectedSeries().isPresent()) {
        if (!warn("Keine Serie und Familie ausgewählt, es werde Standartwerte verwendet."))
            return;
    } else if (!getSelectedFamily().isPresent()) {
        if (!warn("Keine Familie ausgewählt, es wird ein Standartwert verwendet."))
            return;
    }
    ProductModel model = productProcessor.create(getBrand(), getGroup(), getSelectedSeries().orElse(null), getSelectedFamily().orElse(null), modelName);
    // TODO: Add Model to local list in a better way
    // TODO: And show the active backgroundprogress.
    JOptionPane.showMessageDialog(this, "Modell " + model.getName() + " wurde hinzugefügt.\nAktualisiere Lokale Liste.");
    parent.setEnabled(false);
    allSeries = specAgent.findAll(ProductSeries.class);
    parent.setEnabled(true);
    updateSeries();
    updateFamily();
    updateModel();
    seriesBox.setSelectedItem(model.getFamily().getSeries().getName());
    familyBox.setSelectedItem(model.getFamily().getName());
    modelBox.setSelectedItem(model.getName());
    enableAddButtons();
}
Also used : ProductFamily(eu.ggnet.dwoss.spec.ee.entity.ProductFamily) ProductSeries(eu.ggnet.dwoss.spec.ee.entity.ProductSeries) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel)

Example 2 with ProductModel

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

the class ProductProcessorStub method create.

/**
 * Creates a new ProductModel and Persists it.
 *
 * How this works: If series is null, family is also as null asumed. - so a default series and a default family is selected. If family is null, a default
 * one is selecte at the series. In both cases, if no default exists, create on. Now create a ProductModel with the family.
 *
 * @param brand     may not be null
 * @param group     may not be null
 * @param series    if null, default is used
 * @param family    if null, default is used
 * @param modelName the name of the model
 * @return
 */
@Override
public ProductModel create(final TradeName brand, final ProductGroup group, ProductSeries series, ProductFamily family, final String modelName) {
    if (series == null) {
        // implies, that family is also null
        for (ProductSeries s : serieses) {
            if (s.getBrand().equals(brand) && s.getGroup().equals(group) && s.getName().equals(SpecPu.DEFAULT_NAME)) {
                series = s;
            }
        }
        if (series == null) {
            series = soc.newProductSeries(brand, group, SpecPu.DEFAULT_NAME);
            serieses.add(series);
        }
    }
    if (family == null) {
        for (ProductFamily f : series.getFamilys()) {
            if (f.getName().equals(SpecPu.DEFAULT_NAME)) {
                family = f;
            }
        }
        if (family == null) {
            family = soc.newProductFamily();
            family.setName(SpecPu.DEFAULT_NAME);
            series.addFamily(family);
        }
    }
    // TODO: Check if name exists, just to be sure
    ProductModel model = soc.newProductModel();
    model.setName(modelName);
    model.setFamily(family);
    return model;
}
Also used : ProductFamily(eu.ggnet.dwoss.spec.ee.entity.ProductFamily) ProductSeries(eu.ggnet.dwoss.spec.ee.entity.ProductSeries) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel)

Example 3 with ProductModel

use of eu.ggnet.dwoss.spec.ee.entity.ProductModel 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 ProductModel

use of eu.ggnet.dwoss.spec.ee.entity.ProductModel 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)

Example 5 with ProductModel

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

the class ProductModelEmoIT method testRequestBrandGroupNameByHand.

@Test
public void testRequestBrandGroupNameByHand() throws Exception {
    TradeName sb = TradeName.HP;
    ProductGroup sg = ProductGroup.PROJECTOR;
    String sn = "SERIES";
    String fn = "FAMILY";
    String mn = "MODEL";
    utx.begin();
    em.joinTransaction();
    new ProductSeriesEmo(em).request(sb, sg, sn);
    utx.commit();
    utx.begin();
    em.joinTransaction();
    new ProductFamilyEmo(em).request(sb, sg, sn, fn);
    utx.commit();
    utx.begin();
    em.joinTransaction();
    ProductModel model = new ProductModelEmo(em).request(sb, sg, sn, fn, mn);
    assertNotNull(model);
    utx.commit();
}
Also used : TradeName(eu.ggnet.dwoss.rules.TradeName) ProductGroup(eu.ggnet.dwoss.rules.ProductGroup) ProductModelEmo(eu.ggnet.dwoss.spec.ee.emo.ProductModelEmo) ProductFamilyEmo(eu.ggnet.dwoss.spec.ee.emo.ProductFamilyEmo) ProductSeriesEmo(eu.ggnet.dwoss.spec.ee.emo.ProductSeriesEmo) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel) Test(org.junit.Test)

Aggregations

ProductModel (eu.ggnet.dwoss.spec.ee.entity.ProductModel)19 ProductFamily (eu.ggnet.dwoss.spec.ee.entity.ProductFamily)15 ProductSeries (eu.ggnet.dwoss.spec.ee.entity.ProductSeries)15 Test (org.junit.Test)14 Cpu (eu.ggnet.dwoss.spec.ee.entity.piece.Cpu)9 Gpu (eu.ggnet.dwoss.spec.ee.entity.piece.Gpu)9 ProductSpec (eu.ggnet.dwoss.spec.ee.entity.ProductSpec)8 Notebook (eu.ggnet.dwoss.spec.ee.entity.Notebook)6 Display (eu.ggnet.dwoss.spec.ee.entity.piece.Display)6 TradeName (eu.ggnet.dwoss.rules.TradeName)4 ProductModelEmo (eu.ggnet.dwoss.spec.ee.emo.ProductModelEmo)4 Desktop (eu.ggnet.dwoss.spec.ee.entity.Desktop)4 ProductGroup (eu.ggnet.dwoss.rules.ProductGroup)3 SpecGenerator (eu.ggnet.dwoss.spec.ee.assist.gen.SpecGenerator)2 ProductModelEao (eu.ggnet.dwoss.spec.ee.eao.ProductModelEao)2 ProductSpecEao (eu.ggnet.dwoss.spec.ee.eao.ProductSpecEao)2 ProductFamilyEmo (eu.ggnet.dwoss.spec.ee.emo.ProductFamilyEmo)2 Product (eu.ggnet.dwoss.uniqueunit.ee.entity.Product)2 Mandators (eu.ggnet.dwoss.mandator.Mandators)1 eu.ggnet.dwoss.mandator.api.value (eu.ggnet.dwoss.mandator.api.value)1