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
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
a écrit :
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.
Avec quels outils travailles-tu ? Comment as-tu tenté d'afficher la
valeur de ces variables ?
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 :