]> git.basschouten.com Git - openhab-addons.git/blob
02d33f8502550ae71b24c98a3437dfba3315f9e4
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 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.voice.voicerss.internal;
14
15 import java.util.Locale;
16
17 import org.openhab.core.voice.Voice;
18 import org.openhab.voice.voicerss.internal.cloudapi.VoiceRSSCloudImpl;
19
20 /**
21  * Implementation of the Voice interface for VoiceRSS. Label is only "default"
22  * as only voice supported.
23  *
24  * @author Jochen Hiller - Initial contribution and API
25  */
26 public class VoiceRSSVoice implements Voice {
27
28     /**
29      * Voice locale
30      */
31     private final Locale locale;
32
33     /**
34      * Voice label
35      */
36     private final String label;
37
38     /**
39      * Constructs a VoiceRSS Voice for the passed data
40      *
41      * @param locale
42      *            The Locale of the voice
43      * @param label
44      *            The label of the voice
45      */
46     public VoiceRSSVoice(Locale locale, String label) {
47         this.locale = locale;
48         this.label = label;
49     }
50
51     /**
52      * Globally unique identifier of the voice.
53      *
54      * @return A String uniquely identifying the voice globally
55      */
56     @Override
57     public String getUID() {
58         String uid = "voicerss:" + locale.toLanguageTag().replaceAll("[^a-zA-Z0-9_]", "");
59         if (!label.equals(VoiceRSSCloudImpl.DEFAULT_VOICE)) {
60             uid += "_" + label.replaceAll("[^a-zA-Z0-9_]", "");
61         }
62         return uid;
63     }
64
65     /**
66      * The voice label, used for GUI's or VUI's
67      *
68      * @return The voice label, may not be globally unique
69      */
70     @Override
71     public String getLabel() {
72         return label;
73     }
74
75     /**
76      * @inheritDoc
77      */
78     @Override
79     public Locale getLocale() {
80         return locale;
81     }
82 }