docs: def fetch(self, is_dl_forced=False):
          """
          For the MGI resource, we connect to the remote database,
          and pull the tables into local files.
          We'll check the local table versions against the remote version
          :return:
          """
          # check if config exists; if it doesn't, error out and let user know
          if 'dbauth' not in config.get_config() and 'mgi' \
                  not in config.get_config()['dbauth']:
              LOG.error("not configured with PG user/password.")
  
          # create the connection details for MGI
          cxn = config.get_config()['dbauth']['mgi']
  
          self.dataset.setFileAccessUrl(''.join((
              'jdbc:postgresql://', cxn['host'], ':', str(cxn['port']), '/',
              cxn['database'])), is_object_literal=True)
  
          # process the tables
          # self.fetch_from_pgdb(self.tables, cxn, 100)  # for testing only
          # self.fetch_from_pgdb(self.tables, cxn, None, is_dl_forced)
  
          for query_map in self.resources['query_map']:
              query_fh = open(os.path.join(
                  os.path.dirname(__file__), query_map['query']), 'r')
              query = query_fh.read()
              force = False
              if 'Force' in query_map:
                  force = query_map['Force']
              self.fetch_query_from_pgdb(
                  query_map['outfile'], query, None, cxn, force=force)
          # always get this - it has the verion info
          self.fetch_transgene_genes_from_db(cxn)
  
          datestamp = ver = None
          # get the resource version information from
          # table mgi_dbinfo, already fetched above
          outfile = '/'.join((self.rawdir, 'mgi_dbinfo'))
  
          if os.path.exists(outfile):
              with open(outfile, 'r') as f:
                  f.readline()  # read the header row; skip
                  info = f.readline()
                  cols = info.split('\t')
                  ver = cols[0]  # col 0 is public_version
                  ver = ver.replace('MGI ', '')  # MGI 5.20 --> 5.20
                  # MGI has a datestamp for the data within the database;
                  # use it instead of the download date
                  # datestamp in the table: 2014-12-23 00:14:20[.12345]
                  # modification date without micro seconds
                  dat = cols[1].strip().split('.')[0]
                  datestamp = datetime.strptime(
                      dat, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")
                  f.close()
          self.dataset.setVersion(datestamp, ver)
  
          return