Program: 25445
Project: 25445
Buggy source:
public void process(String roomId){
  try {
    List<SessionRecordings> sessionRecordingsList=sessionRecordingsDao.getSessionRecordingList(roomId);
    if (sessionRecordingsList != null && sessionRecordingsList.size() == 0) {
      log.info("String_Node_Str" + roomId);
      return;
    }
    List<AudioData> audioDataList=audioDataDao.getAudioDataList(roomId);
    List<VideoData> videoDataList=videoDataDao.getVideoDataList(roomId);
    PlaybackUtil.setPlaybackVO(playbackVO);
    if (PlaybackUtil.isWindows()) {
      log.debug("String_Node_Str");
      PlaybackUtil.updateVideoPathWindows(playbackVO.getWinVideoPath(),videoDataList);
      PlaybackUtil.updateAudioPathWindows(playbackVO.getWinAudioPath(),audioDataList);
    }
    log.debug("String_Node_Str");
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ sessionRecordingsList.size());
    for (int i=0; i < sessionRecordingsList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ sessionRecordingsList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ sessionRecordingsList.get(i).getEndTime());
    }
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ audioDataList.size());
    for (int i=0; i < audioDataList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getEndTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getFilePath());
    }
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ videoDataList.size());
    for (int i=0; i < videoDataList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getEndTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getFilePath());
    }
    log.debug("String_Node_Str");
    if (sessionRecordingsList.size() == 0 || videoDataList.size() == 0) {
      log.debug("String_Node_Str");
    }
    HashMap<SessionRecordings,SessionBucket> sessionMap=new HashMap<SessionRecordings,SessionBucket>();
    if (sessionRecordingsList.size() == 0) {
      log.debug("String_Node_Str");
    }
 else {
      ArrayList<String> finalVideoPlaylist=new ArrayList<String>();
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      for (int i=0; i < sessionRecordingsList.size(); i++) {
        long sessionStartTime=sessionRecordingsList.get(i).getStartTime().getTime();
        long sessionEndTime=sessionRecordingsList.get(i).getEndTime().getTime();
        log.debug("String_Node_Str" + sessionRecordingsList.get(i).getStartTime());
        log.debug("String_Node_Str" + sessionRecordingsList.get(i).getEndTime());
        SessionBucket sb=new SessionBucket();
        if (audioDataList.size() == 0) {
          log.debug("String_Node_Str");
        }
 else {
          for (int j=0; j < audioDataList.size(); j++) {
            prepareAudioForSessionBucket(sb,j,audioDataList.get(j),sessionStartTime,sessionEndTime);
          }
        }
        if (videoDataList.size() == 0) {
          log.debug("String_Node_Str");
        }
 else {
          for (int j=0; j < videoDataList.size(); j++) {
            prepareVideoForSessionBucket(sb,j,videoDataList.get(j),sessionStartTime,sessionEndTime);
          }
        }
        sessionMap.put(sessionRecordingsList.get(i),sb);
      }
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      Iterator sessionKeys=sessionMap.keySet().iterator();
      String cmd=null;
      while (sessionKeys.hasNext()) {
        SessionRecordings session=(SessionRecordings)sessionKeys.next();
        long sessionStartTime=session.getStartTime().getTime();
        long sessionEndTime=session.getEndTime().getTime();
        SessionBucket sessionBucket=sessionMap.get(session);
        List<AudioData> sessionAudioDataList=sessionBucket.getAudioDataList();
        List<VideoData> sessionVideoDataList=sessionBucket.getVideoDataList();
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        List<AudioData> paddedSessionAudioDataList=new ArrayList<AudioData>();
        AudioData sessionAudio=null;
        if (sessionAudioDataList.size() > 0) {
          paddedSessionAudioDataList=padAudioPlaylist(sessionAudioDataList,sessionStartTime);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + paddedSessionAudioDataList.size());
          for (int i=0; i < paddedSessionAudioDataList.size(); i++) {
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getStartTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getEndTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getFilePath());
          }
          log.debug("String_Node_Str");
          sessionAudio=concatenateAudios(paddedSessionAudioDataList);
        }
 else {
          if (audioDataList.size() > 0) {
            log.debug("String_Node_Str");
            sessionAudio=createSilentAudio(sessionEndTime - sessionStartTime);
          }
          sessionAudio=null;
        }
        if (sessionAudio != null) {
          log.debug("String_Node_Str" + sessionAudio.getFilePath());
        }
 else {
          log.debug("String_Node_Str");
        }
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        List<VideoData> uniformSessionVideoDataList=new ArrayList<VideoData>();
        VideoData sessionVideo=null;
        if (sessionVideoDataList.size() > 0) {
          uniformSessionVideoDataList=setVideoResolution(sessionVideoDataList);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + uniformSessionVideoDataList.size());
          for (int i=0; i < uniformSessionVideoDataList.size(); i++) {
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getStartTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getEndTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getFilePath());
          }
          log.debug("String_Node_Str");
          sessionVideo=concatenateVideos(uniformSessionVideoDataList);
        }
 else {
          log.debug("String_Node_Str");
          if (videoDataList.size() < 1) {
            log.debug("String_Node_Str");
          }
        }
        log.debug("String_Node_Str" + sessionVideo.getFilePath());
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        if (sessionAudio != null) {
          String sessionVideoPlaylist=mergeAudioVideo(sessionAudio,sessionVideo);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + sessionVideoPlaylist);
          log.debug("String_Node_Str");
          finalVideoPlaylist.add(sessionVideoPlaylist);
        }
 else {
          long duration=sessionVideo.getEndTime().getTime() - sessionVideo.getStartTime().getTime();
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + sessionVideo.getFilePath() + "String_Node_Str"+ duration);
          log.debug("String_Node_Str");
          finalVideoPlaylist.add(sessionVideo.getFilePath() + "String_Node_Str" + duration);
        }
      }
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      List<PlayBackPlayList> listPlayback=new ArrayList<PlayBackPlayList>();
      PlayBackPlayList playlist=null;
      for (int i=0; i < finalVideoPlaylist.size(); i++) {
        playlist=new PlayBackPlayList();
        String a[]=new String[2];
        a=finalVideoPlaylist.get(i).split("String_Node_Str");
        String mp4_filepath=convertAVItoMP4264(a[0]);
        String flv_filepath=convertAVItoFLV(a[0]);
        playlist.setFilePath(flv_filepath);
        log.debug("String_Node_Str");
        log.debug("String_Node_Str" + flv_filepath);
        log.debug("String_Node_Str");
        playlist.setFilePath(flv_filepath);
        playlist.setInsertedDate(new Date());
        playlist.setRoomName(roomId);
        log.debug("String_Node_Str" + a[1]);
        playlist.setDuration(a[1]);
        listPlayback.add(playlist);
      }
      updateFinalVideoTable(listPlayback,playBackPlayListDao);
    }
  }
 catch (  Exception e) {
    log.error(e.getMessage(),e);
  }
}

Fixed version (ground truth):
public void process(String roomId){
  try {
    List<SessionRecordings> sessionRecordingsList=sessionRecordingsDao.getSessionRecordingList(roomId);
    if (sessionRecordingsList != null && sessionRecordingsList.size() == 0) {
      log.info("String_Node_Str" + roomId);
      return;
    }
    List<AudioData> audioDataList=audioDataDao.getAudioDataList(roomId);
    List<VideoData> videoDataList=videoDataDao.getVideoDataList(roomId);
    PlaybackUtil.setPlaybackVO(playbackVO);
    if (PlaybackUtil.isWindows()) {
      log.debug("String_Node_Str");
      PlaybackUtil.updateVideoPathWindows(playbackVO.getWinVideoPath(),videoDataList);
      PlaybackUtil.updateAudioPathWindows(playbackVO.getWinAudioPath(),audioDataList);
    }
    if (PlaybackUtil.isUbuntu()) {
      log.debug("String_Node_Str");
      PlaybackUtil.updateAudioPathWindows(playbackVO.getUbuntuAudioPath(),audioDataList);
    }
    log.debug("String_Node_Str");
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ sessionRecordingsList.size());
    for (int i=0; i < sessionRecordingsList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ sessionRecordingsList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ sessionRecordingsList.get(i).getEndTime());
    }
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ audioDataList.size());
    for (int i=0; i < audioDataList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getEndTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ audioDataList.get(i).getFilePath());
    }
    log.debug("String_Node_Str" + roomId + "String_Node_Str"+ videoDataList.size());
    for (int i=0; i < videoDataList.size(); i++) {
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getStartTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getEndTime());
      log.debug("String_Node_Str" + i + "String_Node_Str"+ videoDataList.get(i).getFilePath());
    }
    log.debug("String_Node_Str");
    if (sessionRecordingsList.size() == 0 || videoDataList.size() == 0) {
      log.debug("String_Node_Str");
    }
    HashMap<SessionRecordings,SessionBucket> sessionMap=new HashMap<SessionRecordings,SessionBucket>();
    if (sessionRecordingsList.size() == 0) {
      log.debug("String_Node_Str");
    }
 else {
      ArrayList<String> finalVideoPlaylist=new ArrayList<String>();
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      for (int i=0; i < sessionRecordingsList.size(); i++) {
        long sessionStartTime=sessionRecordingsList.get(i).getStartTime().getTime();
        long sessionEndTime=sessionRecordingsList.get(i).getEndTime().getTime();
        log.debug("String_Node_Str" + sessionRecordingsList.get(i).getStartTime());
        log.debug("String_Node_Str" + sessionRecordingsList.get(i).getEndTime());
        SessionBucket sb=new SessionBucket();
        if (audioDataList.size() == 0) {
          log.debug("String_Node_Str");
        }
 else {
          for (int j=0; j < audioDataList.size(); j++) {
            prepareAudioForSessionBucket(sb,j,audioDataList.get(j),sessionStartTime,sessionEndTime);
          }
        }
        if (videoDataList.size() == 0) {
          log.debug("String_Node_Str");
        }
 else {
          for (int j=0; j < videoDataList.size(); j++) {
            prepareVideoForSessionBucket(sb,j,videoDataList.get(j),sessionStartTime,sessionEndTime);
          }
        }
        sessionMap.put(sessionRecordingsList.get(i),sb);
      }
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      Iterator sessionKeys=sessionMap.keySet().iterator();
      String cmd=null;
      while (sessionKeys.hasNext()) {
        SessionRecordings session=(SessionRecordings)sessionKeys.next();
        long sessionStartTime=session.getStartTime().getTime();
        long sessionEndTime=session.getEndTime().getTime();
        SessionBucket sessionBucket=sessionMap.get(session);
        List<AudioData> sessionAudioDataList=sessionBucket.getAudioDataList();
        List<VideoData> sessionVideoDataList=sessionBucket.getVideoDataList();
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        List<AudioData> paddedSessionAudioDataList=new ArrayList<AudioData>();
        AudioData sessionAudio=null;
        if (sessionAudioDataList.size() > 0) {
          paddedSessionAudioDataList=padAudioPlaylist(sessionAudioDataList,sessionStartTime);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + paddedSessionAudioDataList.size());
          for (int i=0; i < paddedSessionAudioDataList.size(); i++) {
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getStartTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getEndTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ paddedSessionAudioDataList.get(i).getFilePath());
          }
          log.debug("String_Node_Str");
          sessionAudio=concatenateAudios(paddedSessionAudioDataList);
        }
 else {
          if (audioDataList.size() > 0) {
            log.debug("String_Node_Str");
            sessionAudio=createSilentAudio(sessionEndTime - sessionStartTime);
          }
          sessionAudio=null;
        }
        if (sessionAudio != null) {
          log.debug("String_Node_Str" + sessionAudio.getFilePath());
        }
 else {
          log.debug("String_Node_Str");
        }
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        List<VideoData> uniformSessionVideoDataList=new ArrayList<VideoData>();
        VideoData sessionVideo=null;
        if (sessionVideoDataList.size() > 0) {
          uniformSessionVideoDataList=setVideoResolution(sessionVideoDataList);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + uniformSessionVideoDataList.size());
          for (int i=0; i < uniformSessionVideoDataList.size(); i++) {
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getStartTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getEndTime());
            log.debug("String_Node_Str" + i + "String_Node_Str"+ uniformSessionVideoDataList.get(i).getFilePath());
          }
          log.debug("String_Node_Str");
          sessionVideo=concatenateVideos(uniformSessionVideoDataList);
        }
 else {
          log.debug("String_Node_Str");
          if (videoDataList.size() < 1) {
            log.debug("String_Node_Str");
          }
        }
        log.debug("String_Node_Str" + sessionVideo.getFilePath());
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        log.debug("String_Node_Str");
        if (sessionAudio != null) {
          String sessionVideoPlaylist=mergeAudioVideo(sessionAudio,sessionVideo);
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + sessionVideoPlaylist);
          log.debug("String_Node_Str");
          finalVideoPlaylist.add(sessionVideoPlaylist);
        }
 else {
          long duration=sessionVideo.getEndTime().getTime() - sessionVideo.getStartTime().getTime();
          log.debug("String_Node_Str");
          log.debug("String_Node_Str" + sessionVideo.getFilePath() + "String_Node_Str"+ duration);
          log.debug("String_Node_Str");
          finalVideoPlaylist.add(sessionVideo.getFilePath() + "String_Node_Str" + duration);
        }
      }
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      log.debug("String_Node_Str");
      List<PlayBackPlayList> listPlayback=new ArrayList<PlayBackPlayList>();
      PlayBackPlayList playlist=null;
      for (int i=0; i < finalVideoPlaylist.size(); i++) {
        playlist=new PlayBackPlayList();
        String a[]=new String[2];
        a=finalVideoPlaylist.get(i).split("String_Node_Str");
        String flv_filepath=convertAVItoFLV(a[0]);
        playlist.setFilePath(flv_filepath);
        log.debug("String_Node_Str");
        log.debug("String_Node_Str" + flv_filepath);
        log.debug("String_Node_Str");
        playlist.setFilePath(flv_filepath);
        playlist.setInsertedDate(new Date());
        playlist.setRoomName(roomId);
        log.debug("String_Node_Str" + a[1]);
        playlist.setDuration(a[1]);
        listPlayback.add(playlist);
      }
      updateFinalVideoTable(listPlayback,playBackPlayListDao);
    }
  }
 catch (  Exception e) {
    log.error(e.getMessage(),e);
  }
}