2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.deutschebahn.internal;
15 import java.util.List;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.deutschebahn.internal.filter.FilterParser;
20 import org.openhab.binding.deutschebahn.internal.filter.FilterParserException;
21 import org.openhab.binding.deutschebahn.internal.filter.FilterScanner;
22 import org.openhab.binding.deutschebahn.internal.filter.FilterScannerException;
23 import org.openhab.binding.deutschebahn.internal.filter.FilterToken;
24 import org.openhab.binding.deutschebahn.internal.filter.TimetableStopPredicate;
27 * The {@link DeutscheBahnTimetableConfiguration} for the Timetable bridge-type.
29 * @author Sönke Küper - Initial contribution
32 public class DeutscheBahnTimetableConfiguration {
35 * Client-ID for DB-API Application
37 public String clientId = "";
40 * Client-Secret for DB-API Application
42 public String clientSecret = "";
45 * evaNo of the station to be queried.
47 public String evaNo = "";
50 * Filter for timetable stops.
52 public String trainFilter = "";
55 * Specifies additional filters for trains to be displayed within the timetable.
57 public String additionalFilter = "";
60 * Returns the {@link TimetableStopFilter}.
62 public TimetableStopFilter getTrainFilterFilter() {
63 return TimetableStopFilter.valueOf(this.trainFilter.toUpperCase());
67 * Returns the additional configured {@link TimetableStopPredicate} or <code>null</code> if not specified.
69 public @Nullable TimetableStopPredicate getAdditionalFilter() throws FilterScannerException, FilterParserException {
70 if (additionalFilter.isBlank()) {
73 final FilterScanner scanner = new FilterScanner();
74 final List<FilterToken> filterTokens = scanner.processInput(additionalFilter);
75 return FilterParser.parse(filterTokens);