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

it.cnr.contab.progettiric00.bp.RimodulaProgettoPianoEconomicoVoceBilancioCRUDController Maven / Gradle / Ivy

/*
 * Copyright (C) 2019  Consiglio Nazionale delle Ricerche
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU Affero General Public License as
 *     published by the Free Software Foundation, either version 3 of the
 *     License, or (at your option) any later version.
 *
 *     This program 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 Affero General Public License for more details.
 *
 *     You should have received a copy of the GNU Affero General Public License
 *     along with this program.  If not, see .
 */

package it.cnr.contab.progettiric00.bp;

import java.math.BigDecimal;
import java.util.BitSet;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;

import it.cnr.contab.progettiric00.core.bulk.Ass_progetto_piaeco_voceBulk;
import it.cnr.contab.progettiric00.core.bulk.Progetto_piano_economicoBulk;
import it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk;
import it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.HttpActionContext;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.util.action.SelectionIterator;
import it.cnr.jada.util.jsp.Button;

public class RimodulaProgettoPianoEconomicoVoceBilancioCRUDController extends SimpleProgettoPianoEconomicoVoceBilancioCRUDController {
	public RimodulaProgettoPianoEconomicoVoceBilancioCRUDController(String name, Class modelClass, String listPropertyName, it.cnr.jada.util.action.FormController parent) {
		super(name, modelClass, listPropertyName, parent);
	}

	@Override
	public boolean isShrinkable() {
		Progetto_piano_economicoBulk obj = (Progetto_piano_economicoBulk)this.getParentModel();
		return super.isShrinkable() && !obj.isROFieldRimodulazione();
	}
	
	@Override
	public boolean isGrowable() {
		Progetto_piano_economicoBulk obj = (Progetto_piano_economicoBulk)this.getParentModel();
		return super.isGrowable() && !obj.isROFieldRimodulazione();
	}
	
	public OggettoBulk removeDetail(OggettoBulk oggettobulk, int i) {
		Ass_progetto_piaeco_voceBulk assVoce = (Ass_progetto_piaeco_voceBulk)oggettobulk;
		if (assVoce.isDetailRimodulatoAggiunto())
			return super.removeDetail(oggettobulk, i);

		if (!assVoce.isDetailRimodulatoEliminato()) {
			assVoce.setImVarFinanziatoRimodulatoPreDelete(assVoce.getImVarFinanziatoRimodulato());
			assVoce.setImVarCofinanziatoRimodulatoPreDelete(assVoce.getImVarCofinanziatoRimodulato());
			assVoce.setImVarFinanziatoRimodulato(BigDecimal.ZERO);
			assVoce.setImVarCofinanziatoRimodulato(BigDecimal.ZERO);
			assVoce.setDetailRimodulatoEliminato(Boolean.TRUE);
		}

		return oggettobulk;
	};
	
	public void add(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
		Ass_progetto_piaeco_voceBulk assVoce = (Ass_progetto_piaeco_voceBulk)oggettobulk;
		assVoce.setImVarFinanziatoRimodulato(BigDecimal.ZERO);
		assVoce.setImVarCofinanziatoRimodulato(BigDecimal.ZERO);
		assVoce.setDetailRimodulatoAggiunto(Boolean.TRUE);
		super.add(actioncontext, oggettobulk);
	};

    @Override
	public String getRowStyle(Object obj) {
		Ass_progetto_piaeco_voceBulk assVoce = (Ass_progetto_piaeco_voceBulk)obj;
		StringBuffer style = new StringBuffer();
		if (assVoce.isDetailRimodulato())
			style.append("font-style:italic;font-weight:bold;");
		if (assVoce.isDetailRimodulatoEliminato())
			style.append("text-decoration: line-through;");
		return Optional.of(style).filter(el->el.length()>0).map(StringBuffer::toString).orElse(null);
	};	
	
