How to compare a list and eliminate duplicates?

0

I have a list in which when editing a record, add a new one in the database, this new record is practically the same as "edit", but change an id that I want to change; at the time of calling the list I want to replace the old value with the new one that I create, how can I do it?

Update:

here is my bean:

package com.em.web.bean;

import com.em.exception.BusinessException;
import com.em.model.dto.CatalogoHijoDTO;
import com.em.model.dto.IpsProyectoIpsDTO;
import com.em.model.dto.ParamSoporteDTO;
import com.em.model.dto.ProyectoDTO;
import com.em.util.AbstractNegocio;
import com.em.web.business.BusinessWeb;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.event.RowEditEvent;
import org.primefaces.event.SelectEvent;

@ManagedBean
@ViewScoped
public class SoporteTipoBean extends BusinessWeb implements Serializable {

private List<SelectItem> itemsContratoCatalogo, selectTiposSoportes;
private List<ProyectoDTO> listaIps;
private String ipsNombre, ipsNit, ipsid;
private ProyectoDTO ipsProyectoipsSelectedDto;
private List<ProyectoDTO> datosFiltrados;
private List<ParamSoporteDTO> lstSoportes;
private List<ParamSoporteDTO> datosParam;
private CatalogoHijoDTO idCatalogoSoporte;
private String tipo;
private Boolean estado;
private Long idSoporteTipo;
private Boolean requerido;
private Boolean opcional;
private Boolean conceptoRecobrable;
private CatalogoHijoDTO idCatalogoTipo;
private CatalogoHijoDTO idCatalogoTipoII;
private Long proyectoIpsId;
private String catalogoHijoValor;
private ParamSoporteDTO datosEditadosDTO;
private ProyectoDTO proyectoIpsSelected;
private ParamSoporteDTO nuevaParametrizacionSoporteDTO = new 
ParamSoporteDTO();

@PostConstruct

public void init() {

    try {
        itemsContratoCatalogo = 
listItemsCatalogoByNombre("soportes_completitud", Boolean.TRUE, 
Boolean.TRUE, Boolean.FALSE);
        selectTiposSoportes = listItemsCatalogoByNombre("tipos_contratos", 
Boolean.TRUE, Boolean.TRUE, Boolean.FALSE);
        itemsTipoAtencion = listItemsCatalogoByNombre("tipos_de_atención", 
Boolean.TRUE, Boolean.TRUE, Boolean.FALSE);
        listaIps = ripsEJB.getProyectoIpsByNombre();
        ripsEJB.setEntityManager(AbstractNegocio.ENTITY_RIPS);

        List<String> IpssNames = new ArrayList();
        IpssNames.add("autorizaciones");
        IpssNames.add("tipo_atencion_medicamentos");

    } catch (Exception ex) {
        Logger.getLogger(AuditoriaBean.class.getName()).log(Level.SEVERE, 
null, ex);
    }

}

public void onRowSelect(SelectEvent event) {
    FacesMessage msg = new FacesMessage("IPS Seleccionada", 
((IpsProyectoIpsDTO) event.getObject()).getIpsNombre());
    FacesContext.getCurrentInstance().addMessage(null, msg);
    proyectoIpsSelected = ((IpsProyectoIpsDTO) event.getObject());

    try {
        // trae los soportes dependiendo la ips seleccionada
 lstSoportes = ripsEJB.getParametrosSoportesByProyectoIps   
(proyectoIpsSelected.getProyectoIpsId ));



    } catch (BusinessException ex) {
        Logger.getLogger(SoporteTipoBean.class.getName()).log(Level.SEVERE, 
null, ex);
    }
}

public void inicializarParametrizacion() {
    nuevaParametrizacionSoporteDTO = new ParamSoporteDTO();
}

