In a large heavy-bottomed pot, heat olive oil until it starts to smoke. Carefully add ham, and sear for about 2 minutes on each side until browned.
Remove ham from pot. Stub surface of ham with about a dozen cloves, scattered throughout, and set aside.
Add butter to pot, and allow it to melt. Add onion and garlic, and cook for about 5 minutes until onions start to brown, stirring ingredients and turning ham occasionally so it doesn’t scorch.
Deglaze with wine and vinegar, and cook until they start to evaporate, about 6 minutes.
Pour in pineapple juice, and add brown sugar. Add cherries, cinnamon, bay leaves, and stir well.
Place 1 teaspoon of cloves on a piece of cheesecloth. Tie ends of cheesecloth to form a pouch, and add to sauce.
In a small bowl, combine cornstarch with 3 tablespoons of water, and mix to make a slurry.
Pour slurry into saucepan, and mix well. Bring mixture to a full boil, and cook for about 8 minutes.
Return ham to pot. Add sliced pineapple, and bring to a full boil.
Reduce heat, cover, and simmer for about 35 minutes. Remove lid, and simmer for an additional 25 minutes, basting the ham from time to time until sauce thickens.
Remove ham from sauce. Remove and discard cloves, and slice. Remove and discard clove pouch and bay leaves from sauce.
Serve the ham drizzled with pineapple sauce and with slices of pineapple and cherries on the side.