IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scala Java Discussion :

[Play!] Sérialisation/désérialisation d'une liste de case classes


Sujet :

Scala Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut [Play!] Sérialisation/désérialisation d'une liste de case classes
    Bonjour

    je voudrais sérialiser une liste de case classes, dans un projet play!, mais j'ai une erreur.

    Voici la case class:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    case class rdv2(
        nom: String,
        prénom: String,
        dateRDV: Long,
        heureRDVString: String,
        telPortable: String,
        telBureau: String,
        telPrivé: String,
        siteRDV: String,
        typeRDV: String,
        libelléRDV: String,
        orderId: String,
        statut: String)
    C'est déclaré dans l'objet metier.objets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    package metier {
      object Objets {


    Voici le code déstiné à la sérialisation/désérialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    val oos = new ObjectOutputStream(new FileOutputStream("oracle_json.txt"))
        oos.writeObject(n)
        oos.close()
     
     
        val ois = new ObjectInputStream(new FileInputStream("oracle_json.txt"))
        val n2 = ois.readObject().asInstanceOf
    [List[rdv2]]
        val p3 = Json.obj("users" -> n2)
        ois.close()
    ,

    dans un premier temps je sauvegarde puis je recharge les données à partir du fichier TXT, après lorsque le fichier aura été créé ja ne garderai plus que l'accès en lecture, le but étant d'économiser du temps car l'obtention de la liste List[Rdv] prends beaucoup de temps.

    n est de type List[rdv2].

    J'obtiens cette erreur dans la fenêtre de play! :

    [ClassNotFoundException: metier.Objets$rdv2]

    au niveau de la ligne avec le asInstanceOf.

    Je ne comprends pas d'où celka vient.

    Voici le code complet de l'objet Objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    package metier {
        object Objets {
     
        object Statuts extends Enumeration {
     
          type Statut = Value
          val NEW, WAITING, WAIT4DLV, SENT, ERROR, OK, SCHEDULED, DLVRD, TIMEOUT, TOOM4NUM, TOOM4USER, UNKNPFX, UNKNRCPT, UNKNOWN, BLACKLISTED = Value
        }
     
        case class Rdv(
          id: Option[Int],
          nom: String,
          prénom: String,
          sexe: Int,
          telPortable: String,
          telBureau: String,
          telPrivé: String,
          siteRDV: String,
          typeRDV: String,
          libelléRDV: String,
          numRDV: String,
          étape: String,
          dateRDV: Long,
          heureRDVString: String,
          statut: String,
          orderId: String) {
     
          def =*=(that: Rdv): Boolean = {
     
            this.nom == that.nom && this.prénom == that.prénom && this.dateRDV == that.dateRDV && this.heureRDVString == that.heureRDVString
     
          }
     
          def findGoodPhone: Option[String] = {
     
            val privateTelOnly09 = telPrivé.replaceAll("[^0-9+]", "")
            val officeTelOnly09 = telBureau.replaceAll("[^0-9+]", "")
            val mobileTelOnly09 = telPortable.replaceAll("[^0-9+]", "")
     
            def TelMatches(tel: String): Boolean = {
              (tel.matches("06[0-9]{8}")
                || (tel.matches("07[0-9]{8}"))
                || (tel.matches("\\+336[0-9]{8}"))
                || (tel.matches("\\+337[0-9]{8}"))
                || (tel.matches("00336[0-9]{8}"))
                || (tel.matches("00337[0-9]{8}")))
            }
     
            if (TelMatches(mobileTelOnly09)) Some(mobileTelOnly09)
            else if (TelMatches(privateTelOnly09)) Some(privateTelOnly09)
            else if (TelMatches(officeTelOnly09)) Some(officeTelOnly09)
            else None
     
          }
     
        }
     
        case class rdv2(
        nom: String,
        prénom: String,
        dateRDV: Long,
        heureRDVString: String,
        telPortable: String,
        telBureau: String,
        telPrivé: String,
        siteRDV: String,
        typeRDV: String,
        libelléRDV: String,
        orderId: String,
        statut: String)
    merci!

    ps : Dans le fichier Globals.scala, j'ai évidemment l'import

    import metier.Objets.rdv2

    je précise que mon accès à cette classe se fait dans le fichier Globals.scala.

    ps2: vous pouvez me dire aussi si vous ne trouvez PAS d'erreur!

  2. #2
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    As-tu regardé du côté de sbt ? C'est sbt qui lance ton appli play... Voir wiki (section UserCode)! et cet issue !

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    bonjour philippe,

    j'ai regardé le lien et cela me semble adapté à mon problème mais je n'ai pas réussi à enlever l'erreur. Pour être sûr : voici mon build.scala, auquel j'ai ajouté : fork in run :=true, mais je n'ai pas très envie de me noyer dans trop d'informations donc j'ai adapté du mieux que j'ai pu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import sbt._
    import Keys._
    import play.Project._
     
    object ApplicationBuild extends Build {
     
      val appName = "sms_play_2"
      val appVersion = "1.0-SNAPSHOT"
     
      val appDependencies = Seq(
        // Add your project dependencies here,
        jdbc,
        anorm,
        "com.typesafe.slick" % "slick_2.10" % "2.0.0",
        "com.github.nscala-time" %% "nscala-time" % "0.6.0",
        "org.xerial" % "sqlite-jdbc" % "3.7.2",
        "org.quartz-scheduler" % "quartz" % "2.2.1",
        "com.esotericsoftware.kryo" % "kryo" % "2.22",
        "io.argonaut" %% "argonaut" % "6.0.2")
     
      val main = play.Project(appName, appVersion, appDependencies).settings(
     
        resolvers += Resolver.sonatypeRepo("snapshots"))
     
      val playCommonSettings = Seq(
     
        Keys.fork in Keys.run := true)    <----------
    }
    Ce code est-il correct?

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import sbt._
    import Keys._
    import play.Project._
     
    object ApplicationBuild extends Build {
     
      val appName = "sms_play_2"
      val appVersion = "1.0-SNAPSHOT"
     
      val appDependencies = Seq(
        // Add your project dependencies here,
        jdbc,
        anorm,
        "com.typesafe.slick" % "slick_2.10" % "2.0.0",
        "com.github.nscala-time" %% "nscala-time" % "0.6.0",
        "org.xerial" % "sqlite-jdbc" % "3.7.2",
        "org.quartz-scheduler" % "quartz" % "2.2.1",
        "com.esotericsoftware.kryo" % "kryo" % "2.22",
        "io.argonaut" %% "argonaut" % "6.0.2")
     
      val mySettings = Seq(
        (javaOptions in run) ++= Seq("-Dconfig.file=conf/dev.conf"))
     
      val playCommonSettings = Seq(
     
        Keys.fork := true)
     
      val main = play.Project(appName, appVersion, appDependencies).settings(
     
          Keys.fork in run := true,
        resolvers += Resolver.sonatypeRepo("snapshots")).settings(mySettings: _*)
        .settings(playCommonSettings: _*)
     
    }
    mais j'ai toujours la même erreur.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Effectivement Voir la réponse de Guillaume Bort...

    Je n'ai pas d'autre idée sous le manteau... Tu peux poser ta question sur la ML de Play : https://groups.google.com/forum/#!forum/play-framework !

    a+
    Philippe

Discussions similaires

  1. [AC-2013] Création d'une liste avec cases à cocher
    Par boroti dans le forum Modélisation
    Réponses: 2
    Dernier message: 17/06/2015, 17h27
  2. Comportement d'une liste de cases à cocher
    Par john stedd dans le forum Débuter
    Réponses: 1
    Dernier message: 22/03/2012, 09h45
  3. [MySQL] Réalisation d'une liste avec case à cocher
    Par Lunedora87 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/04/2009, 11h47
  4. Récupérer valeurs d'une liste de cases à cocher
    Par jminguely dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2008, 22h10
  5. Cocher des cases d'une liste de cases à cocher
    Par isachat666 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/12/2005, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo