battle for shanghai