So, earlier I asked this question about infinite-depth objects and arrived at using the Component pattern to model that a freezer contains a rack contains a box and so on and so forth.
There’s now been an ask to add the ability to move a container (and its contents) from one hierarchy to another. So, i may start with a situation like this:
Freezer A +-Rack 1 +--Box A +---Sample A Freezer B +-Rack 2 +--Box B
What I’d like to do is move Box A (and thereby Sample A) from Freezer A Rack 1 to Freezer B Rack 2. There’s a few rules to this:
- A container can’t be moved lower down a hierarchy. IE, I can’t put Box A into Box B.
- I cannot move a container into an appropriate container that is at capacity. (this is solved, pretty simple).
- I can’t move a container up the hierarchy. A box can’t be on the same level as a rack or a freezer.
How do I represent the x can contain y of these containers, and enforce it when moving between two containers?