stub et datamanager bien implémenté !

travailModele
Siwa12100 4 months ago
parent ce485f5bec
commit 90bd1b0e5b

@ -1,9 +1,11 @@
package com.example.veraxapplication
import android.os.Build
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.annotation.RequiresApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -48,6 +50,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.rememberImagePainter
import coil.size.Scale
import com.example.veraxapplication.articles.IArticlesDataManager
import com.example.veraxapplication.articles.StubArticles
import com.example.veraxapplication.data.Article
import com.example.veraxapplication.data.Paragraph
import com.example.veraxapplication.ui.theme.Salmon
@ -60,15 +64,41 @@ import com.example.veraxapplication.ui.theme.Salmon
class MainActivity : ComponentActivity() {
// un truc vite fait pour avoir un visi
var article = listOf("Thinkerview", "thinkerview.jgp", "Thinkerview est une chaîne youtube d'interview-débat")
var articles = listOf( Article("Thinkerview", "This is a descrition", Author = "IAmAGreatAuthor", Image = "https://www.gstatic.com/webp/gallery/1.jpg", LectureTime = "12", Content = listOf(Paragraph("This is a paragraph"), Paragraph("This is another paragraph"), Paragraph("This is a third paragraph"))))
// var article = listOf("Thinkerview", "thinkerview.jgp", "Thinkerview est une chaîne youtube d'interview-débat")
// var articles = listOf( Article("Thinkerview", "This is a descrition", Author = "IAmAGreatAuthor", Image = "https://www.gstatic.com/webp/gallery/1.jpg", LectureTime = "12", Content = listOf(Paragraph("This is a paragraph"), Paragraph("This is another paragraph"), Paragraph("This is a third paragraph"))))
var dataManager : IArticlesDataManager = StubArticles()
var articles = dataManager.getDerniersArticles(4)
var theme = listOf("Economique","Culture","Politique","Faits divers")
var color = Color(0xFF00FF00)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TopBarVerax(theme = theme, article = articles)
// articles?.forEach({ a -> println(a)})
articles?.forEach({ a ->
Log.println(Log.ASSERT, "debug articles", a.toString())
// if (a != null) {
// a.contenus.forEach({cont ->
//
// Log.println(Log.ASSERT, "contenus de l'article " + a.id, cont.toString())
// })
// }
// })
//TopBarVerax(theme = theme, article = articles)
// allez sur la doc de Scaffold sur Android Dev et si vous comprenez comment on doit faire bien ouej
}

@ -1,5 +1,7 @@
package com.example.veraxapplication.articles
import com.example.veraxapplication.modele.articles.Article
interface IArticlesDataManager {
val allArticles: List<Any?>?

@ -1,7 +1,8 @@
package com.example.veraxapplication.articles
package com.example.veraxapplication.modele.articles
class Article(
import com.example.veraxapplication.modele.articles.contenus.Contenu
class Article(
val id: Int,
val titre: String,
val description: String,
@ -9,19 +10,24 @@ class Article(
val date: String,
val auteur: String,
val imagePrincipale: String
) {
val note = 1.0
private val lContenus: MutableList<Contenu>
private val lContenus: MutableList<Contenu> = java.util.ArrayList()
init {
lContenus = java.util.ArrayList<Contenu>()
// Initialisation des contenus si nécessaire
}
fun remplirArticle(lContenus: List<Contenu>?) {
this.lContenus.addAll(lContenus!!)
if (lContenus != null) {
this.lContenus.addAll(lContenus)
}
}
val contenus: List<Any>
get() = lContenus
}
override fun toString(): String {
return "Article(id=$id, titre='$titre', description='$description', temps='$temps', date='$date', auteur='$auteur', imagePrincipale='$imagePrincipale', note=$note, contenus=${lContenus.size} contenus)"
}
}

@ -1,5 +1,15 @@
package com.example.veraxapplication.articles
import android.os.Build
import androidx.annotation.RequiresApi
import com.example.veraxapplication.modele.articles.Article
import com.example.veraxapplication.modele.articles.contenus.Contenu
import com.example.veraxapplication.modele.articles.contenus.ContenuMedia
import com.example.veraxapplication.modele.articles.contenus.ContenuParagraphe
import java.time.LocalDate
import kotlin.math.min
class StubArticles() : IArticlesDataManager {
private var lArticles: MutableList<Article>? = null
@ -7,6 +17,7 @@ class StubArticles() : IArticlesDataManager {
chargerArticles()
}
private fun chargerArticles() {
lArticles = java.util.ArrayList<Article>()
val contenuMap: Map<String, List<Contenu>> = chargerContenuParagraphe()
@ -17,7 +28,7 @@ class StubArticles() : IArticlesDataManager {
"Thinkerview",
"Thinkerview est une chaîne passionnante chaîne youtube d'interview-débat.",
"3",
LocalDate.now().toString(),
"date a revoir",
"Siwa",
"https://cdn.discordapp.com/attachments/1150826798549049554/1219554341388816437/stub1.webp?ex=660bb97d&is=65f9447d&hm=3e1e8d3372ae897fa4e2aa1ec730d976d74b35fce96cb8d78d6f9239e2836564&"
)
@ -30,7 +41,7 @@ class StubArticles() : IArticlesDataManager {
"Le réchauffement climatique : un mythe ?",
"Revenons sur les différentes controverses à ce sujet.",
"7",
LocalDate.now().toString(),
"date a revoir",
"Siwa",
"https://cdn.discordapp.com/attachments/1150826798549049554/1219555874339815454/stub2.webp?ex=660bbaea&is=65f945ea&hm=80aef945e8410b18395c716fdd19265608f7b1263731192d5c69f807fce9e944&"
)
@ -43,7 +54,7 @@ class StubArticles() : IArticlesDataManager {
"La terre plate : vraiment ?",
"Pour réfuter la fausse croyance que la Terre est plate, il est essentiel de s'appuyer sur des preuves scientifiques et des observations historiques. ",
"5",
LocalDate.now().toString(),
"date a revoir",
"Siwa",
"https://cdn.discordapp.com/attachments/1150826798549049554/1219547864196317225/stub1.webp?ex=660bb374&is=65f93e74&hm=a9e5dd48faa3ae68c358309af8949c46dfd4dea9c4d6e3d845d707784e5341cf&"
)
@ -56,7 +67,7 @@ class StubArticles() : IArticlesDataManager {
"L'ia & humanité : quel avenir ? ",
"Explorons les progrès remarquables dans le domaine de l'IA, les secteurs qu'elle révolutionne, et les implications éthiques majeures qu'elle soulève.",
"9",
LocalDate.now().toString(),
"date a revoir",
"Luthen",
"https://cdn.discordapp.com/attachments/1150826798549049554/1219560686254817290/stub1.webp?ex=660bbf65&is=65f94a65&hm=021bd8c90c89347f31373468cc7a03ae15f1d3f9988a5b4325149c6df938d7bb&"
)
@ -403,22 +414,26 @@ class StubArticles() : IArticlesDataManager {
return contenuMap
}
val allArticles: List<Any>?
override val allArticles: List<Article>? // Assurez-vous que lArticles est bien une liste d'Article et non pas une liste de Any?
get() = lArticles
fun getArticle(id: Int): Article {
override fun getArticle(id: Int): Article? {
println("Passage dans getArticle avec comme id : $id")
println("Nombre d'articles disponibles : " + lArticles!!.size)
val articleARenvoyer: Article = lArticles.stream()
.filter(java.util.function.Predicate<Article> { article: Article -> article.getId() === id }).findFirst()
.orElse(null)
java.lang.System.out.println(articleARenvoyer)
lArticles?.let {
println("Nombre d'articles disponibles : ${it.size}")
// Article articleARenvoyer = this.lArticles.get(id);
return articleARenvoyer
val articleARenvoyer: Article? = it.find { article -> article.id == id }
println(articleARenvoyer)
return articleARenvoyer
}
return null // Retourne null si lArticles est null
}
fun getDerniersArticles(nbArticles: Int): List<Article> {
return lArticles!!.subList(0, min(nbArticles, lArticles!!.size))
override fun getDerniersArticles(nbArticles: Int): List<Article>? {
return lArticles?.let {
it.take(min(nbArticles, it.size))
}
}
}

@ -1,4 +1,4 @@
package com.example.veraxapplication.articles.contenus
package com.example.veraxapplication.modele.articles.contenus
abstract class Contenu(var id: Int) {

@ -1,24 +1,30 @@
package com.example.veraxapplication.articles.contenus
package com.example.veraxapplication.modele.articles.contenus
class ContenuMedia(id: Int, var titre: String, var lien: String) : Contenu(id) {
init {
setTypeContenu("image")
this.typeContenu = "image"
}
val contenu: Map<String, String>
get() {
val contenu: MutableMap<String, String> = HashMap<String, String>()
contenu.put("titre", titre)
contenu.put("contenu", lien)
val contenu: MutableMap<String, String> = HashMap()
contenu["titre"] = titre
contenu["contenu"] = lien
return contenu
}
companion object {
fun newVideo(id: Int, titre: String, lien: String): ContenuMedia {
val temp = ContenuMedia(id, titre, lien)
temp.setTypeContenu("video")
temp.typeContenu = "video"
return temp
}
}
}
override fun toString(): String {
return "ContenuMedia(id=$id, typeContenu='$typeContenu', titre='$titre', lien='$lien')"
}
}

@ -1,16 +1,20 @@
package com.example.veraxapplication.articles.contenus
package com.example.veraxapplication.modele.articles.contenus
class ContenuParagraphe(id: Int, var titre: String, var texte: String) : Contenu(id) {
init {
setTypeContenu("paragraphe")
this.typeContenu = "paragraphe"
}
val contenu: Map<String, String>
get() {
val contenu: MutableMap<String, String> = HashMap<String, String>()
contenu.put("titre", titre)
contenu.put("contenu", texte)
val contenu: MutableMap<String, String> = HashMap()
contenu["titre"] = titre
contenu["contenu"] = texte
return contenu
}
}
override fun toString(): String {
return "ContenuParagraphe(id=$id, typeContenu='$typeContenu', titre='$titre', texte='$texte')"
}
}

Loading…
Cancel
Save