diff --git a/README.md b/README.md index 500d553600b56ce976e1214c4eb3581b3a6dc6b1..09ad85d0ff06aa087d840d8b018e862fe09f9769 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # TP Kotlin --- +## [Diapo disponible ici !](https://docs.google.com/presentation/d/1oz5HcHxAeiFB5n_BwYRH1tPDPVsgJ5tOLuE_J7y7YS4/edit?usp=sharing) +--- **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_ @@ -36,8 +38,9 @@ Alternativement, les plus chanceux d'entre vous qui utilisent IntelliJ (pas Ecli ##### TODO : - [ ] Créer les mêmes classes que dans l'étape 1, mais en _Kotlin_ (donc `Meme` et `FavDir`). - - [ ] Lui (`FavDIr`) ajouter un bloc _init_ qui print un truc dans la console (histoire de voir qu'il est bien initialisé une seule fois) - - [ ] Lui rajouter la méthode `addMeme(meme: Meme)`, pour ajouter un meme + - [ ] Créer une méthode _affiche()_ dans `FavDIr` pour l'afficher en front (tout bête, on fait du back ici) + - [ ] Ajouter un bloc _init_ qui print un truc dans la console dans le `FavDIr` (histoire de voir qu'il est bien initialisé une seule fois) + - [ ] Rajouter la méthode `addMeme(meme: Meme)`, pour ajouter un meme (toujours dans `FavDIr`) - [ ] Et aussi `getAll()` qui (vous vous en doutez, bilingue que vous êtes) retourne à l'appelant la liste des memes du _FavDir_ ## Étape 2 : Ajouter des memes a ses favoris diff --git a/tpkotlin/src/main/java/com/tpKotlin/glhf/tpkotlin/controller/SimpleController.java b/tpkotlin/src/main/java/com/tpKotlin/glhf/tpkotlin/controller/SimpleController.java index e90504f294864db80342d81c3dc09c941eb11237..6080e8edf963e073533168ea78bc3a2b5db668f9 100644 --- a/tpkotlin/src/main/java/com/tpKotlin/glhf/tpkotlin/controller/SimpleController.java +++ b/tpkotlin/src/main/java/com/tpKotlin/glhf/tpkotlin/controller/SimpleController.java @@ -1,19 +1,21 @@ package com.tpKotlin.glhf.tpkotlin.controller; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.tpKotlin.glhf.tpkotlin.entity.FavDir; import com.tpKotlin.glhf.tpkotlin.entity.Meme; -import com.tpKotlin.glhf.tpkotlin.service.DossierFavService; +/** + * Controller pour les jsp (oui on sait c'est vieux les jsp, mais ça marche + * facilement) + */ @Controller public class SimpleController { - @Autowired - private DossierFavService dfs; + // @Autowired + // private DossierFavService dfs; @RequestMapping({ "/", "/index" }) public ModelAndView index() { @@ -22,12 +24,11 @@ public class SimpleController { @RequestMapping("/ex1") public ModelAndView exo1() { - String s = FavDir.affiche(); - ModelAndView mav = new ModelAndView("ex1"); - mav.addObject("dirfav", s ); + final ModelAndView mav = new ModelAndView("ex1"); + mav.addObject("dirfav", FavDir.affiche()); return mav; } - + @RequestMapping("/ex2") public ModelAndView exo2() { return new ModelAndView("ex2", "formMeme", new Meme("", "")); @@ -40,12 +41,11 @@ public class SimpleController { @RequestMapping("/ex4") public ModelAndView exo4() { - String s = dfs.getAllImagesFromFavFASTER(); - ModelAndView mav = new ModelAndView("ex4"); - mav.addObject("dirfav", s ); + final ModelAndView mav = new ModelAndView("ex4"); + mav.addObject("dirfav", "il faut charger depuis le back"/* this.dfs.getAllImagesFromFav() */); return mav; } - + @RequestMapping("/ex5") public ModelAndView exo5() { return new ModelAndView("ex5"); diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/controller/MemeController.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/controller/MemeController.kt deleted file mode 100644 index 74c29c57bc3f34f0dece9dc548b854ffb72999ce..0000000000000000000000000000000000000000 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/controller/MemeController.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.tpKotlin.glhf.tpkotlin.controller - -import com.tpKotlin.glhf.tpkotlin.entity.Meme -import com.tpKotlin.glhf.tpkotlin.service.DossierFavService -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.stereotype.Controller -import org.springframework.web.bind.annotation.ModelAttribute -import org.springframework.web.bind.annotation.PostMapping -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.servlet.ModelAndView - -@Controller -@RequestMapping("meme") -class MemeController { - - @Autowired - lateinit var favService: DossierFavService - - @PostMapping("/add") - fun addMeme(@ModelAttribute("formMeme") formMeme: Meme): ModelAndView { - favService.insertMeme(formMeme) - - var mav = ModelAndView("ex2", "succeed", "true") - mav.addObject("formMeme", Meme("", "")) - return mav - } -} \ No newline at end of file diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDao.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDao.kt index 47e3805653fa172c5eb11fb4bddfe2f8cf1e1d13..f7dd3d5df0bc6a51c0002f16f5d10901c0bd0c86 100644 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDao.kt +++ b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDao.kt @@ -1,8 +1,7 @@ package com.tpKotlin.glhf.tpkotlin.dao -import com.tpKotlin.glhf.tpkotlin.entity.Meme interface ImageAccessorDao { fun getMeme(nom: String): Boolean - fun saveMeme(meme: Meme) + fun saveMeme(/*meme: Meme*/) } \ No newline at end of file diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDaoImpl.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDaoImpl.kt index d6b8b71fdc3ddd7d112a79f57d3c91c3de13035c..9581d07f8b0fa04b26a59c3946a97b8cd06a5803 100644 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDaoImpl.kt +++ b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/dao/ImageAccessorDaoImpl.kt @@ -1,8 +1,5 @@ package com.tpKotlin.glhf.tpkotlin.dao -import com.tpKotlin.glhf.tpkotlin.entity.FavDir - -import com.tpKotlin.glhf.tpkotlin.entity.Meme import com.tpKotlin.glhf.tpkotlin.tools.FileManager import kotlinx.coroutines.* import org.springframework.stereotype.Component @@ -14,14 +11,12 @@ class ImageAccessorDaoImpl : ImageAccessorDao { override fun getMeme(nom: String): Boolean { //celui qui retire çeci sera maudit pendant 3 generations (la sienne incluse) runBlocking { - println("" + LocalDateTime.now() + ">> on va attendre") - //delay(1000L) Thread.sleep(1000L) } return true } - override fun saveMeme(meme: Meme) { - FileManager.saveMemeInFile(meme.nom, meme.url) + override fun saveMeme(/*meme: Meme*/) { + //FileManager.saveMemeInFile(meme.nom, meme.url) } } \ No newline at end of file diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/entity/Entities.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/entity/Entities.kt deleted file mode 100644 index af5c5ea7f356c8dece02e41eb74ba95ac6eb77a6..0000000000000000000000000000000000000000 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/entity/Entities.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.tpKotlin.glhf.tpkotlin.entity - -import java.time.LocalDateTime -import com.tpKotlin.glhf.tpkotlin.tools.FileManager - -object FavDir { - val list: MutableList<Meme> = mutableListOf() - - init { - println("Dossier de favoris crée") - if (FileManager.thereIsSomethingInTheFile()) { - FileManager.loadAllFromFile() - } - } - - fun addMeme(meme: Meme) { - list.add(meme) - FileManager.saveMemeInFile(meme.nom, meme.url) - } - - fun loadMeme(meme: Meme) { - list.add(meme) - } - - @JvmStatic - fun affiche(): String { - var s: String = "" - for (i in 0 until list.size) { - s = list.get(i).nom + " " + list.get(i).url + "&&&"+ s - } - return s - } - - fun getAll(): MutableList<Meme> { - return list - } -} - -data class Meme(var nom: String, var url: String) - - diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavService.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavService.kt index 946fd15e8f693c81d9f0efed8ef45d3e7d4c58d6..3fba4ca54421b4e99af92a2f411271279d854dc0 100644 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavService.kt +++ b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavService.kt @@ -1,9 +1,7 @@ package com.tpKotlin.glhf.tpkotlin.service -import com.tpKotlin.glhf.tpkotlin.entity.Meme - interface DossierFavService { - fun insertMeme(meme: Meme) + fun insertMeme(/*meme: Meme*/) fun getAllImagesFromFav(): String fun getAllImagesFromFavFASTER(): String } \ No newline at end of file diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavServiceImpl.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavServiceImpl.kt deleted file mode 100644 index 640d70d4a83c2672b194405d94ef006a1d5a374f..0000000000000000000000000000000000000000 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/service/DossierFavServiceImpl.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.tpKotlin.glhf.tpkotlin.service - -import com.tpKotlin.glhf.tpkotlin.dao.ImageAccessorDao - -import kotlinx.coroutines.* -import com.tpKotlin.glhf.tpkotlin.entity.FavDir -import com.tpKotlin.glhf.tpkotlin.entity.Meme -import org.springframework.stereotype.Service -import com.tpKotlin.glhf.tpkotlin.dao.ImageAccessorDaoImpl -import org.springframework.beans.factory.annotation.Autowired -import java.time.LocalDateTime - -@Service -class DossierFavServiceImpl : DossierFavService { - - @Autowired - lateinit var imgDao: ImageAccessorDao - - //méthode check + ajout exo 2 - override fun insertMeme(meme: Meme) { - FavDir.addMeme(meme) - } - - //Truc lent pour l'exo 3 - override fun getAllImagesFromFav(): String { - var liste = FavDir.getAll() - var s: String = "" - var res: Boolean = false - for (i in 0 until liste.size) { - s = liste.get(i).url + "&&&" + s - } - for (img in liste) { - println("> here we go") - res = imgDao.getMeme(img.nom) - } - - return if (res) s else "fail" - } - - //Truc rapide pour le 4 - override fun getAllImagesFromFavFASTER(): String { - var liste = FavDir.getAll() - var jobList: MutableList<Job> = mutableListOf() - var s: String = "" - - for (i in 0 until liste.size) { - s = liste.get(i).url + "&&&" + s - } - - runBlocking { - for (img in liste) { - println("> service lance l'appel DAO") - jobList.add(GlobalScope.launch { imgDao.getMeme(img.nom) }) - } - - for (myJob in jobList) { - myJob.join() - println("" + LocalDateTime.now() + " >> affichage ? " + myJob.isActive) - } - } - return s - } -} \ No newline at end of file diff --git a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/tools/FileManager.kt b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/tools/FileManager.kt index ffc6efa9ed28f99cfac63e77fed72ff02f79ddaf..f0b08126c5d319d7574ac34f46ad46f3568a75ee 100644 --- a/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/tools/FileManager.kt +++ b/tpkotlin/src/main/kotlin/com/tpKotlin/glhf/tpkotlin/tools/FileManager.kt @@ -1,8 +1,6 @@ package com.tpKotlin.glhf.tpkotlin.tools import java.io.File -import com.tpKotlin.glhf.tpkotlin.entity.FavDir -import com.tpKotlin.glhf.tpkotlin.entity.Meme import java.io.FileOutputStream object FileManager { @@ -24,30 +22,10 @@ object FileManager { } fun loadAllFromFile() { - lateinit var tab: List<String> - var nom: String = "" - - File(PATH_TO_FILE + FILE_NAME).forEachLine { - if (!it.startsWith('#')) { - tab = it.split(" ") - if (tab.size == 2) { - FavDir.loadMeme(Meme(tab[0], tab[1])) - } else if(tab.size > 2) { - for(i in 0 until tab.size-1) { - nom += tab[i] + " " - } - FavDir.loadMeme(Meme(nom, tab[tab.size-1])) - } - } - } + //charger les images depuis le fichier vers le singleton } fun saveMemeInFile(name: String, url: String) { - FileOutputStream(File(PATH_TO_FILE + FILE_NAME), true) - .bufferedWriter() - .use { - it.newLine() - it.write(name.trim() + " " + url.trim()) - } + //sauvegarder une image dans le fichier } } \ No newline at end of file