Projet Dojo Rabat 2011-2012

De $1

Sujet du projet : un gestionnaire de films en Dojo

Ressources importantes :

Inspiration, projet à étudier

Vous allez vous inspirer de l'application proposé par le tutorial IBM suivant : http://www.ibm.com/developerworks/web/tutorials/wa-dojotoolkit/index.html

Travail à faire :

  1. Récupérer les sources du tutorial, faites les marcher dans WAMP ou un équivalent, jouer avec. Copie locale des sources : dojo.ajax.tutorial.source.zip
    1. Connexion internet obligatoire pour qu'il marche : il va chercher dojo chez google !
  2. Lire le tutorial de la première à la dernière page, vous pouvez suivre en même temps les sources (copie locale)
  3. Regarder avec Firebug les URLs qui sont appelés, les paramètres envoyés, les réponses Json retournées.


Notez que ce tutorial (voir index.html) va chercher dojo chez Google chaque fois que vous l'exécutez, je vous conseille de modifier les lignes en question pour utiliser une version locale de Dojo, comme nous l'avons fait en TP :

  • Il faut changer les deux lignes en bas de index.html et les trois lignes qui incluent les css, en haut. Attention, le projet utilise par défaut un style qui n'existe pas dans dojo 1.3.2, remplacez par "tundra" comme en tp si vous voulez tourner en 1.3.2, ou bien installez (à la maison) Dojo dernière version à la place de Dojo 1.3.2 que nous avons utilisé.

Votre propre projet : un gestionnaire de films

TRAVAIL A FAIRE : vous devrez soit en partant d'exemples vus en TP, soit en partant de morceaux de ce projet, développer incrémentalement un gestionnaire de films dont vous inventerez les caractéristiques (réalisateur, année, liste des acteurs (une String, pas  besoin de relations ici...), photo de l'affiche ou mieux ensemble de photos (qu'on affichera dans  une gallerie à côté des détails, à l'aide d'un widget dojo), etc....   Les catégories seront "film d'action etc"
 
Vous pouvez soit partir du projet IBM, soit lentement en faire un à vous en java  ou en ASP ou autre... Dans ce cas, regardez dans le projet exemple quels sont les endroits  dans le fichier index.html et script.js où sont appelés les fichiers php, vous aurez à  écrire un code équivalent. Pour voir ce que ces fichiers php reçoivent comme paramètres  et renvoient comme valeur (le plus souvent au format JSON), faites tourner le projet et  activez firebug pour tracer ce qu'il se passe.
 

  •  Vous serez récompensé si votre projet est original et ne ressemble pas à 100% à  celui du tutorial.
  • Vous aurez du bonus si le code serveur n'est pas en PHP,
  • vous aurez  du bonus si vous prenez la peine de comprendre ce projet et si vous arrivez à vous  l'approprier:

 
Regardez comment on "connecte" les menus à des fonctions, les événements "je selectionne  une ligne dans la table des contacts" avec une fonction qui affiche le détail. Toute cette  "connexion" est faite dans le script script.js lors du chargement de la page :   dojo.addOnLoad(function() { ..... }); exécute tout ce qui est entre parenthèse juste  après que la page ait été chargée... dans ces actions il y a un bon nombre de  dojo.connec(....) à la fin du fichier. Notez que toutes les actions possibles sont dans des  fonctions javascript bien propres, certaines faisant des appels Ajax.
 
 Si vous ne comprenez pas un élément, par exemple, le modèle d'un Tree, le TreeStoreModel situé  quelque part dans index.html -> direction la doc de référence en ligne ! Idem pour tout ce que vous
 ne comprenez pas. La réponse est peut être dans le cours, mais le cours a détaillé les modèles  pour les tableaux (Grid) ou pour les listes dérolantes (dijit.form.FilteringSelect), mais pas ceux
 des Tree ! Donc à vous de chercher dans la doc !
 
 Vous avez le droit de vous faire aider par vos collègues, voir que plusieurs groupes utilisent le code  écrit par un autre mais JE DOIS ETRE PREVENU de qui a ait quoi, sinon j'assimile cela à de la copie
 et j'enlève des points.

 
 

Modalités de rendu

  • A RENDRE POUR LA SEMAINE DU 12 Décembre 2011. Vous me préparez une démonstration pour le lundi matin. Pas de délais supplémentaires, je n'accepte pas qu'on me présente le projet "un peu plus tard" car cela perturbe le cours qui doit avoir lieu (au lieu d'écouter vous finissez le projet, j'ai vu ça à Casablanca !)
    • Pas en 2012 ou 2013 !
    • Décembre est juste après Novembre, des fois que vous vous trompiez,
    • La semaine dure 7 jours,
    • Le projet d'un groupe n'est pas une copie de celui d'un autre groupe (je dis ça parce que je n'ai apparemment pas été clair)
    • Chaque dans la classe préparera une archive contenant des répertoires portant le nom du binome ou du trinome ou de l'élève. Chaque archive contiendra le projet + tout ce qui est nécessaire (readme.txt par ex), et au moins deux captures d'écrans.
    • Prévoir une démo qui fonctionne !
    • Le README doit contenir une section spéciale "originalités par rapport au projet d'exemple et originalités  qu'aucun autre groupe a faites à ma connaissance". Si cette dernière section est vide ou bidonnée  vous n'aurez pas le maximum de points.
    • Bonne chance !

