Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 def __init__(self,doc=None):
     self.objects = []
     if (not (doc is None)):
         inputfileformat.parseSAXFile(doc, self)
     self.onlyKeepFields = None
Ejemplo n.º 4
0
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 
    &eacute;&eacute;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 &eacute;&eacute;nmaal is ingevuld, maar voor sommige objecten
          twee (of meerdere) keren.<br/>
          Indien het veld meermaals is ingevuld voor ook maar &eacute;&eacute;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 &eacute;&eacute;n instelling, dus zou er slechts
      &eacute;&eacute;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&oacute;&oacute;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)
Ejemplo n.º 5
0
 def parseAdlibDoc(self,filename):
     inputfileformat.parseSAXFile(filename, self)