import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.sql.Connection; import java.sql.PreparedStatement; public class MultiThreadServer extends Thread { public static void main(String[] args) { System.out.println("Server"); ServerSocket server; try { server = new ServerSocket(1111); while (true) { Socket client = server.accept(); MultiThreadServer mt = new MultiThreadServer(client); mt.start(); } } catch (Exception e) { System.out.println(e.getMessage()); } } //------------------------------------------------------------------------------------------------------------------ private Socket server; public MultiThreadServer(Socket socket) { setServer(socket); } //Setter public void setServer(Socket server) { this.server = server; } //run - Methode public void run() { boolean activeClient = false; try { BufferedReader reader = new BufferedReader(new InputStreamReader(server.getInputStream())); PrintWriter writer = new PrintWriter(new OutputStreamWriter(server.getOutputStream())); String input = reader.readLine(); if (input.equals("helloServer")) { activeClient = true; writer.println("CONNECTED"); writer.flush(); System.out.println("Connected with Client"); } input = reader.readLine(); try (Connection conn = DatabaseConnection.getConnection();) { while (!input.equals("EXIT")) { insertInDatabase(input, conn); input = reader.readLine(); } } System.out.println("EXIT"); } catch (Exception e) { System.out.println(e.getMessage()); } } private void insertInDatabase(String data, Connection conn) { try { String[] arr = data.split(";"); PreparedStatement pStmt = conn.prepareStatement("INSERT INTO WORKERS VALUES (?,?,?,?)"); pStmt.setInt(1, Integer.parseInt(arr[0])); pStmt.setString(2, arr[1]); pStmt.setString(3, arr[2]); pStmt.setString(4, arr[3]); pStmt.execute(); System.out.println("new Data inserted"); pStmt.addBatch(); } catch (Exception e) { System.out.println(e.getMessage()); } } } import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.util.ArrayList; import java.util.concurrent.TimeUnit; public class Client { public static void main(String[] args) { System.out.println("Client"); Client one = new Client("127.0.0.1", 1111); one.start(); } //------------------------------------------------------------------------------------------------------------------ private String ip; private int port; public Client(String ip, int port) { setPort(port); setIp(ip); } //Setter public void setPort(int port) { this.port = port; } public void setIp(String ip) { this.ip = ip; } private void start() { try { Socket clientSocket = new Socket(ip, port); BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream())); //Anmeldung writer.println("helloServer"); writer.flush(); //Anwort von Server if(reader.readLine().equals("CONNECTED")){ System.out.println("\tconnected"); } //Übertragungsprotokoll //ID;firstName;lastName;location DomParser one = new DomParser(); ArrayList list = one.readIn("C:\\Users\\Andreas\\Desktop\\employees.xml"); for(int i = 0; i readIn(String path) { ArrayList myList = new ArrayList<>(); try { //Get Document Builder DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); //Build Document Document document = builder.parse(new File(path)); //Normalize the XML Structure; It's just too important !! document.getDocumentElement().normalize(); //Get all employees NodeList nList = document.getElementsByTagName("employee"); for (int i = 0; i < nList.getLength(); i++) { Node node = nList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { String temp = ""; Element eElemt = (Element) node; temp+=eElemt.getAttribute("id")+";"; temp+=eElemt.getElementsByTagName("firstName").item(0).getTextContent()+";"; temp+=eElemt.getElementsByTagName("lastName").item(0).getTextContent()+";"; temp+=eElemt.getElementsByTagName("location").item(0).getTextContent(); myList.add(temp); } } } catch (Exception e) { System.out.println(e.getMessage()); } return myList; } } /////////////////////////////////////////////////////////////// import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static ServerSocket socket = null; public static void main(String[] args) { try { socket = new ServerSocket(5464); while(true){ Socket client = socket.accept(); ClientThread clientThread = new ClientThread(client); clientThread.start(); } } catch (IOException e) { e.printStackTrace(); } } } import java.io.*; import java.net.Socket; import java.net.UnknownHostException; public class Client extends Thread { private String clientName; public Client(String name){ this.clientName = name; } @Override public void run() { try { Socket socket = new Socket("127.0.0.1", 5464); OutputStream out = socket.getOutputStream(); ObjectOutputStream objectOut = new ObjectOutputStream(out); InputStream in = socket.getInputStream(); ObjectInputStream objectIn = new ObjectInputStream(in); //connect objectOut.writeUTF("connect"); objectOut.flush(); //send data School xmlData = new School(); objectOut.writeObject(xmlData); objectOut.flush(); System.out.println(objectIn.readUTF()); //disconnect objectOut.writeUTF("disconnect"); objectOut.flush(); System.out.println(objectIn.readUTF()); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } import java.io.*; import java.net.Socket; public class ClientThread extends Thread { private Socket socket; public ClientThread(Socket serverSocket) { this.socket = serverSocket; } @Override public void run() { try { OutputStream out = socket.getOutputStream(); ObjectOutputStream objectOut = new ObjectOutputStream(out); InputStream in = socket.getInputStream(); ObjectInputStream objectIn = new ObjectInputStream(in); String s; while (!(s = objectIn.readUTF()).equals("disconnect")) { if (s.equals("connect")) { System.out.println(s); School data = (School) objectIn.readObject(); printOutput(data); objectOut.writeUTF("server received data"); objectOut.flush(); } } System.out.println(s); objectOut.writeUTF("u got disconnected"); objectOut.flush(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } private void printOutput(School data) { data.getAllRegisterEntries().forEach(employee -> { System.out.println(employee.getEntryID()); System.out.println(employee.getDate()); System.out.println(employee.getEntryType()); System.out.println(employee.getEntryText()); System.out.println(employee.getTeacher()); }); } } 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; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; public class School implements Serializable { private ArrayListallRegisterEntries; public School() { this.allRegisterEntries = new ArrayList<>(); getXmlData(buildDoc()); } public ArrayList getAllRegisterEntries() { return allRegisterEntries; } public NodeList buildDoc(){ try { String filename = "data.xml"; File file = new File(filename); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(file); return document.getElementsByTagName("RegisterEntry"); } catch (ParserConfigurationException | SAXException | IOException e) { e.printStackTrace(); } return null; } public void getXmlData(NodeList nodeList){ for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); //get all Entry details Element element = (Element) node; //String id = node.getAttributes().getNamedItem("id").getNodeValue(); int id = Integer.parseInt(element.getAttribute("entyrID")); String date = element.getElementsByTagName("Date").item(0).getTextContent(); String entryType = element.getElementsByTagName("EntryType").item(0).getTextContent(); String entryText = element.getElementsByTagName("EntryText").item(0).getTextContent(); String teacher = element.getElementsByTagName("Teacher").item(0).getTextContent(); //add RegisterEntry to list RegisterEntry e = new RegisterEntry(id, date, entryType, entryText,teacher); allRegisterEntries.add(e); } } } import java.io.Serializable; public class RegisterEntry implements Serializable { private int entryID; private String date; private String entryType; private String entryText; private String teacher; public RegisterEntry(int entryID, String date, String entryType, String entryText, String teacher) { this.entryID = entryID; this.date = date; this.entryType = entryType; this.entryText = entryText; this.teacher = teacher; } public int getEntryID() { return entryID; } public String getDate() { return date; } public String getEntryType() { return entryType; } public String getEntryText() { return entryText; } public String getTeacher() { return teacher; } @Override public String toString() { return "RegisterEntry [id=" + entryID + ", date=" + date + ", entryType=" + entryType + ", entryText=" + entryText + ", teacher=" + teacher+"]"; } } public class Main { public static void main(String[] args) { Client client = new Client("1"); client.start(); } } /////////////////////////////////////// public class Main { public static void main(String [] args){ Training training = new Training("Training.xml"); System.out.println(training.calcEinheit(training.getEinheiten().get(0))); } } import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.util.ArrayList; public class Training { private ArrayList einheiten; public Training(ArrayList einheiten) { this.einheiten = einheiten; } public Training(String path) { einheiten = new ArrayList<>(); readDoc(getDoc(path)); } public NodeList getDoc(String path){ // lest xml Datei aus und gibt nodelist zurück File inputFile = new File(path); try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(inputFile); NodeList list = doc.getChildNodes(); return list; }catch (ParserConfigurationException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }catch (SAXException e) { e.printStackTrace(); } return null; } public void readDoc(NodeList list){ //sucht aus den Nodes die Trainingseinheiten rekursiv for(int i=0; i getEinheiten() { return einheiten; } } import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.text.DateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; public class TrainingsEinheit { private LocalDate datum; private ArrayList mitglieder=new ArrayList<>(); private ArrayList aktivitaeten=new ArrayList<>(); public TrainingsEinheit(LocalDate datum, ArrayList mitglieder, ArrayList aktivitaeten) { this.datum = datum; this.mitglieder = mitglieder; this.aktivitaeten = aktivitaeten; } public TrainingsEinheit(Node node) { // liest Datum, Mitlgieder und Sportaktivitaeten aus den Nodes aus DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); NodeList list = node.getChildNodes(); for(int i=0; i aktivitaeten) { this.datum = datum; this.mitglieder = new ArrayList(); this.mitglieder.add(person); this.aktivitaeten = aktivitaeten; } @Override public String toString() { return "TrainingsEinheit{" + "datum=" + datum + ", mitglieder=" + mitglieder + ", aktivitaeten=" + aktivitaeten + '}'; } public LocalDate getDatum() { return datum; } public ArrayList getMitglieder() { return mitglieder; } public ArrayList getAktivitaeten() { return aktivitaeten; } } import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; public class SportAktivitaet{ private String name; private LocalDateTime start; private LocalDateTime ende; private String geraet; private ArrayList daten=new ArrayList<>(); public SportAktivitaet(String name, LocalDateTime start, LocalDateTime ende, String geraet, ArrayList daten) { this.name = name; this.start = start; this.ende = ende; this.geraet = geraet; this.daten = daten; } public SportAktivitaet(String name, LocalDateTime start, LocalDateTime ende, ArrayList daten) { this.name = name; this.start = start; this.ende = ende; this.daten = daten; } public String getName() { return name; } public LocalDateTime getStart() { return start; } public LocalDateTime getEnde() { return ende; } public String getGeraet() { return geraet; } public ArrayList getDaten() { return daten; } public SportAktivitaet(Node node){ // Liest Start,Ende, Trainingsgeraet und TrainingsDaten aus if(node.hasAttributes()){ name=node.getAttributes().getNamedItem("name").getNodeValue(); } NodeList list = node.getChildNodes(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"); for(int i=0; i