public HashMap<String, Integer> getTopPublishers() throws Exception{
		
		Connection connect = null;
		Statement statement = null;
		ResultSet resultSet = null;

		HashMap<String, Integer> publishersMap = new HashMap<String, Integer>();
		
		try {
			
			// First connect to the database
			connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/librarysystem?user=admin&password=123456");
			statement = connect.createStatement();
			
			// Select the name(s) of the top publisher(s) and also the book count(s)
			resultSet = statement.executeQuery("SELECT HP.name, COUNT(*) "
					+ "FROM Book B, HasPUblisher HP "
					+ "WHERE B.isbn = HP.isbn "
					+ "GROUP BY HP.name "
					+ "HAVING COUNT(*) >= ALL (SELECT COUNT(*) "
									        + "FROM Book B1, HasPublisher HP1 "
									        + "WHERE B1.isbn = HP1.isbn "
									        + "GROUP BY HP1.name)");
			
			// Add genres and their counts into collection genreMap one at a time
			while(resultSet.next()){
				
				publishersMap.put(resultSet.getString(1), resultSet.getInt(2));
				
			}
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
			throw e;
		}
		
			finally
			{
				try {

					if(connect != null){
						connect.close();
					}
					
					if(statement != null){
						statement.close();
					}
					
					if(resultSet != null){
						resultSet.close();
					}
					
				} catch (Exception e) {	
					
				}
			}
		
		return publishersMap;		
		
	}