it.cnr.contab.utenze00.action.GestioneUtenteAction 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.utenze00.action;
import it.cnr.contab.utenze00.bulk.*;
import it.cnr.contab.utenze00.bp.*;
import it.cnr.contab.utente00.nav.ejb.*;
import it.cnr.jada.action.*;
import it.cnr.jada.bulk.*;
import it.cnr.jada.util.action.OptionBP;
import it.cnr.jada.util.action.SelezionatoreListaBP;
import java.util.Optional;
/**
* Action utilizzata per la gestione utenze.
*/
public class GestioneUtenteAction extends it.cnr.jada.util.action.BulkAction {
public GestioneUtenteAction() {
super();
}
/**
* Gestisce l'invalidazione della sessione utente (logout)
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doApriListaMessaggi(ActionContext context) {
try {
String server_url = null;
if (context instanceof HttpActionContext)
server_url = it.cnr.jada.util.jsp.JSPUtils.getBaseUrl(((HttpActionContext)context).getRequest());
it.cnr.contab.messaggio00.bp.ListaMessaggiBP bp = (it.cnr.contab.messaggio00.bp.ListaMessaggiBP)context.createBusinessProcess("ListaMessaggiBP",new Object[] { "V",server_url });
getComponentSession().notificaMessaggi(context.getUserContext(),server_url);
return context.addBusinessProcess(bp);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la richiesta di espansione di un nodo del menu applicativo
*
* @param context L'ActionContext della richiesta
* @param cd_nodo codice del nodo da aprire
* @return Il Forward alla pagina di risposta
*/
public Forward doApriMenu(ActionContext context,String cd_nodo) {
try {
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess();
if (Optional.ofNullable(bp)
.map(GestioneUtenteBP::getParentRoot)
.map(BusinessProcess::isBootstrap)
.orElse(Boolean.FALSE)) {
context.invalidateSession();
return context.findForward("logout");
}
Albero_mainBulk nodo = bp.getNodoAlbero_main(cd_nodo);
if (nodo == null)
bp.addNodoAlbero_main(
nodo = getComponentSession().generaAlberoPerUtente(
context.getUserContext(),
bp.getUserInfo().getUtente(),
bp.getUserInfo().getUnita_organizzativa() == null ?
null :
bp.getUserInfo().getUnita_organizzativa().getCd_unita_organizzativa(),
cd_nodo,
(short)0));
bp.espandiNodo(nodo);
return context.findForward("menu_tree");
}catch(NullPointerException e){
setMessage(context, 0, "Selezionare l'Unità Organizzativa");
return context.findDefaultForward();
}catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la richiesta di cambiamento dell'UO di scrivania
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doCambiaUnitaOrganizzativa(ActionContext context) {
try {
if (isCurrentBPDirty(context)) {
it.cnr.jada.util.action.OptionBP optionbp = openContinuePrompt(context,"doConfermaCambiaUnitaOrganizzativa");
return optionbp;
}
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
UtenteBulk utente = ui.getUtente();
if (utente.isSupervisore())
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaCds(context);
else
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaUnitaOrganizzative(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la richiesta di cambiamento dell'UO di scrivania
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doListaUnitaOrganizzativa(ActionContext context) {
try {
if (isCurrentBPDirty(context)) {
it.cnr.jada.util.action.OptionBP optionbp = openContinuePrompt(context,"doConfermaListaUnitaOrganizzativa");
return optionbp;
}
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
UtenteBulk utente = ui.getUtente();
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).listaUnitaOrganizzative(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la richiesta di cambiamento dell'UO di scrivania
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doCambiaCdr(ActionContext context) {
try {
if (isCurrentBPDirty(context)) {
it.cnr.jada.util.action.OptionBP optionbp = openContinuePrompt(context,"doConfermaCambiaCdr");
return optionbp;
}
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
if (ui.getUnita_organizzativa()==null) {
SelezionatoreListaBP bp = (SelezionatoreListaBP)context.getBusinessProcess();
bp.setErrorMessage("Selezionare l'Unitè organizzativa");
return context.findDefaultForward();
}
UtenteBulk utente = ui.getUtente();
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaCdr(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la richiesta di chiusura della gerarchia di un nodo dell'albero applicativo
*
* @param context L'ActionContext della richiesta
* @param cd_nodo codice del nodo da chiudere
* @return Il Forward alla pagina di risposta
*/
public Forward doChiudiMenu(ActionContext context,String cd_nodo) {
try {
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess();
bp.chiudiNodoEspanso(cd_nodo);
return context.findForward("menu_tree");
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doCloseAll(ActionContext context) {
try {
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
context.setBusinessProcess(bp);
bp.closeAllChildren(context);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doCloseForm(ActionContext context) {
return context.findForward("sessionExpired");
}
/**
* Gestisce la conferma della richiesta di cambiamento dell'UO di scrivania
*
* @param context L'ActionContext della richiesta
* @param option
* @return Il Forward alla pagina di risposta
*/
public Forward doConfermaCambiaUnitaOrganizzativa(ActionContext context,int option) {
try {
if (option == it.cnr.jada.util.action.OptionBP.NO_BUTTON)
return context.findDefaultForward();
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
UtenteBulk utente = ui.getUtente();
if (utente.isSupervisore())
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaCds(context);
else
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaUnitaOrganizzative(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la conferma della richiesta di cambiamento dell'UO di scrivania
*
* @param context L'ActionContext della richiesta
* @param option
* @return Il Forward alla pagina di risposta
*/
public Forward doConfermaListaUnitaOrganizzativa(ActionContext context,int option) {
try {
if (option == it.cnr.jada.util.action.OptionBP.NO_BUTTON)
return context.findDefaultForward();
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
UtenteBulk utente = ui.getUtente();
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaUnitaOrganizzative(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doConfermaCambiaCdr(ActionContext context,int option) {
try {
if (option == it.cnr.jada.util.action.OptionBP.NO_BUTTON)
return context.findDefaultForward();
CNRUserInfo ui = (CNRUserInfo)context.getUserInfo();
UtenteBulk utente = ui.getUtente();
return ((GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP")).cercaCdr(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce la conferma di selezione effettuata su un nodo dell'albero applicativo
*
* @param context L'ActionContext della richiesta
* @param optionbp
* @return Il Forward alla pagina di risposta
*/
public it.cnr.jada.action.Forward doConfermaSelezioneMenu(it.cnr.jada.action.ActionContext context,it.cnr.jada.util.action.OptionBP optionbp) {
try {
it.cnr.contab.utenze00.bp.GestioneUtenteBP bp = (it.cnr.contab.utenze00.bp.GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
if (optionbp.getOption() == OptionBP.NO_BUTTON)
return context.findDefaultForward();
bp.closeAllChildren(context);
it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk uo = bp.getUserInfo().getUnita_organizzativa();
it.cnr.contab.utenze00.bulk.Albero_mainBulk nodo = getComponentSession().validaNodoPerUtente(context.getUserContext(),bp.getUserInfo().getUtente(),uo == null ? null : uo.getCd_unita_organizzativa(), (String)optionbp.getAttribute("cd_nodo"));
return startNodo(context,bp,nodo);
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doControllaMessaggi(ActionContext context,String cd_nodo) {
try {
it.cnr.contab.utenze00.bp.GestioneUtenteBP bp = (it.cnr.contab.utenze00.bp.GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
return context.findForward("mailbar");
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doDefault(ActionContext context) {
try {
if (context.getBusinessProcessRoot(false) == null)
return context.findDefaultForward();
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
if (bp == null)
return context.findDefaultForward();
context.setBusinessProcess(bp);
bp.closeAllChildren();
CNRUserInfo userInfo = (CNRUserInfo)context.getUserInfo();
if (userInfo.getUnita_organizzativa() == null)
getBusinessProcess(context).cercaUnitaOrganizzative(context);
return context.findForward("desktop");
} catch(NoSuchBusinessProcessException e) {
return context.getBusinessProcessRoot(true);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce l'invalidazione della sessione utente (logout)
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doLogout(ActionContext context) {
doCloseAll(context);
context.invalidateSession();
return context.findForward("logout");
}
/**
* Gestisce l'azione di selezione di un esercizio tra quelli disponibili
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doSelezionaEsercizio(ActionContext context) {
try {
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess();
// salvo l'esercizio corrente
Integer esercizio = bp.getUserInfo().getEsercizio();
bp.getUserInfo().fillFromActionContext(context,null,it.cnr.jada.util.action.FormController.EDIT,bp.getFieldValidationMap());
CNRUserContext userContext = new CNRUserContext(
bp.getUserInfo().getUtente().getCd_utente(),
context.getSessionId(),
bp.getUserInfo().getEsercizio(),
CNRUserContext.getCd_unita_organizzativa(context.getUserContext()),
CNRUserContext.getCd_cds(context.getUserContext()),
CNRUserContext.getCd_cdr(context.getUserContext()));
// Se il nuovo esercizio è bloccato ripristino l'esercizio corrente
// e informo l'utente.
try {
LoginAction.getComponentSession().registerUser(userContext,context.getApplicationId());
// Remmato Marco Spasiano 28/02/2006 per problema di sessioni attive
//UnregisterUser.registerUnregisterUser((HttpActionContext)context);
} catch(it.cnr.jada.comp.ApplicationException e) {
bp.getUserInfo().setEsercizio(esercizio);
bp.setErrorMessage(e.getMessage());
return context.findForward("desktop");
}
if (!bp.getUserInfo().getUtente().isUtenteComune()) {
context.setUserContext(userContext);
return context.findForward("desktop");
}
return getBusinessProcess(context).cercaUnitaOrganizzative(context);
} catch(Throwable e) {
return handleException(context,e);
}
}
/**
* Gestisce le azioni di controllo e validazione della richiesta di apertura dall'albero main di una certa funzione applicativa
*
* @param context L'ActionContext della richiesta
* @param cd_nodo codice del nodo su cui è stata effettuata la richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doSelezionaMenu(ActionContext context,String cd_nodo) {
it.cnr.contab.utenze00.bp.GestioneUtenteBP bp = null;
try {
bp = Optional.ofNullable(context.getBusinessProcess("/GestioneUtenteBP"))
.filter(GestioneUtenteBP.class::isInstance)
.map(GestioneUtenteBP.class::cast)
.orElseThrow(() -> new NoSuchBusinessProcessException());
if (isCurrentBPDirty(context)) {
it.cnr.jada.util.action.OptionBP optionbp = openContinuePrompt(context,"doConfermaSelezioneMenu");
optionbp.addAttribute("cd_nodo", cd_nodo);
return optionbp;
}
it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk uo = bp.getUserInfo().getUnita_organizzativa();
bp.closeAllChildren(context);
it.cnr.contab.utenze00.bulk.Albero_mainBulk nodo = getComponentSession().validaNodoPerUtente(context.getUserContext(),bp.getUserInfo().getUtente(),uo == null ? null : uo.getCd_unita_organizzativa(),cd_nodo);
if (nodo == null) return context.findDefaultForward();
return startNodo(context,bp,nodo);
} catch (NoSuchBusinessProcessException _ex){
return context.findForward("sessionExpired");
} catch (Throwable e) {
if (bp.getParentRoot().isBootstrap()) {
bp.setErrorMessage(e.getMessage());
((HttpActionContext)context).getRequest()
.setAttribute(it.cnr.jada.action.BusinessProcess.class.getName(), bp);
}
return handleException(context,e);
}
}
public Forward doCollapseAll(ActionContext context) {
it.cnr.contab.utenze00.bp.GestioneUtenteBP bp = (it.cnr.contab.utenze00.bp.GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
bp.collapseAllNodi();
return context.findForward("menu_tree");
}
/**
* Gestisce l'azione di costruzione della gerarchia applicativa (albero main) in funzione delle abilitazioni (accessi)
* e unitè organizzativa di scrivania selezionata dall'utente
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doSelezionaUnitaOrganizzativa(ActionContext context) {
try {
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
HookForward hook = (HookForward)context.getCaller();
it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk uo = (it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk)hook.getParameter("focusedElement");
bp.setUserInfo((CNRUserInfo)hook.getParameter("userInfo"));
context.setUserInfo(bp.getUserInfo());
if (uo != null)
bp.getUserInfo().setUnita_organizzativa(uo);
context.setUserContext(new CNRUserContext(
bp.getUserInfo().getUtente().getCd_utente(),
context.getSessionId(),
bp.getUserInfo().getEsercizio(),
bp.getUserInfo().getUnita_organizzativa().getCd_unita_organizzativa(),
bp.getUserInfo().getUnita_organizzativa().getCd_unita_padre(),
bp.getUserInfo().getCdr().getCd_centro_responsabilita()));
bp.setRadiceAlbero_main(context, getComponentSession().generaAlberoPerUtente(context.getUserContext(),bp.getUserInfo().getUtente(),uo.getCd_unita_organizzativa(),null,(short)0));
return context.findForward("desktop");
} catch(Throwable e) {
return handleException(context,e);
}
}
public GestioneUtenteBP getBusinessProcess(ActionContext context) {
return (GestioneUtenteBP)context.getBusinessProcess();
}
/**
*
* Restituisce il valore della proprietà 'componentSession'
*
* @return Il valore della proprietà 'componentSession'
* @throws javax.ejb.EJBException Se si verifica qualche eccezione applicativa per cui non è possibile effettuare l'operazione
* @throws java.rmi.RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public static GestioneLoginComponentSession getComponentSession() throws javax.ejb.EJBException, java.rmi.RemoteException {
return (GestioneLoginComponentSession)it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRUTENZE00_NAV_EJB_GestioneLoginComponentSession",GestioneLoginComponentSession.class);
}
public Forward handleException(ActionContext context, Throwable ex) {
try {
throw ex;
} catch(ValidationException e) {
setErrorMessage(context,e.getMessage());
return context.findDefaultForward();
} catch(java.text.ParseException e) {
setErrorMessage(context,"Errore di formattazione");
return context.findDefaultForward();
} catch(Throwable e) {
return super.handleException(context,e);
}
}
private boolean isCurrentBPDirty(ActionContext context) {
it.cnr.jada.action.BusinessProcess currentbp = context.getBusinessProcess();
try {
if (currentbp instanceof it.cnr.jada.util.action.FormController) {
it.cnr.jada.util.action.FormController formbp = (it.cnr.jada.util.action.FormController)currentbp;
formbp.fillModel(context);
}
} catch(it.cnr.jada.bulk.FillException e) {
}
boolean dirty = false;
while(currentbp != null && !dirty) {
if (currentbp instanceof it.cnr.jada.util.action.FormController) {
it.cnr.jada.util.action.FormController formbp = (it.cnr.jada.util.action.FormController)currentbp;
dirty = dirty || formbp.isDirty();
}
currentbp = currentbp.getParent();
}
return dirty;
}
public boolean isThreadsafe(ActionContext context) {
return true;
}
/**
* Gestisce l'inizializzazione del business process legato ad un nodo dell'albero applicativo
*
* @param context L'ActionContext della richiesta
* @param bp business process di gestione delle utenze
* @param nodo nodo in processo
* @return Il Forward alla pagina di risposta
*/
protected it.cnr.jada.action.Forward startNodo(it.cnr.jada.action.ActionContext context,it.cnr.contab.utenze00.bp.GestioneUtenteBP bp,it.cnr.contab.utenze00.bulk.Albero_mainBulk nodo) {
BusinessProcess currentbp = context.getBusinessProcess();
try {
context.setBusinessProcess(bp);
it.cnr.jada.action.BusinessProcess newbp;
if (nodo.getTi_funzione() != null)
newbp = context.createBusinessProcess(nodo.getBusiness_process(),new Object[] { nodo.getTi_funzione() });
else
newbp = context.createBusinessProcess(nodo.getBusiness_process());
if (newbp == null) return context.findDefaultForward();
context.addBusinessProcess(newbp);
return context.findDefaultForward();
} catch(it.cnr.jada.action.BusinessProcessException e) {
if (currentbp.getParent() != null)
context.setBusinessProcess(currentbp);
return handleException(context,e);
} catch(Throwable e) {
if (currentbp.getParent() != null)
context.setBusinessProcess(currentbp);
return handleException(context,e);
}
}
public Forward doCallPreferiti(ActionContext context, String businessProcessName, String tiFunzione){
GestioneUtenteBP bp = (GestioneUtenteBP)context.getBusinessProcess("/GestioneUtenteBP");
Object[] params = new Object[]{};
try {
if (!tiFunzione.equalsIgnoreCase("C")){
params = new Object[]{tiFunzione};
}
BusinessProcess newbp = bp.getUserInfo().createBusinessProcess(context, businessProcessName, params);
return context.addBusinessProcess(newbp);
} catch (BusinessProcessException e) {
return handleException(context,e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy