<commit_before>package py.una.pol.web.tarea3.controller;

import py.una.pol.web.tarea3.model.DuplicateItem;
import py.una.pol.web.tarea3.model.Item;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;

@Stateless
public class DuplicateItemController {
    @PersistenceContext(name = "Tarea2DS")
    private EntityManager em;

    @EJB
    private ItemController itemController;

    public List<DuplicateItem> getDuplicates() {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<DuplicateItem> cq = cb.createQuery(DuplicateItem.class);
        Root<DuplicateItem> root = cq.from(DuplicateItem.class);
        cq.select(root);
        TypedQuery<DuplicateItem> query = em.createQuery(cq);

        return query.getResultList();
    }

    public void addDuplicate(Item p) {
        Item existing = itemController.getItemByName(p.getName());
        p.setId(existing.getId());
        DuplicateItem dup = existing.getDuplicate();
        if (dup != null) {
            dup.setCantidad(dup.getCantidad() + 1);
            em.merge(dup);
        } else {
            dup = new DuplicateItem();
            dup.setCantidad(1);
            dup.setItem(existing);
            existing.setDuplicate(dup);
            em.persist(dup);
        }

        em.merge(p);
    }

    public DuplicateItem getDuplicate(Integer id) {
        return em.find(DuplicateItem.class, id);
    }
}<commit_msg>Mostrar duplicados luego de insertar<commit_after>package py.una.pol.web.tarea3.controller;

import py.una.pol.web.tarea3.model.DuplicateItem;
import py.una.pol.web.tarea3.model.Item;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;

@Stateless
public class DuplicateItemController {
    @PersistenceContext(name = "Tarea2DS")
    private EntityManager em;

    @EJB
    private ItemController itemController;

    public List<DuplicateItem> getDuplicates() {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<DuplicateItem> cq = cb.createQuery(DuplicateItem.class);
        Root<DuplicateItem> root = cq.from(DuplicateItem.class);
        cq.select(root);
        TypedQuery<DuplicateItem> query = em.createQuery(cq);

        return query.getResultList();
    }

    public void addDuplicate(Item p) {
        Item existing = itemController.getItemByName(p.getName());
        DuplicateItem dup = existing.getDuplicate();
        if (dup != null) {
            dup.setCantidad(dup.getCantidad() + 1);
            em.merge(dup);
        } else {
            dup = new DuplicateItem();
            dup.setCantidad(1);
            dup.setItem(existing);
            existing.setDuplicate(dup);
            em.persist(dup);
        }
        p.setId(existing.getId());
        p.setName(existing.getName());
        p.setPrice(existing.getPrice());
        p.setStock(existing.getStock());
        p.setDuplicate(existing.getDuplicate());
        p.setProvider(existing.getProvider());
    }

    public DuplicateItem getDuplicate(Integer id) {
        return em.find(DuplicateItem.class, id);
    }
}
{'fraction_non_alphanumeric': 0.11120354963948974, 'fraction_numerical': 0.0033277870216306157, 'mean_word_length': 3.1035267349260525, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7252244', 'n_tokens_mistral': 1081, 'n_tokens_neox': 1084, 'n_words': 184}