/**
*
*/
package net.conselldemallorca.helium.v3.core.api.exception;
import org.apache.commons.lang.exception.ExceptionUtils;
/**
* Excepció que es llança si hi ha algun error crindant al plugin.
*
* @author Limit Tecnologies <limit@limit.es>
*/
@SuppressWarnings("serial")
public class SistemaExternException extends HeliumException {
private String sistemaExtern;
private String publicMessage;
public SistemaExternException(
Long entornId,
String entornCodi,
String entornNom,
Long expedientId,
String expedientTitol,
String expedientNumero,
Long expedientTipusId,
String expedientTipusCodi,
String expedientTipusNom,
String sistemaExtern,
Throwable cause) {
super( entornId,
entornCodi,
entornNom,
expedientId,
expedientTitol,
expedientNumero,
expedientTipusId,
expedientTipusCodi,
expedientTipusNom,
"Error en la comunicació amb el sistema extern " + sistemaExtern + ": " + ExceptionUtils.getRootCauseMessage(cause),
cause);
this.sistemaExtern = sistemaExtern;
this.publicMessage = "Error en la comunicació amb el sistema extern " + sistemaExtern + ": " + ExceptionUtils.getRootCauseMessage(cause);
}
public SistemaExternException(
Long entornId,
String entornCodi,
String entornNom,
Long expedientId,
String expedientTitol,
String expedientNumero,
Long expedientTipusId,
String expedientTipusCodi,
String expedientTipusNom,
String sistemaExtern,
String causa) {
super( entornId,
entornCodi,
entornNom,
expedientId,
expedientTitol,
expedientNumero,
expedientTipusId,
expedientTipusCodi,
expedientTipusNom,
"Error en la comunicació amb el sistema extern " + sistemaExtern + ": " + causa,
null);
this.sistemaExtern = sistemaExtern;
this.publicMessage = "Error en la comunicació amb el sistema extern " + sistemaExtern + ": " + causa;
}
public static SistemaExternException tractarSistemaExternException(
Long entornId,
String entornCodi,
String entornNom,
Long expedientId,
String expedientTitol,
String expedientNumero,
Long expedientTipusId,
String expedientTipusCodi,
String expedientTipusNom,
String sistemaExtern,
Throwable cause) {
if(ExceptionUtils.getRootCause(cause) != null &&
(ExceptionUtils.getRootCause(cause).getClass().getName().contains("Timeout") ||
ExceptionUtils.getRootCause(cause).getClass().getName().contains("timeout"))) {
return new SistemaExternTimeoutException(
entornId,
entornCodi,
entornNom,
expedientId,
expedientTitol,
expedientNumero,
expedientTipusId,
expedientTipusCodi,
expedientTipusNom,
sistemaExtern,
cause);
} else {
return new SistemaExternException(
entornId,
entornCodi,
entornNom,
expedientId,
expedientTitol,
expedientNumero,
expedientTipusId,
expedientTipusCodi,
expedientTipusNom,
sistemaExtern,
cause);
}
}
public String getPublicMessage() {
return publicMessage;
}
public String getSistemaExtern() {
return sistemaExtern;
}
}