/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.dynamic.data.mapping.form.evaluator; import com.liferay.portal.kernel.json.JSON; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * @author Marcellus Tavares */ public class DDMFormEvaluationResult { public DDMFormFieldEvaluationResult geDDMFormFieldEvaluationResult( String fieldName, String instanceId) { Map<String, DDMFormFieldEvaluationResult> ddmFormFieldEvaluationResultsMap = getDDMFormFieldEvaluationResultsMap(); String key = _getKey(fieldName, instanceId); return ddmFormFieldEvaluationResultsMap.get(key); } @JSON(name = "fields") public List<DDMFormFieldEvaluationResult> getDDMFormFieldEvaluationResults() { return _ddmFormFieldEvaluationResults; } @JSON(include = false) public Map<String, DDMFormFieldEvaluationResult> getDDMFormFieldEvaluationResultsMap() { if (_ddmFormFieldEvaluationResultsMap == null) { Map<String, DDMFormFieldEvaluationResult> ddmFormFieldEvaluationResultsMap = new HashMap<>(); populateDDMFormFieldEvaluationResultsMap( _ddmFormFieldEvaluationResults, ddmFormFieldEvaluationResultsMap); _ddmFormFieldEvaluationResultsMap = ddmFormFieldEvaluationResultsMap; } return _ddmFormFieldEvaluationResultsMap; } public Set<Integer> getDisabledPagesIndexes() { return _disabledPagesIndexes; } public void setDDMFormFieldEvaluationResults( List<DDMFormFieldEvaluationResult> ddmFormFieldEvaluationResults) { _ddmFormFieldEvaluationResults = ddmFormFieldEvaluationResults; } public void setDisabledPagesIndexes(Set<Integer> disabledPagesIndexes) { _disabledPagesIndexes = disabledPagesIndexes; } protected void populateDDMFormFieldEvaluationResultsMap( List<DDMFormFieldEvaluationResult> ddmFormFieldEvaluationResults, Map<String, DDMFormFieldEvaluationResult> ddmFormFieldEvaluationResultsMap) { for (DDMFormFieldEvaluationResult ddmFormFieldEvaluationResult : ddmFormFieldEvaluationResults) { String key = _getKey( ddmFormFieldEvaluationResult.getName(), ddmFormFieldEvaluationResult.getInstanceId()); ddmFormFieldEvaluationResultsMap.put( key, ddmFormFieldEvaluationResult); populateDDMFormFieldEvaluationResultsMap( ddmFormFieldEvaluationResult. getNestedDDMFormFieldEvaluationResults(), ddmFormFieldEvaluationResultsMap); } } private String _getKey(String fieldName, String instanceId) { StringBuilder sb = new StringBuilder(); sb.append(fieldName); sb.append(_INSTANCE_SEPARATOR); sb.append(instanceId); return sb.toString(); } private static final String _INSTANCE_SEPARATOR = "_INSTANCE_"; private List<DDMFormFieldEvaluationResult> _ddmFormFieldEvaluationResults = new ArrayList<>(); private Map<String, DDMFormFieldEvaluationResult> _ddmFormFieldEvaluationResultsMap; private Set<Integer> _disabledPagesIndexes = new HashSet<>(); }