Search in sources :

Example 1 with GpuEao

use of eu.ggnet.dwoss.spec.ee.eao.GpuEao in project dwoss by gg-net.

the class ContainerITGeneratorHelper method makeOne.

public ProductSpec makeOne() {
    SpecGenerator g = new SpecGenerator();
    ProductSpec spec = g.makeSpec();
    ProductModel model = spec.getModel();
    ProductModelEmo productModelEmo = new ProductModelEmo(specEm);
    model = productModelEmo.request(model.getFamily().getSeries().getBrand(), model.getFamily().getSeries().getGroup(), model.getFamily().getSeries().getName(), model.getFamily().getName(), model.getName());
    spec.setModel(model);
    if (spec instanceof DisplayAble) {
        DisplayAble da = (DisplayAble) spec;
        da.setDisplay(new DisplayEmo(specEm).weakRequest(da.getDisplay().getSize(), da.getDisplay().getResolution(), da.getDisplay().getType(), da.getDisplay().getRation()));
    }
    if (spec instanceof Desktop) {
        Desktop desktop = (Desktop) spec;
        if (desktop.getCpu() == null || desktop.getGpu() == null)
            throw new IllegalArgumentException("Cpu or Gpu of a Desktop are null. " + desktop);
        Cpu cpu = new CpuEao(specEm).findById(desktop.getCpu().getId());
        Gpu gpu = new GpuEao(specEm).findById(desktop.getGpu().getId());
        if (cpu != null)
            desktop.setCpu(cpu);
        if (gpu != null)
            desktop.setGpu(gpu);
    }
    specEm.persist(spec);
    return spec;
}
Also used : ProductModelEmo(eu.ggnet.dwoss.spec.ee.emo.ProductModelEmo) DisplayAble(eu.ggnet.dwoss.spec.ee.entity.DisplayAble) Desktop(eu.ggnet.dwoss.spec.ee.entity.Desktop) SpecGenerator(eu.ggnet.dwoss.spec.ee.assist.gen.SpecGenerator) Cpu(eu.ggnet.dwoss.spec.ee.entity.piece.Cpu) ProductSpec(eu.ggnet.dwoss.spec.ee.entity.ProductSpec) DisplayEmo(eu.ggnet.dwoss.spec.ee.emo.DisplayEmo) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) ProductModel(eu.ggnet.dwoss.spec.ee.entity.ProductModel) CpuEao(eu.ggnet.dwoss.spec.ee.eao.CpuEao) GpuEao(eu.ggnet.dwoss.spec.ee.eao.GpuEao)

Example 2 with GpuEao

use of eu.ggnet.dwoss.spec.ee.eao.GpuEao in project dwoss by gg-net.

the class ProductProcessorOperation method create.

/**
 * Creates a new ProductSpec and the relating Product and SopoProduct.
 * <p>
 * The process has multiple steps:
 * <ol>
 * <li>Merge the ProductModel and set it in the Spec</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 Spec is a Desktop its assumed that the Cpu and Gpu are existent, and they are merged and set.</li>
 * <li>The Spec is persisted</li>
 * <li>A Product is created and persisted</li>
 * <li>The Spec.productId is set to Product.id (WeakReference)</li>
 * <li>A SopoProduct is searched. If found, it is updated, else a new one is created</li>
 * </ol>
 *
 * @param spec  the spec to persist, must not be null
 * @param model the model for the spec, must not be null or new
 * @param gtin  the value of gtin
 * @throws IllegalArgumentException if Cpu or Gpu in a Desktop are new.
 *
 * @return the eu.ggnet.dwoss.spec.entity.ProductSpec
 */
