001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.tools.template_engine;
003
004 import java.util.ArrayList;
005 import java.util.List;
006
007
008 public class Condition implements TemplateEntry {
009
010 private final List<TemplateEntry> entries = new ArrayList<TemplateEntry>();
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
058 }