Cas Gest-PC (SLAM)
Nouméa 2013.
Réponse AJAX

CAS Gest-PC

Aucun matériel ni document autorisé

Dossier documentaire

  1. Description graphique des rôles
  2. Extrait du site architectures-web.smile.fr sur les fichiers dans les bases de données
  3. Ébauche du schéma relationnel de la base bd_Demandes_PC
  4. Script de création de la base bd_Demandes_PC
  5. Extrait du tableau récapitulatif des types du secteur protégé
  6. Extrait de l'article R. 421-15 du code de l'urbanisme
  7. Extrait du formulaire Cerfa n° 13406
  8. Interface web avant et après amélioration
  9. Code PHP faisant appel à la fonction
  10. Extrait du fichier XML existant
  11. Code PHP de la fonction liste_déroulante ($fichier_XML)
  12. Extrait du fichier XML modifié
  13. Parcours d'une collection en Java
  14. Utilisateurs de la base de données
  15. Diagramme de classes simplifié du paquetage personnes
  16. Extrait des classes du paquetage personnes

Barème

Présentation du contexte

Hessiauville est une commune de 210 000 habitants faisant partie de la communauté d’agglomération d'Hessiauville (CAH) forte de 235 000 habitants. Pour assurer les services publics et leur gestion, la ville et la CAH comportent 34 directions reparties sur plus de 70 sites.

La direction des systèmes d'information et des télécommunications de la communauté d’agglomération d'Hessiauville est chargée d'assurer toutes les prestations informatiques de la ville et de la C.A.H, à savoir des développements internes spécifiques, la recherche et la mise en œuvre de progiciels et le suivi de leur évolution. Cette structure est constituée d'environ 40 personnes organisées en équipes.

Votre fonction

Vous avez rejoint récemment la direction des systèmes d'information et des télécommunications de la communauté d’agglomération d'Hessiauville et intégré l'équipe "Projets" qui a pour rôle de faire évoluer les développements internes.

Parmi les projets qu'elle a en charge, votre équipe travaille sur le projet PC (permis de construire) qui répond à une volonté stratégique de la communauté d'améliorer les relations entre le service urbanisme et les habitants. Ce projet doit donner lieu à la réalisation de deux applications :

Actuellement une première version de l’application Gest_PC est en production et s’appuie sur une base de données qui lui est propre nommée bd_Gest_PC. L'application Web_Permis est en phase de test et utilise une base de données nommée bd_Demandes_PC.

Votre environnement technologique

Une réplique de l’application Gest_PC et de son environnement d'exécution sont mis à votre disposition. Les services nécessaires ont été installés sur une machine virtuelle située dans une ferme de serveurs et accessible en interne depuis certains postes de travail. Cette machine virtuelle abrite un serveur Windows 2008 R2 et les services suivants :

Vous accédez à la machine virtuelle depuis un poste de travail sous Windows Seven avec comme outil l'environnement de développement intégré Eclipse.

Votre feuille de route

Lors d'une réunion avec l'équipe informatique, un dossier complet vous a été remis. Il permet de situer le contexte et les objectifs du projet PC. En tant que nouveau collaborateur de la direction des systèmes d'information et des télécommunications de la communauté d’agglomération d'Hessiauville, vous allez participer à différentes missions liées au projet :

Mission 1 : étude de la mise en production
Mission 2 : validation de la base de données
Mission 3 : amélioration de l'interface web
Mission 4 : évolution de l'application interne Gest_PC

Mission 1 : étude de la mise en production

En amont du processus de développement et de test de l'application Web_Permis, l'équipe s'intéresse à sa future mise en production.

Cahier des charges de la mission

La communauté d’agglomération d'Hessiauville dispose d'un site web divisé en une partie publique accessible à tous les internautes et une partie privée accessible uniquement après authentification. L'application Web_Permis qui permet de consulter et de télécharger les pièces d'une demande de permis de construire sera intégrée dans la partie privée du site actuel.

Le processus de traitement d'une demande de permis de construire implique l'intervention de plusieurs acteurs :

Pour accéder à la partie privée, l'utilisateur devra s'identifier au moyen d'un login et d'un mot de passe. L'accès aux pièces des demandes de permis sera fonction de l'utilisateur authentifié selon les règles de gestion suivantes :