public void onRowEdit(RowEditEvent event) throws Exception {
    try {
        ParamSoporteDTO editadosDTO = (ParamSoporteDTO) event.getObject();
        if (editadosDTO.getProyectoIpsId().getProyectoIpsId() == -1l) {
            editadosDTO.setIdSoporteTipo(null);
            editadosDTO.setProyectoIpsId(new 
ProyectoIpsDTO(proyectoIpsSelected.getProyectoIpsId()));
            editadosDTO.setEstado(Boolean.TRUE);
//                agrega los nuevos parametros
            editadosDTO = ripsEJB.actualizarParamSoportes(editadosDTO);
//                vuelve a llamar la lista de soportes                
          lstSoportes = 

ripsEJB.getParametrosSoportesByProyectoIps
(proyectoIpsSelected.getProyectoIpsId());

        } else {
            editadosDTO.setEstado(Boolean.TRUE);
            editadosDTO = ripsEJB.actualizarParamSoportes(editadosDTO);                
            lstSoportes = ripsEJB.getParametrosSoportesByProyectoIps
(proyectoIpsSelected.getProyectoIpsId());


        }
     lstSoportes = ripsEJB.getParametrosSoportesByProyectoIps
(proyectoIpsSelected.getProyectoIpsId());                        
        lstSoportes.set(lstSoportes.indexOf(editadosDTO), editadosDTO);

        setFacesMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, 
COMPLETADO, "Archivo editado éxitosamente!"));

    } catch (BusinessException ex) {
        Logger.getLogger(SoporteTipoBean.class.getName()).log(Level.SEVERE, 
null, ex);
        setFacesMessage(new FacesMessage(FacesMessage.SEVERITY_FATAL, ERROR, 
"Error interno!"));
    }

}


public void onRowCancel(RowEditEvent event) {
    FacesMessage msg = new FacesMessage("Edición Cancelada", 
((ParamSoporteDTO) event.getObject()).getIpsNombre().getIpsNombre());
    FacesContext.getCurrentInstance().addMessage(null, msg);
}           

public void guardarSoporteDocumental() {
    try {
        nuevaParametrizacionSoporteDTO.setProyectoIpsId(new 
ProyectoIpsDTO(proyectoIpsSelected.getProyectoIpsId()));
        nuevaParametrizacionSoporteDTO.setEstado(Boolean.TRUE);

        if (nuevaParametrizacionSoporteDTO.getIdCatalogoTipo().getCatalogoHijoValor().equals("ACTIVIDAD")) {
            nuevaParametrizacionSoporteDTO.setTipo("tipo_atencion");
            nuevaParametrizacionSoporteDTO.setIdCatalogoTipo(nuevaParametrizacionSoporteDTO.getIdCatalogoTipoII());
        } else {
            nuevaParametrizacionSoporteDTO.setTipo("tipo_contrato");
        }

        nuevaParametrizacionSoporteDTO = ripsEJB.actualizarParamSoportes(nuevaParametrizacionSoporteDTO);

        if (nuevaParametrizacionSoporteDTO.getIdSoporteTipo() != null) {
            lstSoportes = ripsEJB.getParametrosSoportesByProyectoIps(proyectoIpsSelected.getProyectoIpsId());

            setFacesMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, INFO, "Parametrizacion creada con exito!"));
        } else {
            setFacesMessage(new FacesMessage(FacesMessage.SEVERITY_FATAL, ERROR, "Error no se pudo crear parametrizacion!!"));
        }
    } catch (Exception e) {
        Logger.getLogger(SoporteTipoBean.class.getName()).log(Level.SEVERE, null, e);
        setFacesMessage(new FacesMessage(FacesMessage.SEVERITY_FATAL, ERROR, "Error interno!"));
    }
}







public List<SelectItem> getItemsContratoCatalogo() {
    return itemsContratoCatalogo;
}

public void setItemsContratoCatalogo(List<SelectItem> itemsContratoCatalogo) {
    this.itemsContratoCatalogo = itemsContratoCatalogo;
}

public List<SelectItem> getSelectTiposSoportes() {
    return selectTiposSoportes;
}

public void setSelectTiposSoporrtes(List<SelectItem> selectTiposSoportes) {
    this.selectTiposSoportes = selectTiposSoportes;
}

public List<IpsProyectoIpsDTO> getListaIps() {
    return listaIps;
}

public void setListaIps(List<IpsProyectoIpsDTO> listaIps) {
    this.listaIps = listaIps;
}

public String getIpsNombre() {
    return ipsNombre;
}

public void setIpsNombre(String ipsNombre) {
    this.ipsNombre = ipsNombre;
}

