/**
* M�thode qui modifie une caract�ristique
*/
public void updateCaracJDBC(
TCar carac,
throws DBException, ConstraintException {
Collection<String> colAncienValID = new ArrayList<String>();
JdbDAO jdbDAO = null;
try {
if (connect == null || connect.isClosed()) {
connect = getConnection();
}
if (connect != null) {
jdbDAO = daoFactory.getJdbDAO();
//on v�rifie que la caracteristique n'est d�j� pas pr�sente dans le r�f�rentiel
prepStat = connect.prepareStatement(queryVerifExist);
prepStat.setString(1, carac.getCarLib());
prepStat.setInt(2, carac.getId().intValue());
res = prepStat.executeQuery();
res.next();
int nb = res.getInt(1);
closePreparedStatement(prepStat);
closeResultSet(res);
//si la caracteristique est pr�sente dans le r�f�rentiel
if (nb > 0) {
throw new ConstraintException(1,"(OWNBACAD.PK_T_CAR.AJOUT_CARAC_EXISTE)", carac.getCarLib());
}
//si la caract�ristique n'est pas pr�sente dans le r�f�rentiel
else {
//cas de la caract�ristique rattach�e � un groupe
if (carac.getGrpCar() != null) {
if (carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_CL)) {
if (oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_DA)) {
callStatement = connect.prepareCall(queryPrcDACL);
callStatement.setInt(1, carac.getId().intValue());
callStatement.executeQuery();
closeCallableStatement(callStatement);
}
if (oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_AN)
|| oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_AM)
|| oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_EN)
|| oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_EM)
|| oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_BL)
|| oldTypeCarac.equalsIgnoreCase(Constantes.TYPE_CARAC_NO)) {
callStatement = connect.prepareCall(queryPrcANCL);
callStatement.setInt(1, carac.getId().intValue());
callStatement.executeQuery();
closeCallableStatement(callStatement);
}
}
//la caract�ristique � chang� de groupe, compl�tion de la requete
if (changeGroupe.booleanValue()) {
sql.append(", POSITION_GRP = ?" );
}
sql.append(" WHERE CAR_ID = ?" );
prepStat = connect.prepareStatement(sql.toString());
prepStat.setInt(1, carac.getGrpCar().getId().intValue());
prepStat.setString(2, carac.getCarLib());
prepStat.setString(3, carac.getTexteAide());
prepStat.setString(4, carac.getTypCar().getId());
if (changeGroupe.booleanValue()) {
prepStatementPosition.setInt(1, carac.getGrpCar().getId().intValue());
ResultSet resPosition = prepStatementPosition.
executeQuery();
int position = 1;
if (resPosition.next()) {
position += resPosition.getInt(1);
}
prepStat.
setInt(5,
Integer.
parseInt(carac.
getPerimetre()));
if (carac.getPriorite() != null) {
prepStat.
setInt(6,
Integer.
parseInt(carac.
getPriorite()));
} else {
prepStat.
setNull(6,
Types.
INTEGER);
}
prepStat.setInt(7, position);
prepStat.setInt(8, carac.getId().intValue());
closePreparedStatement(prepStatementPosition);
closeResultSet(resPosition);
} else {
prepStat.
setInt(5,
Integer.
parseInt(carac.
getPerimetre()));
if (carac.getPriorite() != null) {
prepStat.
setInt(6,
Integer.
parseInt(carac.
getPriorite()));
} else {
prepStat.
setNull(6,
Types.
INTEGER);
}
prepStat.setInt(7, carac.getId().intValue());
}
prepStat.executeUpdate();
closePreparedStatement(prepStat);
}
//modification des valeurs :
//recuperation des anciennes valeurs de la caracteristiques
closePreparedStatement(prepStat);
prepStat = connect.prepareStatement(queryGetValCar);
prepStat.setInt(1, carac.getId().intValue());
resAncienValeur = prepStat.executeQuery();
if (resAncienValeur == null || !resAncienValeur.next()) {
} else {
TLstv valeur = null;
do {
String valAncienne = resAncienValeur.
getString(1);
String numidAncien = resAncienValeur.
getString(2);
String libAncien = resAncienValeur.
getString(3);
int posAncien = resAncienValeur.getInt(4);
colAncienValID.add(valAncienne);
boolean trouver = false;
if (colValeur != null && colValeur.size() != 0 &&
(carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_AN)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_AM)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_BL)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_EN)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_EM )
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_NO))) {
Iterator itNouvelleVal = colValeur.
iterator();
while (itNouvelleVal.hasNext()) {
valeur = (TLstv) itNouvelleVal.next();
if (valeur.getId().getValeurId().toString().equals(valAncienne)) {
//s'il s'agit d'une valeur � modifier, r�cup�ration de la position de la valeur
int position = 0;
int nbPos = 0;
while (stoken.hasMoreTokens()) {
nbPos++;
String elemSt = stoken.
nextToken().
trim();
if (valeur.getNumId().toString().equals(elemSt)) {
position = nbPos;
break;
}
}
if (!valeur.getNumId().toString().equals(numidAncien)
|| !valeur.getValeur().equals(libAncien)
|| position != posAncien) {
prepStat = connect.prepareStatement(queryUpdateValCar);
prepStat.setInt(1, valeur.getNumId().intValue());
prepStat.setString(2, valeur.getValeur());
prepStat.setInt(3, position);
prepStat.setInt(4, valeur.getId().getCar().getId().intValue());
prepStat.
setInt(5,
new Integer(valAncienne
).
intValue());
prepStat.executeUpdate();
closePreparedStatement(prepStat);
//mise � jour du journal de bord
if (!valeur.getNumId().toString().equals(numidAncien)
|| !valeur.getValeur().equals(libAncien)) {
message = "Modification de " + libAncien + " (id. " + numidAncien + " ) en "
+ valeur.getValeur() + " (id. " + valeur.getNumId() + " ) dans la liste des valeurs pour la caract�ristique "
+ carac.getCarLib();
jdbDAO.callProcMajJdbNoCommit(Constantes.JDB_EVT_MCAR, Constantes.JDB_TYPE_MES_INF, valeur.getId().getCar().getId().toString(),
Constantes.JDB_CODE_OK, message, user);
LogManager.infoAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "",Constantes.LOG
+ Erreur.DAO + "updateCaracJDBC("+ carac.getId() + "," + ordre + " ) :" + message);
}
}
trouver = true;
break;
}
}
}
if (!trouver && !carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_NO)) {
//suppression de la valeur si on ne l'a pas trouv�e :
// - on regarde si la valeur est rattach�e � un mod�le de recherche en extract automatique
int isUsed = 0;
if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_BAC) || carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATISBAC) ) {
LstvDAO lstvDAO = daoFactory.getLstvDAO();
isUsed = lstvDAO.
verifValUseEauto(carac.
getId().
intValue(),
new Integer(valAncienne
).
intValue());
}
if (isUsed == 1) {
LogManager.infoAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "", logRoot
+ " * VALEUR RATTACHEE - SUPPRESSION VALEUR ANNULEE" );
throw new ConstraintException(2292, "(OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR_MODELE)", numidAncien);
} else {
int nbTac = -1;
int nbMatis = -1;
boolean valToDelete = false;
boolean valInvisibleToDelete = false;
// - on regarde si la valeur est rattach�e � un TAC ou un mod�le de Matis :
//si le p�rim�tre de la caract�ristique est �gal � "Bacarat uniquement"
if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_BAC)) {
//on regarde si la valeur est rattach�e � un TEF
prepStat = connect.prepareStatement(queryIsUseTef);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbTac = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
if (nbTac > 0) {
valToDelete = true;
if (valeurTAC.equals("" )) {
valeurTAC = libAncien;
} else {
valeurTAC = valeurTAC + ", " + libAncien;
}
}
//on regarde si la valeur est rattach�e (de mani�re invisible) � un mod�le de Matis
//1.on regarde si la valeur est rattach�e � un mod�le constructeur matis
prepStat = connect.prepareStatement(queryIsUseMatisCstr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
//2.on regarde si la valeur est rattach�e � un mod�le sfr matis
prepStat = connect.prepareStatement(queryIsUseMatisSfr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis += resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
if (nbMatis > 0) {
valInvisibleToDelete = true;
if (valeurMatis.equals("" )) {
valeurMatis = libAncien;
} else {
valeurMatis = valeurMatis + ", " + libAncien;
}
}
}
//si le p�rim�tre de la caract�ristique est �gal � "Matis uniquement"
else if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATIS)) {
//on regarde si la valeur est rattach�e � un mod�le constructeur matis
prepStat = connect.prepareStatement(queryIsUseMatisCstr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
//on regarde si la valeur est rattach�e � un mod�le sfr matis
prepStat = connect.prepareStatement(queryIsUseMatisSfr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis += resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
if (nbMatis > 0) {
valToDelete = true;
if (valeurMatis.equals("" )) {
valeurMatis = libAncien;
} else {
valeurMatis = valeurMatis + ", " + libAncien;
}
}
//on regarde si la valeur est rattach�e (de mani�re invisible) � un TEF
prepStat = connect.prepareStatement(queryIsUseTef);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbTac = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
if (nbTac > 0) {
valInvisibleToDelete = true;
if (valeurTAC.equals("" )) {
valeurTAC = libAncien;
} else {
valeurTAC = valeurTAC + ", " + libAncien;
}
}
}
//si le p�rim�tre de la caract�ristique est �gal � "Matis & Bacarat"
else if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATISBAC)) {
//on regarde si la valeur est rattach�e � un TEF
prepStat = connect.prepareStatement(queryIsUseTef);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbTac = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
//on regarde si la valeur est rattach�e � un mod�le constructeur matis
prepStat = connect.prepareStatement(queryIsUseMatisCstr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis = resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
//on regarde si la valeur est rattach�e � un mod�le sfr matis
prepStat = connect.prepareStatement(queryIsUseMatisSfr);
prepStat.setInt(1, carac.getId().intValue());
prepStat.
setInt(2,
new Integer(valAncienne
).
intValue());
resTef = prepStat.executeQuery();
resTef.next();
nbMatis += resTef.getInt(1);
closeResultSet(resTef);
closePreparedStatement(prepStat);
if (nbTac > 0 || nbMatis > 0) {
valToDelete = true;
if (nbTac > 0) {
if (valeurTAC.equals("" )) {
valeurTAC = libAncien;
} else {
valeurTAC = valeurTAC + ", " + libAncien;
}
}
if (nbMatis > 0) {
if (valeurMatis.equals("" )) {
valeurMatis = libAncien;
} else {
valeurMatis = valeurMatis + ", " + libAncien;
}
}
}
}
//suppression directe de la valeur de caract�ristique dans plusieurs cas :
// - des valeurs sont rattach�s de mani�re visible et le test est positionn� � false (deuxi�me passage dans la m�thode, apr�s confirmation)
// - des valeurs ne sont pas rattach�s de mani�re visible et le test est positionn� � true
// - des valeurs ne sont pas rattach�s de mani�re visible et des valeurs le sont de mani�re invisible et le test est positionn� � true
if ( (valToDelete && test.
equals(new Boolean(false))) ||
(!valToDelete && test.
equals(new Boolean(true))) ||
(!valToDelete && valInvisibleToDelete && test.
equals(new Boolean(true))) ) { //suppression des r�gles associ�es dans Bacarat
deleteRegles
(-1,
new Integer(valAncienne
).
intValue(),
false);
//suppression des r�gles associ�es dans Matis
callStatement = connect.prepareCall(queryPrcDelReglesMatis);
callStatement.setInt(1, carac.getId().intValue());
callStatement.executeQuery();
closeCallableStatement(callStatement);
//suppression des valeurs
callStatement = connect.prepareCall(queryPrcDelVal);
callStatement.setInt(1, carac.getId().intValue());
callStatement.
setInt(2,
new Integer(valAncienne
).
intValue());
callStatement.executeQuery();
closeCallableStatement(callStatement);
//mise � jour du journal de bord
message = "Suppression de la valeur " + libAncien + " (id. "+ numidAncien + " ) de la liste de valeurs de la caract�ristique " + carac.getCarLib();
jdbDAO.callProcMajJdbNoCommit(Constantes.JDB_EVT_MCAR, Constantes.JDB_TYPE_MES_INF, carac.getId().toString(), Constantes.JDB_CODE_OK, message, user);
LogManager.infoAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "",Constantes.LOG
+ Erreur.DAO + "updateCaracJDBC(" + carac.getId() + "," + ordre + " ) :" + message);
}
closeResultSet(resTef);
closePreparedStatement(prepStat);
}
}
}
while (resAncienValeur.next());
//gestion des demandes de confirmation :
//si le p�rim�tre de la caract�ristique est �gal � "Bacarat uniquement"
if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_BAC)) {
//si au moins une valeur est rattach�e � TEF et que le flag est positionn� � "true", on demande � l'utilisateur si il veut la supprimer
if (!valeurTAC.
equals("" ) && test.
equals(new Boolean(true))) { if (valeurTAC.indexOf(", " ) > -1) {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEURS", valeurTAC);
} else {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR", valeurTAC);
}
}
}
//si le p�rim�tre de la caract�ristique est �gal � "Matis uniquement"
else if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATIS)) {
//si au moins une valeur est rattach�e � un mod�le de Matis et que le flag est positionn� � "true", on demande � l'utilisateur si il veut la supprimer
if (!valeurMatis.
equals("" ) && test.
equals(new Boolean(true))) { if (valeurMatis.indexOf(", " ) > -1) {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEURS_MTS", valeurMatis);
} else {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR_MTS", valeurMatis);
}
}
}
//si le p�rim�tre de la caract�ristique est �gal � "Matis et Bacarat"
else if (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATISBAC)) {
if (test.
equals(new Boolean(true))) { boolean flgBac = false;
boolean flgMatis = false;
if (!valeurTAC.equals("" )) {
flgBac = true;
}
if (!valeurMatis.equals("" )) {
flgMatis = true;
}
//si les deux domaines sont concern�s
if (flgBac && flgMatis) {
if (valeurTAC.indexOf(", " ) > -1 || valeurMatis.indexOf(", " ) > -1) {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEURS_BACMTS", valeurTAC);
} else {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR_BACMTS", valeurTAC);
}
}
//si seul Bacarat est concern�
else if (flgBac) {
if (valeurTAC.indexOf(", " ) > -1) {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEURS", valeurTAC);
} else {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR", valeurTAC);
}
}
//si seul Matis est concern�
else if (flgMatis) {
if (valeurMatis.indexOf(", " ) > -1) {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEURS_MTS", valeurMatis);
} else {
throw new ConstraintException(2293, "OWNBACAD.FK_T_TEF_CAR.SUPPR_VALEUR_MTS", valeurMatis);
}
}
}
}
if (colValeur != null && colValeur.size() != 0
&& (carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_AN)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_AM)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_BL)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_EN)
|| carac.getTypCar().getId().equalsIgnoreCase(Constantes.TYPE_CARAC_EM))) {
//insertion des nouvelles valeurs
Iterator itValeur = colValeur.
iterator();
while (itValeur.hasNext()) {
TLstv valeurAffiche = (TLstv) itValeur.next();
Iterator itAncienValID = colAncienValID.
iterator();
boolean aAjouter = true;
while (itAncienValID.hasNext()) {
if (valeurAffiche.getId().getValeurId().toString().equals(valIdVal)) {
aAjouter = false;
}
}
//s'il s'agit d'une valeur � ajouter
if (aAjouter) {
int position = 0;
int nbPos = 0;
while (stoken.hasMoreTokens()) {
nbPos++;
String elemSt = stoken.
nextToken().
trim();
if (valeurAffiche.getNumId().toString().equals(elemSt)) {
position = nbPos;
break;
}
}
closePreparedStatement(prepStat);
prepStat = connect.prepareStatement(queryInsertVal);
prepStat.setInt(1, valeurAffiche.getId().getCar().getId().intValue());
prepStat.setInt(2, valeurAffiche.getNumId().intValue());
prepStat.setString(3, valeurAffiche.getValeur());
prepStat.setInt(4, position);
prepStat.executeUpdate();
closePreparedStatement(prepStat);
message = "Insertion de la valeur " + valeurAffiche.getValeur() + " (id. "
+ valeurAffiche.getNumId().intValue() + " ) � la liste de valeurs de la caract�ristique " + carac.getCarLib();
//mise � jour du journal de bord
jdbDAO.callProcMajJdbNoCommit(Constantes.JDB_EVT_MCAR, Constantes.JDB_TYPE_MES_INF,
valeurAffiche.getId().getCar().getId().toString(), Constantes.JDB_CODE_OK, message, user);
LogManager.infoAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "",
Constantes.LOG + Erreur.DAO + "updateCaracJDBC(" + carac.getId() + "," + ordre + " ) :" + message);
}
}
}
//en cas de changement de p�rim�tre vers un p�rim�tre exclusif
// - de "Bacarat & Matis" ou "Bacarat uniquement" vers "Matis uniquement"
if ((carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATISBAC) || carac.getPerimetreAncien().equals(Constantes.PERIM_ID_BAC))
&& carac.getPerimetre().equals(Constantes.PERIM_ID_MATIS)) {
//mise � jour des mod�les de recherche de Bacarat
callStatement = connect.prepareCall(queryPrcDelCarInExt);
callStatement.setInt(1, carac.getId().intValue());
callStatement.setString(2, carac.getCarLib());
callStatement.executeQuery();
closeCallableStatement(callStatement);
//suppression des r�gles c�t� Bacarat
deleteRegles(carac.getId().intValue(), -1, true);
}
// - de "Bacarat & Matis" ou "Matis uniquement" vers "Bacarat uniquement"
else if ( (carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATISBAC) || carac.getPerimetreAncien().equals(Constantes.PERIM_ID_MATIS))
&& carac.getPerimetre().equals(Constantes.PERIM_ID_BAC)) {
//mise � jour des mod�les de recherche de Matis
callStatement = connect.prepareCall(queryPrcDelCarInExtMatis);
callStatement.setInt(1, carac.getId().intValue());
callStatement.setString(2, carac.getCarLib());
callStatement.executeQuery();
closeCallableStatement(callStatement);
//suppression des r�gles c�t� Matis
callStatement = connect.prepareCall(queryPrcDelReglesMatis);
callStatement.setInt(1, carac.getId().intValue());
callStatement.executeQuery();
closeCallableStatement(callStatement);
}
}
}
}
LogManager.errorAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "KO",
Constantes.LOG + Erreur.DAO + "updateCaracJDBC(" + carac.getId() + "," + ordre + " )" + Erreur.ERROR_MODIF + " d'une caracteristiques en base" );
log.error(Constantes.LOG + Erreur.DAO + "updateCaracJDBC(..)" + Erreur.ERROR_SQL_CODE + sqlex.getErrorCode()
+ Erreur.ERROR_SQL_MESSAGE + sqlex.getMessage(),
sqlex);
throw new ConstraintException(
sqlex.getErrorCode(),
sqlex.getMessage());
} catch (DAOException e) {
LogManager.errorAppli(Constantes.JDB_EVT_MCAR, Constantes.JDB_EVT_MCAR, "[OracleCarDAO]", "KO",
Constantes.LOG + Erreur.DAO + "updateCaracJDBC(" + carac.getId() + "," + ordre + " )" + Erreur.ERROR_MODIF + " d'une caracteristiques en base" );
log.error(Constantes.LOG + Erreur.DAO + "updateCaracJDBC(..)", e);
} finally {
closePreparedStatement(prepStat);
closeCallableStatement(callStatement);
closeResultSet(res);
closeResultSet(resAncienValeur);
closeResultSet(resTef);
closeConnection(connect);
}
}