Pour valider une demande de permis de construire, le déposant doit déposer les pièces obligatoires en mairie auprès du service urbanisme (par exemple la pièce PCMI1 doit être fournie en 6 exemplaires). Ces pièces, d'un format imposant pour certaines, sont numérisées (scannées) par une société extérieure. Tous les vendredis, cette société récupère les pièces des demandes déposées dans la semaine et rend celles emmenées la semaine précédente accompagnées de leur version numérique sur un disque compact. Les pièces au format numérique sont alors enregistrées et conservées sous forme de fichiers dans le système d'information.

Les pièces numérisées et enregistrées devront faire l'objet d'un classement hiérarchique organisé en répertoires. Elles feront l'objet d'une sauvegarde de sécurité.

C'est l'équipe "Production" qui sera chargée d'intégrer ce service dans le site web et de mettre en place l'accès aux différentes ressources selon l'utilisateur. L'équipe "Projets" fournira à l'équipe "Production" un dossier de spécifications fonctionnelles contenant :

Développement

Un membre de l’équipe a décrit sous forme graphique les rôles des utilisateurs "déposant", "service urbanisme" et "DDE". En outre il s'interroge sur le lieu de stockage idéal des fichiers correspondant aux pièces des demandes de permis : est-il préférable d'enregistrer les fichiers directement en base de données dans des champs spécifiques ou dans des fichiers externes à la base de données, ou encore d’adopter une solution mixte ?

Il a été finalement décidé de stocker l'ensemble des documents sous forme de fichiers externes à la base de données.

Vos tâches

Vous êtes chargé de compléter le dossier de spécifications fonctionnelles commencé par un membre de l’équipe et vous disposez pour cela de la documentation suivante :

  1. description graphique des rôles ;
  2. extrait du site architectures-web.smile.fr sur les fichiers dans les bases de données.
Définition des niveaux d'habilitation

1.1. Modéliser les rôles des différents architectes en adoptant le formalisme utilisé par le membre de l’équipe.

Votre réponse n°1
Stockage des pièces numérisées

1.2 Justifier le choix du lieu de stockage des fichiers correspondant aux pièces des demandes de permis.

Votre réponse n°2

1.3 Proposer l'arborescence des répertoires de stockage et les règles de nommage des pièces numérisées.

Votre réponse n°3

Mission 2 : validation de la base de données

Cahier des charges de la mission

La base de données bd_Demandes_PC a pour objet de stocker les informations relatives aux demandes de permis de construire (demande, demandeur, architecte, pièce). Construite à partir du formulaire Cerfa 13406, elle doit contenir dans une table Parcelle les informations concernant les parcelles issues d'une autre base de données nommée "Cadastre".

