/**
   * Imports MolgenisPermission from tab/comma delimited File.
   *
   * @param MolgenisPermissionFile a tab delimited file with MolgenisPermission data.
   */
  private static void importMolgenisPermission(Database db, File MolgenisPermissionFile)
      throws DatabaseException, IOException, Exception {
    logger.debug("trying to import " + MolgenisPermissionFile);
    if (!MolgenisPermissionFile.exists()) {
      logger.warn("MolgenisPermission.txt file is missing, skipped import");
    } else {
      // read MolgenisPermission from file
      CsvReader reader = new CsvFileReader(MolgenisPermissionFile);
      List<MolgenisPermission> molgenisPermissionList =
          db.toList(MolgenisPermission.class, reader, Integer.MAX_VALUE); // should have no limit
      logger.debug("loaded " + molgenisPermissionList.size() + " MolgenisPermission objects");

      // redirect incoming and outgoing fkeys
      List<Integer> molgenisPermissionIds = new ArrayList<Integer>(); // also doesn't scale
      for (int i = 0;
          i < molgenisPermissionList.size();
          i++) // sorry, not a real list so need to put back!!
      {
        MolgenisPermission object = molgenisPermissionList.get(i);

        // remember index of this id for incoming fkeys
        molgenisPermissionIds.add(object.getId());

        // redirect outgoing fkeys
        if (object.getRole() != null) object.setRole_Id(molgenisRoleIdMap.get(object.getRole_Id()));
        if (object.getEntity() != null)
          object.setEntity_Id(molgenisEntityIdMap.get(object.getEntity_Id()));

        // add assay back to list
        molgenisPermissionList.set(i, object);
      }
      // add to database
      db.add(molgenisPermissionList);
      for (int i = 0; i < molgenisPermissionList.size(); i++) {
        molgenisPermissionIdMap.put(
            molgenisPermissionIds.get(i), molgenisPermissionList.get(i).getId());
      }
    }
  }