Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

petit script JAVA

2 réponses
Avatar
pititof92
Bonjour,

A l'int=C3=A9rieur de JIRA, j'utilise un script runner (d=C3=A9clench=C3=A9=
sur le validator d'une transaction, pour assurer le passage d'une demande =
=C3=A0 l'=C3=A9tat close vers r=C3=A9ouverte).=20

But recherch=C3=A9 : Ce passage est possible si la date syst=C3=A8me est po=
st=C3=A9rieure =C3=A0 maDate ET la diff=C3=A9rence en nombre de jours entre=
la date syst=C3=A8me et ma date <=3D 1.

Voici mon code :
Date now =3D new Date()
Date cfDate =3D new Date(cfValues['maDate'].getTime())
new Boolean(((now.getTime() - cfDate) / 86400000) <=3D 1) && (now.getTime()=
>=3D 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=C3=B9 ... :-(

commentaire : la m=C3=A9thode getTime permet a priori de r=C3=A9cup=C3=A9re=
r le nombre de secondes =C3=A9coul=C3=A9es depuis 1970. Ensuite, je fais la=
diff=C3=A9rence entre la date syst=C3=A8me et la date de cl=C3=B4ture, et =
je divise par 86400000 (qui correspond =C3=A0 24 * 60 *60 * 1000 pour 24 he=
ures, 60 minutes, 60 secondes et 1000 millisecondes) pour ramener cette dif=
f=C3=A9rence de millisecondes en jour. Du coup, je mets =C3=A7a en conditio=
n (en pr=C3=A9cisant que je veux moins d=E2=80=99un jour ou un jour maxi) e=
t le fait que la date syst=C3=A8me doit =C3=AAtre post=C3=A9rieure ou =C3=
=A9gale =C3=A0 la date de cl=C3=B4ture=E2=80=A6 mais pour le moment, cela n=
e fonctionne pas=E2=80=A6 =C3=A0 vrai dire, je ne sais pas si la syntaxe JA=
VA est correcte ou pas, ne connaissant pas du tout le langage =EF=81=8C ce =
qui est dommage aussi, c=E2=80=99est que je n=E2=80=99arrive pas =C3=A0 aff=
icher le contenu des variables cfDate et now.getTime()

En fait, l'=C3=A9l=C3=A9ment validator va =C3=A9valuer la 3e ligne de code,=
et d=C3=A9terminer si c'est vrai ou faux. Si c'est faux, un message d'erre=
ur est envoy=C3=A9 =C3=A0 l'utilisateur, et la transition n'est pas d=C3=A9=
clench=C3=A9e. L'=C3=A9tat reste =C3=A0 close.

Merci beaucoup,

Chritophe

2 réponses

Avatar
Yliur
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.
Avatar
pititof92
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) <= 1) && (now.getTime () >= cfDate ))



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