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 }