class VideoRecordingFileName {

   public String getByDevice() {
      log.trace("Lookup device for camera id [{}]", cameraId);

      Device device = deviceDAO.findById(cameraId);

      if (device != null) {
         log.trace("Found device for camera id [{}]", cameraId);

         //get a clean version of the device name, e.g. replace *? with __
         String cleanDeviceName = IrisFileName.clean(device.getName(), "_");

         if (!StringUtils.isEmpty(cleanDeviceName)) {
            log.trace("Clean device name is [{}]", cleanDeviceName);

            Place place = placeDAO.findById(placeId);
            String dateSuffix = getDateSuffix(place);

            String fileName = getFileName(cleanDeviceName, dateSuffix);
            log.trace("Computed file name [{}] for video recording [{}]", fileName, recordingId);

            if (IrisFileName.isValid(fileName)) {
               log.trace("File name [{}] is valid for video recording [{}]", fileName, recordingId);
               return fileName;
            }
         }
      }

      return "";
   }

   public  VideoRecordingFileName(
         UUID recordingId,
         UUID cameraId,
         UUID placeId,
         DeviceDAO deviceDAO,
         PlaceDAO placeDAO
         );

}