code: @Override
      public TemporalDataModelIF<Long, Long> parseTemporalData(final File f) throws IOException {
          TemporalDataModelIF<Long, Long> dataset = DataModelFactory.getDefaultTemporalModel();
          Reader in = new InputStreamReader(new FileInputStream(f), "UTF-8");
  
          Iterable<CSVRecord> records;
          if (isHasHeader()) {
              records = CSVFormat.EXCEL.withDelimiter(getDelimiter()).withHeader().parse(in);
          } else {
              records = CSVFormat.EXCEL.withDelimiter(getDelimiter()).parse(in);
          }
          for (CSVRecord record : records) {
              long userID = Long.parseLong(record.get(getUserTok()));
              long itemID = Long.parseLong(record.get(getItemTok()));
              long timestamp = -1L;
              if (getTimeTok() != -1) {
                  timestamp = Long.parseLong(record.get(getTimeTok()));
              }
              double preference = Double.parseDouble(record.get(getPrefTok()));
              dataset.addPreference(userID, itemID, preference);
              dataset.addTimestamp(userID, itemID, timestamp);
          }
          in.close();
          return dataset;
      }
docs: {@inheritDoc}