petit script JAVA

Le
pititof92
Bonjour,

A l'intérieur de JIRA, j'utilise un script runner (déclenché=
sur le validator d'une transaction, pour assurer le passage d'une demande =
à l'état close vers réouverte).

But recherché : Ce passage est possible si la date système est po=
stérieure à maDate ET la différence en nombre de jours entre=
la date système et ma date <= 1.

Voici mon code :
Date now = new Date()
Date cfDate = new Date(cfValues['maDate'].getTime())
new Boolean(((now.getTime() - cfDate) / 86400000) <= 1) && (now.getTime()=
>= cfDate ))

Je pense qu'il doit y avoir un souci de syntaxe JAVA dans ce petit bout de =
code, mais je ne vois pas où :-(

commentaire : la méthode getTime permet a priori de récupére=
r le nombre de secondes écoulées depuis 1970. Ensuite, je fais la=
différence entre la date système et la date de clôture, et =
je divise par 86400000 (qui correspond à 24 * 60 *60 * 1000 pour 24 he=
ures, 60 minutes, 60 secondes et 1000 millisecondes) pour ramener cette dif=
férence de millisecondes en jour. Du coup, je mets ça en conditio=
n (en précisant que je veux moins d’un jour ou un jour maxi) e=
t le fait que la date système doit être postérieure ou Ã=
©gale à la date de clôture… mais pour le moment, cela n=
e fonctionne pas… à vrai dire, je ne sais pas si la syntaxe JA=
VA est correcte ou pas, ne connaissant pas du tout le langage  ce =
qui est dommage aussi, c’est que je n’arrive pas à aff=
icher le contenu des variables cfDate et now.getTime()

En fait, l'élément validator va évaluer la 3e ligne de code,=
et déterminer si c'est vrai ou faux. Si c'est faux, un message d'erre=
ur est envoyé à l'utilisateur, et la transition n'est pas dé=
clenchée. L'état reste à close.

Merci beaucoup,

Chritophe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Yliur
Le #25535242
Le Tue, 9 Jul 2013 08:01:44 -0700 (PDT)
a écrit :

A l'intérieur de JIRA, j'utilise un script runner (déclenché sur le
validator d'une transaction, pour assurer le passage d'une demande à
l'état close vers réouverte).

But recherché : Ce passage est possible si la date système est
postérieure à maDate ET la différence en nombre de jours entre la
date système et ma date <= 1.

Voici mon code :
Date now = new Date()
Date cfDate = new Date(cfValues['maDate'].getTime())
new Boolean(((now.getTime() - cfDate) / 86400000) <= 1) &&
(now.getTime() >= cfDate ))

Je pense qu'il doit y avoir un souci de syntaxe JAVA dans ce petit
bout de code, mais je ne vois pas où ... :-(



Est-ce que tu écris ça dans une classe que tu places quelque part ?

Est-ce qu'il y a un message d'erreur quelque part ? Dans le journal de
Tomcat (catalina.out) peut-être ?

Est-ce que tu aurais moyen d'exécuter ce code en dehors de JIRA, pour
voir ce qui marche ou non ?

A première vue :
- Il faut les points-virgules à la fin des instructions.
- Je ne sais pas ce que représente cfValues, mais les tableaux Java
sont indexés par des nombres, donc cfValues['maDate'] est des
plus suspects.
- new Boolean (...) ne sert à rien.
- now.getTime() renvoie un entier long, cfDate est une date, c'est
sans doute now.getTime() - cfDate.getTime(). La division entière
risque de ne pas faire ce que tu veux non plus. Peut-être plutôt
long tempsEcoule = now.getTime() - cfDate.getTime() ;
boolean res = tempsEcoule <= 86400000 && tempsEcoule >= 0 ;
Mais il faut aussi faire quelque chose de ce booléen, peut-être
le renvoyer ou l'utiliser comme condition d'un if ?

Mieux vaudrait tester le code séparément si tu n'as pas de messages
d'erreur pour te guider une fois le code inséré dans JIRA.


commentaire : la méthode getTime permet a priori de récupérer le
nombre de secondes écoulées depuis 1970. Ensuite, je fais la
différence entre la date système et la date de clôture, et je divise
par 86400000 (qui correspond à 24 * 60 *60 * 1000 pour 24 heures, 60
minutes, 60 secondes et 1000 millisecondes) pour ramener cette
différence de millisecondes en jour. Du coup, je mets ça en condition
(en précisant que je veux moins d’un jour ou un jour maxi) et le fait
que la date système doit être postérieure ou égale à la date de
clôture… mais pour le moment, cela ne fonctionne pas… à vrai dire, je
ne sais pas si la syntaxe JAVA est correcte ou pas, ne connaissant
pas du tout le langage  ce qui est dommage aussi, c’est que je
n’arrive pas à afficher le contenu des variables cfDate et
now.getTime()



Avec quels outils travailles-tu ? Comment as-tu tenté d'afficher la
valeur de ces variables ?

En fait, l'élément validator va évaluer la 3e ligne de code, et
déterminer si c'est vrai ou faux. Si c'est faux, un message d'erreur
est envoyé à l'utilisateur, et la transition n'est pas déclenchée.
L'état reste à close.
pititof92
Le #25535362
J'ai mis la portion de code que tu m'as donnée à la place de la m ienne, et ça fonctionne ! Un grand merci ...

Effectivement, il devait y avoir un souci entre now.getTime() qui est un en tier long, et cfDate qui est une date. En plus de ça, le boolean test é sur le fin ne devait pas être au top niveau syntaxe.

Sinon, mes réponses à tes questions :
. non, je n'écris pas ça dans une classe. Ne connaissant pas JAVA , j'ai essayé de bidouiller en tant newbie :o)
. pas de message d'erreur, juste la transition qui ne s'exécute pas da ns tous les cas
. non, malheureusement pas moyen de tester à ma connaissance en dehors de JIRA :-(
. justement la dernière ligne est évaluée par le script run de JIRA pour déterminer si la transaction va être réalisà ©e ou pas.

Le mardi 9 juillet 2013 17:01:44 UTC+2, a écrit  :
Bonjour,



A l'intérieur de JIRA, j'utilise un script runner (déclenchà © sur le validator d'une transaction, pour assurer le passage d'une deman de à l'état close vers réouverte).



But recherché : Ce passage est possible si la date système est postérieure à maDate ET la différence en nombre de jours ent re la date système et ma date <= 1.



Voici mon code :

Date now = new Date()

Date cfDate = new Date(cfValues['maDate'].getTime())

new Boolean(((now.getTime() - cfDate) / 86400000)


Je pense qu'il doit y avoir un souci de syntaxe JAVA dans ce petit bout d e code, mais je ne vois pas où ... :-(



commentaire : la méthode getTime permet a priori de récupé rer le nombre de secondes écoulées depuis 1970. Ensuite, je fais la différence entre la date système et la date de clôture, e t je divise par 86400000 (qui correspond à 24 * 60 *60 * 1000 pour 24 heures, 60 minutes, 60 secondes et 1000 millisecondes) pour ramener cette d ifférence de millisecondes en jour. Du coup, je mets ça en condit ion (en précisant que je veux moins d’un jour ou un jour maxi) et le fait que la date système doit être postérieure ou à ©gale à la date de clôture… mais pour le moment, cela n e fonctionne pas… à vrai dire, je ne sais pas si la syntaxe JA VA est correcte ou pas, ne connaissant pas du tout le langage  ce qui est dommage aussi, c’est que je n’arrive pas à aff icher le contenu des variables cfDate et now.getTime()



En fait, l'élément validator va évaluer la 3e ligne de cod e, et déterminer si c'est vrai ou faux. Si c'est faux, un message d'er reur est envoyé à l'utilisateur, et la transition n'est pas dà ©clenchée. L'état reste à close.



Merci beaucoup,



Chritophe
Publicité
Poster une réponse
Anonyme