Aide vérification type java
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Aide vérification type java



  1. #1
    GECKO00

    Aide vérification type java


    ------

    Bonjour,

    J'ai besoin de votre aide car je dois vérifier le contenu de 2 variables de type string. la premiere (String value) contient une valeur et la deuxième (String Type) Contient le type de la variable value. Le type de variable doit être : STRING ou NUMBER ou DATE ou BOOLEAN. Pour l'instant j'ai créer un enum avec la liste des types possibles

    Voila ce que j'ai fait pour l'instant

    Code:
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.xml.bind.annotation.XmlEnum;
    import javax.xml.bind.annotation.XmlType;
    
    @XmlType(name = "SessionVarType")
    @XmlEnum
    public enum SessionVarType {
    
    	STRING, NUMBER, DATE, BOOLEAN;
    
    	public String value() {
    		return name();
    	}
    
    	public static boolean isCorrect (String type, String value) {
    
    		for(SessionVarType m : values()) {
    			try {
    				if (type.equals(m.toString())){
    					if(m.toString() == "String"){
    						return true;
    					}
    					else if (m.toString() == "Number") {
    						if(Integer.parseInt(value) >=0){
    							return true;
    						}
    					}
    					else if(m.toString() == "Date") {
    						Date d;
    						SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
    						if (sdf.parse(value)!=null) {
    							return true;
    						}
    					}
    
    					else if ((m.toString()== "BOOLEAN") && (value.equals("true") || value.equals("false"))){
    						return true;
    					}
    				}
    			}
    			catch (Exception e) {
    				return false;
    			}
    		}
    		return true;
    	}
    	public static SessionVarType fromValue(String v) {
    		return valueOf(v);
    	}
    
    }
    Personnelement je trouve qu'il y a beaucoup trop de if/else, est-ce que vous auriez un moyen plus simple de faire ca? Quitte à ne pas utiliser d'enum

    Merci d'avance

    -----

  2. #2
    GECKO00

    Re : Aide vérification type java

    J'ai modifié le code

    Code:
    import java.text.SimpleDateFormat;
     
    import javax.xml.bind.annotation.XmlEnum;
    import javax.xml.bind.annotation.XmlType;
     
    import org.apache.log4j.Logger;
     
    @XmlType(name = "SessionVarType")
    @XmlEnum
     
     
    public enum SessionVarType {
         
         
        STRING, NUMBER, DATE, BOOLEAN;
         
        private static Logger logger = Logger.getLogger(SessionVarType.class);
         
        private SessionVarType() {
     
        }
     
        public String value() {
            return name();
        }
     
        public static boolean isTypeCorrect (String type) {
            boolean result = false;
            for(SessionVarType m : values()) {
                if (type.toUpperCase().equals(m.toString())){
                    result = true;
                    break;
                }
            }
     
            return result;
        }
        public static boolean isValueCorrect (SessionVarType type, String value) {
     
            try {
                if(type.toString().equals("STRING")){
                }
                else if (type.toString().equals("NUMBER")) {
                    if(value.contains(".") || value.contains(",")) {
                        Double.valueOf(value);
                         
                    }
                    else {
                    Integer.parseInt(value);
                    }
                }
                else if(type.toString().equals("DATE")) {
                    SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
                    sdf.parse(value);
     
                }
     
                else if ((type.toString().equals("BOOLEAN")) && (value.toLowerCase().equals("true") || value.toLowerCase().equals("false"))){
                    return true;
                }
                else {
                    throw new Exception();
                }
            }
            catch (Exception e) {
                logger.error(e.getMessage(),e);
                return false;
            }
            return true;
        }
        public static SessionVarType fromValue(String v) {
            return valueOf(v);
        }
     
    }
    Est-ce que vous avez une meilleur solution pour vérifier si un String contient une date?

  3. #3
    Dlzlogic

    Re : Aide vérification type java

    Bonjour,
    Je constate que vous n'avez pas eu de réponse depuis plusieurs jours.
    J'ai un peu fait de Java, mais très peu. J'ai lu votre code, J'avoue que c'est assez surprenant.
    Pourriez-vous mettre quelques explications.
    Par exemple, pourquoi vous voulez vérifier le type ? Parce que à l'appel de la fonction, le programme ne sait pas ce dont il s'agit ou parce que vous voulez vérifier que la valeur fournie correspond bien à ce que le programme attend ?

  4. #4
    GECKO00

    Re : Aide vérification type java

    Merci beaucoup pour votre aide!!!!

    En fait si j'ai besoin de cela c'est parce que je développe un web service. Dans la base de donnée j'ai une table session_var qui permet d'affecter différents type de variable à une session (session_id, type_var, contenu_var). Les type de variables que l'on peut ajoutée sont limité c'est pour cela que j'ai crée un enum. Le contenu des variables doit aussi correspondre au type qu'on leurs a donné.

    Exemple

    Si type = Boolean et contenu = 1523 --> X
    Si type = Boolean et contenu = True --> O

    Le type et le contenu de la variable sont tout les 2 des varchars (String)

  5. A voir en vidéo sur Futura
  6. #5
    GECKO00

    Re : Aide vérification type java

    Merci beaucoup pour votre aide!!!!

    En fait si j'ai besoin de cela c'est parce que je développe un web service. Dans la base de donnée j'ai une table session_var qui permet d'affecter différents type de variable à une session (session_id, type_var, contenu_var). Les type de variables que l'on peut ajoutée sont limité c'est pour cela que j'ai crée un enum. Le contenu des variables doit aussi correspondre au type qu'on leurs a donné.

    Exemple

    Si type = Boolean et contenu = 1523 --> X
    Si type = Boolean et contenu = True --> O

    Avant d'insérer une variable dans session_var on va vérifier si isTypeCorrect et isValueCorrect retournent bien true, si l'une des 2 renvoie false on envoie une erreur et l'insertion n'est pas faite

    Le type et le contenu de la variable sont tout les 2 des varchars (String)

    Code:
    public enum SessionVarType {
         
         
        STRING, NUMBER, DATE, BOOLEAN;
         
        private static Logger logger = Logger.getLogger(SessionVarType.class);
         
        private SessionVarType() {
     
        }
     
        public String value() {
            return name();
        }
     
        public static boolean isTypeCorrect (String type) {
            boolean result = false;
            for(SessionVarType m : values()) { /*Pour chaque type de valeur m présent dans l'enum*/
                if (type.toUpperCase().equals(m.toString())){ /*on récupére le nom du type en String et on le compare à la variable String type que la fonction a recu  */
                    result = true; /* si les 2 sont égaux result = true et on arrete de boucler*/
                    break;
                }
            }
     
            return result;
        }
        public static boolean isValueCorrect (SessionVarType type, String value) {
     
            try {
                if(type.toString().equals("STRING")){
                }
                else if (type.toString().equals("NUMBER")) {
                    if(value.contains(".") || value.contains(",")) {
                        Double.valueOf(value); /* Si la value n'est pas un double Double.valueOf va envoyer une erreur et on va aller dans le catch*/
                         
                    }
                    else {
                    Integer.parseInt(value); /*Si la value n'est pas un int Integer.parseInt  va envoyer une erreur et on va aller dans le catch*/
                    }
                }
                else if(type.toString().equals("DATE")) {
                    SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
                    sdf.parse(value);/* Si la value n'est pas une date sdf.parse  va envoyer une erreur et on va aller dans le catch*/
     
                }
     
                else if ((type.toString().equals("BOOLEAN")) && (value.toLowerCase().equals("true") || value.toLowerCase().equals("false"))){
                    return true;
                }
                else {
                    throw new Exception();  sdf.parse(value); /*Si le type est boolean et que la value n'est ni true ni false on envoie une exception et on va dans le catch*/
                }
            }
            catch (Exception e) {
                logger.error(e.getMessage(),e);
                return false; /* Si on a eu une erreur c'est que le type est mauvais donc on renvoie false */ 
            }
            return true;
        }
        public static SessionVarType fromValue(String v) {
            return valueOf(v);
        }
    Dernière modification par GECKO00 ; 22/03/2013 à 09h35.

  7. #6
    Dlzlogic

    Re : Aide vérification type java

    Bonjour,
    Concernant l'utilisation des enum, l'intérêt est que l'on déclare une liste de MOTS compréhensibles par l'homme, par exemple
    Code:
    //Déclaration je ne sais où  
    enum Nombres(zero, un, deux, trois, quatre, cinq);
    
    //utilisation 
    int unNombre; // cette variable a reçu une valeur
    switch  (unNombre)
    {
      case zero: print("ce nombre vaut 0\n"); break; 
      case quarte: print("ce nombre vaut 4 \n"); break; 
      case un:
      case deux:
      case trois:
      case cinq: print("ces nombres ne sont pas encore documentés\n"); break;
      break : print(" Ce nombre est inconnu\n");
    }
    Mon exemple est volontairement idiot puisqu'il est beaucoup plus facile de lire et de comprendre 1 que 'un' ou 12 que 'douze',
    Mais c'est le principe de l'énumération.

    Pour le reste, c'est à dire le détail, comme je n'ai pas les déclaration de classe, je ne peux pas voir grand-chose.

  8. #7
    fred1599

    Re : Aide vérification type java

    Je vais simplement vous répondre par rapport à mes connaissances en python, car les deux langages sont orientés objet, j'ai donc pensé à isinstance en python et il se trouve que la même chose existe en java, java.lang.Class.isInstance(Obj ect obj).

    Bonne continuation...

  9. #8
    GECKO00

    Re : Aide vérification type java

    ok merci beaucoup pour votre aide!

Discussions similaires

  1. Exemple de Type incompris, Java
    Par invite78f958b1 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 26/09/2011, 21h00
  2. Aide java
    Par MANTA.. dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 22/09/2011, 14h32
  3. aide!!java!!
    Par narakphysics dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 21/03/2011, 00h03
  4. type Image en Java
    Par inviteace5a566 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 23/08/2008, 06h06
  5. Verification et aide
    Par inviteb158d85a dans le forum Mathématiques du collège et du lycée
    Réponses: 21
    Dernier message: 09/12/2007, 16h11