Adding a prefix to the integer string is not a problem. You need to add this prefix at some point anyway, so you can still do it first and then call the same method. Basically, all three methods construct the variables needed to call the factory and then call the factory. Some of the methods have some validation in between. This can usually go away (I will add comments at the right places). What remains are two switch statements in all three methods, where the second one does exaclty the same thing in all three cases (just using different code). I suggest to use the String-version of the method as the simplest case that just calls the factory. The other two versions of the methods may have a little code before that to build the right parameters to call the String-version of the method with.

Independently of this change, each method should be split in two methods to get rid of all switches. The current form of each of the three methods is
<pre>
methodForAB() { switch A/B; common code; switch A/B; }
</pre>
This should change into the following structure
<pre>
methodForCommonCode() { common code; }
methodForA() { A; methodForCommonCode(); A; }
methodForB() { B; methodForCommonCode(); B; }
</pre>
This transformation reduces the number of lines of code, the branching complexity of the methods, and the overall code complexity (no special type for marking case A and case B, no casting of method results). If you think about it, what you did here is a bit like "inverse procedural programming": instead of defining a procedure for common code, you build the calling code around the common code and use a new parameter to switch between different surrounding code blocks using a special parameter. It's clear that this is not a good strategy in general, but I can see that it is tempting here. The reason is that item and property have much in common, so "code A" and "code B" looks similar. But it's still different code that does not benefit from living in the same method. This is even more the case in this version of the method where there is basically no common code at all ;-)