// TODO: Check if the model as parameter is still needed.
@Override
public ProductSpec create(ProductSpec spec, ProductModel model, long gtin) throws IllegalArgumentException {
    if (model == null)
        throw new NullPointerException("Model is null");
    if (spec == null)
        throw new NullPointerException("ProductSpec is null");
    // Hint: Normally the column unique option should do that, but HSQLDB somehow lost it.
    if (new ProductEao(uuEm).findByPartNo(spec.getPartNo()) != null)
        throw new IllegalArgumentException("PartNo=" + spec.getPartNo() + " exists allready, but create is calles");
    ProductModelEmo productModelEmo = new ProductModelEmo(specEm);
    model = productModelEmo.request(model.getFamily().getSeries().getBrand(), model.getFamily().getSeries().getGroup(), model.getFamily().getSeries().getName(), model.getFamily().getName(), model.getName());
    spec.setModel(model);
    if (spec instanceof DisplayAble) {
        DisplayAble da = (DisplayAble) spec;
        da.setDisplay(new DisplayEmo(specEm).weakRequest(da.getDisplay().getSize(), da.getDisplay().getResolution(), da.getDisplay().getType(), da.getDisplay().getRation()));
    }
    if (spec instanceof Desktop) {
        Desktop desktop = (Desktop) spec;
        if (desktop.getCpu() == null || desktop.getGpu() == null)
            throw new IllegalArgumentException("Cpu or Gpu of a Desktop are null. " + desktop);
        Cpu cpu = new CpuEao(specEm).findById(desktop.getCpu().getId());
        Gpu gpu = new GpuEao(specEm).findById(desktop.getGpu().getId());
        if (cpu != null)
            desktop.setCpu(cpu);
        if (gpu != null)
            desktop.setGpu(gpu);
    }
    if (spec instanceof DesktopBundle) {
        DesktopBundle bundle = (DesktopBundle) spec;
        if (bundle.getDesktop().getId() == 0 || bundle.getMonitor().getId() == 0)
            throw new IllegalArgumentException("Monitor or Desktop are new. Impossible");
        ProductSpecEao specEao = new ProductSpecEao(specEm);
        bundle.setDesktop(specEao.findById(bundle.getDesktop().getId()));
        bundle.setMonitor(specEao.findById(bundle.getMonitor().getId()));
    }
    L.info("Persisting {} including model change={}", SpecFormater.toDetailedName(spec), (model == spec.getModel()));
    specEm.persist(spec);
    // Ensuring Id generation.
    specEm.flush();
    ProductEao productEao = new ProductEao(uuEm);
    Product product = productEao.findByPartNo(spec.getPartNo());
    if (product == null)
        product = new 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("persisting {}", product);
    if (!uuEm.contains(product)) {
        uuEm.persist(product);
        // Ensuring Id generation
        uuEm.flush();
    }
    L.debug("creating weak reference ProductSpec.productId=Product.id value ({})", product.getId());
    spec.setProductId(product.getId());
    return spec;
}
Also used : ProductModelEmo(eu.ggnet.dwoss.spec.ee.emo.ProductModelEmo) Cpu(eu.ggnet.dwoss.spec.ee.entity.piece.Cpu) Product(eu.ggnet.dwoss.uniqueunit.ee.entity.Product) ProductEao(eu.ggnet.dwoss.uniqueunit.ee.eao.ProductEao) DisplayEmo(eu.ggnet.dwoss.spec.ee.emo.DisplayEmo) DesktopBundle(eu.ggnet.dwoss.spec.ee.entity.DesktopBundle) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) GpuEao(eu.ggnet.dwoss.spec.ee.eao.GpuEao) DisplayAble(eu.ggnet.dwoss.spec.ee.entity.DisplayAble) Desktop(eu.ggnet.dwoss.spec.ee.entity.Desktop) ProductSpecEao(eu.ggnet.dwoss.spec.ee.eao.ProductSpecEao) CpuEao(eu.ggnet.dwoss.spec.ee.eao.CpuEao)

Example 3 with GpuEao

use of eu.ggnet.dwoss.spec.ee.eao.GpuEao in project dwoss by gg-net.

the class ProductProcessorOperation method update.

/**
 * Updates an existing detached Gpu.
 *
 * @param gpu the detached Gpu
 * @return the reatached updated Gpu
 * @throws IllegalArgumentException if there allready exists a Gpu with the same series and name
 */
@Override
public Gpu update(Gpu gpu) throws IllegalArgumentException {
    EntityManager em = specEm;
    GpuEao gpuEao = new GpuEao(em);
    Gpu existendGpu = gpuEao.find(gpu.getSeries(), gpu.getModel());
    if (existendGpu != null && existendGpu.getId() != gpu.getId())
        throw new IllegalArgumentException("Gpu with same Series and Name exists " + existendGpu);
    return em.merge(gpu);
}
Also used : EntityManager(javax.persistence.EntityManager) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) GpuEao(eu.ggnet.dwoss.spec.ee.eao.GpuEao)

Example 4 with GpuEao

use of eu.ggnet.dwoss.spec.ee.eao.GpuEao in project dwoss by gg-net.

the class ProductProcessorOperation method create.

/**
 * Creates a new Gpu instance.
 *
 * @param gpu the Gpu to create
 * @return the Gpu instance from databes, but detached.
 * @throws IllegalArgumentException if there exist a Gpu with the same series and the name.
 */
@Override
public Gpu create(Gpu gpu) throws IllegalArgumentException {
    EntityManager em = specEm;
    GpuEao gpuEao = new GpuEao(em);
    Gpu existendGpu = gpuEao.find(gpu.getSeries(), gpu.getModel());
    if (existendGpu != null)
        throw new IllegalArgumentException("Gpu with same Series and Name exists " + existendGpu);
    em.persist(gpu);
    return gpu;
}
Also used : EntityManager(javax.persistence.EntityManager) Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) GpuEao(eu.ggnet.dwoss.spec.ee.eao.GpuEao)

Example 5 with GpuEao

use of eu.ggnet.dwoss.spec.ee.eao.GpuEao in project dwoss by gg-net.

the class GpuEaoIT method testFindSeriesName.

@Test
public void testFindSeriesName() throws Exception {
    utx.begin();
    em.joinTransaction();
    em.persist(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte"));
    em.persist(new Gpu(Gpu.Type.DESKTOP, Gpu.Series.RADEON_HD_5000, "Eine Graphiccarte"));
    em.persist(new Gpu(Gpu.Type.MOBILE, Gpu.Series.GEFORCE_500, "Eine Graphiccarte"));
    utx.commit();
    utx.begin();
    em.joinTransaction();
    GpuEao gpuEao = new GpuEao(em);
    Gpu gpu = gpuEao.find(Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte");
    assertNotNull(gpu);
    gpu = gpuEao.find(Gpu.Series.GEFORCE_100, "Nocheine Grafikkarte");
    assertNull(gpu);
    utx.commit();
}
Also used : Gpu(eu.ggnet.dwoss.spec.ee.entity.piece.Gpu) GpuEao(eu.ggnet.dwoss.spec.ee.eao.GpuEao) Test(org.junit.Test)

Aggregations

GpuEao (eu.ggnet.dwoss.spec.ee.eao.GpuEao)5 Gpu (eu.ggnet.dwoss.spec.ee.entity.piece.Gpu)5 CpuEao (eu.ggnet.dwoss.spec.ee.eao.CpuEao)2 DisplayEmo (eu.ggnet.dwoss.spec.ee.emo.DisplayEmo)2 ProductModelEmo (eu.ggnet.dwoss.spec.ee.emo.ProductModelEmo)2 Desktop (eu.ggnet.dwoss.spec.ee.entity.Desktop)2 DisplayAble (eu.ggnet.dwoss.spec.ee.entity.DisplayAble)2 Cpu (eu.ggnet.dwoss.spec.ee.entity.piece.Cpu)2 EntityManager (javax.persistence.EntityManager)2 SpecGenerator (eu.ggnet.dwoss.spec.ee.assist.gen.SpecGenerator)1 ProductSpecEao (eu.ggnet.dwoss.spec.ee.eao.ProductSpecEao)1 DesktopBundle (eu.ggnet.dwoss.spec.ee.entity.DesktopBundle)1 ProductModel (eu.ggnet.dwoss.spec.ee.entity.ProductModel)1 ProductSpec (eu.ggnet.dwoss.spec.ee.entity.ProductSpec)1 ProductEao (eu.ggnet.dwoss.uniqueunit.ee.eao.ProductEao)1 Product (eu.ggnet.dwoss.uniqueunit.ee.entity.Product)1 Test (org.junit.Test)1