Top seed and defending champion Novak Djokovic will face second seed Roger Federer in Sunday's Italian Open final after both claimed straight sets wins.