Il est rappelé qu'une demande :

  1. concerne un terrain qui peut être constitué d'une ou de plusieurs parcelles ;
  2. peut nécessiter le recours à un architecte (dans ce cas, la présence de sa signature et son cachet sont obligatoires, sinon c'est la présence de la déclaration sur l'honneur qui l'est).

Structure de la base de données

La base de données liée à la partie web du projet PC doit être en parfaite adéquation avec l'imprimé Cerfa 13406 de demande de permis de construire.

Elle prendra en compte les parcelles situées dans des secteurs protégés. En effet, certaines parcelles appartiennent à un ou plusieurs secteurs protégés et peuvent, à ce titre, faire l'objet d'une règlementation particulière concernant les demandes de permis de construire.

Un secteur protégé se décline en différents types ("secteurs sauvegardés", "monuments historiques", etc.) faisant chacun référence à un article du code de l'urbanisme. Chaque article peut citer un ou plusieurs autres articles du code ou être lui-même cité dans un ou plusieurs autres articles. Les articles peuvent être modifiés par un ou plusieurs décrets.

État récapitulatif

L'application web devra fournir un état des pièces jointes obligatoires pour une demande donnée. Nécessaire pour les utilisateurs de la mairie qui ont en charge la saisie et le suivi des demandes, cet état précisera pour chaque pièce jointe le nombre d'exemplaires à fournir et celui effectivement fourni par le déposant. Par exemple, pour la demande de permis de construire identifié par le numéro 452 dans la table demande, la liste serait la suivante :

	 libelle | nb_exemplaires_a_fournir | nb_exemplaires_fournis
	---------+--------------------------+------------------------
	 PCMI2   |                        6 |                      4
	 PCMI3   |                        2 |                      0
	 PCMI4   |                        1 |                      1

On remarque que, pour cette demande, le déposant n'a pas fourni le nombre d'exemplaires attendu de la pièce PCMI2 contrairement à la pièce PCMI4. Quant à la pièce PCMI3, aucun exemplaire n'a été fourni.

Développement

Une première version de l'application Web_Permis et de sa base de données a été conçue et les derniers tests effectués sur l'application ont mis en évidence plusieurs défauts lors de l'insertion de nouvelles demandes :

  1. les demandes dont le terrain possède plusieurs parcelles ne sont pas correctement enregistrées, seule une des parcelles est affectée au terrain (élément 3.1 du formulaire Cerfa 13406) ;
  2. les demandes dont une ou plusieurs des situations juridiques (élément 3.2 du formulaire Cerfa 13406) sont inconnues, ne sont pas correctement enregistrées ;
  3. la présence de la signature et du cachet d'un éventuel architecte ne sont pas mémorisés (élément 4.1 du formulaire Cerfa 13406) ;
  4. les demandes ne déclarant pas de SHOB (surface hors œuvre brute, élément 4.3 du formulaire Cerfa 13406 ) sont refusées.

Enfin, un membre de l’équipe a constaté qu'on pouvait enregistrer des demandes :

Vos tâches

Vous êtes chargé de faire évoluer cette première version afin de répondre aux besoins du cahier des charges et vous disposez pour cela de la documentation suivante :

  1. ébauche du schéma relationnel de la base bd_Demandes_PC,
  2. script de création de la base bd_Demandes_PC,
  3. extrait du tableau récapitulatif des types du secteur protégé,
  4. Extrait de l'article R. 421-15 du code de l'urbanisme,
  5. Extrait du formulaire Cerfa n° 13406.

Dans la rédaction de vos solutions, vous pourrez utiliser les formalismes de votre choix : les éléments de code peuvent être présentés à l’aide d’un langage de programmation ou de pseudo-code algorithmique et les schémas de données à l’aide d’un diagramme UML, d’un schéma entité-association ou encore d’un schéma relationnel.

Écriture de la requête SQL

2.1 Écrire la requête SQL permettant d'alimenter l'état des pièces jointes obligatoires pour une demande de permis.

Votre réponse n°4
Résolution des problèmes rencontrés lors de l'insertion de nouvelles demandes

2.2 Expliquer les causes des défauts A, B, C et D et proposer une solution pour chacun d'eux.

Votre réponse n°5

2.3 Décrire dans une courte note la solution permettant de bloquer l'insertion d'une demande contenant à la fois un identifiant d'architecte et une déclaration sur l'honneur ou ne contenant ni l'un ni l'autre.

Votre réponse n°6
Évolution de la base de données

2.4 Compléter la structure de la base de données afin de prendre en compte les parcelles situées dans des secteurs protégés ainsi que l'ensemble des informations associées à ces secteurs.

Votre réponse n°7

Mission 3 : amélioration de l'interface web

Cahier des charges de la mission

La partie web de l'application doit permettre de télécharger et de consulter les pièces déposées en mairie suite au dépôt des demandes de permis de construire. Ce service a été mis en œuvre de manière à faciliter :

Une des pages de l'application présentera une liste déroulante affichant le code et le libellé des pièces (par exemple " PCMI1 – Plan de situation du terrain") dans laquelle les déposants pourront sélectionner la pièce à télécharger en émission (uploader).

Cette liste déroulante sera alimentée par la fonction PHP liste_deroulante($fichier_XML) dont le but est de créer automatiquement des listes déroulantes en HTML. Elle reçoit en paramètre le nom d'un fichier XML qui contient les éléments permettant de construire la liste. Elle retourne une chaîne de caractères qui correspond au code HTML de la liste déroulante (balises SELECT et OPTION).

Cette fonction est utilisée dans plusieurs pages web du site car la direction des systèmes d’information a demandé aux développeurs d'alimenter les éléments graphiques des pages web en priorité avec des fichiers XML plutôt qu'avec des données issues d'une base de données. Cette pratique a pour objectif de limiter les accès aux bases de données lors du remplissage de listes déroulantes statiques.

Développement

Un des membres de l'équipe a déjà programmé l'interface web mais a omis de placer le libellé des pièces dans la liste déroulante. Après conseil auprès de votre équipe, trois de vos collègues proposent des solutions différentes :

Suite à ces propositions, le membre de l’équipe a finalement ajouté un attribut <detail> supplémentaire dans le fichier XML existant conformément à la solution n°1.

Vos tâches

Vous êtes chargé de faire évoluer cette version afin de répondre aux besoins du cahier des charges et vous disposez pour cela de la documentation suivante :

Dans la rédaction de vos solutions, vous pourrez utiliser les formalismes de votre choix : les éléments de code peuvent être présentés à l’aide d’un langage de programmation ou de pseudo-code algorithmique et les schémas de données à l’aide d’un diagramme UML, d’un schéma entité-association ou encore d’un schéma relationnel.

Étude des solutions proposées

3.1 Pour chaque solution, indiquer si elle est techniquement viable pour le projet.

Votre réponse n°8
Adaptation d'une solution

3.2 Modifier la fonction liste_deroulante($fichier_XML) afin qu'elle s'adapte au fichier XML modifié conformément à la solution n°1 et qu’elle réponde au besoin exprimé dans le cahier des charges.

Votre réponse n°9

Mission 4 : évolution de l'application Gest_PC

Cahier des charges de la mission

L'application Gest_PC, écrite en Java et accédant à sa propre base de données est utilisée quotidiennement par les secrétaires et le directeur du service qui gèrent les permis de construire.

Pour répondre au besoin de la direction informatique l'application Gest_PC a évolué afin de permettre d'accéder à la nouvelle base de données bd_Demandes_PC. De nouveaux écrans et de nouvelles classes d'objet capables de recevoir les données de la base ont donc été ajoutés à l'application Gest_PC. Toutes ces modifications ont été réalisées par vos collègues.

Création d'une classe générateur

Afin de tester l'application de manière approfondie, il a été demandé à l'équipe informatique d'alimenter la base de données bd_Demandes_PC avec un jeu d'essai conséquent. Les données seront insérées dans la base à l'aide d'un programme de test nommé Generateur et écrit en langage Java. Il alimentera massivement et aléatoirement la base de données, dans un contexte proche de la réalité, avec des données générées aléatoirement. À chaque lancement du générateur, l'ensemble des données générées seront affichées au fur et à mesure afin d'avoir une trace de l'exécution.

Le générateur utilisera un paquetage de classes nommé personnes contenant les classes personne, déposant, architecte et adresse. Les données seront d'abord créées sous forme d'instance de la classe personne, puis insérées dans la base.

Bien que l'on utilise une fonction aléatoire pour la création des données, celles-ci devront être suffisamment réalistes. Par exemple, pour générer un architecte, son nom et son prénom seront pris au hasard dans des listes de nom et de prénom, son numéro de téléphone sera généré aléatoirement mais aura le format 0x.xx.xx.xx.xx (où x est un chiffre), il doit y avoir une cohérence entre la ville et le code postal dans les adresses, etc.

Développement

Vous disposez d’une partie du code du programme Generateur :

	22	public void demarrer(int nbDeposants, int nbArchitectes) {
	// Instruction de connexion à la base de données qui reçoit en paramètre
	// l'adresse du poste, le nom de la base de données,
	// les login et mot de passe de l'utilisateur
	23  pg_connect(' host="127.0.0.1" dbname="bd_Demandes_PC"
				user="permis_ro" password="pass_permis" ')
	24 Personne personne = new Personne(genererNom(), genererPrenom());
	...  }

Au lancement du programme Générateur, deux messages d'erreur sont apparus :

Après exécution du programme Générateur, deux défauts ont été remarqués :

Vos tâches

Vous êtes chargé de faire évoluer cette version afin de répondre aux besoins du cahier des charges et vous disposez pour cela de la documentation suivante :

Dans la rédaction de vos solutions, vous pourrez utiliser les formalismes de votre choix : les éléments de code peuvent être présentés à l’aide d’un langage de programmation ou de pseudo-code algorithmique et les schémas de données à l’aide d’un diagramme UML, d’un schéma entité-association ou encore d’un schéma relationnel.

Étude et correction des erreurs du programme Générateur

4.1 Expliquer les causes des deux messages d'erreur rencontrés à la compilation et à l'exécution du programme Générateur et donner les solutions permettant de supprimer ces causes.

Votre réponse n°10
Étude et correction du défaut d'affichage

4.2 Compléter la méthode toString() de la classe Architecte afin qu'elle retourne les nom et prénom de l'architecte (écrire seulement le complément de code).

Votre réponse n°11
Étude et correction du défaut de prise en compte des déposants

4.3 Modifier le diagramme de classe afin de prendre en compte les déposants assistés par un architecte (reproduire succinctement le diagramme existant afin de faire apparaître la modification).

Votre réponse n°12

4.4 Compléter la méthode toString() de la classe Architecte de manière à ce qu'elle retourne, pour un architecte donné, les nom et prénom des déposants qu'il assiste (écrire seulement le complément de code).

Votre réponse n°13

Ressources documentaires

Description graphique des rôles

Extrait du site architectures-web.smile.fr sur les fichiers dans les bases de données

Les bases de données acceptent des objets binaires (BLOB) de grande taille, qui peuvent stocker des fichiers. Gérer des fichiers en base de données peut être une option, lorsque la volumétrie est faible. Il y a quelques bénéfices à en attendre :

Par ailleurs, dès que la volumétrie grandit, c’est un mauvais choix :

Ébauche du schéma relationnel de la base bd_Demandes_PC

À l'insertion d'une nouvelle demande, les lignes de la table joindre sont automatiquement créées (avec un nombre d'exemplaires à zéro) en fonction des pièces nécessaires.

Script de création de la base bd_Demandes_PC

-- La table parcelle est déjà existante.

create table deposant
(id_deposant integer primary key,
civilite varchar(1) null,
nom varchar(50) not null,
prenom varchar(30) not null,
numero varchar(4) null,
voie varchar(200) not null,
lieu_dit varchar(100) null,
localite varchar(100) not null,
code_postal char(5) not null,
bp varchar(5) null,
cedex varchar(5) null,
adresse_messagerie varchar(50) null);

create table piece
(id_piece integer primary key,
libelle varchar(200) not null,
nb_exemplaires_a_fournir integer not null);

create table architecte
(id_architecte integer primary key,
nom varchar(50) not null,
prenom varchar(30) not null,
numero varchar(4) null,
voie varchar(200) not null,
lieu_dit varchar(100) null,
localite varchar(100) not null,
code_postal char(5) not null,
bp varchar(5) null,
cedex varchar(5) null,
inscription_ordre varchar(20) null,
conseil_regional varchar(20) null,
telephone varchar(13) null);

create table mode_utilisation
(id_mode integer primary key,
mode_utilisation varchar(100) not null);
create table joindre
(id_demande integer not null references demande(id_demande),
id_piece integer not null references piece(id_piece),
nb_exemplaires_fournis integer not null,
primary key (id_demande, id_piece));

create table deposant_residant_etranger
(id_deposant integer primary key,
pays varchar(40) not null,
division_territoriale varchar(40) not null,
foreign key (id_deposant) references deposant(id_deposant));


create table demande
(id_demande integer primary key,
date_depot date not null,
numero varchar(4) null,
voie varchar(200) not null,
lieu_dit varchar(100) null,
localite varchar(100) not null,
code_postal char(5) not null,
bp varchar(5) null,
cedex varchar(5) null,
certificat boolean not null,
lotissement boolean not null,
zac boolean not null,
afu boolean not null,
declaration boolean not null,
nature char(1) not null,
shob numeric(12,2) not null,
avis varchar(200) null,
id_section char(4) not null,
reference_cadastrale integer not null,
id_architecte integer null references architecte(id_architecte),
id_mode integer not null references mode_utilisation(id_mode),
id_deposant integer not null references deposant(id_deposant),
foreign key (id_section, reference_cadastrale) references parcelle(id_section, reference_cadastrale));

Extrait du tableau récapitulatif des types du secteur protégé

Extrait de l'article R. 421-15 du code de l'urbanisme

Extrait du formulaire Cerfa n° 13406

Interface web avant et après amélioration

Code PHP faisant appel à la fonction

<form action="telecharger.php">
	Choisir la pièce que vous souhaitez obtenir
	<?php 	echo liste_deroulante("pieces1.xml");
	?>
	<br />Puis cliquez sur [télécharger]
	<input type="submit" value="Télécharger"/> <br /><br />
</form>

Extrait du fichier XML existant

<?xml version="1.0" encoding="utf-8"?>
<liste name="piece">
	<ligne> 
		<value>1</value>
		<label>PCMI1</label>
	</ligne>
	...
	<ligne>
		<value>4</value>
		<label>PCMI4</label>
	</ligne>
	...
	<ligne>
		<value>12</value>
		<label>PCMI12</label>
	</ligne>
</liste>

Code PHP de la fonction liste_déroulante ($fichier_XML)

<?php 
	//Chargement du fichier xml
01	function liste_deroulante($fichier_XML)
02		{ if (file_exists($fichier_XML))
03			{ 	$ma_liste = simplexml_load_file($fichier_XML); 	}
04		else
05			{$ma_liste = simplexml_load_string('<liste name="erreur">
06			<ligne><value>0</value>
07			<label>Erreur - Le fichier est manquant !</label>
08			</ligne></liste>');
09			} 
10		//Création de la liste
11		$name = $ma_liste->attributes()->name;
12		$listed = '<select name="'.$name.'">';
13		foreach($ma_liste->children() as $ligne)
14			{$select ='';
15			if($ligne->attributes()->selected == 'true')
16				{ $select = ' selected="selected" '; }
17			$listed .= '<option '.$select.'value="'.$ligne->value.'">';
18			$listed .= $ligne->label.'</option>';
19			}
20		$listed .= '</select>';
21		return $listed; } ?>

Extrait du fichier XML modifié

<?xml version="1.0" encoding="utf-8"?>
<liste name="piece" detail="1" separateur=" - ">

<!–-l'attribut detail à 1 signifie que le detail doit être affiché -->
<!–- l'attribut separateur precise le séparateur à utiliser entre le label et le détail -->

	<ligne selected="true">
		<value>1</value>
		<label>PCMI1</label>
		<detail>Plan de situation du terrain</detail>
	</ligne>
	...
	<ligne>
		<value>4</value>
		<label>PCMI4</label>
		<detail>Notice décrivant le terrain et présentant le projet</detail>
	</ligne>
	...
	<ligne>
		<value>12</value>
		<label>PCMI12</label>
		<detail>Convention entre la commune et vous</detail>
	</ligne>
</liste>

Parcours d'une collection en Java

// Parcours de la collection les_clients
// On récupère dans l'objet un_client de type Client les objets contenus dans la collection les_clients

for( Client un_client : les_clients) { //Traitement …. }

Utilisateurs de la base de données

Trois utilisateurs peuvent accéder à la base de données bd_Demandes_PC :

Pendant la phase de développement, il est attribué à chaque rôle le mot de passe pass_permis.

Diagramme de classes simplifié du paquetage personnes

Extrait des classes du paquetage personnes

- Personne.java
package personnes;
public abstract class Personne
{
	private String nom;
	private String prenom;

	public Personne(String nom, String prenom)
		{
		this.nom = validate(nom, 50);
		this.prenom = validate(prenom, 30);
		}

	private String validate (String chaine, Integer taille)
		{ // Vérifie la taille et renvoie une chaîne tronquée
		// si la taille est supérieure à taille
		return chaine; 	}

public String toString() {return this.nom + " " + this.prenom; }
}
- Deposant.java
package personnes;
import java.sql.Connection;

public class Deposant extends Personne
{ 
	private String civilite;
	private String adresseMessagerie;
	private Adresse adresse;

	public Deposant(String nom, String prenom, Adresse adresse)
		{ 
		super(nom, prenom);
		this.adresse = adresse;
		}

	public void stocker(Connection connexion) 	{ }
}
- Architecte.java
package personnes;
import java.sql.Connection;

public class Architecte extends Personne {

	private String conseilRegional;
	private boolean inscriptionOrdre;
	private Adresse adresse;
	private String telephone;
	
	public Architecte(String nom, String prenom, String conseilRegional, boolean
	inscriptionOrdre, Adresse adresse, String telephone)
		{
		super(nom, prenom);
		this.conseilRegional = super.validate(conseilRegional, 20);
		this.inscriptionOrdre = inscriptionOrdre;
		this.adresse = adresse;
		if (telephoneValide(telephone))
			{ this.telephone = telephone; }
		else
			{ this.telephone = ""; 	}
		Maj_conseilRegional();
		}	 

	private boolean telephoneValide(String telephone)
		{ boolean b = true; return b; }
	
	public void Maj_conseilRegional()
	{	if (this.getConseilRegional() == null)
this.setConseilRegional("Conseil regional non renseigne");
	}


// renvoie une chaine contenant le nom, le prenom, le conseil regional et
// le numero de telephone de l'architecte ainsi que la mention "inscrit"
// s'il est inscrit au conseil de l'ordre ou "non inscrit" dans le cas contraire
	public String toString ()
 		{
 		String chaine = "";
chaine = chaine + this.conseilRegional + " ";
		if (this.inscriptionOrdre)
chaine = chaine + "inscrit";
		else
chaine = chaine + "pas inscrit";
		chaine = chaine + " " + this.telephone;
		return chaine;
		}
}