public IpsProyectoIpsDTO getIpsProyectoipsSelectedDto() {
    return ipsProyectoipsSelectedDto;
}

public void setIpsProyectoipsSelectedDto(IpsProyectoIpsDTO ipsProyectoipsSelectedDto) {
    this.ipsProyectoipsSelectedDto = ipsProyectoipsSelectedDto;
}

public String getIpsNit() {
    return ipsNit;
}

public void setIpsNit(String ipsNit) {
    this.ipsNit = ipsNit;
}

public String getIpsid() {
    return ipsid;
}

public void setIpsid(String ipsid) {
    this.ipsid = ipsid;
}

public List<IpsProyectoIpsDTO> getDatosFiltrados() {
    return datosFiltrados;
}

public void setDatosFiltrados(List<IpsProyectoIpsDTO> datosFiltrados) {
    this.datosFiltrados = datosFiltrados;
}

public List<ParamSoporteDTO> getLstSoportes() {
    return lstSoportes;
}

public void setLstSoportes(List<ParamSoporteDTO> lstSoportes) {
    this.lstSoportes = lstSoportes;
}

public CatalogoHijoDTO getIdCatalogoSoporte() {
    return idCatalogoSoporte;
}

public void setIdCatalogoSoporte(CatalogoHijoDTO idCatalogoSoporte) {
    this.idCatalogoSoporte = idCatalogoSoporte;
}

public String getTipo() {
    return tipo;
}

public void setTipo(String tipo) {
    this.tipo = tipo;
}

public Boolean getEstado() {
    return estado;
}

public void setEstado(Boolean estado) {
    this.estado = estado;
}

public Long getIdSoporteTipo() {
    return idSoporteTipo;
}

public void setIdSoporteTipo(Long idSoporteTipo) {
    this.idSoporteTipo = idSoporteTipo;
}

public Boolean getRequerido() {
    return requerido;
}

public void setRequerido(Boolean requerido) {
    this.requerido = requerido;
}

public Boolean getOpcional() {
    return opcional;
}

public void setOpcional(Boolean opcional) {
    this.opcional = opcional;
}

public Boolean getConceptoRecobrable() {
    return conceptoRecobrable;
}

public void setConceptoRecobrable(Boolean conceptoRecobrable) {
    this.conceptoRecobrable = conceptoRecobrable;
}

public CatalogoHijoDTO getIdCatalogoTipo() {
    return idCatalogoTipo;
}

public void setIdCatalogoTipo(CatalogoHijoDTO idCatalogoTipo) {
    this.idCatalogoTipo = idCatalogoTipo;
}

public Long getProyectoIpsId() {
    return proyectoIpsId;
}

public void setProyectoIpsId(Long proyectoIpsId) {
    this.proyectoIpsId = proyectoIpsId;
}

public String getCatalogoHijoValor() {
    return catalogoHijoValor;
}

public void setCatalogoHijoValor(String catalogoHijoValor) {
    this.catalogoHijoValor = catalogoHijoValor;
}

public List<ParamSoporteDTO> getDatosParam() {
    return datosParam;
}

public void setDatosParam(List<ParamSoporteDTO> datosParam) {
    this.datosParam = datosParam;
}

public ParamSoporteDTO getEditadosDTO() {
    return datosEditadosDTO;
}

public void setEditadosDTO(ParamSoporteDTO datosEditadosDTO) {
    this.datosEditadosDTO = datosEditadosDTO;
}

public ParamSoporteDTO getNuevaParametrizacionSoporteDTO() {
    return nuevaParametrizacionSoporteDTO;
}

public void setNuevaParametrizacionSoporteDTO(ParamSoporteDTO nuevaParametrizacionSoporteDTO) {
    this.nuevaParametrizacionSoporteDTO = nuevaParametrizacionSoporteDTO;
}

public CatalogoHijoDTO getIdCatalogoTipoII() {
    return idCatalogoTipoII;
}

public void setIdCatalogoTipoII(CatalogoHijoDTO idCatalogoTipoII) {
    this.idCatalogoTipoII = idCatalogoTipoII;
}

}

    
asked by Juan 27.07.2018 в 17:45
source

2 answers

0

I already found the solution, the hashSet if it works, what I was missing was to sort the data in the database query (ORDER BY project_id ASC) and it worked for me

    
answered by 01.08.2018 / 14:22
source
0

