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    }