====== Implémentation de l'API en JAVA ====== L'implémentation de l'API en Java se présente sous la forme d'un fichier JAR contenant la traduction de l'API sous la forme d'Interface Java ainsi qu'une implémentation de ces interfaces sous la forme de classes prêtes à l'emploi. Cette implémentation fonctionne avec Java 1.5 ou supérieur. Elle est sous licence MIT. * Fichier JAR : [[http://dataexport.scrutari.net/impl/java/ScrutariDataExport.jar]] * Sources : [[http://dataexport.scrutari.net/impl/java/ScrutariDataExport-src.zip]] * JavaDoc : [[http://dataexport.scrutari.net/impl/java/javadoc]] Les sources sont accessibles avec Git via https://framagit.org/Scrutari/export-java Un autre accès avec Subversion : svn co http://depot.exemole.fr/svn/java/ScrutariDataExport/src/ ===== Utilisation de l'implémentation ===== Après avoir inclus le fichier ScrutariDataExport.jar dans votre //ClassPath//, la première étape consiste à utiliser le constructeur fourni par la classe ''net.scrutari.dataexport.ScrutariDataExportFactory''. Celle-ci possède une seule méthode (statiquqe): ScrutariDataExport newInstance(java.lang.Appendable appendable, int indentLength, boolean includeXMLDeclaration) Cette méthode prend comme argument : * Appendable appendable : instance de l'interface ''Appendable'' qui indique la destination où est enregistré le XML généré (typiquement, une instance de ''Writer'') ; les éventuelles exceptions de type ''IOException'' renvoyée par l'instance d'Appendable sont encapsulées dans une exception ''net.scrutari.dataexport.api.ExportIOException'' (qui étend ''RuntimeException'') * int indentLength : indique s'il faut indenter le code XML pour le rendre plus lisible, cette valeur peut être supérieure à zéro si le code est inclus dans un code XML plus large. Pour n'avoir ni indentation ni passage à la ligne (et donc un code XML plus ramassé), il faut indiquer la valeur ''-999'' * boolean includeXMLDeclaration : indique s'il faut rajouter la déclaration XML ('''') au début du code XML généré. La méthode renvoie une instance de l'interface ScrutariDataExport dont les méthodes correspondent à celles définies par l'API ([[scrutaridata:exportapi:scrutaridataexport|ScrutariDataExport]]), cette interface appartient au paquet **net.scrutari.dataexport.api** qui comprend toute la traduction en interface Java de l'API. ===== Exemple d'utilisation ===== L'exemple ci-dessous montre l'utilisation de l'API pour générer un simple fichier. import net.scrutari.dataexport.*; import net.scrutari.dataexport.api.*; import java.io.*; public class ScrutariDataExportExample { public static void main(String[] args) throws IOException { /* Ouverture d'un fichier en écriture */ File file = new File("test.scrutari-data.xml"); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); /*Création d'une instance de ScrutariDataExport */ ScrutariDataExport scrutariDataExport = ScrutariDataExportFactory.newInstance(bufferedWriter,0,true); /*Début de l'export */ BaseMetadataExport baseMetadataExport = scrutariDataExport.startExport(); /*Définition des métadonnées de la base */ baseMetadataExport.setAuthority("e17a05b0-c45e-11d8-9669-0800200c9a66"); baseMetadataExport.setBaseName("test"); baseMetadataExport.setBaseIcon("http://monsite.net/icon-16x16pixels.png"); baseMetadataExport.setIntitule(BaseMetadataExport.INTITULE_SHORT, "fr", "Test"); baseMetadataExport.setIntitule(BaseMetadataExport.INTITULE_SHORT, "en", "Test"); baseMetadataExport.setIntitule(BaseMetadataExport.INTITULE_LONG, "fr", "Test du format scrutariData"); baseMetadataExport.setIntitule(BaseMetadataExport.INTITULE_LONG, "en", "ScrutariData Format Test"); baseMetadataExport.addLangUI("fr"); baseMetadataExport.addLangUI("en"); /*Insertion d'un corpus avec de nom « fiches » */ CorpusMetadataExport corpusMetadataExport = scrutariDataExport.newCorpus("fiches"); /*Définition des métadonnées du corpus */ corpusMetadataExport.setCorpusType("EXP"); corpusMetadataExport.setIntitule(CorpusMetadataExport.INTITULE_CORPUS, "fr","Fiches d'expérience"); corpusMetadataExport.setIntitule(CorpusMetadataExport.INTITULE_FICHE, "fr", "Fiche d'expérience n° "); /* Définition de deux champs complémentaires */ int numero1 = corpusMetadataExport.addComplement(); corpusMetadataExport.setComplementIntitule(numero1,"fr","Auteurs"); corpusMetadataExport.setComplementIntitule(numero1,"en","Authors"); int numero2 = corpusMetadataExport.addComplement(); corpusMetadataExport.setComplementIntitule(numero2,"fr","Organismes"); /* Premier exemple d'une fiche*/ FicheExport ficheExport = scrutariDataExport.newFiche("1"); ficheExport.setTitre("Première fiche"); ficheExport.setFicheType("DOC"); ficheExport.setDate("2006-03"); ficheExport.addComplement(2,"Collectif"); ficheExport.setFicheIcon("http://monsite.net/icon2-16x16pixels.png"); /* Second exemple de fiche, on réutilise le pointeur ficheExport */ ficheExport = scrutariDataExport.newFiche("fiche2"); ficheExport.setSoustitre("le sous titre"); ficheExport.setTitre("Seconde fiche"); ficheExport.setDate("2006-03"); ficheExport.setLang("fr"); ficheExport.setHref("http://monsite.net/ma-fiche-1.html"); ficheExport.addComplement(2,"L'ASSO"); ficheExport.addComplement(1,"Martin Dupont"); /* Exemple d'indexation : celle-ci peut de se faire à n'importe quel moment * même s'il ne s'agit du mot-clé ou de la fiche en cours ou que le thésaurus ou le corpus * n'ont pas encore été définis. */ scrutariDataExport.addIndexation("fiches", "1", "motscles", "A01",1); /* Insertion d'un thésaurus de nom « motscles » */ ThesaurusMetadataExport thesaurusMetadataExport = scrutariDataExport.newThesaurus("motscles"); /* Définition des métadonnées du thésaurus */ thesaurusMetadataExport.setIntitule(ThesaurusMetadataExport.INTITULE_THESAURUS,"fr","Mots-clés"); thesaurusMetadataExport.setIntitule(ThesaurusMetadataExport.INTITULE_THESAURUS,"en","Keywords"); /* Exemple d'insertion d'un mot-clé au sein du thésaurus en cours */ MotcleExport motcleExport = scrutariDataExport.newMotcle("A01"); motcleExport.setLibelle("fr","Eau"); /* Autre exemple d'insertion d'indexation n'importe où*/ scrutariDataExport.addIndexation("fiches", "fiche2", "motscles", "A01",4); /* L'indexation précédente n'a pas changé l'état de l'export, on travaille * toujours sur le premier mot-clé */ motcleExport.setLibelle("en","Water"); /* Fin de l'export */ scrutariDataExport.endExport(); /* Fermeture du fichier */ bufferedWriter.close(); } }