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}