Introduction Fonctionnement PluginsConfigurationLes données Le framework MAG Framework de conception de canaux complexes Implémente IChannel Possède son cycle de vie propre Permet de déléguer le traitement d'une requête à la bonne classe (contrôleur) Utilise un fichier de configuration XML Simplifie l'accès à une ou plusieurs sources de données, indépendamment de leur type (JDBC ou pool Tomcat JNDI) Implémente ICacheable Facilite les interactions avec le XSL Facilite l'utilisation de canaux servants (MAG ou non) Permet de redéfinir un morceau d'une application existante en personnalisant certaines actions
Fonctionnement setRuntimeData renderXML init setXMLsetOutput IntroductionPluginsConfigurationLes données Le framework MAG
Classes principales MainChannel : Implémente IChannel, ICacheable, IMimeResponse setRuntimeData : détermine l'action en cours, l'instancie dynamiquement et appelle les méthodes init, setXML et setOutput séquentiellement renderXML : réalise la transformation XSL en s'appuyant sur les informations de l'action courante ConfigChannel : Réalise la lecture de la configuration propre au MAG Classe abstraite à étendre et à implémenter sous la forme d'un singleton Permet la lecture de la partie propre à l'application de la configuration Permet d'ouvrir des connexions vers les sources de données définies dans la configuration SubChannel : Implémentation de référence de ISubChannel Implémente un comportement par défaut Toutes les actions doivent étendre cette classe ou implémenter ISubChannel IntroductionPluginsConfigurationLes données Le framework MAG
Plugins Message : Affiche un ou plusieurs messages (erreur, warning, information) Éventuellement, redirige vers une autre action Éventuellement, passe des paramètres à l'action suivante Confirm : Affiche une question avec un choix Oui / Non Transmets la réponse à une action Traite la réponse et appelle des actions différentes suivant le choix Éventuellement, passe des paramètres (différents) à l'action suivante Les appels sont statiques : Message.message(mainChannel, runtimeData, "Une erreur s'est produite"); return Boolean.FALSE; IntroductionPluginsConfigurationLes données Le framework MAG
Fichier de configuration <action name="default" classname="org.esupportail.portal.channels.CMag.actions.DefaultAction" xslfile="Default.xsl" /> <action name="about" classname=" org.esupportail.portal.channels.CMag.actions.DefaultAction" init="aboutinit" setxml="aboutxml" setoutput="aboutoutput" sslfile="About.ssl" ssltitle="normal" /> <action name="annuaire" type="servant" classname="org.esupportail.portal.channels.CAnnuaire.AnnuaireServant" servantfinish="default" /> IntroductionPluginsConfigurationLes données Le framework MAG
Accès aux données <pool name="default" type="JNDI" url="PortalDB" /> <pool name="mysql" type="JDBC" url="jdbc:mysql://mysql.univ.fr/MaBase" driverClassName="com.mysql.jdbc.Driver" username="mysqluser" password="password" /> IntroductionPluginsConfigurationLes données Le framework MAG
Query query = Config.getInstance().getConnexionDefault(); ou Query query = Config.getInstance().getConnexion("mysql"); … String sql = "SELECT * FROM APP_USERS WHERE NAME_USER = 'toto'"; try { query.setSql(sql); query.select(); ResultSet rs = query.getRs(); while(rs.next()) { String username = rs.getString("NAME_USER"); } query.close(); } catch(SQLException e) { query.close(); throw new Exception(e.getMessage()); } IntroductionPluginsConfigurationLes données Le framework MAG Accès aux données