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

Java Discussion :

Ajouter une variable à un constructeur


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut Ajouter une variable à un constructeur
    Bonjour tout le monde. Je cherche à rajouter une varible au constructeur d'une class sans étre obliger de le faire manuellement.
    Est ce que quelqu'un voit comment faire?
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, tu veux ajouter un constructeur pendant l'exécution du programme? pourquoi tu ne peux pas modifier la classe, tu n'as pas la main dessus? tu ne peux pas faire une classe qui en hérite?

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Il me semble que tu as déja fait un sujet sur ton problème, inutile d'en faire un nouveau, si tu n'as pas eu de réponse, c'est que ton problème n'est pas clair ou que personne ne connait la réponse.
    http://www.developpez.net/forums/sho...85#post3323685

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    je ne peux pas modifier mon constructor car l'application doit étre génèré automatiqument, et je ne vois pas comment fair pour qu'un constructror hérite d'une varible sans la rentré manuellement à la main.....

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Comment génères-tu ton constructeur sans arguments?
    Sous quelle forme récupère-tu le type d'argument que dois avoir ton constructeur?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    Je suis désolè je me rend compt que je ne suis vraiment pas claire dans mes question je vais essayer d'aller droit au but, je doit créer un application en java qui reçoit des varibale en paramètre, pour ce problème la je suis passer par un fichier properties, ensuite avec les variables que j'ai récuéré je veux les insérer dans mon constructeur, après le constructeur modifier j'exporte mon application en .war et je la met sur un serveur jboss. Mon problème est de justement donnée les varible au constructeur, car mon application a pour but de crée des .war automatiquement avce les varibles que je lui aurais passer dans le fichier properties....

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Je me souviens très bien t'avoir donné une ébauche de solution dans ton premier message il y a quelques jours.
    Maintenant tu dis que tu veux ajouter des arguments à ton constructeur, ok mais dis-nous comment tu génères ton constructeur (montre nous ton code) et on te dira comment ajouter des arguments.

    On a bien compris ton objectif, maintenant il faut rentrer dans le détail

    Je trouve le sujet intéressant mais je me pose une question, à quoi va servir un programme ayant simplement un constructeur, des attributs et des getters/setters?
    Il doit bien faire quelque chose non? ce ne sont que de simples Beans?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    Donc j'ai une méthode entry qui me sert à rentré des valeurs dans une bas de donnée. Pour cela je passe en paramètre d'entré une class InfoMaster qui est un constructeur.
    Quand je vais accéder à ma méthode entry sous InfoPaht de microsoft, j'aurais tout les chmaps qui ce trrouve dans mon constructeur.
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    public RtEntry entry(InfoMaster m) throws Exception
    	{
    		Connection connAuthentification;
    		String queryAuthentification;
    		//String results;
     
    		try {
    			Context initCtx = new InitialContext();
    			DataSource ds =(DataSource)initCtx.lookup("java:MSSQLAUTHDS");
    			connAuthentification = ds.getConnection();
     
    		}
    	        catch(Exception e){
    	                throw e;
    	        }
    	        ResultSet resultsAuthentification;
     
    		try {
    			//varLogin="not_ok";
    			Statement stmtAuthentification = connAuthentification.createStatement();
    			queryAuthentification = "EXEC rGUID";
    			queryAuthentification = "SELECT users.firstName, lastName FROM users,activity,company,ilanTspid WHERE users.company = company.id and users.login ='" +m.getlogin()+ "' and users.password ='"+m.getPassword()+"' and ilanTspid.company = company.id and ilanTspid.GILvalue='"+m.getIlan()+"' and activity.company = company.id and activity.activity='"+m.getActivity()+"';";
    			resultsAuthentification = stmtAuthentification.executeQuery(queryAuthentification);
    			RtEntry RtE = new RtEntry();
    			String erreurLog = "401";
    			String okLog = "200";
    			String ErreurEXEC = "Erreur sur EXEC rGUID";
    			if(resultsAuthentification.next())
    			{
    				m.setlogin(resultsAuthentification.getString("firstName")+     
    						   resultsAuthentification.getString("lastName"));	
    				Connection conn;
    				String query;
    				String ret;
     
    				try {
    					Context initCtx = new InitialContext();
    					DataSource ds =(DataSource)initCtx.lookup("java:MSSQLTESTDS");
    					conn = ds.getConnection();
    				}
    			        catch(Exception e){
    			                throw e;
    			        }
     
    			    ResultSet results;
    				try {
    					Statement stmt = conn.createStatement();
    					query = "EXEC rGUID";
    					String M_parent_id;
    					results = stmt.executeQuery(query);
    					if(results.next())
    					{
    						/*if (m.getM_parent_id().equals(""))
    						{
    						 M_parent_id = "{00000000-0000-0000-0000-00000000000}";
    						}
    						else
    						{}*/
     
    						M_parent_id = m.getParent_id();	
     
    						ret = results.getString(1);
    						query = "INSERT INTO mmskuma(id,parent_id,state,GILstamp,ILAN,user_id,activity,xm22,xm24,xm25) VALUES('" + results.getString(1) + "','" + M_parent_id + "','a','" + m.getTimestamp()+ "','" + m.getIlan()+ "','" + m.getlogin()+ "','" + m.getActivity()+ "','" + m.getXm22() + "','" + m.getXm24() + "','" + m.getXm25() + "');";
    						stmt.executeUpdate(query);
    						conn.close();
    						RtE.setEtat(okLog);
    						RtE.setId(ret);
    						return RtE;
    					}
    					RtE.setEtat(ErreurEXEC);
    					RtE.setId("00000000-0000-0000-0000-00000000000");
    					return RtE;
    				}
    				catch(Exception e){
    					conn.close();
    					throw e;
    				}
    			}
    			RtE.setEtat(erreurLog);
    			RtE.setId("00000000-0000-0000-0000-00000000000");
    			return RtE;
    			}
    			catch(Exception e){
    				connAuthentification.close();
    				throw e;
    			}
    		}
    ensuit le constructeurs va avoir des variables qui vont changer selon l'application que mon programme va générer. dans ce cas la les variable son le xm22; xm24;xm25
    j'aimerais pouvoir changer c'est variable pour chaque application que je génère, les autres variables reste "constante"
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    package ch.gilnet.ws;
     
    import java.sql.Timestamp;
     
    public class InfoMaster {
    	private String parent_id;
    	private String xm22;
    	private String xm24;
    	private String xm25;
    	private String ilan;
    	private String login;
    	private String activity;
    	private String password;
    	private String timestamp;
     
    	public InfoMaster() {
    		super();
    	}
     
    	public InfoMaster( String parent_id,
    			String xm22, String xm24, String xm25, String ilan,
    			String login, String activity, String password, String timestamp) {
    		super();
    		this.parent_id = parent_id;
    		this.xm22 = xm22;
    		this.xm24 = xm24;
    		this.xm25 = xm25;
    		this.ilan = ilan;
    		this.login = login;
    		this.activity = activity;
    		this.password = password;
    		this.timestamp = timestamp;
    	}
     
     
     
    			public String getParent_id() {
    				return parent_id;
    			}
     
    			public void setParent_id(String parent_id) {
    				this.parent_id = parent_id;
    			}
     
    			public String getXm22() {
    				return xm22;
    			}
     
    			public void setXm22(String xm22) {
    				this.xm22 = xm22;
    			}
     
    			public String getXm24() {
    				return xm24;
    			}
     
    			public void setXm24(String xm24) {
    				this.xm24 = xm24;
    			}
     
    			public String getXm25() {
    				return xm25;
    			}
     
    			public void setXm25(String xm25) {
    				this.xm25 = xm25;
    			}
     
    			public String getIlan() {
    				return ilan;
    			}
     
    			public void setIlan(String ilan) {
    				this.ilan = ilan;
    			}
     
    			public String getlogin() {
    				return login;
    			}
     
    			public void setlogin(String login) {
    				this.login = login;
    			}
     
    			public String getActivity() {
    				return activity;
    			}
     
    			public void setActivity(String activity) {
    				this.activity = activity;
    			}
     
    			public String getPassword() {
    				return password;
    			}
     
    			public void setPassword(String password) {
    				this.password = password;
    			}
     
    			public String getTimestamp() {
    				Timestamp ts = new Timestamp(System.currentTimeMillis());
    				timestamp = ts.toString();
    				return timestamp;
    			}
     
     
    }
    c'est aplication que je créer son des Web service que je doit mettre sur un serveur.

  9. #9
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    J'avoue que je ne comprends plus rien...où se trouve la génération de code là dedans?
    J'ai l'impression que tu veux simplement changer les valeurs de xm22, xm24, xm25.
    Ces paramètres sont déja dans le constructeur de InfoMaster.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    si j'export mon application maintenant j'aurais un .war, je le met sur le serveur, je me conecte avec infoPaht je lance ma méthode entry j'aurais donc des case xm22 xm24 xm25 ou je peux rentré des strings maintenant si je veux recréer un nouveaux .war avec des champs xmtoto xmtata qui sont des integer, je suis obliger de changer le constructor pour que dans infoPath j'ai les nouveau champs ou je peux inserer c'est fois ci des integer

  11. #11
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Et pourquoi ne pas faire 2 constructeurs?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public InfoMaster( String parent_id,
    			String xm22, String xm24, String xm25, String ilan,
    			String login, String activity, String password, String timestamp) {}
    public InfoMaster( String parent_id,
    			Integer xmtoto, Integer xmtata, String ilan,
    			String login, String activity, String password, String timestamp) {}
    Encore une fois, InfoMaster est bien une classe générée?, où se trouve le code qui la génère?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    info master n'est une class génèrer, c'est moi qui l'ai taper, est ce qu'il est possible de refaire un Infomaster avec des valeurs pret défini, je ne peux pas fair deux constructeur car les variables xmtoto xm tata je ne les connaient pas à l'avance, je les récupère du fichier properties

  13. #13
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public InfoMaster( String parent_id, String ilan, String login, String activity,
        String password, String timestamp, Object[] parametresInconnus) {}
    Comme ça tu as un tableau de paramètres de taille et de type variables.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    mais pour génèrer les accesseurs je doit fair comment est pour passer les valeurs de mon properties au paramétre du constructeur je fais comment?

  15. #15
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Le plus simple est d'ajouter les properties directement dans le constructeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public InfoMaster( String parent_id, String ilan, String login, String activity,
        String password, String timestamp, Properties properties) {}
     
    public String getProperty(String key) {
        return properties.getProperty(key);
    }

  16. #16
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par djorfe Voir le message
    info master n'est une class génèrer, c'est moi qui l'ai taper, est ce qu'il est possible de refaire un Infomaster avec des valeurs pret défini, je ne peux pas fair deux constructeur car les variables xmtoto xm tata je ne les connaient pas à l'avance, je les récupère du fichier properties
    Pourquoi ne pas stocker les valeurs sous forme d'une Map avoir un getter/setter générique prenant en paramètre le nom du champ ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    ok est maintenant je fais comment pour génèrer les accesseurs??

  18. #18
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Un accesseur sur l'objet Properties tel que je l'ai mis précédemment devrait suffir.

  19. #19
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par djorfe Voir le message
    ok est maintenant je fais comment pour génèrer les accesseurs??
    Je n'aime pas trop répondre de cette manière mais as-tu réellement besoin de ces accesseurs ? Des accesseurs génériques ne sont-ils pas suffisants ? (ce n'est effectivement pas le cas si tu n'as pas la main sur la partie qui va invoquer ces accesseurs).
    Maintenant, si ta problématique est de générer le code d'un JavaBean, pourquoi ne pas se tourner vers des moteurs de génération de fichier à base de template comme http://velocity.apache.org/ ? Ensuite il faut compiler le fichier java généré et le packager dans ton WAR.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 133
    Points : 71
    Points
    71
    Par défaut
    si je comprend bien, le fichier properties doit étre au même niveau dans mon projet que mon info master?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ajouter une variable d'environnement
    Par julien.63 dans le forum Développement OS X
    Réponses: 4
    Dernier message: 14/06/2007, 01h34
  2. Réponses: 1
    Dernier message: 14/02/2007, 18h08
  3. ajouter une variable à une chaine
    Par youtou dans le forum C
    Réponses: 11
    Dernier message: 06/06/2006, 16h11
  4. Réponses: 1
    Dernier message: 30/03/2006, 08h19
  5. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 19h18

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