The answer depends on the scenario. I have raised two different in this solution.

ParamSoporteDTO:

In the first instance I have implemented for this example, a class ParamSoporteDTO with proyectoID , idCatalogoSoporte , idCatalogoTipo and nombre . According to what you indicate the equality of two objects is determined if they share two of those ids (override equals)

public class ParamSoporteDTO {
    private int proyectoID, idCatalogoSoporte, idCatalogoTipo;

    private String nombre;

    public ParamSoporteDTO() {
        super();
    }


    public ParamSoporteDTO(int proyectoID, String nombre, int idCatalogoSoporte, int idCatalogoTipo) {
        super();
        this.proyectoID = proyectoID;
        this.idCatalogoSoporte = idCatalogoSoporte;
        this.idCatalogoTipo = idCatalogoTipo;
        this.nombre = nombre;
    }


    public int getIdCatalogoSoporte() {
        return idCatalogoSoporte;
    }

    public void setIdCatalogoSoporte(int idCatalogoSoporte) {
        this.idCatalogoSoporte = idCatalogoSoporte;
    }

    public int getIdCatalogoTipo() {
        return idCatalogoTipo;
    }

    public void setIdCatalogoTipo(int idCatalogoTipo) {
        this.idCatalogoTipo = idCatalogoTipo;
    }

    public int getProyectoID() {
        return proyectoID;
    }

    public void setProyectoID(int proyectoID) {
        this.proyectoID = proyectoID;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + idCatalogoSoporte;
        result = prime * result + idCatalogoTipo;
        return result;
    }


    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        ParamSoporteDTO other = (ParamSoporteDTO) obj;
        if (idCatalogoSoporte != other.idCatalogoSoporte)
            return false;
        if (idCatalogoTipo != other.idCatalogoTipo)
            return false;
        return true;
    }


    @Override
    public String toString() {
        return "ParamSoporteDTO [proyectoID=" + proyectoID + ", idCatalogoSoporte=" + idCatalogoSoporte
                + ", idCatalogoTipo=" + idCatalogoTipo + ", nombre=" + nombre + "]";
    }

}

Test object:

For the following two scenarios, I will use the object:

[proyectoID=XX, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]

The project id will be affected only.

Scenario 1:

You have your list lstSoportes of ParamSoporteDTO and you get a new record ParamSoporteDTO that you want to add to the list, replacing the old one.

import java.util.ArrayList;
import java.util.List;

public class TestRemDuplicate {

    public static void main(String[] args) {

        List<ParamSoporteDTO> lstSoportes = new ArrayList<ParamSoporteDTO>();

        lstSoportes.add(new ParamSoporteDTO(1,"nombre1",11,1111));
        lstSoportes.add(new ParamSoporteDTO(2,"nombre2",22,2222));
        lstSoportes.add(new ParamSoporteDTO(3,"nombre3",33,3333));
        lstSoportes.add(new ParamSoporteDTO(4,"nombre4",44,4444));
        lstSoportes.add(new ParamSoporteDTO(5,"nombre5",55,5555));
        lstSoportes.add(new ParamSoporteDTO(6,"nombre6",66,6666));
        lstSoportes.add(new ParamSoporteDTO(7,"nombre7",77,7777));
        lstSoportes.add(new ParamSoporteDTO(8,"nombre8",88,8888));
        lstSoportes.add(new ParamSoporteDTO(9,"nombre9",99,9999));
        lstSoportes.add(new ParamSoporteDTO(10,"nombre10",1010,10101010));
        System.out.println("----------LISTA ORIGINAL-----------");
        lstSoportes.forEach(e -> System.out.println(e));

        ParamSoporteDTO editado = new ParamSoporteDTO(11,"nombre10",1010,10101010);

        lstSoportes.set(lstSoportes.indexOf(editado), editado);

        System.out.println("\n\n----------LISTA LUEGO DE LA EDICIÓN-----------");
        lstSoportes.forEach(e -> System.out.println(e));
    }

}

Exit 1:

----------LISTA ORIGINAL-----------
ParamSoporteDTO [proyectoID=1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=2, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=3, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=4, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=5, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=6, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=7, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=8, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=9, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]
ParamSoporteDTO [proyectoID=10, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]


