mirror of
https://github.com/TotalFreedomMC/ZeroTelnetClient.git
synced 2024-12-22 16:25:14 +00:00
Finished implementing support for XML server list saving.
This commit is contained in:
parent
0f25e91082
commit
737abc7697
6 changed files with 293 additions and 264 deletions
|
@ -2,21 +2,22 @@ package me.StevenLawson.BukkitTelnetClient;
|
|||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.*;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.w3c.dom.*;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class BTC_ConfigLoader
|
||||
{
|
||||
private static final String SETTINGS_FILE = "settings.xml";
|
||||
|
||||
private final List<PlayerCommandEntry> playerCommands = new ArrayList<>();
|
||||
private final List<ServerEntry> servers = new ArrayList<>();
|
||||
private final Set<ServerEntry> servers = new HashSet<>();
|
||||
|
||||
public BTC_ConfigLoader()
|
||||
{
|
||||
|
@ -44,10 +45,6 @@ public class BTC_ConfigLoader
|
|||
final List<ServerEntry> oldServers = importOldConfig();
|
||||
this.servers.addAll(oldServers);
|
||||
|
||||
final HashSet<ServerEntry> uniqueServers = new HashSet<>(this.servers);
|
||||
this.servers.clear();
|
||||
this.servers.addAll(uniqueServers);
|
||||
|
||||
generateXML(settings);
|
||||
|
||||
if (verbose)
|
||||
|
@ -77,10 +74,6 @@ public class BTC_ConfigLoader
|
|||
|
||||
public boolean save()
|
||||
{
|
||||
final HashSet<ServerEntry> uniqueServers = new HashSet<>(this.servers);
|
||||
this.servers.clear();
|
||||
this.servers.addAll(uniqueServers);
|
||||
|
||||
return generateXML(new File(SETTINGS_FILE));
|
||||
}
|
||||
|
||||
|
@ -89,9 +82,9 @@ public class BTC_ConfigLoader
|
|||
return this.playerCommands;
|
||||
}
|
||||
|
||||
public List<ServerEntry> getServers()
|
||||
public Set<ServerEntry> getServers()
|
||||
{
|
||||
return this.servers;
|
||||
return servers;
|
||||
}
|
||||
|
||||
private boolean generateXML(final File file)
|
||||
|
@ -114,9 +107,9 @@ public class BTC_ConfigLoader
|
|||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (IllegalArgumentException | ParserConfigurationException | TransformerException | DOMException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
BukkitTelnetClient.LOGGER.log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -143,10 +136,11 @@ public class BTC_ConfigLoader
|
|||
hadErrors = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (IOException | ParserConfigurationException | SAXException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
hadErrors = true;
|
||||
|
||||
BukkitTelnetClient.LOGGER.log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
return hadErrors;
|
||||
|
@ -165,7 +159,7 @@ public class BTC_ConfigLoader
|
|||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
BukkitTelnetClient.LOGGER.log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -187,7 +181,7 @@ public class BTC_ConfigLoader
|
|||
while ((line = in.readLine()) != null)
|
||||
{
|
||||
line = line.trim();
|
||||
oldServers.add(new ServerEntry("legacy", line));
|
||||
oldServers.add(new ServerEntry("legacy", line, false));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,192 +190,9 @@ public class BTC_ConfigLoader
|
|||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
BukkitTelnetClient.LOGGER.log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
return oldServers;
|
||||
}
|
||||
|
||||
public static class PlayerCommandEntry
|
||||
{
|
||||
private final String name;
|
||||
private final String format;
|
||||
|
||||
public PlayerCommandEntry(String name, String format)
|
||||
{
|
||||
this.name = name;
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public String getFormat()
|
||||
{
|
||||
return format;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public static Element listToXML(final List<PlayerCommandEntry> playerCommands, final Document doc)
|
||||
{
|
||||
final Element plcElement = doc.createElement("playerCommands");
|
||||
|
||||
for (final PlayerCommandEntry command : playerCommands)
|
||||
{
|
||||
final Element commandElement = doc.createElement("playerCommand");
|
||||
plcElement.appendChild(commandElement);
|
||||
|
||||
final Element commandName = doc.createElement("name");
|
||||
commandName.appendChild(doc.createTextNode(command.getName()));
|
||||
commandElement.appendChild(commandName);
|
||||
|
||||
final Element commandFormat = doc.createElement("format");
|
||||
commandFormat.appendChild(doc.createTextNode(command.getFormat()));
|
||||
commandElement.appendChild(commandFormat);
|
||||
}
|
||||
|
||||
return plcElement;
|
||||
}
|
||||
|
||||
public static boolean xmlToList(final List<PlayerCommandEntry> playerCommands, final Document doc)
|
||||
{
|
||||
NodeList playerCommandNodes = doc.getDocumentElement().getElementsByTagName("playerCommands");
|
||||
if (playerCommandNodes.getLength() < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
playerCommandNodes = playerCommandNodes.item(0).getChildNodes();
|
||||
|
||||
playerCommands.clear();
|
||||
|
||||
for (int i = 0; i < playerCommandNodes.getLength(); i++)
|
||||
{
|
||||
final Node node = playerCommandNodes.item(i);
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE)
|
||||
{
|
||||
final Element element = (Element) node;
|
||||
|
||||
final PlayerCommandEntry command = new PlayerCommandEntry(
|
||||
element.getElementsByTagName("name").item(0).getTextContent(),
|
||||
element.getElementsByTagName("format").item(0).getTextContent()
|
||||
);
|
||||
|
||||
playerCommands.add(command);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ServerEntry
|
||||
{
|
||||
private final String name;
|
||||
private final String address;
|
||||
|
||||
public ServerEntry(final String name, final String address)
|
||||
{
|
||||
this.name = name;
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getAddress()
|
||||
{
|
||||
return address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 7;
|
||||
hash = 67 * hash + Objects.hashCode(this.name);
|
||||
hash = 67 * hash + Objects.hashCode(this.address);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final ServerEntry other = (ServerEntry) obj;
|
||||
|
||||
if (!Objects.equals(this.name, other.name))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Objects.equals(this.address, other.address))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Element listToXML(final List<ServerEntry> servers, final Document doc)
|
||||
{
|
||||
final Element serversElement = doc.createElement("servers");
|
||||
|
||||
for (final ServerEntry command : servers)
|
||||
{
|
||||
final Element commandElement = doc.createElement("server");
|
||||
serversElement.appendChild(commandElement);
|
||||
|
||||
final Element serverName = doc.createElement("name");
|
||||
serverName.appendChild(doc.createTextNode(command.getName()));
|
||||
commandElement.appendChild(serverName);
|
||||
|
||||
final Element serverAddress = doc.createElement("address");
|
||||
serverAddress.appendChild(doc.createTextNode(command.getAddress()));
|
||||
commandElement.appendChild(serverAddress);
|
||||
}
|
||||
|
||||
return serversElement;
|
||||
}
|
||||
|
||||
public static boolean xmlToList(final List<ServerEntry> servers, final Document doc)
|
||||
{
|
||||
NodeList serverNodes = doc.getDocumentElement().getElementsByTagName("servers");
|
||||
if (serverNodes.getLength() < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
serverNodes = serverNodes.item(0).getChildNodes();
|
||||
|
||||
servers.clear();
|
||||
|
||||
for (int i = 0; i < serverNodes.getLength(); i++)
|
||||
{
|
||||
final Node node = serverNodes.item(i);
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE)
|
||||
{
|
||||
final Element element = (Element) node;
|
||||
|
||||
final ServerEntry server = new ServerEntry(
|
||||
element.getElementsByTagName("name").item(0).getTextContent(),
|
||||
element.getElementsByTagName("address").item(0).getTextContent()
|
||||
);
|
||||
|
||||
servers.add(server);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,7 @@ package me.StevenLawson.BukkitTelnetClient;
|
|||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.*;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.Timer;
|
||||
|
|
|
@ -156,15 +156,15 @@
|
|||
<StringArray count="0"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<ServerEntry>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="chkAutoScroll">
|
||||
<Properties>
|
||||
<Property name="selected" type="boolean" value="true"/>
|
||||
<Property name="text" type="java.lang.String" value="AutoScroll"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chkAutoScrollActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JTextField" name="txtCommand">
|
||||
<Properties>
|
||||
|
|
|
@ -1,41 +1,16 @@
|
|||
package me.StevenLawson.BukkitTelnetClient;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.awt.event.*;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.net.URL;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JScrollBar;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.ListSelectionModel;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.SimpleAttributeSet;
|
||||
import javax.swing.text.StyleConstants;
|
||||
import javax.swing.text.StyleContext;
|
||||
import javax.swing.text.StyledDocument;
|
||||
import javax.swing.text.*;
|
||||
|
||||
public class BTC_MainPanel extends javax.swing.JFrame
|
||||
{
|
||||
|
@ -442,28 +417,55 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
public final void loadServerList()
|
||||
{
|
||||
txtServer.removeAllItems();
|
||||
|
||||
for (BTC_ConfigLoader.ServerEntry serverEntry : BukkitTelnetClient.config.getServers())
|
||||
for (final ServerEntry serverEntry : BukkitTelnetClient.config.getServers())
|
||||
{
|
||||
txtServer.addItem(serverEntry.getAddress());
|
||||
txtServer.addItem(serverEntry);
|
||||
if (serverEntry.isLastUsed())
|
||||
{
|
||||
txtServer.setSelectedItem(serverEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final void saveServersAndTriggerConnect()
|
||||
{
|
||||
final String selectedServer = (String) txtServer.getSelectedItem();
|
||||
final Object selectedItem = txtServer.getSelectedItem();
|
||||
|
||||
if (selectedServer == null || selectedServer.isEmpty())
|
||||
ServerEntry entry;
|
||||
if (selectedItem instanceof ServerEntry)
|
||||
{
|
||||
writeToConsole("Invalid server address.");
|
||||
return;
|
||||
entry = (ServerEntry) selectedItem;
|
||||
}
|
||||
else
|
||||
{
|
||||
String serverName = JOptionPane.showInputDialog(this, "Enter server name:", "Server Name", JOptionPane.PLAIN_MESSAGE).trim();
|
||||
|
||||
if (serverName.isEmpty())
|
||||
{
|
||||
serverName = "Unnamed";
|
||||
}
|
||||
|
||||
entry = new ServerEntry(serverName, selectedItem.toString());
|
||||
|
||||
BukkitTelnetClient.config.getServers().add(entry);
|
||||
}
|
||||
|
||||
BukkitTelnetClient.config.getServers().add(new BTC_ConfigLoader.ServerEntry("legacy", selectedServer));
|
||||
for (final ServerEntry existingEntry : BukkitTelnetClient.config.getServers())
|
||||
{
|
||||
if (entry.equals(existingEntry))
|
||||
{
|
||||
entry = existingEntry;
|
||||
}
|
||||
existingEntry.setLastUsed(false);
|
||||
}
|
||||
|
||||
entry.setLastUsed(true);
|
||||
|
||||
BukkitTelnetClient.config.save();
|
||||
|
||||
connectionManager.triggerConnect(selectedServer);
|
||||
loadServerList();
|
||||
|
||||
connectionManager.triggerConnect(entry.getAddress());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -477,7 +479,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
mainOutput = new javax.swing.JTextPane();
|
||||
btnDisconnect = new javax.swing.JButton();
|
||||
btnSend = new javax.swing.JButton();
|
||||
txtServer = new javax.swing.JComboBox();
|
||||
txtServer = new javax.swing.JComboBox<ServerEntry>();
|
||||
chkAutoScroll = new javax.swing.JCheckBox();
|
||||
txtCommand = new javax.swing.JTextField();
|
||||
btnConnect = new javax.swing.JButton();
|
||||
|
@ -525,13 +527,6 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
|
||||
chkAutoScroll.setSelected(true);
|
||||
chkAutoScroll.setText("AutoScroll");
|
||||
chkAutoScroll.addActionListener(new java.awt.event.ActionListener()
|
||||
{
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt)
|
||||
{
|
||||
chkAutoScrollActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
txtCommand.setEnabled(false);
|
||||
txtCommand.addKeyListener(new java.awt.event.KeyAdapter()
|
||||
|
@ -736,11 +731,6 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
}
|
||||
}//GEN-LAST:event_txtCommandKeyPressed
|
||||
|
||||
private void chkAutoScrollActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_chkAutoScrollActionPerformed
|
||||
{//GEN-HEADEREND:event_chkAutoScrollActionPerformed
|
||||
// updateTextPane("");
|
||||
}//GEN-LAST:event_chkAutoScrollActionPerformed
|
||||
|
||||
private void btnConnectActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnConnectActionPerformed
|
||||
{//GEN-HEADEREND:event_btnConnectActionPerformed
|
||||
if (!btnConnect.isEnabled())
|
||||
|
@ -796,7 +786,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
private javax.swing.JSplitPane splitPane;
|
||||
private javax.swing.JTable tblPlayers;
|
||||
private javax.swing.JTextField txtCommand;
|
||||
private javax.swing.JComboBox txtServer;
|
||||
private javax.swing.JComboBox<ServerEntry> txtServer;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
public javax.swing.JButton getBtnConnect()
|
||||
|
@ -824,7 +814,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
|||
return txtCommand;
|
||||
}
|
||||
|
||||
public javax.swing.JComboBox getTxtServer()
|
||||
public javax.swing.JComboBox<ServerEntry> getTxtServer()
|
||||
{
|
||||
return txtServer;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
package me.StevenLawson.BukkitTelnetClient;
|
||||
|
||||
import java.util.List;
|
||||
import org.w3c.dom.*;
|
||||
|
||||
public class PlayerCommandEntry
|
||||
{
|
||||
private final String name;
|
||||
private final String format;
|
||||
|
||||
public PlayerCommandEntry(String name, String format)
|
||||
{
|
||||
this.name = name;
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public String getFormat()
|
||||
{
|
||||
return format;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public static Element listToXML(final List<PlayerCommandEntry> playerCommands, final Document doc)
|
||||
{
|
||||
final Element plcElement = doc.createElement("playerCommands");
|
||||
|
||||
for (final PlayerCommandEntry command : playerCommands)
|
||||
{
|
||||
final Element commandElement = doc.createElement("playerCommand");
|
||||
plcElement.appendChild(commandElement);
|
||||
|
||||
final Element commandName = doc.createElement("name");
|
||||
commandName.appendChild(doc.createTextNode(command.getName()));
|
||||
commandElement.appendChild(commandName);
|
||||
|
||||
final Element commandFormat = doc.createElement("format");
|
||||
commandFormat.appendChild(doc.createTextNode(command.getFormat()));
|
||||
commandElement.appendChild(commandFormat);
|
||||
}
|
||||
|
||||
return plcElement;
|
||||
}
|
||||
|
||||
public static boolean xmlToList(final List<PlayerCommandEntry> playerCommands, final Document doc)
|
||||
{
|
||||
NodeList playerCommandNodes = doc.getDocumentElement().getElementsByTagName("playerCommands");
|
||||
if (playerCommandNodes.getLength() < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
playerCommandNodes = playerCommandNodes.item(0).getChildNodes();
|
||||
|
||||
playerCommands.clear();
|
||||
|
||||
for (int i = 0; i < playerCommandNodes.getLength(); i++)
|
||||
{
|
||||
final Node node = playerCommandNodes.item(i);
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE)
|
||||
{
|
||||
final Element element = (Element) node;
|
||||
|
||||
final PlayerCommandEntry command = new PlayerCommandEntry(
|
||||
element.getElementsByTagName("name").item(0).getTextContent(),
|
||||
element.getElementsByTagName("format").item(0).getTextContent()
|
||||
);
|
||||
|
||||
playerCommands.add(command);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
package me.StevenLawson.BukkitTelnetClient;
|
||||
|
||||
import java.util.*;
|
||||
import org.w3c.dom.*;
|
||||
|
||||
public class ServerEntry
|
||||
{
|
||||
private String name;
|
||||
private String address;
|
||||
private boolean lastUsed = false;
|
||||
|
||||
public ServerEntry(final String name, final String address)
|
||||
{
|
||||
this.name = name;
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public ServerEntry(final String name, final String address, final boolean lastUsed)
|
||||
{
|
||||
this.name = name;
|
||||
this.address = address;
|
||||
this.lastUsed = lastUsed;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getAddress()
|
||||
{
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address)
|
||||
{
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public boolean isLastUsed()
|
||||
{
|
||||
return lastUsed;
|
||||
}
|
||||
|
||||
public void setLastUsed(boolean lastUsed)
|
||||
{
|
||||
this.lastUsed = lastUsed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 7;
|
||||
hash = 67 * hash + Objects.hashCode(this.name);
|
||||
hash = 67 * hash + Objects.hashCode(this.address);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final ServerEntry other = (ServerEntry) obj;
|
||||
|
||||
if (!Objects.equals(this.getName(), other.getName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Objects.equals(this.getAddress(), other.getAddress()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Element listToXML(final Set<ServerEntry> servers, final Document doc)
|
||||
{
|
||||
final Element serversElement = doc.createElement("servers");
|
||||
|
||||
for (final ServerEntry command : servers)
|
||||
{
|
||||
final Element commandElement = doc.createElement("server");
|
||||
serversElement.appendChild(commandElement);
|
||||
|
||||
final Element serverName = doc.createElement("name");
|
||||
serverName.appendChild(doc.createTextNode(command.getName()));
|
||||
commandElement.appendChild(serverName);
|
||||
|
||||
final Element serverAddress = doc.createElement("address");
|
||||
serverAddress.appendChild(doc.createTextNode(command.getAddress()));
|
||||
commandElement.appendChild(serverAddress);
|
||||
|
||||
final Element serverLastUsed = doc.createElement("lastUsed");
|
||||
serverLastUsed.appendChild(doc.createTextNode(Boolean.toString(command.isLastUsed())));
|
||||
commandElement.appendChild(serverLastUsed);
|
||||
}
|
||||
|
||||
return serversElement;
|
||||
}
|
||||
|
||||
public static boolean xmlToList(final Set<ServerEntry> servers, final Document doc)
|
||||
{
|
||||
NodeList serverNodes = doc.getDocumentElement().getElementsByTagName("servers");
|
||||
if (serverNodes.getLength() < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
serverNodes = serverNodes.item(0).getChildNodes();
|
||||
|
||||
servers.clear();
|
||||
|
||||
for (int i = 0; i < serverNodes.getLength(); i++)
|
||||
{
|
||||
final Node node = serverNodes.item(i);
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE)
|
||||
{
|
||||
final Element element = (Element) node;
|
||||
|
||||
final ServerEntry server = new ServerEntry(
|
||||
element.getElementsByTagName("name").item(0).getTextContent(),
|
||||
element.getElementsByTagName("address").item(0).getTextContent(),
|
||||
Boolean.valueOf(element.getElementsByTagName("lastUsed").item(0).getTextContent())
|
||||
);
|
||||
|
||||
servers.add(server);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return String.format("%s (%s)", this.name, this.address);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue