public MusicObject getSongByPath(String folder, String fileName) {
		try {
			if (connection == null) { 
				connection = getConnection();
			}

			if (getSongByNameStmt == null) {
				getSongByNameStmt = connection.prepareStatement("select "+getColumnNames("music")+" from org.music music where folder_hash = ? and file_name = ?");
			}			
			
			
		} 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
			getSongByNameStmt.setString(1, Base64.encodeBase64String(Utils.getDigest(folder)));
			getSongByNameStmt.setString(2, fileName);
			
			log.info("Retrieving song details against folder '"+folder+"' and file '" + fileName +"'");

			if (log.isLoggable(Level.FINE)) {
				log.log(Level.FINE,"FolderHash '"+Base64.encodeBase64String(Utils.getDigest(folder))+"'");				
			}
			
			ResultSet rs = getSongByNameStmt.executeQuery();
			
			while (rs.next()) { 
				return populateMusic(rs);
			}
			
			close(rs);
			
			
		} catch (Exception e) {
			log.log(Level.SEVERE,e.getMessage(),e);
		}
		
		return new MusicObject();
	}