----------LISTA LUEGO DE LA EDICIÓN-----------
ParamSoporteDTO [proyectoID=1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=2, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=3, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=4, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=5, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=6, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=7, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=8, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=9, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]
ParamSoporteDTO [proyectoID=11, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]

As you can see, the last object in the list is modified (old for the new one)

Scenario 2:

The object that was added to the database is inserted at the end of the list of ParamSoporteDTO . Here the list will be treated with the following action:

  • Remove the first instance of the object that is equal to the last object in the list.

As a test, the object to be replaced is in the middle of the list.

import java.util.ArrayList;
import java.util.List;

public class TestRemDuplicate2 {

    public static void main(String[] args) {

        List<ParamSoporteDTO> lstSoportes = new ArrayList<ParamSoporteDTO>();

        lstSoportes.add(new ParamSoporteDTO(1, "nombre1", 11, 1111));
        lstSoportes.add(new ParamSoporteDTO(2, "nombre2", 22, 2222));
        lstSoportes.add(new ParamSoporteDTO(3, "nombre3", 33, 3333));
        lstSoportes.add(new ParamSoporteDTO(4, "nombre4", 44, 4444));
        lstSoportes.add(new ParamSoporteDTO(5, "nombre5", 55, 5555));
        lstSoportes.add(new ParamSoporteDTO(10, "nombre10", 1010, 10101010));
        lstSoportes.add(new ParamSoporteDTO(6, "nombre6", 66, 6666));
        lstSoportes.add(new ParamSoporteDTO(7, "nombre7", 77, 7777));
        lstSoportes.add(new ParamSoporteDTO(8, "nombre8", 88, 8888));
        lstSoportes.add(new ParamSoporteDTO(9, "nombre9", 99, 9999));
        lstSoportes.add(new ParamSoporteDTO(11, "nombre10", 1010, 10101010));

        System.out.println("----------LISTA ORIGINAL-----------");
        lstSoportes.forEach(e -> System.out.println(e));

        lstSoportes.remove(lstSoportes.get(lstSoportes.size() - 1));

        System.out.println("\n\n----------LISTA LUEGO DE LA EDICIÓN-----------");
        lstSoportes.forEach(e -> System.out.println(e));
    }

}

Exit 2:

----------LISTA ORIGINAL-----------
ParamSoporteDTO [proyectoID=1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=2, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=3, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=4, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=5, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=10, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]
ParamSoporteDTO [proyectoID=6, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=7, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=8, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=9, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]
ParamSoporteDTO [proyectoID=11, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]


----------LISTA LUEGO DE LA EDICIÓN-----------
ParamSoporteDTO [proyectoID=1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=2, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=3, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=4, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=5, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=6, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=7, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=8, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=9, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]
ParamSoporteDTO [proyectoID=11, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]

As noted, the duplicate element equal to the last element was removed.

Note: I finally thought of a third scenario, where the two registers are in random places on the list. But here I can not logically decide which is the object that will persist and which one will be eliminated, unless you can take a business rule from projectID, but that I do not know.

I hope I have been as clear as possible.

Documentation:

EDIT:

According to what you indicate in the comment, it would work with scenario 1. An example of input and output:

----------LISTA ORIGINAL-----------
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]


----------LISTA LUEGO DE LA EDICIÓN-----------
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=11, idCatalogoTipo=1111, nombre=nombre1]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=22, idCatalogoTipo=2222, nombre=nombre2]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=33, idCatalogoTipo=3333, nombre=nombre3]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=44, idCatalogoTipo=4444, nombre=nombre4]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=55, idCatalogoTipo=5555, nombre=nombre5]
ParamSoporteDTO [proyectoID=11, idCatalogoSoporte=1010, idCatalogoTipo=10101010, nombre=nombre10]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=66, idCatalogoTipo=6666, nombre=nombre6]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=77, idCatalogoTipo=7777, nombre=nombre7]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=88, idCatalogoTipo=8888, nombre=nombre8]
ParamSoporteDTO [proyectoID=-1, idCatalogoSoporte=99, idCatalogoTipo=9999, nombre=nombre9]
    
answered by 28.07.2018 в 12:56