/** * Checks if a field exists in the form based on the value of another field * * @param form The form to validate * @param subFields A list containing information about the fields to validate {@link SubField} * @param coreManager Utility class for creating missing fields * @return */ public boolean validate( IncomingMessageForm form, List<SubField> subFields, CoreManager coreManager) { boolean valid = true; for (SubField sf : subFields) { if (!form.getIncomingMsgFormParameters().containsKey(sf.getParentField().toLowerCase())) continue; IncomingMessageFormParameter parent = form.getIncomingMsgFormParameters().get(sf.getParentField().toLowerCase()); if (sf.getReplaceOn().equals("*") || parent.getValue().equalsIgnoreCase(sf.getReplaceOn())) { if (!form.getIncomingMsgFormParameters().containsKey(sf.getFieldName().toLowerCase())) { valid = false; IncomingMessageFormParameter param = coreManager.createIncomingMessageFormParameter(); param.setMessageFormParamStatus(IncMessageFormParameterStatus.INVALID); param.setName(sf.getFieldName().toLowerCase()); param.setErrText("missing"); param.setValue(""); param.setErrCode(0); form.getIncomingMsgFormParameters().put(sf.getFieldName().toLowerCase(), param); form.setMessageFormStatus(IncMessageFormStatus.INVALID); form.setLastModified(new Date()); } } } return valid; }