package jetbrains.buildserver.sonarplugin.sqrunner.manager.projectsettings;
import jetbrains.buildServer.XmlStorable;
import jetbrains.buildServer.serverSide.crypt.EncryptUtil;
import jetbrains.buildserver.sonarplugin.Util;
import jetbrains.buildserver.sonarplugin.sqrunner.manager.BaseSQSInfo;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
/**
* Created by Andrey Titov on 7/9/14.
*
* SQSInfo based on XML definition
*/
public class XMLBasedSQSInfo extends BaseSQSInfo implements XmlStorable {
XMLBasedSQSInfo() {
super((Map<String, String>)null);
}
public XMLBasedSQSInfo(@NotNull final String id,
@Nullable final String name,
@Nullable final String url,
@Nullable final String login,
@Nullable final String password,
@Nullable final String jdbcUrl,
@Nullable final String jdbcUsername,
@Nullable final String jdbcPassword) {
super(id, name, url, login, password, jdbcUrl, jdbcUsername, jdbcPassword);
}
public void readFrom(final Element element) {
for (final String key : OPEN_FIELDS) {
setProperty(key, element.getAttributeValue(key));
}
for (final String key : ENCRYPTED_FIELDS) {
final String value = element.getAttributeValue(key);
if (key != null) {
String unscrambled;
try {
unscrambled = EncryptUtil.unscramble(value);
} catch (Exception ignored) {
unscrambled = value;
}
setProperty(key, unscrambled);
}
}
}
public void writeTo(final Element serverElement) {
for (final String key : OPEN_FIELDS) {
addAttribute(serverElement, key, get(key));
}
for (final String key : ENCRYPTED_FIELDS) {
addAttributeScrambled(serverElement, key, get(key));
}
}
private void addAttribute(Element serverElement, String key, String value) {
if (!Util.isEmpty(value)) {
serverElement.setAttribute(key, value);
}
}
private void addAttributeScrambled(Element serverElement, String key, String value) {
if (!Util.isEmpty(value)) {
serverElement.setAttribute(key, EncryptUtil.scramble(value));
}
}
}