    @Override
    public void writeHTMLToolbar(
            javax.servlet.jsp.PageContext context,
            boolean reset,
            boolean find,
            boolean delete, boolean closedToolbar) throws java.io.IOException, javax.servlet.ServletException {
    	Progetto_piano_economicoBulk ppe = (Progetto_piano_economicoBulk)getParentController().getModel();
    	boolean isPpeEliminato = Optional.ofNullable(ppe).map(Progetto_piano_economicoBulk::isDetailRimodulatoEliminato).orElse(Boolean.FALSE);
    	if (isPpeEliminato)
    		super.writeHTMLToolbar(context, !isPpeEliminato&&reset, !isPpeEliminato&&find, !isPpeEliminato&&delete, false, true);
    	else {
    		super.writeHTMLToolbar(context, reset, find, delete, false);

    		Button button = new Button();
    		button.setImg("img/undo16.gif");
    		button.setDisabledImg("img/undo16.gif");
    		button.setTitle("Annulla Eliminazione");
    		button.setIconClass("fa fa-fw fa-undo text-primary");
    		button.setButtonClass("btn-sm btn-secondary btn-outline-secondary btn-title");
            button.setHref("javascript:submitForm('doUndoRemoveFromCRUD(" + getInputPrefix() + ")')");
            boolean isButtonEnable = isShrinkable() && 
            						 Optional.ofNullable(getParentController().getModel())
											  .filter(Progetto_piano_economicoBulk.class::isInstance)
											  .map(Progetto_piano_economicoBulk.class::cast)
											  .flatMap(el->Optional.ofNullable(el.getVoce_piano_economico()))
											  .map(Voce_piano_economico_prgBulk::getFl_add_vocibil)
											  .orElse(Boolean.FALSE);
            button.writeToolbarButton(context.getOut(), isButtonEnable, HttpActionContext.isFromBootstrap(context));
            
            super.closeButtonGROUPToolbar(context);
    	}
    }
    
    public void undoRemove(ActionContext actioncontext) throws ValidationException, BusinessProcessException {
        basicSetSelection(actioncontext);
        if (paged) {
            List list = getDetailsPage();
            BitSet bitset = selection.getSelection(getCurrentPage() * getPageSize(), getPageSize());
            if (bitset.length() == 0) {
                for (int i = 0; i < getPageSize(); i++)
                    if (bitset.get(i))
                        validateForUndoRemoveDetail(actioncontext, (OggettoBulk) list.get(i));

                for (int j = getPageSize() - 1; j > 0; j--)
                    if (bitset.get(j))
                        undoRemoveDetail((OggettoBulk) list.get(j), j);

            } else if (selection.getFocus() >= 0) {
                OggettoBulk oggettobulk1 = getDetail(selection.getFocus());
                validateForUndoRemoveDetail(actioncontext, oggettobulk1);
                undoRemoveDetail(oggettobulk1, selection.getFocus());
            }
        } else {
            List list1 = getDetails();
            if (selection.size() > 0) {
                OggettoBulk oggettobulk2;
                for (Iterator iterator1 = selection.iterator(list1); iterator1.hasNext(); validateForUndoRemoveDetail(actioncontext, oggettobulk2))
                    oggettobulk2 = (OggettoBulk) iterator1.next();

                int k;
                OggettoBulk oggettobulk3;
                for (SelectionIterator selectioniterator = selection.reverseIterator(); selectioniterator.hasNext(); undoRemoveDetail(oggettobulk3, k)) {
                    k = selectioniterator.nextIndex();
                    oggettobulk3 = (OggettoBulk) list1.get(k);
                }

            } else if (selection.getFocus() >= 0) {
                OggettoBulk oggettobulk = getDetail(selection.getFocus());
                validateForUndoRemoveDetail(actioncontext, oggettobulk);
                undoRemoveDetail(oggettobulk, selection.getFocus());
            }
        }
        getParentController().setDirty(true);
        reset(actioncontext);
    }

    public void validateForUndoRemoveDetail(ActionContext actioncontext, OggettoBulk oggettobulk)
            throws ValidationException {
    }
    
	public OggettoBulk undoRemoveDetail(OggettoBulk oggettobulk, int i) {
		Ass_progetto_piaeco_voceBulk assVoce = (Ass_progetto_piaeco_voceBulk)oggettobulk;
		if (assVoce.isDetailRimodulatoEliminato()) {
			assVoce.setImVarFinanziatoRimodulato(Optional.ofNullable(assVoce.getImVarFinanziatoRimodulatoPreDelete()).orElse(BigDecimal.ZERO));
			assVoce.setImVarCofinanziatoRimodulato(Optional.ofNullable(assVoce.getImVarCofinanziatoRimodulatoPreDelete()).orElse(BigDecimal.ZERO));
		}
		assVoce.setDetailRimodulatoEliminato(Boolean.FALSE);
		return oggettobulk;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy