Develop

File Download Report
-- Newly added files:
+ UserDataPoint
+ UserDataReader
+ UriFileDownloadInvFilter
+ FileDownloadInvDao
+ FileDownloadInvDaoImpl

-- Tobe added files:
+ ReportMetricReader
+ ReportMetricWriter
+ FileDownloadReportMetric

-- Will be updated:
+ RepoUpdateService
You may want to declare the variable userIdReader close to where it is used.  And it is used only once.  So I would just do "(new UserIdReader()).read(record);".