All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javabeanstack.data.model.DataResult Maven / Gradle / Ivy

The newest version!
/*
* JavaBeanStack FrameWork
*
* Copyright (C) 2017 Jorge Enciso
* Email: [email protected]
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301  USA
 */
package org.javabeanstack.data.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.javabeanstack.data.IDataResult;
import org.javabeanstack.data.IDataRow;
import org.javabeanstack.data.IDataSet;
import org.javabeanstack.error.IErrorReg;
import org.javabeanstack.util.Fn;
import org.javabeanstack.util.Strings;

/**
 * A travéz de esta clase, se devuelve el resultado de la grabación de registros
 * en la base de datos. Normalmente este componente va de una capa (ejb) a otra
 * (web).
 *
 * @author Jorge Enciso
 */
public class DataResult implements IDataResult {

    private final Map> mapResult = new HashMap();
    private Boolean success = true;
    private String errorMsg = "";
    private IDataRow rowUpdated;
    private Exception exception;
    private Boolean removeDeleted = false;
    private Map errorsMap = new HashMap();

    /**
     * Asigna al conjunto una lista ejb que ha sido procesado.
     *
     * @param key clave
     * @param listEjb lista ejb (DataRow)
     */
    @Override
    public void put(String key, List listEjb) {
        if (key.isEmpty()) {
            key = "1";
        }
        mapResult.put(key, listEjb);
    }

    /**
     * Devuelve un map conteniendo todas las listas ejb que han sido procesados.
     *
     * @return map con las listas ejb
     */
    @Override
    public Map> getMapResult() {
        return mapResult;
    }

    /**
     * En caso de grabarse un solo registro devuelve el registro con los datos
     * del identificador generado en la base de datos.
     *
     * @param 
     * @return registro grabado.
     */
    @Override
    public  T getRowUpdated() {
        return (T) rowUpdated;
    }

    /**
     * Devuelve una lista ejb del conjunto que ha sido procesado.
     *
     * @param key identificador de la lista
     * @return lista ejb con los datos que han sido grabados.
     */
    @Override
    public List getListEjb(String key) {
        if (key.isEmpty()) {
            key = "1";
        }
        return mapResult.get(key);
    }

    /**
     * Devuelve una lista ejb del conjunto que ha sido procesado.
     *
     * @param 
     * @return lista ejb con los datos que han sido grabados.
     */
    @Override
    public  List getRowsUpdated() {
        Map.Entry> entry = mapResult.entrySet().iterator().next();
        if (entry == null) {
            return null;
        }
        return (List) entry.getValue();
    }

    /**
     * Devuelve una lista ejb del conjunto que ha sido procesado.
     *
     * @param 
     * @param key identificador de la lista
     * @return lista ejb con los datos que han sido grabados.
     */
    @Override
    public  List getRowsUpdated(String key) {
        if (Fn.nvl(key, "").isEmpty()) {
            key = "1";
        }
        return (List) mapResult.get(key);
    }

    /**
     * Determina si se eliminarón de las listas de registros los elementos que
     * han sido marcados para ser eliminados.
     *
     * @return si fue o no eliminado los registros marcados para tal efecto.
     */
    @Override
    public Boolean isRemoveDeleted() {
        return removeDeleted;
    }

    @Override
    public void setRemoveDeleted(Boolean removeDeleted) {
        this.removeDeleted = removeDeleted;
    }

    /**
     * Devuelve verdadero si la operación fue un exito o falso si no lo fue.
     *
     * @return verdadero o falso
     */
    @Override
    public Boolean isSuccessFul() {
        return success;
    }

    @Override
    public void setSuccess(Boolean success) {
        this.success = success;
    }

    /**
     *
     * @return devuelve una cadena de errores si lo hubiese.
     */
    @Override
    public String getErrorMsg() {
        if (Strings.isNullorEmpty(errorMsg)
                && errorsMap != null && !errorsMap.isEmpty()) {
            String retornar = "";
            for (Map.Entry entry:errorsMap.entrySet()){
                retornar += ((IErrorReg)entry.getValue()).getMessage()+"\n";
            }
            return retornar;
        }
        return errorMsg;
    }

    /**
     * Asigna el mensaje de error en caso de haberse producido una excepción.
     *
     * @param error
     */
    @Override
    public void setErrorMsg(String error) {
        errorMsg = error;
    }

    /**
     * Devuelve un map con la lista de todos los errores.
     *
     * @return map con los errores.
     */
    @Override
    public Map getErrorsMap() {
        return errorsMap;
    }

    /**
     * Asigna el map con los errores
     *
     * @param error
     */
    @Override
    public void setErrorsMap(Map error) {
        errorsMap = error;
    }

    /**
     * Agrega a una lista las filas procesadas.
     *
     * @param 
     * @param row
     */
    @Override
    public  void setRowsUpdated(T row) {
        List list = new ArrayList();
        list.add(row);
        setRowsUpdated(list);
        rowUpdated = list.get(0);
    }

    /**
     * Agrega a una lista las filas procesadas.
     *
     * @param 
     * @param rows
     */
    @Override
    public  void setRowsUpdated(List rows) {
        IDataSet dataSet = new DataSet();
        dataSet.add("1", rows);
        setRowsUpdated(dataSet);
    }

    /**
     * Asigna un dataSet conteniendo todas las lista de registros que fuerón
     * procesados.
     *
     * @param 
     * @param dataSetLocal
     */
    @Override
    public  void setRowsUpdated(IDataSet dataSetLocal) {
        dataSetLocal.getMapListSet().entrySet().forEach(mapLocal -> {
            List rowsLocal = (List) mapLocal.getValue();
            List rowsRemote = (List) mapResult.get(mapLocal.getKey());
            if (rowsRemote != null) {
                //Recorrer objetos locales                
                for (int i = 0; i < rowsLocal.size(); i++) {
                    T rowLocal = rowsLocal.get(i);
                    // Buscar en los objetos remotos actualizados
                    for (T rowRemote : rowsRemote) {
                        if (rowLocal.equivalent(rowRemote)) {
                            // Asignar el objeto actualizado
                            rowsLocal.set(i, rowRemote);
                        }
                    }
                }
            }
        });
    }

    /**
     * Asigna el ultimo registro grabado en la base
     *
     * @param 
     * @param row
     */
    @Override
    public  void setRowUpdated(T row) {
        rowUpdated = row;
    }

    /**
     * Devuelve el error como Exception si lo hubiese
     *
     * @return exception
     */
    @Override
    public Exception getException() {
        return exception;
    }

    /**
     * Asigna la exception si lo hubiese
     *
     * @param ex
     */
    @Override
    public void setException(Exception ex) {
        exception = ex;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy