@Override
    public void extract() throws XMLStreamException, FileNotFoundException
    {
        FileInfo terc = this.bfis.get(Parser.Types.TERC.toString());

        this.factory     = XMLInputFactory.newInstance();
        this.readerRaw   = factory.createXMLStreamReader(new BufferedInputStream(new FileInputStream(terc.getFile())));
        this.reader      = factory.createFilteredReader(readerRaw, this.newLineFilter);

        while (reader.hasNext())
        {
            this.parser.sendProgress(reader.getLocation().getLineNumber(), terc.getLines());

            switch (reader.next())
            {
                case XMLStreamConstants.START_ELEMENT:
                    this.newElement(reader.getLocalName());
                    break;

                case XMLStreamConstants.CHARACTERS:
                    tagContent = reader.getText();
                    break;

                case XMLStreamConstants.END_ELEMENT:
                    this.endElement(reader.getLocalName());
                    break;
            }

            parserMessages.sendProgress(reader.getLocation().getLineNumber(), terc.getLines());
        }

        try
        {
            province.fillTable(provinces);
            district.fillTable(districts);
            commune.fillTable(communes);
        } 
        catch (SQLException ex)
        {
            System.out.println(ex.toString());
        }
    }