public HashMap<String,MusicObject> getSongByFolder(String folder) {
		
		HashMap<String,MusicObject> retVals = new HashMap<String,MusicObject>();
		
		try {
			if (connection == null) { 
				connection = getConnection();
			}

			if (getSongByFolderStmt == null) {
				getSongByFolderStmt = connection.prepareStatement("select "+getColumnNames("music")+" from org.music music where folder_hash = ?");
			}			
			
			
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("Error setting up connection: " + e.getMessage());
		}
		
		try {
			// Reads against a folder_hash, not a folder, since I think this is doing table scans anyway so it should be matching a smaller string
			getSongByFolderStmt.setString(1, Base64.encodeBase64String(Utils.getDigest(folder)));
			
			log.info("About to retrieve all songs for folder '"+folder+"'");
			
			ResultSet rs = getSongByFolderStmt.executeQuery();
			
			MusicObject tempMusic = null;
			
			while (rs.next()) { 
				
				tempMusic = populateMusic(rs);
				
				retVals.put(Utils.getKey(tempMusic),tempMusic);
			}
			
			close(rs);
			
			
		} catch (Exception e) {
			log.log(Level.SEVERE,e.getMessage(),e);
		}
		
		return retVals;
	}