]> git.basschouten.com Git - openhab-addons.git/blob
8c71ec1dd2f428cbb3a8b563d82d7b8729bc2097
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.pulseaudio.internal.handler;
14
15 import java.util.ArrayList;
16 import java.util.Arrays;
17 import java.util.List;
18 import java.util.regex.Pattern;
19 import java.util.regex.PatternSyntaxException;
20 import java.util.stream.Collectors;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.eclipse.jdt.annotation.Nullable;
24
25 /**
26  * All informations needed to precisely identify a device
27  *
28  * @author Gwendal Roulleau - Initial contribution
29  *
30  */
31 @NonNullByDefault
32 public class DeviceIdentifier {
33
34     private String nameOrDescription;
35     private List<Pattern> additionalFilters = new ArrayList<>();
36
37     public DeviceIdentifier(String nameOrDescription, @Nullable String additionalFilters)
38             throws PatternSyntaxException {
39         super();
40         this.nameOrDescription = nameOrDescription;
41         if (additionalFilters != null && !additionalFilters.isEmpty()) {
42             Arrays.asList(additionalFilters.split("###")).stream()
43                     .forEach(ad -> this.additionalFilters.add(Pattern.compile(ad)));
44         }
45     }
46
47     public String getNameOrDescription() {
48         return nameOrDescription;
49     }
50
51     public List<Pattern> getAdditionalFilters() {
52         return additionalFilters;
53     }
54
55     @Override
56     public String toString() {
57         List<Pattern> additionalFiltersFinal = additionalFilters;
58         String additionalPatternToString = additionalFiltersFinal.stream().map(Pattern::pattern)
59                 .collect(Collectors.joining("###"));
60         return "DeviceIdentifier [nameOrDescription=" + nameOrDescription + ", additionalFilter="
61                 + additionalPatternToString + "]";
62     }
63 }