I would like to validate some objects. The validation has two parts:
- validation whether the user has right to access the object (the specific rights are already calculated and stored in boolean values, there are maximum 4 roles)
- checking if the object is in a certain state (from a set of states)
I have a lot of rules (actually around 25 in total ) like the ones below that need to be validated:
- isOwner && (status == 11 || status == 13 || status == 14)
- !(isOwner && isReceiver && status == 12)
- .....
I have these rules spread out in several methods, 4 or 5 rules in a method. If a rule fails then the other rules do not get checked. I need to construct a validator (or set up an already constructed one) in every method that uses this validation.
I am looking for a design pattern that would make it easier to build a structure to validate objects. My goal is to be able to provide specific error messages. For instance if the validation failed because the user doesn't have rights then I want to let him/her know this. If it failed because the object's state then I want to display that .
First I though of the decorator pattern. I have an error message handler object that could be decorated with the specific error messages. One decorator would check for user rights and another one for states. But the order in which I am constructing my validator objects does not matter so the power of decorator pattern is not used. (AFAIK this is one big advantage of using decorator - mixing the decorations). I think a chain might be better for this case...?!?! What design alternative would you recommend for this scenario?