/*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
* This file is part of jAPS software.
* jAPS is a free software;
* you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
*/
package com.agiletec.aps.system.services.controller.control;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletResponse;
import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.RequestContext;
import com.agiletec.aps.system.services.controller.ControllerManager;
import com.agiletec.aps.system.services.url.IURLManager;
import com.agiletec.aps.system.services.url.PageURL;
/**
* Classe di utilitĂ che implementa un metodo per impostare una redirezione ed
* un metodo per recuperare un parametro singolo dall'HttpServletRequest.
* @author
*/
public abstract class AbstractControlService implements ControlServiceInterface {
/**
* Imposta i parametri di una redirezione.
* @param redirDestPage Il codice della pagina su cui si vuole redirezionare.
* @param reqCtx Il contesto di richiesta.
* @return L'indicativo del tipo di redirezione in uscita del controlService.
* Può essere una delle costanti definite in ControllerManager.
*/
protected int redirect(String redirDestPage, RequestContext reqCtx) {
int retStatus;
try {
String redirPar = this.getParameter(RequestContext.PAR_REDIRECT_FLAG, reqCtx);
if (redirPar == null || "".equals(redirPar)) {
PageURL url = this.getUrlManager().createURL(reqCtx);
url.setPageCode(redirDestPage);
url.addParam(RequestContext.PAR_REDIRECT_FLAG, "1");
String redirUrl = url.getURL();
if (_log.isLoggable(Level.FINEST)) {
_log.finest("Redirecting to " + redirUrl);
}
reqCtx.clearError();
reqCtx.addExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL, redirUrl);
retStatus = ControllerManager.REDIRECT;
} else {
reqCtx.setHTTPError(HttpServletResponse.SC_BAD_REQUEST);
retStatus = ControllerManager.ERROR;
}
} catch (Throwable t) {
retStatus = ControllerManager.SYS_ERROR;
reqCtx.setHTTPError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
ApsSystemUtils.logThrowable(t, this, "redirect", "Error on creation redirect to page " + redirDestPage);
}
return retStatus;
}
/**
* Recupera un parametro della richiesta.
* @param name Il nome del parametro.
* @param reqCtx Il contesto di richiesta.
* @return Il valore del parametro
*/
protected String getParameter(String name, RequestContext reqCtx){
String param = reqCtx.getRequest().getParameter(name);
return param;
}
protected IURLManager getUrlManager() {
return _urlManager;
}
public void setUrlManager(IURLManager urlManager) {
this._urlManager = urlManager;
}
/**
* Il log di sistema.
*/
protected Logger _log = ApsSystemUtils.getLogger();
/**
* Riferimento all'Url Manager.
*/
private IURLManager _urlManager;
}