Forth year PhD student having trouble with his supervisor
Well, in CS I know many people using the same approach. It works well for some students, for others it is terrible. 

One thing really went wrong: You wrote several papers which got rejected - this is something a supervisor should avoid by giving feedback beforehand. This feedback could have helped you finding your way in the scientific field. Did you involve your supervisor in the paper development process?

One thing is strange about your situation: You worked for four years right now, he is paying you and he wants you to finish. If you really did not achieve anything, I would have tried to get rid of you and hire someone else. So there might be something in your work you are not aware of at the moment. Or your supervisor is very lazy. Or he just trusts in people. 

If you are hired to work on a specific project: Is this project related to your PhD? Or are you just working on your PhD topic? 

I would suggest to really use the christmas break to 


Build a mindmap of your field / your work. Indicate all items which are mandatory for your PhD.
Honestly try to figure out why your papers were not accepted. Try to figure out if you are having any chance to change thr source of the problem.
Build a work plan consisting of simple steps which will lead you to a "just-made-it"-PhD. You can improve it later on
If you feel you are lacking skills (e.g. programming, paper writing, ...), find a way to adress them. Train the skills. It's worth the effort.
...and take a break. It sounds like you need one...