/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (props, at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.opentripplanner.graph_builder.module.osm; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.opentripplanner.common.model.T2; import org.opentripplanner.openstreetmap.model.OSMWithTags; import org.opentripplanner.routing.alertpatch.Alert; import org.opentripplanner.routing.services.notes.NoteMatcher; import org.opentripplanner.util.LocalizedString; import org.opentripplanner.util.TranslatedString; //Currently unused since notes are disabled in DefaultWayPropertySetSource public class NoteProperties { private static final Pattern patternMatcher = Pattern.compile("\\{(.*?)\\}"); public String notePattern; public NoteMatcher noteMatcher; public NoteProperties(String notePattern, NoteMatcher noteMatcher) { this.notePattern = notePattern; this.noteMatcher = noteMatcher; } public T2<Alert, NoteMatcher> generateNote(OSMWithTags way) { Alert note = new Alert(); //TODO: this could probably be made without patternMatch for {} since all notes (at least currently) have {note} as notePattern if (patternMatcher.matcher(notePattern).matches()) { //This gets language -> translation of notePattern and all tags (which can have translations name:en for example) Map<String, String> noteText = TemplateLibrary.generateI18N(notePattern, way); note.alertHeaderText = TranslatedString.getI18NString(noteText); } else { note.alertHeaderText = new LocalizedString(notePattern, way); } return new T2<>(note, noteMatcher); } }