Creation d'une base de données depuis netbeans avec JavaDB

Vous pouvez faire clic droit sur JavaDB/Create database, mettez app/app comme login/password. Ensuite vous pouvez exécuter des scripts comme celui-ci :

create table personne (
id integer primary key
generated always as identity
(start with 1, increment by 1), 
nom varchar(50),
date_naissance date, 
service varchar(50));
insert into personne (nom, date_naissance, service)
values('Bob', '1987-10-6', 'Direction');
insert into personne (nom, date_naissance, service)
values('Pierre', '1977-1-6', 'Direction');
insert into personne (nom, date_naissance, service)
values('Fred', '1968-10-9', 'Finances');
insert into personne (nom, date_naissance, service)
values('Frank', '1985-11-8', 'Finances');
insert into personne (nom, date_naissance, service)
values('Julie', '1983-10-6', 'Finances');
insert into personne (nom, date_naissance, service)
values('Christelle', '1987-10-6', 'Finances');

Problèmes avec Glassfish

Glassfish ne se lance pas :

  • Un onglet glassfish 3.1.1 apparait, lire les erreurs : si le port 8080 est occupé -> taper localhost:8080 dans un navigateur et arrêtez les applications ou les services qui occupent le port (tomcat, open ERP, Oracle, etc)
  • Un onglet n'apparait pas, tout à l'air normal mais glassfish ne se lance pas, je ne vois pas d'onglet "glassfish 3.1.1", et pourtant, la veille ça marchait bien, etc...  Suivre la procédure ci-dessous :

Pour ceux qui ont glassfish qui ne se lance pas, qui n'affiche aucun log, alors qu'il n'y a apparemment pas de problèmes de port, etc....voici une solution :

  1.  Aller sur le binaire de netbeans (par ex dans C:\Program Files\NetBeans 7.0.1\bin) et faire propriétés/compatibité/toujours exécuter en tant qu'administrateur,
  2.  Aller dans netbeans, onglet "services" et supprimer glassfish (clic droit)
  3.  Quitter netbeans,
  4.  Relancer netbeans et ajouter glassfish à nouveau (add server), choisir comme nom le même nom qu'avant (pas glassfish3.x), prendre le chemin de la racine du répertoire d'install (par exemple : C:\Program Files\glassfish-3.1.1) au lieu de donner une erreur "pas de domaine par défaut" etc, il doit proposer domain1, accepter.
  5. Accepter et faire finish.


Si vous regardez dansnetbeans  tools/server/glassfish vous devez avoir le domaine qui est dans le repertoire d'install de glassfish et pas dans votre user dir/.netbeans/7.0/config/GF3 etc....

En fait, le problème vient de certaines version/configs de Vista ou 7 qui ne donnent pas les bons droits de création de fichiers, etc. Avec cette solution vous devriez être tranquilles, et vous ne devriez  plus avoir besoin de le re-installer. En deux mots -> il faut pas avoir le répertoire des domaines dans votre home dir ! Et il faut lancer netbeans en admin !

Normalement ça marche bien avec le home dir pour 90% des gens mais pour 10% (ou moins) qui ont des configs systèmes bizarres, ça peut mal fonctionner un jour. Je n'ai pas identifié la cause du problème mais une solution.