Skip to content
Snippets Groups Projects
Select Git revision
  • 7aec0cd2f319e3ffc24bfbcaadf9e904574ff23e
  • master default protected
2 results

scodoc_r6a06

Forked from Jean-Marie Place / SCODOC_R6A06
Source project has a limited visibility.
Name Last commit Last update
tpkotlin
README.md

TP Kotlin


PS : Vous pouvez skip l'intro et aller à l'Étape 1 si vous n'aimez pas les thrillers de science-fiction autobiographiques.

Précédemment, dans la vie

Il était une fois une team de développeurs aguéris, fort d'une expérience quasi-infinie (i.e. 5 ans et demi) dans le domaine des applications web (chacuns ses délires on ne juge pas).

Un beau jour, alors que la migration de l'appli vers Java 12 battait son plein et que le pôle de recherche squattait le baby depuis 40 minutes, Jaquot Tlin, jeune dév en devenir, eut une idée. Une idée qu'aucun de ses compères développeurs ne pouvait appréhender :
  - "Eh les gars, et si au lieu de faire encore et toujours du Java (qui a presque 25 ans), on gardait ce qu'on avait là et on regardait comment faire du Kotlin ? On a quasiment rien à changer, et ça pourrait nous simplifier notre vie de développeurs pas toujours facile !"
  - *silence dans l'open space*

Prise de stupeur et de tremblements, la dév sénior du pôle, Eve D. Lopper, attrappa Jaquot d'un regard, l'invitant silencieusement à glisser à son bureau avec sa chaise.
  - "OK Jaquot écoute moi bien. J'aime les gens qui prennent des initatives. Mais j'ai pas le temps de suivre des tutos youtube sur les nouvelles techs. Tu peux me montrer en deux-deux ce qu'est Kotlin ?"

  - "Ça tombe bien j'ai justement un vieux TP d'IAGL sous la main, pousse toi, et admire..." Alt Text

Étape 1 : Du Java et des Hommes

Premièrement, on va vous allez faire du Java, parce que le Java, c'est connu.
Rien de bien compliqué pour commencer, juste un singleton comme il ne faut plus en faire.

Vous vous en doutez, vu que c'est du Java et pas du Kotlin comme annoncé, vous pouvez le faire un peu où vous voulez. MAIS sachez que vous en aurez quand même besoin dans un futur très proche, donc on vous conseille de le faire dans le projet, dans les sources côté java.

TODO (vous pouvez les cocher même si ça ne sert à rien) :
  • Créer une classe Image qui représente une image (fallait le préciser quand même) et qui comporte un titre title et un url url
  • Créer une classe singleton en JAVA qui représente un dossier de favoris tout simple. Il contiendra une liste d'objets Image.

Si vous voulez des images mais que vous n'avez pas d'idée (franchement Google images c'est pas compliqué), rendez-vous ici, ou prenez ceux sur la jsp.

Étape 1,5 : Transformation Kotlin

Parfait, maitenant que le singleton est derrière vous, vous allez pouvoir l'oublier et le refaire. Cette fois-ci bien sûr, en Kotlin, tout beau tout propre.

Pensez à jeter un œil aux slides, on vous en a parlé dedans.
Alternativement, les plus chanceux d'entre vous qui utilisent IntelliJ (pas Eclipse, dommage) peuvent directement traduire du code Java en Kotlin.

TODO :
  • Créer la même classe que dans l'étape 1, mais en Kotlin.
  • Lui rajouter la méthode getAll(), qui renvoie la liste des images qu'elle contient.
  • Et aussi addImg() qui prend en param une image et qui (vous vous en doutez, bilingue que vous êtes) ajoute une image à la liste des images de la classe

Étape 2 : Ajouter des images a ses favoris

Joli, normalement ça devait pas être trop long (surtout en Kotlin hein), et vous devriez avoir un beau singleton. Dans l'onglet de l'étape 2, vous trouverez un formulaire pour ajouter une image dans.... bah rien en fait, puisque c'est vous qui venez de faire votre dossier de favoris. Pour la petite histoire, un dev avait déjà fait tout ça, mais il s'est fait virer... Il a prit cette l'implem, a supprimé deux trois trucs, et a force push, puis est parti... Bref, triste histoire...
Donc vous l'avez deviné : il va falloir remettre en place ce mécanisme, qui récupère la data du formulaire dans le back, et qui l'ajoute aux favoris. É qué sapelorio Controller. Et un service, puisque faire des choses dans un controller (autres qu'appeler un service) c'est sale, et vous devriez avoir honte de le faire !

TODO :
  • Récupérer la data du formulaire dans un controller Kotlin (vous gérez les noms vous êtes grands).
  • Créer un service Kotlin qui se chargera de l'ajout de votre image dans la liste des favoris. Il devra appeler la méthode addImage(String url) de la classe imageDao.kt.

PRO TIPS :

  • Il ne faut pas oublier que vous avez Spring derrière tout ça (pour votre plus grand BONHEUR). Et Spring a sa façon de faire.
    Donc n'oubliez pas :
    • Les annotations @Service, @Entity, @Autowired, et j'en passe
    • Les modifieurs éventuels à ajouter aux annot (open, lateinit...)

Étape 3 : Lister tout votre bordel

Bon c'est pas tout ça, mais il faut du visuel !
Donc pour cette troisième étape, vous devez afficher votre dossier de favoris dans l'onglet de l'étape 3 (vous suivez). Par contre, étant donné qu'on ne lit pas votre code du futur, la jsp est un peu broken pour le moment, mais j'ai confiance en vous ! Si Bob peut le réparer alors vous aussi !

TODO :
  • Modifier la méthode du controller qui affiche les données dans l'onglet de l'étape 3 afin qu'elle affiche votre liste d'images favorites.
  • Faites vous "plaisir" et ajouter un tri sur la liste, ça va assez vite

Étape 4 : Gotta go fast

Mmmmmh... c'est bizarre... ça met environ 40 ans à se charger... Je pense qu'il est temps de faire un truc qu'on sait bien faire : se plaindre de l'infra.
Ils ont mis en place la pire DB jamais vue dans l'histoire des pires DB. Elle. Est. Lente. Mais... très lente. Mais le client n'aime pas la lenteur, lui il veut des trucs jolis et qui vont vite.
Donc pas le choix... Il va falloir... parallèliser... *queue drama music*

Mais pas d'inquiètude, c'est pas si compliqué que ça. On vous en a parlé vers la fin du diapo.
Donc vous vous démerdez :-)

  • Améliorez votre service qui get de façon à ce que vos images s'affichent en un temps raisonnable (moins de 3 secondes)

Étape 5 : TODO

RAJOUTER SI ON MET PAS ASSEZ DE TEMPS