Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package model;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.net.URISyntaxException;
- import java.net.URL;
- import java.util.ArrayList;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerConfigurationException;
- import javax.xml.transform.TransformerException;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import com.sun.org.apache.bcel.internal.util.ClassPath;
- import javafx.scene.control.Alert;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- /**
- * The XMLManager class is used to do operations on the XML file
- *
- * @author 2, 3
- */
- public class XMLManager
- {
- /**
- * the location of the XML file
- */
- private static File userfile = new File("Server/Resources/userlist.xml");
- //gets all the user nodes
- /**
- *
- * @return get a nodelist containing all the users in the XML file
- */
- public static NodeList getUserNodeList(){
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder;
- Document document = null;
- try {
- documentBuilder = documentBuilderFactory.newDocumentBuilder();
- document = documentBuilder.parse(userfile);
- document.getDocumentElement().normalize();
- }
- catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- catch (IOException ioe) {
- ioe.printStackTrace();
- }
- catch (SAXException sae) {
- sae.printStackTrace();
- }
- return document.getElementsByTagName("user");
- }
- //Generates the userlist from the xml file
- /**
- * This is used when the server starts. It reads the XML file and then returns an arraylist containing user objects.
- * Which is then used to set the observableUserList
- *
- * @return an arraylist containg the users from the XML file
- */
- public static ArrayList<User> xmlToList(){
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder;
- Document document = null;
- NodeList nodeList;
- ArrayList<User> userlist = new ArrayList<User>();
- try {
- documentBuilder = documentBuilderFactory.newDocumentBuilder();
- document = documentBuilder.parse(userfile);
- document.getDocumentElement().normalize();
- } catch(NullPointerException ne){
- Alert alert = new Alert(Alert.AlertType.ERROR);
- alert.setTitle("Error");
- alert.setResizable(true);
- alert.getDialogPane().setPrefSize(320, 200);
- alert.setHeaderText("Can not find the file containing the userlist!");
- alert.setContentText("userlist.xml is supposed to be located in Server/Resources folder, with a root element <Users></Users>");
- alert.showAndWait();
- System.exit(1);
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- } catch (SAXException sae) {
- sae.printStackTrace();
- }
- nodeList = document.getElementsByTagName("user");
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node userNode = nodeList.item(i);
- Element element = (Element) userNode;
- String username = element.getElementsByTagName("username").item(0).getTextContent();
- String password = element.getElementsByTagName("password").item(0).getTextContent();
- int userId = Integer.parseInt(element.getAttribute("id"));
- User user = new User(userId, username, password, UserStatus.OFFLINE);
- userlist.add(user);
- }
- return userlist;
- }
- //writes a new user to the xml file
- /**
- * This is used to write to the XML file when a new user is created
- * @param userId The userID that the user is to have
- * @param username The username that was chosen
- * @param password The password that was chosen
- */
- public static void writeToXml(int userId, String username, String password)
- {
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder;
- Document document = null;
- NodeList nodeList;
- Element rootElement = null;
- try {
- documentBuilder = documentBuilderFactory.newDocumentBuilder();
- document = documentBuilder.parse(userfile);
- document.getDocumentElement().normalize();
- rootElement = document.getDocumentElement();
- }
- catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- catch (IOException ioe) {
- ioe.printStackTrace();
- }
- catch (SAXException sae) {
- sae.printStackTrace();
- }
- Element newUser = document.createElement("user");
- Element xmlUsername = document.createElement("username");
- Element xmlPassword = document.createElement("password");
- newUser.setAttribute("id",Integer.toString(userId));
- xmlUsername.appendChild(document.createTextNode(username));
- xmlPassword.appendChild(document.createTextNode(password));
- newUser.appendChild(xmlUsername);
- newUser.appendChild(xmlPassword);
- rootElement.appendChild(newUser);
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- try {
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource domSource = new DOMSource(document);
- StreamResult streamResult = new StreamResult(userfile);
- transformer.transform(domSource, streamResult);
- DOMSource source = new DOMSource(document);
- } catch (TransformerConfigurationException e) {
- e.printStackTrace();
- } catch (TransformerException e) {
- e.printStackTrace();
- }
- }
- //Checks if username already exists in xml file
- /**
- * Checks if the username is already taken in the XML file
- * @param username the username to check
- * @return true or false depending on whether the username is taken or not
- */
- public static boolean checkUsername(String username) {
- NodeList nodeList = getUserNodeList();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node userNode = nodeList.item(i);
- Element element = (Element) userNode;
- if (username.equals(element.getElementsByTagName("username").item(0).getTextContent())) {
- return false;
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement