IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Traitement des données récupérées à partir de la base de données


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut Traitement des données récupérées à partir de la base de données
    Salut tous le monde, j'ai une idée que je veux la développé mais j'ai pas l'outil nécessaire ou bien la connaissance parfaite d'environnement du web avec JSF.
    Bon voilà ma besoin j'ai un datatable qui va afficher la liste des lots d'un marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <h:form>
    	<rich:panel style=" width : 100%;">
    		<f:facet name="header">
    			<h:panelGrid columns="1">
    				<h:outputText value="Liste des lots disponibles"/>
    			</h:panelGrid>
    		</f:facet>
    		<rich:dataTable value="#{suiviLotBean.listLotDM}" var="lotdt" id="data" rows="8" style=" width : 100%;">
    			<rich:column sortBy="#{lotdt.id.lotReference}" filterBy="#{lotdt.id.lotReference}" filterEvent="onkeyup" label="lot id">
    				<f:facet name="header">
    					<h:outputText value="Id" />
    				</f:facet>
    				<h:outputText value="#{lotdt.id.lotReference}" />
    			</rich:column>
     
    			<rich:column sortBy="#{lotdt.lotLibelle}" filterBy="#{lotdt.lotLibelle}" filterEvent="onkeyup" label="Libelle">
    				<f:facet name="header">
    					<h:outputText value="Libellé" />
    				</f:facet>
    		   	        <h:outputText value="#{lotdt.lotLibelle}" />
    			</rich:column>
     
    			<rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}" filterEvent="onkeyup" label="Etat">
    				<f:facet name="header">
    					<h:outputText value="Etat" />
    				</f:facet>
    				<h:outputText value="#{lotdt.lotEtat}" />
    			</rich:column>
     
    			<rich:column sortBy="#{lotdt.lotNombrePhases}" filterBy="#{lotdt.lotNombrePhases}" filterEvent="onkeyup" label="Nombre de phases">
    				<f:facet name="header">
    					<h:outputText value="Nombre de phases" />
    				</f:facet>
    				<h:outputText value="#{lotdt.lotNombrePhases}" />
    			</rich:column>
     
    			<rich:column>
    				<f:facet name="header">
    			         	<h:outputText value="Operations" />
    				</f:facet>
    				<h:panelGrid columns="2">
    				     <a4j:commandLink action="#{suiviLotBean.getSelectionRow}"							oncomplete="document.location.href='DetailsLot.jsf'">
    				     <h:graphicImage value="../framGraphique/images/details.gif" alt="Detail" />
    				     </a4j:commandLink>
     
                                         <a4j:commandLink action="#{suiviLotBean.getSelectionRow}"									oncomplete="#{rich:component('modifieretat')}.show()">
    				     <h:graphicImage value="../framGraphique/images/Edit.png" alt="Update" />
    				     </a4j:commandLink>
    				</h:panelGrid>
    			</rich:column>
    		</rich:dataTable>
    			<rich:datascroller for="data" id="scroller" />
    				<div align="center">
                                          <h:outputText value=" Nombre d'enregistrements :" /> 
                                          <h:outputText id="compt" value="#{suiviLotBean.compteur}"/>
                                    </div>
    	</rich:panel>
    </h:form>
    et voila la classe Lot.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Lot{
     
    	private LotId id;
    	private Marche marche;
    	private String lotLibelle;
    	private Integer lotMontantHt;
    	private String lotEtat;
    	private Set<Phase> phases = new HashSet<Phase>(0);
    et bein je veux faire un traitement sur les données récupérés par la base de données sur l'etat du lot (receptionner ou non réceptionner), si l'état est 'réceptionner' dans la DataTable on trouve à la place de le mot receptionner une image indique la réception du lot et si le lot est non réceptionné on trouve une autre image dans la dataTable.

    Tout Marche nickel pour l'affichage des données (la liste des lots disponible pour un marché donné) dans la dataTable.

    Merci pour votre aide d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Voila ce que je te propose:
    -Soit pour faire propre, tu crées un nouveau champ booléen dans ton bean Lot qui aura la valeur vrai ou faux selon l'etat de reception et dans ce cas ton code ressemblera à ca dans le xhtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}" filterEvent="onkeyup" label="Etat">
    				<f:facet name="header">
    					<h:outputText value="Etat" />
    				</f:facet>
    <h:graphicImage value="../framGraphique/images/tonImagePourReceptionner.png" alt="Update"  rendered="#{lotdt.maVariableBooleenneReception}"/>
    <h:graphicImage value="../framGraphique/images/tonImagePourNonReception.png" alt="Update"  rendered="#{! lotdt.maVariableBooleenneReception}"/>
    			</rich:column>
    Soit tu laisses tel quel , et donc dans ce cas tu testes par rapport à la chaine "receptionner", ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}" filterEvent="onkeyup" label="Etat">
    				<f:facet name="header">
    					<h:outputText value="Etat" />
    				</f:facet>
    <h:graphicImage value="../framGraphique/images/tonImagePourReceptionner.png" alt="Update"  rendered="#{ lotdt.lotEtat eq 'receptionner'}"/>
    <h:graphicImage value="../framGraphique/images/tonImagePourNonReception.png" alt="Update"  rendered="#{! lotdt.lotEtat eq 'receptionner'}"/>
    			</rich:column>
    Sachant que je préfère la 1ere solution.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Voila ce que je te propose:
    -Soit pour faire propre, tu crées un nouveau champ booléen dans ton bean Lot qui aura la valeur vrai ou faux selon l'etat de reception et dans ce cas ton code ressemblera à ca dans le xhtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}" filterEvent="onkeyup" label="Etat">
    				<f:facet name="header">
    					<h:outputText value="Etat" />
    				</f:facet>
    <h:graphicImage value="../framGraphique/images/tonImagePourReceptionner.png" alt="Update"  rendered="#{lotdt.maVariableBooleenneReception}"/>
    <h:graphicImage value="../framGraphique/images/tonImagePourNonReception.png" alt="Update"  rendered="#{! lotdt.maVariableBooleenneReception}"/>
    			</rich:column>
    Soit tu laisses tel quel , et donc dans ce cas tu testes par rapport à la chaine "receptionner", ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}" filterEvent="onkeyup" label="Etat">
    				<f:facet name="header">
    					<h:outputText value="Etat" />
    				</f:facet>
    <h:graphicImage value="../framGraphique/images/tonImagePourReceptionner.png" alt="Update"  rendered="#{ lotdt.lotEtat eq 'receptionner'}"/>
    <h:graphicImage value="../framGraphique/images/tonImagePourNonReception.png" alt="Update"  rendered="#{! lotdt.lotEtat eq 'receptionner'}"/>
    			</rich:column>
    Sachant que je préfère la 1ere solution.
    Merci pour votre réponse, j'ai utilisé la 2ème solution avec une petite modification et ça marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <rich:column sortBy="#{lotdt.lotEtat}" filterBy="#{lotdt.lotEtat}"
    							filterEvent="onkeyup" label="Etat">
    							<f:facet name="header">
    								<h:outputText value="Etat" />
    							</f:facet>
    							<h:graphicImage
    								value="../framGraphique/images/recptionner.gif"
    								rendered="#{ lotdt.lotEtat eq 'receptionner'}" />
    							<h:graphicImage
    								value="../framGraphique/images/nonreceptionner.gif"
    								rendered="#{ lotdt.lotEtat eq 'non receptionner'}" />
    </rich:column>
    Et j'ai un autre question qui s'approche au base de donnée et SQL ça serait gentille si vous me proposez une idée de résoudre cet problème.
    Un lot est composé de plusieurs phases, l'état du lot sera changé en "receptionner" quand toutes les phases liées à cet lot sont validées. Donc si on résume il nous faut une requête qui vérifie que toutes les phases affectées à un lot sont validées si c'est le cas l'état du lot sera changée (que c'est facile de la faire dans le bean du l'interface où sera l'affichage).

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    La 2eme solution n'est non seulement pas propre, mais pas maintenable, si demain on change la politique définissant la notion de "receptionner", tu seras obligé de modifier ton IHM, pas bon ça, la couche vue ne doit pas contenir des opérations rélévant du métier. C'est un traitement qui devait se faire au mieux dans ton controleur, mais bon c'est toi qui vois.
    Pour ta 2eme question, tu peux la reformuler? j'ai pas trop capté où tu bloques.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    La 2eme solution n'est non seulement pas propre, mais pas maintenable, si demain on change la politique définissant la notion de "receptionner", tu seras obligé de modifier ton IHM, pas bon ça, la couche vue ne doit pas contenir des opérations rélévant du métier. C'est un traitement qui devait se faire au mieux dans ton controleur, mais bon c'est toi qui vois.
    Pour ta 2eme question, tu peux la reformuler? j'ai pas trop capté où tu bloques.
    J'ai utilisé la 2ème solution parce que j'ai pas trop compris la 1er solution, ce que j'ai compris qu'il faut mettre une variable boolean indiquant l'état du lot mais comment le faire si dans mon bean je récupère une liste des lots sans faire des traitements?

    Pour la 2em question voilà le problème que j'ai posté de plus dans le forum de sql:
    Voici le problème que j'ai:
    Un lot est composé de plusieurs phases, l'état du lot sera changé en "receptionner" quand toutes les phases liées à cet lot sont validées. Donc si on résume il nous faut une requête qui vérifie l'état de toutes les phases affectées à un lot sont validées.
    la forme du table lot est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE `lot` (
      `Appel_offre_reference` int(11) NOT NULL,
      `Lot_reference` int(11) NOT NULL,
      `Marche_reference` int(11) default NULL,
      `Lot_libelle` varchar(254) default NULL,
      `Lot_etat` varchar(254) default 'non receptionner',
      PRIMARY KEY  (`Appel_offre_reference`,`Lot_reference`),
      KEY `FK_lot_marche` (`Marche_reference`),
      CONSTRAINT `FK_appelOffre_lot` FOREIGN KEY (`Appel_offre_reference`) REFERENCES `appeloffre` (`Appel_offre_reference`),
      CONSTRAINT `FK_lot_marche` FOREIGN KEY (`Marche_reference`) REFERENCES `marche` (`Marche_reference`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    et la forme de la Table Phase:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `phase` (
      `Appel_offre_reference` int(11) NOT NULL,
      `Lot_reference` int(11) NOT NULL,
      `Phase_reference` int(11) NOT NULL,
      `Reglement_type_operation_financiere` varchar(254) default NULL,
      `Phase_libelle` varchar(254) default NULL,
      `Phase_etat` varchar(254) default 'non valider',
      PRIMARY KEY  (`Appel_offre_reference`,`Lot_reference`,`Phase_reference`),
      KEY `FK_phase_reglement` (`Reglement_type_operation_financiere`),
      CONSTRAINT `FK_lot_phase` FOREIGN KEY (`Appel_offre_reference`, `Lot_reference`) REFERENCES `lot` (`Appel_offre_reference`, `Lot_reference`),
      CONSTRAINT `FK_phase_reglement` FOREIGN KEY (`Reglement_type_operation_financiere`) REFERENCES `reglement` (`Reglement_type_operation_financiere`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    1ere question :
    Tu creerais un champ boolean dans Lot qui sera calculé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private Boolean estEnregistre;
    public Boolean getEstEnregistre(){
    return this.lotEtat.equals("enregistrer");
    }
    et dans ton xhtml tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:graphicImage value="../framGraphique/images/tonImagePourReceptionner.png" alt="Update"  rendered="#{ lotdt.estEnregistre}"/>
    <h:graphicImage value="../framGraphique/images/tonImagePourNonReception.png" alt="Update"  rendered="#{! lotdt.estEnregistre}"/>
    2eme question :
    Eh ben tu fais une requete sql qui va tenter d'extraire les Phases non valides, s'il n'ya aucune, alors soit toutes sont valides, soit aucune phase n'a encore été ajoutée au Lot. Voila la requete que je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from `phase` where `Phase_etat` <>'valider'
    . Voila voila.

Discussions similaires

  1. Telecharger des fichiers a partir de la base de données
    Par Techys dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 01/10/2013, 16h37
  2. Affichage des données a partir d'une base de donnée
    Par samantha2010 dans le forum C++
    Réponses: 4
    Dernier message: 16/05/2011, 10h34
  3. Créer des clés informatiques à partir d'1 base de données??
    Par Flateric dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 11/02/2005, 07h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo