public void listShowTimes() {
		int index = 0;
		_showTimes = new ArrayList<ShowTime>(); // To be used for update and remove showTime

		System.out.println("ShowTimes");
		System.out.println("=========");

		for(Cineplex cineplex: cineplexBL.getCineplexes()) {
			List<Movie> movies = cineplex.getMovies();

			if(movies.size() == 0) {
				continue;
			}

			System.out.println(cineplex.getCineplexName());
			System.out.println("-----------------------------------");

			for(Movie movie: movies) {				
				List<ShowTime> showTimes = showTimeBL.getShowTimes(movie, cineplex);

				if(showTimes.size() == 0) {
					continue;
				}

				System.out.println(movie.getTitle());
				System.out.println("********************************");

				Hashtable<String, List<ShowTime>> showTimeHashTable = new Hashtable<String, List<ShowTime>>();
				//Preprocessing for showTime to follow the cathay format
				for(ShowTime st: showTimes) {
					String d = new SimpleDateFormat("d MMM, E").format(st.getTime());

					if(showTimeHashTable.get(d) == null) {
						showTimeHashTable.put(d, new ArrayList<ShowTime>());
					}

					showTimeHashTable.get(d).add(st);
				}

				for(Enumeration<String> e = showTimeHashTable.keys();e.hasMoreElements();) {
					String dateString = e.nextElement();

					System.out.print(dateString);

					for(ShowTime showTime: showTimeHashTable.get(dateString)) {
						// showTime can be accessed using the index. It is in the sequence it is printed.
						// index starts at zero even though the index printed out start at 1. -1 before accessing.
						_showTimes.add(showTime); 


						String time = new SimpleDateFormat("HH:mm").format(showTime.getTime());
						System.out.print("\t[" + (index+1) + "] " + time);

						index++;
					}

					System.out.println();
				}
				System.out.println();
			}

		}
	}