1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
| /*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package hopital;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
/**
*
* @author Charles
*/
public class Chambre {
/*
* Structure de la table Service.
* Les champs sont remplis par la méthode select et peuvent être lus
* par les méthodes getCode, getNom, getBatiment et getDirecteur.
*/
private String code_service;
private int no_chambre;
private int nb_lits;
private int surveillant;
/*Variables d'accès à la base de données (usage interne)*/
private Statement stmt;
private ResultSet rset;
private ResultSetMetaData rsetMeta;
/**Codes et libellés d'erreurs consultables avec les méthodes getCodeErreur,
* getCodeSQL, getErreur.
* S'il n'y a pas d'erreur, les variables codeErreur et codeSQL valent 0
* et la variale erreurs est vide.
* En cas d'erreur retournée par le gestionnaire de bases de données,
* le code d'erreur retourné figure dans la variable codeSQL; le message
* d'erreur retourné figure dans la variable erreurs dans la première
* occurrence de la liste; et la variable codeErreur contient 1.
* En cas d'erreur d'intégrité fontionnelle sur les données, la variable
* codeSQL vaut 0, la variable codeErreur contient une valeur strictement
* supérieure à 1, la variable erreur contient un message d'erreur pour
* chaque erreur.
* La variable codeErreur est interprétée en binaire et peut mentionner
* plusieurs erreurs. Les codes d'erreur individuels sont 1 pour les erreurs
* du SGBD et 2, 4, 8, 16, etc... pour les erreurs d'intégrité fonctionnelles.
* Ainsi si la variable codeErreur vaut 134, elle signale les erreurs
* 2, 4 et 128 et il y aura trois messages dans la variable erreur.
*/
private int codeErreur; //Code d'erreur d'intégrité fonctionnelle de l'enregistrement.
private ArrayList<String> erreurs=new ArrayList<String>(); //Liste des erreurs d'intégrité de l'enregistrement.
private int codeSQL; //Code retour de l'instruction SQL.
/**
* Constructeur avec un paramètre statement qui correspond à la base
* de données qui a été ouverte.
*
* @param s
*
*/
Chambre(Statement s){
code_service = "";
no_chambre = 0;
nb_lits = 0;
surveillant = 0;
stmt = s;
codeErreur=0;
erreurs.clear();
codeSQL=0;
}
/**
* Methode qui renvoie le code du service (à utiliser après select).
*/
String getCodeService() {
return code_service;
}
/**
* Methode qui renvoie le no de la chambre (à utiliser après select).
*/
int getNoChambre() {
return no_chambre;
}
/**
* Methode qui renvoie le nombre de lits de la chambre (à utiliser après select).
*/
int getNbLits() {
return nb_lits;
}
/**
* Methode qui renvoie le surveillant de la chambre (à utiliser après select).
*/
int getSurveillant() {
return surveillant;
}
/**
* Methode qui renvoie le code d'erreur
*/
int getCodeErreur() {
return codeErreur;
}
/**
* Methode qui renvoie le tableau d'erreurs pour affichage
*/
ArrayList<String> getErreurs() {
return erreurs;
}
/**
* Methode qui renvoie le code de retour de l'instruction SQL
*/
int getCodeSQL() {
return codeSQL;
}
/**
* Methode privee qui execute une requete SQL et génère un code d'erreur et un
* message le cas echeant.
*
* @param _query
* @return
*/
private ResultSet query(String _query){
ResultSet _rset;
codeSQL=0;
codeErreur=0;
erreurs.clear();
_rset=null;
try{
_rset = stmt.executeQuery(_query);
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
return _rset;
}
/**
* Methode qui reçoit deux identifiants (code du service et no de la chambre)
* de la table chambre en paramètre et qui charge les variables de la
* structure de la table avec les valeurs correspondantes.
* les codes d'erreurs sont positionnés.
* Si l'identifiant ne correspond pas à un enregistrement de la table,
* codeErreur vaut 2.
*
* @param _code
*/
void select(String _code_service, int _no_chambre){
String _query;
_query="select * from chambre where code_service=" + '"' + _code_service + '"' + "and no_chambre="+ _no_chambre;
rset=query(_query);
if (codeErreur!=0){
return;
}
try{
if (rset.next()){
code_service = rset.getString(1);
no_chambre = rset.getInt(2);
surveillant = rset.getInt(3);
nb_lits = rset.getInt(4);
}
else{
codeErreur=2;
erreurs.add("La chambre " + _code_service + " " + _no_chambre + " n'existe pas.");
}
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
}
/**
* Methode testant l'intégrité fonctionnelle des parametres, lesquels
* ont la structure d'un enregistrement de la table.
* Cette méthode doit être utilisée avant de faire appel aux méthodes
* insert ou update.
* la variable codeErreur vaut 0 si les données sont intègres et peuvent
* être insérées.
* La variable erreur contient les eventuels messages d'erreur qui pourront
* être affichés pour demander une correction de la saisie.
*
* @param _code_service
* @param _no_chambre
* @param _nb_lits
* @param _surveillant
*
*/
void integrityTest(String _code_service, int _no_chambre, int _nb_lits, int _surveillant){
String _query;
ResultSet _rset;
codeErreur=0; //A priori, il n'y a pas d'erreur.
erreurs.clear();
codeSQL=0;
_query="select * from service where code='" + _code_service +"'";
try{
_rset = stmt.executeQuery(_query);
if ( ! _rset.next()){
codeErreur=codeErreur+4;
erreurs.add("Le service " + _code_service + " ne figure pas parmi les services.");
}
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
//Validation du champ no_chambre :
if (_no_chambre<=0){
codeErreur=codeErreur+8;
erreurs.add("Le numero de la chambre doit supérieur à 0.");
}
//Validation du champ batiment :
_query="select * from infirmier where numero=" + _surveillant;
try{
_rset = stmt.executeQuery(_query);
if ( ! _rset.next()){
codeErreur=codeErreur+16;
erreurs.add("Le surveillant " + _surveillant + " ne figure pas parmi les infirmiers.");
}
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
//Validation du champ nb_lits
if (_nb_lits<0){
codeErreur=codeErreur+32;
erreurs.add("Le nombre de lits doit être supérieur à 0.");
}
}
/**
* Methode ajoutant une nouvelle chambre dans la table chambre.
* Une erreur est générée dans la variable codeErreur si la chambre est déjà
* présente.
*
* @param _code_service
* @param _no_chambre
* @param _nb_lits
* @param _surveillant
*
*/
void insert(String _code_service, int _no_chambre, int _nb_lits, int _surveillant){
String _query;
//Validation du champ directeur :
_query="insert into chambre(code_service, no_chambre, surveillant, nb_lits) values ('"+_code_service+"', "+_no_chambre+", "+_surveillant+", "+_nb_lits+")";
try{
stmt.executeUpdate(_query);
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
}
/**
* Methode modifiant une chambre existante dans la table chambre
* Une erreur est générée dans la variable codeErreur si la chambre n'est pas
* déjà présente.
*
* @param _code_service
* @param _no_chambre
* @param _nb_lits
* @param _surveillant
*
*/
void update(String _code_service, int _no_chambre, int _nb_lits, int _surveillant){
String _query;
//Validation du champ directeur :
_query="update chambre set surveillant=" + _surveillant + ", nb_lits=" + _nb_lits + " where code_service='" +_code_service +"'"+ " and no_chambre="+ _no_chambre ;
try{
stmt.executeUpdate(_query);
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
}
/**
* Methode testant que le service passe en paramertre peut etre supprime
* sans alterer l'integrite fonctionnelle de la base de donnees.
* Cette méthode doit être utilisée avant de faire appel a la méthode
* delete.
* la variable codeErreur vaut 0 si l'enregistrement peut être supprimé.
* La variable erreur contient les eventuels messages d'erreur qui pourront
* être affichés pour demander une correction de la saisie.
*
* @param _code_service
* @param _no_chambre
*
*/
void deleteTest(String _code_service, int _no_chambre){
String _query;
ResultSet _rset;
codeErreur=0; //A priori, il n'y a pas d'erreur.
erreurs.clear();
codeSQL=0;
//Vérification que la table hospitalisation ne pointe pas vers la chambre :
_query="select * from hospitalisation where code_service='" + _code_service + "'" + " and no_chambre=" + _no_chambre;
try{
_rset = stmt.executeQuery(_query);
if (_rset.next()){
codeErreur=codeErreur+64;
erreurs.add("La chambre " + _code_service + " " + _no_chambre +" est référencé par des hospitalisations.");
}
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
}
/**
* Methode supprimant la chambre _code_service, _no_chambre de la table
* Une erreur peut être générée dans la variable codeErreur.
*
* @param _code_service
* @param _no_chambre
*/
void delete(String _code_service, int _no_chambre){
String _query;
//Suppression de la chambre:
_query="delete from chambre where code_service='" +_code_service +"'"+ " and no_chambre=" + _no_chambre;
try{
stmt.executeUpdate(_query);
}
catch(SQLException sqlex){
codeSQL=sqlex.getErrorCode();
erreurs.clear();
erreurs.add(sqlex.getMessage());
codeErreur=1;
}
}
} |
Partager