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
007public class Condition implements TemplateEntry {
008
009    private final List<TemplateEntry> entries = new ArrayList<>();
010
011    public List<TemplateEntry> getEntries() {
012        return entries;
013    }
014
015    @Override
016    public void appendText(StringBuilder result, TemplateEngineDataProvider dataProvider) {
017        for (TemplateEntry entry: entries) {
018            if (entry.isValid(dataProvider)) {
019                entry.appendText(result, dataProvider);
020                return;
021            }
022        }
023
024        // Fallback to last entry
025        TemplateEntry entry = entries.get(entries.size() - 1);
026        entry.appendText(result, dataProvider);
027    }
028
029    @Override
030    public boolean isValid(TemplateEngineDataProvider dataProvider) {
031
032        for (TemplateEntry entry: entries) {
033            if (entry.isValid(dataProvider))
034                return true;
035        }
036
037        return false;
038    }
039
040    @Override
041    public String toString() {
042        StringBuilder sb = new StringBuilder();
043        sb.append("?{");
044        for (TemplateEntry entry: entries) {
045            if (entry instanceof SearchExpressionCondition) {
046                sb.append(entry);
047            } else {
048                sb.append('\'').append(entry).append('\'');
049            }
050            sb.append('|');
051        }
052        return sb.toString();
053    }
054}