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

Développement de jobs Discussion :

récupérer les données d'un String en plusieurs champs


Sujet :

Développement de jobs

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut récupérer les données d'un String en plusieurs champs
    Bonjour,
    dans un JOB je récupère des données d'une Base de données MongoDB et dans ma collection en entrée j'ai un String sous la forme suivante:
    Document{{_id=61aa88fc36eab40040444a96, title=ttt, address=xxx, zip=33320, city=eysines, country=FR, department=33, region=4}}
    j'aimerais bien pouvoir récupérer les champs séparément .
    pour le tél comme c'est le premier champ j'ai pu le récupérer avec :
    StringHandling.SUBSTR(row1.contact ,StringHandling.INDEX(row1.contact ,"=") +2,
    (StringHandling.INDEX(row1.contact ,",") - StringHandling.INDEX(row1.contact ,"=")) -1) mais pour les autres champs je ne sais pas comment lui dire le deuxième "=" ou le 3ème... . je sais qu'on peut faire ça avec les expressions régulières mais je n'ai pas la connaissance .
    je vous prie de bien m'aider ou m'orienter vers des pistes
    je vous serai reconnaissant!
    Bien Cordialement

  2. #2
    Membre très actif Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Par défaut
    Bonjour,

    Perso, je la découperai directement dans un tJavaRow en sans passer par des expressions régulières. Car l'ordre des propriétés dans ton document n'est pas assurées.


    D'abord ajoute ses méthodes dans une routine perso

    Code java : 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
     
        public static java.util.Map<String,String> unjoinToMap(String string, String keyValueSeparator, String entriesSeparator, String begin, String end) {
            java.util.List<String> stringEntries = unjoin(string, entriesSeparator, begin, end);
            java.util.Map<String,String> result = new java.util.HashMap<String,String>();
            for (String stringEntry : stringEntries) {
                int index = stringEntry.indexOf(keyValueSeparator);
                result.put(stringEntry.substring(0, index), stringEntry.substring(index  + keyValueSeparator.length()));
            }
            return result;
        }
     
        public static java.util.List<String> unjoin(String string, String separator, String begin, String end) {
            return unjoin(removePrefixAndSuffix(string, begin, end), separator);
        }
     
        public static java.util.List<String> unjoin(String string, String separator) {
            if (string == null) {
                throw new NullPointerException("string is null");
            }
            return java.util.Arrays.asList(string.split(java.util.regex.Pattern.quote(separator), -1));
        }
     
     
        public static String removePrefixAndSuffix(String string, String begin, String end) {
            if (string == null) {
                throw new NullPointerException("string is null");
            }
            if (!string.startsWith(begin)) {
                throw new IllegalArgumentException(String.format("'%s' not starts by '%s'", string, begin));
            }
            if (!string.endsWith(end)) {
                throw new IllegalArgumentException(String.format("'%s' not finishs by '%s'", string, end));
            }
            int fromIndex = begin.length();
            int toIndex = string.length() - end.length();
            if (toIndex < fromIndex) {
                throw new IllegalArgumentException(String.format("Collision in '%s' with prefix '%s' and suffix '%s'", string, begin, end));
            }
            return string.substring(fromIndex, toIndex);
     
        }


    Dans ton tJavaRow tu vas pouvoir spliter directement ta chaîne de caractère :


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Ce qui est entre # est à remplacer
    java.util.Map<String,String> properties = #LeNomDeTaRoutine#.unjoinToMap(input_row.#LeNomDeLAColloneDocuement#, "=", ", ", "Document{{", "}}");
     
    ouput_row.#LeNomDeLaColumnIdDeSortie# = properties.get("_id");
    ...

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut
    Bonjour supergeoffrey,
    Merci beaucoup pour votre réponse, je vous tiendrais au courant dès que je vais tester tout ça.
    votre travail me sera utile , et à d'autres dans le forum, mais en cherchant un peu sur internet j'ai trouvé une solution plus simple à mon problème.
    je peux en effet récupérer les champs d'une structure dans une collection en mappant bien et on indiquant la structure qui contient le champ.
    Merci infiniment pour votre temps.

    Bien Cordialement

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

Discussions similaires

  1. récupérer les données dans plusieurs activites
    Par soussou angel dans le forum Android
    Réponses: 2
    Dernier message: 15/02/2016, 04h14
  2. Réponses: 0
    Dernier message: 20/05/2015, 16h15
  3. [XL-2007] Récupérer les données de plusieurs fichiers
    Par trickshot dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/09/2014, 12h23
  4. [XL-2003] Récupérer les données de plusieurs fichiers d'un même répertoire sans les ouvrir
    Par mattic59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2011, 21h45
  5. Réponses: 15
    Dernier message: 14/06/2009, 05h20

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