La rentrée, l’occasion de relancer ma série d’articles sur Sakilapp. Aujourd’hui, un point sur une idée: l’utilisation du mécanisme de priorité dans les services pour proposer une version sans base de données de sakilapp.
C’est un cas un petit peu particulier: je voulais pouvoir utiliser (pour des tests, pour des démonstrations) mon application sans sa base de données. Il ne s’agit pas d’une version hors ligne, car il n’y a pas de sauvegarde des modifications, ni de synchronisation par la suite.
Comment cela marche ?
C’est assez simple: j’ai implémenté une deuxième version de mon OutlineService pour le catalogue (DBMockOutlineService classe qui implémente ICatalogOutlineService). Le service est déclaré dans mon fichier plugin.xml
<extension point="org.eclipse.scout.service.services">
<!-- ... -->
<service class="net.sakilapp.server.services.outline.DBMockCatalogOutlineService" session="net.sakilapp.server.ServerSession" factory="org.eclipse.scout.rt.server.services.ServerServiceFactory"/>
</extension>
<!-- ... -->
</plugin>
Pour donner la priorité à mon service (version DBMock) il suffit d’ajouter l’annotation @Priority avec une valeur supérieure aux autres implémentations du service.
public class DBMockCatalogOutlineService extends AbstractService implements ICatalogOutlineService {
//...
}
Il s’agit enfin d’ajouter quelques valeurs fixes dans les fonctions qui alimentent les tables pages de l’outline catalogue.
Object[][] result = new Object[][]{
new Object[]{18, "DAN", "TORN", DateUtility.parse("2006-02-01", "yyy-MM-dd")},
new Object[]{26, "RIP", "CRAWFORD", DateUtility.parse("2006-02-25", "yyy-MM-dd")}
};
return result;
}
Il me reste encore un petit peu de travail: ajouter ces services dans un plug-in séparé. De cette manière, je pourrais me créer un lanceur avec ces services. Cela me permettra de fonctionner sans la base de données.
PS: J’ai passé une partie de l’été à rédiger un article de référence sur Eclipse Scout en Français… Plus de nouvelles très bientôt.