def parseDefaultAdlibDoc(self, filename): '''Parse adLib XML thesaurus from specified filename. Will check if there is a cached plaintext version of the thesaurus stored already. If so, this will be parsed instead of the XML version, because this is a lot faster.''' filename = utils.ensureUnicode(filename) if utils.cacheThesauri and cachedVersionExists(filename): print " - Loading thesaurus from previously cached file %s" % getCachedVersionFilename(filename) cachedThesaurus = loadCachedVersion(filename) self.terms = cachedThesaurus.terms self.name = cachedThesaurus.name return inputfileformat.parseSAXFile(filename, self) if utils.cacheThesauri: print " - Caching thesaurus to file %s" % getCachedVersionFilename(filename) createCachedVersion(self, filename)
def __init__(self, filename=None, documentfilter=None, type="xml"): ''' filename is the name of the file to parse or None if there is no parsing needed. documentfilter is a method: documentfilter(docmap) that will return true if this docmap is to be included, and false if the docmap is to be excluded when documentfilter is None, all records will be included type is either xml either csv. if filename is None, type can also be None ''' self.fields = {} self.totaldocs = 0 self.documentFilter = documentfilter if (filename is None): return if (type=="xml"): inputfileformat.parseSAXFile(filename, self) if (type=="csv"): inputfileformat.parseCSVFile(filename, self)
def __init__(self,doc=None): self.objects = [] if (not (doc is None)): inputfileformat.parseSAXFile(doc, self) self.onlyKeepFields = None
def generate_compliancereport(ofile, filename, no_compliance=True, no_thesaurus=False): """Adlib Object XML report. Generate thesaurus compliance report for writing to HTML. A compliance report gives fieldstats information about the fields used in the specified adlib XML document. Unless no_thesaurus is set to true, the fields are also compared with reference thesauri, and a report is generated under the fieldstats table.""" utils.s("> generate_compliancereport(%s)" % filename) ofile.write("<h1>Collectie: %s</h1>\n" % dn(filename)) utils.s(" + generating fieldstats") fs = fieldstats.FieldStats() inputfileformat.parseSAXFile(filename, fs) ofile.write("<p>Aantal objecten in collectie: %s</p>\n" % fs.getSize()) ofile.write("<h2>Overzicht gebruikte velden</h2>\n") ofile.write( htmlutils.HelpElement( show="Toon uitleg bij deze tabel", help=""" <p>Onderstaande tabel toont alle velden die ingevuld werden voor minstens één object uit de collectie. Voor elk veld wordt volgende informatie getoond:</p> <dl> <dt>VELD</dt><dd>De naam van het veld.</dd> <dt>% GEBRUIKT</dt><dd>Het percentage van de objecten waarvoor dit veld is ingevuld. Opgepast: een waarde "0" geldt ook als ingevuld.</dd> <dt>AANTAL</dt><dd>Het aantal objecten waarvoor dit veld is ingevuld.</dd> <dt>MEERVOUDIGE WAARDE</dt><dd>Dit geeft aan hoeveel keer het veld <em>gemiddeld</em> is ingevuld per object. Een waarde van "1.2" betekent dat het veld meestal slechts éénmaal is ingevuld, maar voor sommige objecten twee (of meerdere) keren.<br/> Indien het veld meermaals is ingevuld voor ook maar één object, wordt het vakje paars gekleurd.</dd> <dt>GEM. VELDLENGTE</dt><dd>Het gemiddeld aantal karakters dat ingevuld werd in het veld.</dd> <dt>UNIEKE WAARDEN</dt><dd>Het aantal verschillende waarden dat ingevuld werd in dit veld.<br/> Twee voorbeelden:<br/> Aan elk object moet een eigen, uniek "Objectnummer" toegekend zijn, dus moeten er evenveel unieke waarden ingevuld zijn als het aantal objecten.<br/> Meestal beslaat een collectie slechts één instelling, dus zou er slechts één unieke waarde mogen zijn voor het veld "Instellingsnaam". </dd> </dl> <p>Je kunt op de kolomtitel klikken om de tabel te sorteren volgens die kolom.</p> <p>Als je met de muis boven de naam van het veld hangt (waarde in de kolom "VELD"), krijg je een tooltip met daarin de verschillende waarden die zijn ingevuld voor dit veld en het aantal objecten waarvoor deze waarde is ingevuld.<br/> Wanneer je het vinkje aanklikt vóór de naam van het veld, verschijnt dit detailtabelletje onderaan de grote tabel, zodat je dit eventueel kunt afdrukken.<br/> Opgepast: de tooltip en de checkbox verschijnen alleen indien niet teveel verschillende waarden bestaan.</p> <p>De veldnamen die het belangrijkst zijn volgens het MovE-invulboek, staan <strong>vet</strong> aangegeven. </p> """, ).render() ) utils.s(" + writing fieldstats report") fs.generateReport(ofile) fs = None gc.collect() collection = collectionstats.Collection() """ limit memory usage""" collection.onlyKeepFields = thesaurus.fields_to_check utils.s(" + generating collectionstats report") inputfileformat.parseSAXFile(filename, collection) utils.s(" + writing collectionstats report") collection.generateReport(ofile, no_compliance, no_thesaurus) collection = None gc.collect() utils.s("< generate_compliancereport(%s)" % filename)
def parseAdlibDoc(self,filename): inputfileformat.parseSAXFile(filename, self)