def read(self):  
        fields = DocumentFields()
        with open(self.path.path) as bibtex_file:
            bibtex_str = bibtex_file.read()
                
        bib_database = bibtexparser.loads(bibtex_str)

        for entry in bib_database.entries:
            for field, value in entry.items():
                if (field == "ENTRYTYPE"):
                    docType = strToDocType(value)
                    fields.setDocType(docType)
                elif (field != "ID"):
                    fields.setField(field, value)
        
        return fields
        
    def test_strToDocType(self):
        self.assertEqual(strToDocType("article"),  DocumentFields.DOC_ARTICLE)
        self.assertEqual(strToDocType("Article"),  DocumentFields.DOC_ARTICLE)

        self.assertEqual(strToDocType("book"),  DocumentFields.DOC_BOOK)
        self.assertEqual(strToDocType("Book"),  DocumentFields.DOC_BOOK)

        self.assertEqual(strToDocType("booklet"),  DocumentFields.DOC_BOOKLET)
        self.assertEqual(strToDocType("Booklet"),  DocumentFields.DOC_BOOKLET)

        self.assertEqual(strToDocType("conference"),  DocumentFields.DOC_CONFERENCE)
        self.assertEqual(strToDocType("Conference"),  DocumentFields.DOC_CONFERENCE)

        self.assertEqual(strToDocType("inbook"), DocumentFields.DOC_INBOOK)
        self.assertEqual(strToDocType("InBook"), DocumentFields.DOC_INBOOK)

        self.assertEqual(strToDocType("incollection"), DocumentFields.DOC_INCOLLECTION)
        self.assertEqual(strToDocType("InCollection"), DocumentFields.DOC_INCOLLECTION)

        self.assertEqual(strToDocType("inproceedings"), DocumentFields.DOC_INPROCEEDINGS)
        self.assertEqual(strToDocType("InProceedings"), DocumentFields.DOC_INPROCEEDINGS)

        self.assertEqual(strToDocType("manual"), DocumentFields.DOC_MANUAL)
        self.assertEqual(strToDocType("Manual"), DocumentFields.DOC_MANUAL)

        self.assertEqual(strToDocType("masterthesis"), DocumentFields.DOC_MASTERTHESIS)
        self.assertEqual(strToDocType("MasterThesis"), DocumentFields.DOC_MASTERTHESIS)

        self.assertEqual(strToDocType("misc"), DocumentFields.DOC_MISC)
        self.assertEqual(strToDocType("Misc"), DocumentFields.DOC_MISC)

        self.assertEqual(strToDocType("phdthesis"), DocumentFields.DOC_PHDTHESIS)
        self.assertEqual(strToDocType("PhdThesis"), DocumentFields.DOC_PHDTHESIS)

        self.assertEqual(strToDocType("proceedings"), DocumentFields.DOC_PROCEEDINGS)
        self.assertEqual(strToDocType("Proceedings"), DocumentFields.DOC_PROCEEDINGS)

        self.assertEqual(strToDocType("techreport"), DocumentFields.DOC_TECHREPORT)
        self.assertEqual(strToDocType("TechReport"), DocumentFields.DOC_TECHREPORT)

        self.assertEqual(strToDocType("unpublished"), DocumentFields.DOC_UNPUBLISHED)
        self.assertEqual(strToDocType("Unpublished"), DocumentFields.DOC_UNPUBLISHED)

        self.assertEqual(strToDocType("other"), DocumentFields.DOC_UNKNOWN)
        self.assertEqual(strToDocType("éèà"), DocumentFields.DOC_UNKNOWN)