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();
}
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;
}
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();
}
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();
}
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();
}
Aggregations