forked from IF-LK-2020/wordle
Diagramme hinzugefügt
This commit is contained in:
parent
5948e1c26b
commit
1c59594b05
228
Queue.java
228
Queue.java
|
@ -16,127 +16,127 @@
|
|||
* @version Generisch_02 2014-02-21
|
||||
*/
|
||||
public class Queue<ContentType> {
|
||||
|
||||
/* --------- Anfang der privaten inneren Klasse -------------- */
|
||||
|
||||
private class QueueNode {
|
||||
|
||||
/* --------- Anfang der privaten inneren Klasse -------------- */
|
||||
|
||||
private class QueueNode {
|
||||
|
||||
private ContentType content = null;
|
||||
private QueueNode nextNode = null;
|
||||
private ContentType content = null;
|
||||
private QueueNode nextNode = null;
|
||||
|
||||
/**
|
||||
* Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
|
||||
* Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
|
||||
*
|
||||
* @param pContent das Inhaltselement des Knotens vom Typ ContentType
|
||||
*/
|
||||
public QueueNode(ContentType pContent) {
|
||||
content = pContent;
|
||||
nextNode = null;
|
||||
}
|
||||
/**
|
||||
* Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
|
||||
* Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
|
||||
*
|
||||
* @param pContent das Inhaltselement des Knotens vom Typ ContentType
|
||||
*/
|
||||
public QueueNode(ContentType pContent) {
|
||||
content = pContent;
|
||||
nextNode = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
|
||||
* gesetzt.
|
||||
*
|
||||
* @param pNext der Nachfolger des Knotens
|
||||
*/
|
||||
public void setNext(QueueNode pNext) {
|
||||
nextNode = pNext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert das naechste Element des aktuellen Knotens.
|
||||
*
|
||||
* @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
|
||||
*/
|
||||
public QueueNode getNext() {
|
||||
return nextNode;
|
||||
}
|
||||
/**
|
||||
* Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
|
||||
* gesetzt.
|
||||
*
|
||||
* @param pNext der Nachfolger des Knotens
|
||||
*/
|
||||
public void setNext(QueueNode pNext) {
|
||||
nextNode = pNext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert das naechste Element des aktuellen Knotens.
|
||||
*
|
||||
* @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
|
||||
*/
|
||||
public QueueNode getNext() {
|
||||
return nextNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
|
||||
*
|
||||
* @return das Inhaltsobjekt des Knotens
|
||||
*/
|
||||
public ContentType getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ----------- Ende der privaten inneren Klasse -------------- */
|
||||
|
||||
private QueueNode head;
|
||||
private QueueNode tail;
|
||||
/**
|
||||
* Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
|
||||
*
|
||||
* @return das Inhaltsobjekt des Knotens
|
||||
*/
|
||||
public ContentType getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ----------- Ende der privaten inneren Klasse -------------- */
|
||||
|
||||
private QueueNode head;
|
||||
private QueueNode tail;
|
||||
|
||||
/**
|
||||
* Eine leere Schlange wird erzeugt.
|
||||
* Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
|
||||
* ContentType sein.
|
||||
*/
|
||||
public Queue() {
|
||||
head = null;
|
||||
tail = null;
|
||||
}
|
||||
/**
|
||||
* Eine leere Schlange wird erzeugt.
|
||||
* Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
|
||||
* ContentType sein.
|
||||
*/
|
||||
public Queue() {
|
||||
head = null;
|
||||
tail = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
|
||||
* sonst liefert sie den Wert false.
|
||||
*
|
||||
* @return true, falls die Schlange leer ist, sonst false
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return head == null;
|
||||
}
|
||||
/**
|
||||
* Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
|
||||
* sonst liefert sie den Wert false.
|
||||
*
|
||||
* @return true, falls die Schlange leer ist, sonst false
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return head == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Das Objekt pContentType wird an die Schlange angehaengt.
|
||||
* Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
|
||||
*
|
||||
* @param pContent
|
||||
* das anzuhaengende Objekt vom Typ ContentType
|
||||
*/
|
||||
public void enqueue(ContentType pContent) {
|
||||
if (pContent != null) {
|
||||
QueueNode newNode = new QueueNode(pContent);
|
||||
if (this.isEmpty()) {
|
||||
head = newNode;
|
||||
tail = newNode;
|
||||
} else {
|
||||
tail.setNext(newNode);
|
||||
tail = newNode;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Das Objekt pContentType wird an die Schlange angehaengt.
|
||||
* Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
|
||||
*
|
||||
* @param pContent
|
||||
* das anzuhaengende Objekt vom Typ ContentType
|
||||
*/
|
||||
public void enqueue(ContentType pContent) {
|
||||
if (pContent != null) {
|
||||
QueueNode newNode = new QueueNode(pContent);
|
||||
if (this.isEmpty()) {
|
||||
head = newNode;
|
||||
tail = newNode;
|
||||
} else {
|
||||
tail.setNext(newNode);
|
||||
tail = newNode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Das erste Objekt wird aus der Schlange entfernt.
|
||||
* Falls die Schlange leer ist, wird sie nicht veraendert.
|
||||
*/
|
||||
public void dequeue() {
|
||||
if (!this.isEmpty()) {
|
||||
head = head.getNext();
|
||||
if (this.isEmpty()) {
|
||||
head = null;
|
||||
tail = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Das erste Objekt wird aus der Schlange entfernt.
|
||||
* Falls die Schlange leer ist, wird sie nicht veraendert.
|
||||
*/
|
||||
public void dequeue() {
|
||||
if (!this.isEmpty()) {
|
||||
head = head.getNext();
|
||||
if (this.isEmpty()) {
|
||||
head = null;
|
||||
tail = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Die Anfrage liefert das erste Objekt der Schlange.
|
||||
* Die Schlange bleibt unveraendert.
|
||||
* Falls die Schlange leer ist, wird null zurueckgegeben.
|
||||
*
|
||||
* @return das erste Objekt der Schlange vom Typ ContentType oder null,
|
||||
* falls die Schlange leer ist
|
||||
*/
|
||||
public ContentType front() {
|
||||
if (this.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return head.getContent();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Die Anfrage liefert das erste Objekt der Schlange.
|
||||
* Die Schlange bleibt unveraendert.
|
||||
* Falls die Schlange leer ist, wird null zurueckgegeben.
|
||||
*
|
||||
* @return das erste Objekt der Schlange vom Typ ContentType oder null,
|
||||
* falls die Schlange leer ist
|
||||
*/
|
||||
public ContentType front() {
|
||||
if (this.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return head.getContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
106
Server.java
106
Server.java
|
@ -244,16 +244,16 @@ public abstract class Server
|
|||
|
||||
public boolean isOpen()
|
||||
{
|
||||
return(connectionHandler.active);
|
||||
return(connectionHandler.active);
|
||||
}
|
||||
|
||||
public boolean isConnectedTo(String pClientIP, int pClientPort)
|
||||
{
|
||||
ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort);
|
||||
ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort);
|
||||
if (aMessageHandler != null)
|
||||
return(aMessageHandler.active);
|
||||
return(aMessageHandler.active);
|
||||
else
|
||||
return(false);
|
||||
return(false);
|
||||
}
|
||||
|
||||
public void send(String pClientIP, int pClientPort, String pMessage)
|
||||
|
@ -265,15 +265,15 @@ public abstract class Server
|
|||
|
||||
public void sendToAll(String pMessage)
|
||||
{
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
messageHandlers.getContent().send(pMessage);
|
||||
messageHandlers.next();
|
||||
}
|
||||
}
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
messageHandlers.getContent().send(pMessage);
|
||||
messageHandlers.next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void closeConnection(String pClientIP, int pClientPort)
|
||||
|
@ -294,15 +294,15 @@ public abstract class Server
|
|||
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
ClientMessageHandler aMessageHandler;
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
aMessageHandler = messageHandlers.getContent();
|
||||
processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort());
|
||||
aMessageHandler.close();
|
||||
messageHandlers.remove();
|
||||
}
|
||||
ClientMessageHandler aMessageHandler;
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
aMessageHandler = messageHandlers.getContent();
|
||||
processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort());
|
||||
aMessageHandler.close();
|
||||
messageHandlers.remove();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -314,46 +314,46 @@ public abstract class Server
|
|||
|
||||
private void addNewClientMessageHandler(Socket pClientSocket)
|
||||
{
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.append(new Server.ClientMessageHandler(pClientSocket));
|
||||
}
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.append(new Server.ClientMessageHandler(pClientSocket));
|
||||
}
|
||||
}
|
||||
|
||||
private void removeClientMessageHandler(ClientMessageHandler pClientMessageHandler)
|
||||
{
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
if (pClientMessageHandler == messageHandlers.getContent())
|
||||
{
|
||||
messageHandlers.remove();
|
||||
return;
|
||||
}
|
||||
else
|
||||
messageHandlers.next();
|
||||
}
|
||||
}
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
messageHandlers.toFirst();
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
if (pClientMessageHandler == messageHandlers.getContent())
|
||||
{
|
||||
messageHandlers.remove();
|
||||
return;
|
||||
}
|
||||
else
|
||||
messageHandlers.next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private ClientMessageHandler findClientMessageHandler(String pClientIP, int pClientPort)
|
||||
{
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
ClientMessageHandler aMessageHandler;
|
||||
messageHandlers.toFirst();
|
||||
synchronized(messageHandlers)
|
||||
{
|
||||
ClientMessageHandler aMessageHandler;
|
||||
messageHandlers.toFirst();
|
||||
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
aMessageHandler = messageHandlers.getContent();
|
||||
if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort)
|
||||
return (aMessageHandler);
|
||||
messageHandlers.next();
|
||||
}
|
||||
return (null);
|
||||
}
|
||||
while (messageHandlers.hasAccess())
|
||||
{
|
||||
aMessageHandler = messageHandlers.getContent();
|
||||
if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort)
|
||||
return (aMessageHandler);
|
||||
messageHandlers.next();
|
||||
}
|
||||
return (null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,145 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<diagram program="umlet" version="14.3.0">
|
||||
<zoom_level>8</zoom_level>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>224</x>
|
||||
<y>400</y>
|
||||
<w>360</w>
|
||||
<h>128</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: WordleServer_
|
||||
--
|
||||
+ int DEFAULT_PORT
|
||||
+ DatabaseConnector db
|
||||
--
|
||||
+ WordleServer
|
||||
+ WordleServer(int pPort)
|
||||
+ processNewConnection(String pClientIP, int pClientPort)
|
||||
+ processClosingConnection(String pClientIP, int pClientPort)
|
||||
+ processMessage(String pClientIP, int pClientPort, String pMessage)</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>312</x>
|
||||
<y>272</y>
|
||||
<w>168</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: Server_
|
||||
--
|
||||
|
||||
</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>632</y>
|
||||
<w>168</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: Queue<ContentType>_
|
||||
--
|
||||
</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>320</x>
|
||||
<y>632</y>
|
||||
<w>168</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: DatabaseConnector_
|
||||
--
|
||||
</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>312</x>
|
||||
<y>136</y>
|
||||
<w>168</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: List<ContentType>_
|
||||
--
|
||||
</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>552</x>
|
||||
<y>632</y>
|
||||
<w>168</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_object: QueryResult_
|
||||
--
|
||||
</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>392</x>
|
||||
<y>320</y>
|
||||
<w>24</w>
|
||||
<h>96</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<<<-</panel_attributes>
|
||||
<additional_attributes>10.0;100.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>392</x>
|
||||
<y>184</y>
|
||||
<w>24</w>
|
||||
<h>104</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<..</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;10.0;110.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>392</x>
|
||||
<y>520</y>
|
||||
<w>24</w>
|
||||
<h>128</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<..</panel_attributes>
|
||||
<additional_attributes>10.0;140.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>240</x>
|
||||
<y>648</y>
|
||||
<w>96</w>
|
||||
<h>24</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<..</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;100.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>480</x>
|
||||
<y>648</y>
|
||||
<w>88</w>
|
||||
<h>24</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<..</panel_attributes>
|
||||
<additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
</diagram>
|
|
@ -0,0 +1,169 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<diagram program="umlet" version="14.3.0">
|
||||
<zoom_level>8</zoom_level>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>584</x>
|
||||
<y>160</y>
|
||||
<w>80</w>
|
||||
<h>24</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_Client 2_</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>120</x>
|
||||
<y>160</y>
|
||||
<w>80</w>
|
||||
<h>24</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_Client 1_</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>352</x>
|
||||
<y>160</y>
|
||||
<w>80</w>
|
||||
<h>24</h>
|
||||
</coordinates>
|
||||
<panel_attributes>_Wordle Server_</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>152</x>
|
||||
<y>176</y>
|
||||
<w>24</w>
|
||||
<h>536</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=.</panel_attributes>
|
||||
<additional_attributes>10.0;650.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>384</x>
|
||||
<y>176</y>
|
||||
<w>24</w>
|
||||
<h>536</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=.</panel_attributes>
|
||||
<additional_attributes>10.0;650.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>616</x>
|
||||
<y>176</y>
|
||||
<w>24</w>
|
||||
<h>536</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=.</panel_attributes>
|
||||
<additional_attributes>10.0;650.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>376</x>
|
||||
<y>240</y>
|
||||
<w>16</w>
|
||||
<h>56</h>
|
||||
</coordinates>
|
||||
<panel_attributes/>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>152</x>
|
||||
<y>216</y>
|
||||
<w>240</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>280.0;30.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>152</x>
|
||||
<y>288</y>
|
||||
<w>240</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;30.0;280.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>400</x>
|
||||
<y>280</y>
|
||||
<w>240</w>
|
||||
<h>48</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;280.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>400</x>
|
||||
<y>352</y>
|
||||
<w>240</w>
|
||||
<h>48</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>280.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>392</x>
|
||||
<y>312</y>
|
||||
<w>16</w>
|
||||
<h>48</h>
|
||||
</coordinates>
|
||||
<panel_attributes/>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>152</x>
|
||||
<y>328</y>
|
||||
<w>240</w>
|
||||
<h>48</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>280.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLGeneric</id>
|
||||
<coordinates>
|
||||
<x>376</x>
|
||||
<y>360</y>
|
||||
<w>16</w>
|
||||
<h>48</h>
|
||||
</coordinates>
|
||||
<panel_attributes/>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>152</x>
|
||||
<y>400</y>
|
||||
<w>240</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;30.0;280.0;10.0</additional_attributes>
|
||||
</element>
|
||||
</diagram>
|
|
@ -4,14 +4,14 @@
|
|||
*/
|
||||
public class WordleServer extends Server {
|
||||
|
||||
publib static final int DEFAULT_PORT = 1000;
|
||||
public static final int DEFAULT_PORT = 1000;
|
||||
|
||||
public static void main( String[] args ) {
|
||||
new WordleServer();
|
||||
}
|
||||
|
||||
|
||||
private DatabaseConnector db;
|
||||
private DatabaseConnector db;
|
||||
|
||||
|
||||
public WordleServer() {
|
||||
|
|
122
package.bluej
122
package.bluej
|
@ -1,91 +1,79 @@
|
|||
#BlueJ package file
|
||||
dependency1.from=DecisionNode
|
||||
dependency1.to=Dataset
|
||||
dependency1.from=DatabaseConnector
|
||||
dependency1.to=QueryResult
|
||||
dependency1.type=UsesDependency
|
||||
dependency2.from=Classification
|
||||
dependency2.to=Dataset
|
||||
dependency2.from=DatabaseConnector
|
||||
dependency2.to=Queue
|
||||
dependency2.type=UsesDependency
|
||||
dependency3.from=Decision
|
||||
dependency3.to=Dataset
|
||||
dependency3.from=Server
|
||||
dependency3.to=List
|
||||
dependency3.type=UsesDependency
|
||||
dependency4.from=DecisionTreeBuilder
|
||||
dependency4.to=BinaryTree
|
||||
dependency4.from=WordleServer
|
||||
dependency4.to=DatabaseConnector
|
||||
dependency4.type=UsesDependency
|
||||
dependency5.from=DecisionTreeBuilder
|
||||
dependency5.to=DecisionNode
|
||||
dependency5.type=UsesDependency
|
||||
dependency6.from=DecisionTreeBuilder
|
||||
dependency6.to=Classification
|
||||
dependency6.type=UsesDependency
|
||||
dependency7.from=DecisionTreeBuilder
|
||||
dependency7.to=Decision
|
||||
dependency7.type=UsesDependency
|
||||
dependency8.from=DecisionTreeBuilder
|
||||
dependency8.to=Dataset
|
||||
dependency8.type=UsesDependency
|
||||
editor.fx.0.height=722
|
||||
editor.fx.0.width=800
|
||||
editor.fx.0.x=388
|
||||
editor.fx.0.y=50
|
||||
objectbench.height=66
|
||||
objectbench.width=1201
|
||||
editor.fx.0.height=1017
|
||||
editor.fx.0.width=854
|
||||
editor.fx.0.x=-7
|
||||
editor.fx.0.y=0
|
||||
objectbench.height=96
|
||||
objectbench.width=653
|
||||
package.divider.horizontal=0.6
|
||||
package.divider.vertical=0.8983286908077994
|
||||
package.editor.height=622
|
||||
package.editor.width=1078
|
||||
package.editor.x=39
|
||||
package.editor.y=24
|
||||
package.frame.height=776
|
||||
package.frame.width=1241
|
||||
package.numDependencies=8
|
||||
package.divider.vertical=0.8876772082878953
|
||||
package.editor.height=794
|
||||
package.editor.width=542
|
||||
package.editor.x=0
|
||||
package.editor.y=0
|
||||
package.frame.height=1017
|
||||
package.frame.width=693
|
||||
package.numDependencies=4
|
||||
package.numTargets=6
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
readme.height=58
|
||||
readme.height=60
|
||||
readme.name=@README
|
||||
readme.width=47
|
||||
readme.width=49
|
||||
readme.x=10
|
||||
readme.y=10
|
||||
target1.height=40
|
||||
target1.name=Classification
|
||||
target1.height=70
|
||||
target1.name=DatabaseConnector
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.width=210
|
||||
target1.x=40
|
||||
target1.y=460
|
||||
target2.height=50
|
||||
target2.name=Decision
|
||||
target1.width=150
|
||||
target1.x=410
|
||||
target1.y=100
|
||||
target2.height=70
|
||||
target2.name=QueryResult
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.width=190
|
||||
target2.width=120
|
||||
target2.x=300
|
||||
target2.y=460
|
||||
target3.height=120
|
||||
target3.name=BinaryTree
|
||||
target2.y=190
|
||||
target3.height=70
|
||||
target3.name=Server
|
||||
target3.showInterface=false
|
||||
target3.type=ClassTarget
|
||||
target3.width=440
|
||||
target3.x=890
|
||||
target3.y=250
|
||||
target4.height=40
|
||||
target4.name=Dataset
|
||||
target3.type=AbstractTarget
|
||||
target3.width=120
|
||||
target3.x=540
|
||||
target3.y=410
|
||||
target4.height=70
|
||||
target4.name=WordleServer
|
||||
target4.showInterface=false
|
||||
target4.type=ClassTarget
|
||||
target4.width=270
|
||||
target4.x=430
|
||||
target4.y=30
|
||||
target5.height=50
|
||||
target5.name=DecisionNode
|
||||
target4.width=120
|
||||
target4.x=530
|
||||
target4.y=240
|
||||
target5.height=70
|
||||
target5.name=List
|
||||
target5.showInterface=false
|
||||
target5.type=AbstractTarget
|
||||
target5.width=110
|
||||
target5.x=210
|
||||
target5.y=290
|
||||
target6.height=60
|
||||
target6.name=DecisionTreeBuilder
|
||||
target5.type=ClassTarget
|
||||
target5.width=150
|
||||
target5.x=290
|
||||
target5.y=530
|
||||
target6.height=70
|
||||
target6.name=Queue
|
||||
target6.showInterface=false
|
||||
target6.type=ClassTarget
|
||||
target6.width=270
|
||||
target6.x=580
|
||||
target6.y=230
|
||||
target6.width=160
|
||||
target6.x=280
|
||||
target6.y=420
|
||||
|
|
Loading…
Reference in New Issue