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);
048            } else {
049                sb.append('\'').append(entry).append('\'');
050            }
051            sb.append('|');
052        }
053        return sb.toString();
054    }
055}