package com.growcontrol.client.configs;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.growcontrol.client.gcClientDefines;
import com.growcontrol.common.gcDefines;
import com.poixson.commonapp.config.xConfig;
import com.poixson.commonjava.Utils.utils;
import com.poixson.commonjava.Utils.utilsObject;
import com.poixson.commonjava.Utils.xHashable;
import com.poixson.commonjava.xLogger.xLog;
public class SavedProfile implements xHashable {
public final String name;
public final String host;
public final int port;
public final String user;
public final String pass;
public static LinkedHashMap<String, SavedProfile> get(final List<Object> dataset) {
if(utils.isEmpty(dataset))
return null;
final LinkedHashMap<String, SavedProfile> profiles =
new LinkedHashMap<String, SavedProfile>();
for(final Object obj : dataset) {
try {
final Map<String, Object> datamap =
utilsObject.castMap(
String.class,
Object.class,
obj
);
final SavedProfile profile = get(datamap);
profiles.put(profile.name, profile);
} catch (Exception e) {
xLog.getRoot("config").trace(e);
}
}
return profiles;
}
public static SavedProfile get(final Map<String, Object> datamap) {
if(utils.isEmpty(datamap))
return null;
final xConfig config = new xConfig(datamap);
final String name = config.getString(gcClientDefines.PROFILE_NAME);
final boolean ssl = config.getBool(gcClientDefines.PROFILE_SSL, false);
final String host = config.getString(gcClientDefines.PROFILE_HOST);
final int port = config.getInt (
gcClientDefines.PROFILE_PORT,
gcDefines.DEFAULT_SOCKET_PORT(ssl)
);
final String user = config.getString(gcClientDefines.PROFILE_USER);
final String pass = config.getString(gcClientDefines.PROFILE_PASS);
return new SavedProfile(
name,
host,
port,
user,
pass
);
}
public SavedProfile(final String name,
final String host, final int port,
final String user, final String pass) {
this.name = name;
this.host = host;
this.port = port;
this.user = user;
this.pass = pass;
}
@Override
public String toString() {
return this.name;
}
@Override
public String getKey() {
return this.name;
}
@Override
public boolean matches(final xHashable hashable) {
if(hashable == null || !(hashable instanceof SavedProfile) )
return false;
final SavedProfile profile = (SavedProfile) hashable;
return this.getKey().equalsIgnoreCase(profile.getKey());
}
}