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

Persistance des données Java Discussion :

[JAXB 2.0] customization attribute


Sujet :

Persistance des données Java

  1. #1
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut [JAXB 2.0] customization attribute
    Bonjour à tous

    voilà mon problème

    Mon application doit generer un fichier XML avec notamment deux attributs date au format dd/MM/yyyy.
    Le souci est que ce champs est alimenté par une valeur en base avec un format different. En fait c'est pas un problème car avec un peu de recherche on voit qu'on peut faire de la customization.
    Pour cela j'ai fait un schéma, j'utilise les annotations et je génére un mes classes java en utilisant xjc
    Et tout marche très bien. Sauf que j'ai fait mon schéma d'une manière pas très sympa à savoir une belle duplication de code que voici :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0" >
     
       <xs:element name="item" >
     
          <xs:complexType>
             <xs:attribute name="uid" type="xs:int" use="required" />
             <xs:attribute name="lib" type="xs:string" use="optional" />
             <xs:attribute name="dt_start" type="xs:date" use="optional">
                <xs:annotation>
                   <xs:appinfo>
                      <jxb:property>
                          <jxb:baseType>
                              <jxb:javaType name="java.util.Date" 
                                   parseMethod="monopackage.MonAdapter.stringToDate"
                                printMethod="monopackage.MonAdapter.dateToString" />
                          </jxb:baseType>
                     </jxb:property>
                 </xs:appinfo>
              </xs:annotation>        
             </xs:attribute>
             <xs:attribute name="dt_end" type="xs:date" use="optional" >
                <xs:annotation>
                   <xs:appinfo>
                      <jxb:property>
                          <jxb:baseType>
                              <jxb:javaType name="java.util.Date" 
                                   parseMethod="monopackage.MonAdapter.stringToDate"
                                printMethod="monopackage.MonAdapter.dateToString" />
                          </jxb:baseType>
                     </jxb:property>
                 </xs:appinfo>
              </xs:annotation>
             </xs:attribute>
             <xs:attribute name="status" type="xs:string" use="optional" />
     
          </xs:complexType>
     
       </xs:element>
     
    </xs:schema>

    L'objectif est de factoriser cette annotation est de la rendre visible pour ce schema là en particulier.Je voudrais eviter de reecrire deux fois la même annotation ...

    J'ai essayé plusieurs choses mais à chaque fois j'ai des erreurs de compilations: disant que les annotations sont placées au mauvais endroit

    ça ne m'arrange pas de le mettre en globalBindings car toutes les dates n'auront pas ce format

    J'ai essayé d'utiliser le schemaBindings mais je comprends par trop la syntaxe

    Voilà tout
    merci d'avance

  2. #2
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Bonjour

    voilà j'ai enfin trouvé la solution à mon problème
    je la poste au cas où .... :-)

    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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0" >
     
        <xs:simpleType name="dateItem">
            <xs:annotation>
              <xs:appinfo>
                  <jxb:javaType name="java.util.Date"
                  parseMethod="monopackage.MonAdapter.stringToDate"
                  printMethod="monopackage.MonAdapter.dateToString" />
               </xs:appinfo>
            </xs:annotation>
            <xs:restriction base="xs:date"/>        
          </xs:simpleType>
     
       <xs:element name="item" >
          <xs:complexType>
             <xs:attribute name="uid" type="xs:int" use="required" />
             <xs:attribute name="lib" type="xs:string" use="optional" />
             <xs:attribute name="dt_start" type="dateItem" use="optional"/>
             <xs:attribute name="dt_end" type="dateItem" use="optional" />
            <xs:attribute name="status" type="xs:string" use="optional" />
          </xs:complexType>
     
       </xs:element>
     
    </xs:schema>
    J'ai été inspiré de l'article que a écrit Antonio Goncalves sur www.devx.com

    voilà tout

    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Custom attribute et reflection
    Par nonoxp dans le forum C#
    Réponses: 2
    Dernier message: 26/09/2013, 11h19
  2. Injecter un Custom Attribute
    Par Bluedeep dans le forum Framework .NET
    Réponses: 2
    Dernier message: 19/11/2007, 16h27
  3. Injecter un custom attribute
    Par Bluedeep dans le forum C#
    Réponses: 3
    Dernier message: 11/11/2007, 21h45
  4. [C#] Custom attribute
    Par Mathieu.Nanoux dans le forum Framework .NET
    Réponses: 2
    Dernier message: 16/05/2007, 14h39

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