/**
* Copyright (c) 2013, Redsolution LTD. All rights reserved.
*
* This file is part of Xabber project; you can redistribute it and/or
* modify it under the terms of the GNU General Public License, Version 3.
*
* Xabber 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 com.xabber.android.data.extension.capability;
import java.util.regex.Pattern;
public enum ClientSoftware {
adium("(?iu).*Adium.*"),
empathy("(?iu).*Telepathy.*"),
gajim("(?iu).*Gajim.*"),
gtalk("(?iu).*Google.*Talk.*"),
ichat("(?iu).*imagent.*"),
miranda("(?iu).*Miranda.*"),
pidgin("(?iu).*Pidgin.*"),
psi("(?iu).*Psi.*"),
qip("(?iu).*QIP.*"),
vip("(?iu).*Xabber.*VIP.*"),
xabber("(?iu).*Xabber.*"),
conversations("(?iu).*Conversations.*"),
unknown(".*");
private Pattern regularExpression;
private final static Pattern GTALK_NODE = Pattern
.compile("(?iu).*mail\\.google\\.com.*client.*");
ClientSoftware(String regularExpression) {
this.regularExpression = Pattern.compile(regularExpression);
}
/**
* @return Client software for given identity name.
*/
public static ClientSoftware getByName(String name, String node) {
if (name == null) {
if (node != null && GTALK_NODE.matcher(node).matches()) {
return gtalk;
} else {
return unknown;
}
}
for (ClientSoftware clientSoftware : values()) {
if (clientSoftware.regularExpression.matcher(name).matches()) {
return clientSoftware;
}
}
throw new IllegalStateException();
}
}