001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.tools.template_engine;
003
004import java.util.ArrayList;
005import java.util.List;
006
007
008public class Condition implements TemplateEntry {
009
010    private final List<TemplateEntry> entries = new ArrayList<>();
011
012    public List<TemplateEntry> getEntries() {
013        return entries;
014    }
015
016    @Override
017    public void appendText(StringBuilder result, TemplateEngineDataProvider dataProvider) {
018        for (TemplateEntry entry: entries) {
019            if (entry.isValid(dataProvider)) {
020                entry.appendText(result, dataProvider);
021                return;
022            }
023        }
024
025        // Fallback to last entry
026        TemplateEntry entry = entries.get(entries.size() - 1);
027        entry.appendText(result, dataProvider);
028    }
029
030    @Override
031    public boolean isValid(TemplateEngineDataProvider dataProvider) {
032
033        for (TemplateEntry entry: entries) {
034            if (entry.isValid(dataProvider))
035                return true;
036        }
037
038        return false;
039    }
040
041    @Override
042    public String toString() {
043        StringBuilder sb = new StringBuilder();
044        sb.append("?{");
045        for (TemplateEntry entry: entries) {
046            if (entry instanceof SearchExpressionCondition) {
047                sb.append(entry.toString());
048            } else {
049                sb.append("'");
050                sb.append(entry.toString());
051                sb.append("'");
052            }
053            sb.append("|");
054        }
055        return sb.toString();
056    }
057}