From dfd55a28ea4371703e5177f3c22d16cb66b52e54 Mon Sep 17 00:00:00 2001 From: obai Albek <3009594@stud.hs-mannheim.de> Date: Sun, 14 Sep 2025 05:21:19 +0200 Subject: [PATCH] Add Commits to Code --- MyLocalChat/doc/allclasses-index.html | 113 +++ MyLocalChat/doc/allpackages-index.html | 75 ++ MyLocalChat/doc/app/Main.html | 159 ++++ MyLocalChat/doc/app/class-use/Main.html | 58 ++ MyLocalChat/doc/app/package-summary.html | 83 ++ MyLocalChat/doc/app/package-tree.html | 72 ++ MyLocalChat/doc/app/package-use.html | 58 ++ MyLocalChat/doc/domain/ChatRoom.html | 215 +++++ MyLocalChat/doc/domain/GruppenRoom.html | 319 +++++++ MyLocalChat/doc/domain/Message.html | 258 ++++++ MyLocalChat/doc/domain/MessageType.html | 242 +++++ MyLocalChat/doc/domain/User.html | 244 +++++ MyLocalChat/doc/domain/UserChatRoom.html | 231 +++++ MyLocalChat/doc/domain/UserContacts.html | 204 ++++ MyLocalChat/doc/domain/UserGruppen.html | 128 +++ MyLocalChat/doc/domain/UserGruppenRoom.html | 213 +++++ MyLocalChat/doc/domain/UserInfo.html | 258 ++++++ .../doc/domain/class-use/ChatRoom.html | 98 ++ .../doc/domain/class-use/GruppenRoom.html | 98 ++ MyLocalChat/doc/domain/class-use/Message.html | 95 ++ .../doc/domain/class-use/MessageType.html | 114 +++ MyLocalChat/doc/domain/class-use/User.html | 174 ++++ .../doc/domain/class-use/UserChatRoom.html | 83 ++ .../doc/domain/class-use/UserContacts.html | 83 ++ .../doc/domain/class-use/UserGruppen.html | 58 ++ .../doc/domain/class-use/UserGruppenRoom.html | 83 ++ .../doc/domain/class-use/UserInfo.html | 103 +++ MyLocalChat/doc/domain/package-summary.html | 107 +++ MyLocalChat/doc/domain/package-tree.html | 94 ++ MyLocalChat/doc/domain/package-use.html | 96 ++ MyLocalChat/doc/element-list | 6 + MyLocalChat/doc/fassade/ChatService.html | 296 ++++++ .../doc/fassade/class-use/ChatService.html | 58 ++ MyLocalChat/doc/fassade/package-summary.html | 83 ++ MyLocalChat/doc/fassade/package-tree.html | 72 ++ MyLocalChat/doc/fassade/package-use.html | 58 ++ MyLocalChat/doc/help-doc.html | 187 ++++ MyLocalChat/doc/index-files/index-1.html | 84 ++ MyLocalChat/doc/index-files/index-10.html | 64 ++ MyLocalChat/doc/index-files/index-11.html | 80 ++ MyLocalChat/doc/index-files/index-12.html | 72 ++ MyLocalChat/doc/index-files/index-13.html | 98 ++ MyLocalChat/doc/index-files/index-14.html | 126 +++ MyLocalChat/doc/index-files/index-15.html | 90 ++ MyLocalChat/doc/index-files/index-16.html | 82 ++ MyLocalChat/doc/index-files/index-2.html | 66 ++ MyLocalChat/doc/index-files/index-3.html | 98 ++ MyLocalChat/doc/index-files/index-4.html | 64 ++ MyLocalChat/doc/index-files/index-5.html | 66 ++ MyLocalChat/doc/index-files/index-6.html | 66 ++ MyLocalChat/doc/index-files/index-7.html | 146 +++ MyLocalChat/doc/index-files/index-8.html | 64 ++ MyLocalChat/doc/index-files/index-9.html | 82 ++ MyLocalChat/doc/index.html | 74 ++ MyLocalChat/doc/jquery-ui.overrides.css | 35 + MyLocalChat/doc/legal/ASSEMBLY_EXCEPTION | 27 + MyLocalChat/doc/legal/jquery.md | 26 + MyLocalChat/doc/legal/jqueryUI.md | 49 + MyLocalChat/doc/member-search-index.js | 1 + MyLocalChat/doc/module-search-index.js | 1 + MyLocalChat/doc/overview-summary.html | 26 + MyLocalChat/doc/overview-tree.html | 130 +++ MyLocalChat/doc/package-search-index.js | 1 + MyLocalChat/doc/resources/glass.png | Bin 0 -> 499 bytes MyLocalChat/doc/resources/x.png | Bin 0 -> 394 bytes .../doc/script-dir/jquery-3.7.1.min.js | 2 + MyLocalChat/doc/script-dir/jquery-ui.min.css | 6 + MyLocalChat/doc/script-dir/jquery-ui.min.js | 6 + MyLocalChat/doc/script.js | 132 +++ MyLocalChat/doc/search.js | 354 +++++++ MyLocalChat/doc/serialized-form.html | 98 ++ MyLocalChat/doc/server/ChatServer.html | 159 ++++ .../doc/server/class-use/ChatServer.html | 58 ++ MyLocalChat/doc/server/package-summary.html | 83 ++ MyLocalChat/doc/server/package-tree.html | 72 ++ MyLocalChat/doc/server/package-use.html | 58 ++ MyLocalChat/doc/stylesheet.css | 869 ++++++++++++++++++ MyLocalChat/doc/tag-search-index.js | 1 + MyLocalChat/doc/test/ChatRoomTest.html | 177 ++++ MyLocalChat/doc/test/ChatServiceTest.html | 213 +++++ MyLocalChat/doc/test/ExceptionTest.html | 195 ++++ MyLocalChat/doc/test/GruppenRoomTest.html | 186 ++++ MyLocalChat/doc/test/IntegrationTest.html | 168 ++++ MyLocalChat/doc/test/MessageTest.html | 177 ++++ MyLocalChat/doc/test/UserTest.html | 186 ++++ .../doc/test/class-use/ChatRoomTest.html | 58 ++ .../doc/test/class-use/ChatServiceTest.html | 58 ++ .../doc/test/class-use/ExceptionTest.html | 58 ++ .../doc/test/class-use/GruppenRoomTest.html | 58 ++ .../doc/test/class-use/IntegrationTest.html | 58 ++ .../doc/test/class-use/MessageTest.html | 58 ++ MyLocalChat/doc/test/class-use/UserTest.html | 58 ++ MyLocalChat/doc/test/package-summary.html | 95 ++ MyLocalChat/doc/test/package-tree.html | 78 ++ MyLocalChat/doc/test/package-use.html | 58 ++ MyLocalChat/doc/type-search-index.js | 1 + MyLocalChat/doc/ui/Chat.html | 202 ++++ MyLocalChat/doc/ui/class-use/Chat.html | 58 ++ MyLocalChat/doc/ui/package-summary.html | 83 ++ MyLocalChat/doc/ui/package-tree.html | 92 ++ MyLocalChat/doc/ui/package-use.html | 58 ++ .../src/main/java/domain/ChatRoom.java | 93 +- .../src/main/java/domain/GruppenRoom.java | 148 ++- MyLocalChat/src/main/java/domain/Message.java | 99 +- MyLocalChat/src/main/java/domain/User.java | 92 +- .../src/main/java/domain/UserChatRoom.java | 58 +- .../src/main/java/domain/UserContacts.java | 49 +- .../src/main/java/domain/UserGruppenRoom.java | 60 +- .../src/main/java/fassade/ChatService.java | 144 ++- .../src/main/java/server/ChatServer.java | 21 +- 110 files changed, 11700 insertions(+), 89 deletions(-) create mode 100644 MyLocalChat/doc/allclasses-index.html create mode 100644 MyLocalChat/doc/allpackages-index.html create mode 100644 MyLocalChat/doc/app/Main.html create mode 100644 MyLocalChat/doc/app/class-use/Main.html create mode 100644 MyLocalChat/doc/app/package-summary.html create mode 100644 MyLocalChat/doc/app/package-tree.html create mode 100644 MyLocalChat/doc/app/package-use.html create mode 100644 MyLocalChat/doc/domain/ChatRoom.html create mode 100644 MyLocalChat/doc/domain/GruppenRoom.html create mode 100644 MyLocalChat/doc/domain/Message.html create mode 100644 MyLocalChat/doc/domain/MessageType.html create mode 100644 MyLocalChat/doc/domain/User.html create mode 100644 MyLocalChat/doc/domain/UserChatRoom.html create mode 100644 MyLocalChat/doc/domain/UserContacts.html create mode 100644 MyLocalChat/doc/domain/UserGruppen.html create mode 100644 MyLocalChat/doc/domain/UserGruppenRoom.html create mode 100644 MyLocalChat/doc/domain/UserInfo.html create mode 100644 MyLocalChat/doc/domain/class-use/ChatRoom.html create mode 100644 MyLocalChat/doc/domain/class-use/GruppenRoom.html create mode 100644 MyLocalChat/doc/domain/class-use/Message.html create mode 100644 MyLocalChat/doc/domain/class-use/MessageType.html create mode 100644 MyLocalChat/doc/domain/class-use/User.html create mode 100644 MyLocalChat/doc/domain/class-use/UserChatRoom.html create mode 100644 MyLocalChat/doc/domain/class-use/UserContacts.html create mode 100644 MyLocalChat/doc/domain/class-use/UserGruppen.html create mode 100644 MyLocalChat/doc/domain/class-use/UserGruppenRoom.html create mode 100644 MyLocalChat/doc/domain/class-use/UserInfo.html create mode 100644 MyLocalChat/doc/domain/package-summary.html create mode 100644 MyLocalChat/doc/domain/package-tree.html create mode 100644 MyLocalChat/doc/domain/package-use.html create mode 100644 MyLocalChat/doc/element-list create mode 100644 MyLocalChat/doc/fassade/ChatService.html create mode 100644 MyLocalChat/doc/fassade/class-use/ChatService.html create mode 100644 MyLocalChat/doc/fassade/package-summary.html create mode 100644 MyLocalChat/doc/fassade/package-tree.html create mode 100644 MyLocalChat/doc/fassade/package-use.html create mode 100644 MyLocalChat/doc/help-doc.html create mode 100644 MyLocalChat/doc/index-files/index-1.html create mode 100644 MyLocalChat/doc/index-files/index-10.html create mode 100644 MyLocalChat/doc/index-files/index-11.html create mode 100644 MyLocalChat/doc/index-files/index-12.html create mode 100644 MyLocalChat/doc/index-files/index-13.html create mode 100644 MyLocalChat/doc/index-files/index-14.html create mode 100644 MyLocalChat/doc/index-files/index-15.html create mode 100644 MyLocalChat/doc/index-files/index-16.html create mode 100644 MyLocalChat/doc/index-files/index-2.html create mode 100644 MyLocalChat/doc/index-files/index-3.html create mode 100644 MyLocalChat/doc/index-files/index-4.html create mode 100644 MyLocalChat/doc/index-files/index-5.html create mode 100644 MyLocalChat/doc/index-files/index-6.html create mode 100644 MyLocalChat/doc/index-files/index-7.html create mode 100644 MyLocalChat/doc/index-files/index-8.html create mode 100644 MyLocalChat/doc/index-files/index-9.html create mode 100644 MyLocalChat/doc/index.html create mode 100644 MyLocalChat/doc/jquery-ui.overrides.css create mode 100644 MyLocalChat/doc/legal/ASSEMBLY_EXCEPTION create mode 100644 MyLocalChat/doc/legal/jquery.md create mode 100644 MyLocalChat/doc/legal/jqueryUI.md create mode 100644 MyLocalChat/doc/member-search-index.js create mode 100644 MyLocalChat/doc/module-search-index.js create mode 100644 MyLocalChat/doc/overview-summary.html create mode 100644 MyLocalChat/doc/overview-tree.html create mode 100644 MyLocalChat/doc/package-search-index.js create mode 100644 MyLocalChat/doc/resources/glass.png create mode 100644 MyLocalChat/doc/resources/x.png create mode 100644 MyLocalChat/doc/script-dir/jquery-3.7.1.min.js create mode 100644 MyLocalChat/doc/script-dir/jquery-ui.min.css create mode 100644 MyLocalChat/doc/script-dir/jquery-ui.min.js create mode 100644 MyLocalChat/doc/script.js create mode 100644 MyLocalChat/doc/search.js create mode 100644 MyLocalChat/doc/serialized-form.html create mode 100644 MyLocalChat/doc/server/ChatServer.html create mode 100644 MyLocalChat/doc/server/class-use/ChatServer.html create mode 100644 MyLocalChat/doc/server/package-summary.html create mode 100644 MyLocalChat/doc/server/package-tree.html create mode 100644 MyLocalChat/doc/server/package-use.html create mode 100644 MyLocalChat/doc/stylesheet.css create mode 100644 MyLocalChat/doc/tag-search-index.js create mode 100644 MyLocalChat/doc/test/ChatRoomTest.html create mode 100644 MyLocalChat/doc/test/ChatServiceTest.html create mode 100644 MyLocalChat/doc/test/ExceptionTest.html create mode 100644 MyLocalChat/doc/test/GruppenRoomTest.html create mode 100644 MyLocalChat/doc/test/IntegrationTest.html create mode 100644 MyLocalChat/doc/test/MessageTest.html create mode 100644 MyLocalChat/doc/test/UserTest.html create mode 100644 MyLocalChat/doc/test/class-use/ChatRoomTest.html create mode 100644 MyLocalChat/doc/test/class-use/ChatServiceTest.html create mode 100644 MyLocalChat/doc/test/class-use/ExceptionTest.html create mode 100644 MyLocalChat/doc/test/class-use/GruppenRoomTest.html create mode 100644 MyLocalChat/doc/test/class-use/IntegrationTest.html create mode 100644 MyLocalChat/doc/test/class-use/MessageTest.html create mode 100644 MyLocalChat/doc/test/class-use/UserTest.html create mode 100644 MyLocalChat/doc/test/package-summary.html create mode 100644 MyLocalChat/doc/test/package-tree.html create mode 100644 MyLocalChat/doc/test/package-use.html create mode 100644 MyLocalChat/doc/type-search-index.js create mode 100644 MyLocalChat/doc/ui/Chat.html create mode 100644 MyLocalChat/doc/ui/class-use/Chat.html create mode 100644 MyLocalChat/doc/ui/package-summary.html create mode 100644 MyLocalChat/doc/ui/package-tree.html create mode 100644 MyLocalChat/doc/ui/package-use.html diff --git a/MyLocalChat/doc/allclasses-index.html b/MyLocalChat/doc/allclasses-index.html new file mode 100644 index 0000000..588f6c8 --- /dev/null +++ b/MyLocalChat/doc/allclasses-index.html @@ -0,0 +1,113 @@ + + + + +All Classes and Interfaces + + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+
+ + diff --git a/MyLocalChat/doc/allpackages-index.html b/MyLocalChat/doc/allpackages-index.html new file mode 100644 index 0000000..62a3d09 --- /dev/null +++ b/MyLocalChat/doc/allpackages-index.html @@ -0,0 +1,75 @@ + + + + +All Packages + + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+ + diff --git a/MyLocalChat/doc/app/Main.html b/MyLocalChat/doc/app/Main.html new file mode 100644 index 0000000..d132db2 --- /dev/null +++ b/MyLocalChat/doc/app/Main.html @@ -0,0 +1,159 @@ + + + + +Main + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package app
+

Class Main

+
+
java.lang.Object +
app.Main
+
+
+
+
public class Main +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Main

      +
      public Main()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/app/class-use/Main.html b/MyLocalChat/doc/app/class-use/Main.html new file mode 100644 index 0000000..e98f275 --- /dev/null +++ b/MyLocalChat/doc/app/class-use/Main.html @@ -0,0 +1,58 @@ + + + + +Uses of Class app.Main + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
app.Main

+
+No usage of app.Main
+
+
+ + diff --git a/MyLocalChat/doc/app/package-summary.html b/MyLocalChat/doc/app/package-summary.html new file mode 100644 index 0000000..3378cfb --- /dev/null +++ b/MyLocalChat/doc/app/package-summary.html @@ -0,0 +1,83 @@ + + + + +app + + + + + + + + + + + + + + + +
+ +
+
+
+

Package app

+
+
+
package app
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
     
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/MyLocalChat/doc/app/package-tree.html b/MyLocalChat/doc/app/package-tree.html new file mode 100644 index 0000000..37c6df5 --- /dev/null +++ b/MyLocalChat/doc/app/package-tree.html @@ -0,0 +1,72 @@ + + + + +app Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package app

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/app/package-use.html b/MyLocalChat/doc/app/package-use.html new file mode 100644 index 0000000..4e4d54b --- /dev/null +++ b/MyLocalChat/doc/app/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package app + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
app

+
+No usage of app
+
+
+ + diff --git a/MyLocalChat/doc/domain/ChatRoom.html b/MyLocalChat/doc/domain/ChatRoom.html new file mode 100644 index 0000000..7200d80 --- /dev/null +++ b/MyLocalChat/doc/domain/ChatRoom.html @@ -0,0 +1,215 @@ + + + + +ChatRoom + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class ChatRoom

+
+
java.lang.Object +
domain.ChatRoom
+
+
+
+
public class ChatRoom +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatRoom

      +
      public ChatRoom(User user1, + User user2)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addMessage

      +
      public void addMessage(Message message)
      +
      +
    • +
    • +
      +

      getRoomId

      +
      public int getRoomId()
      +
      +
    • +
    • +
      +

      getUser1

      +
      public User getUser1()
      +
      +
    • +
    • +
      +

      getUser2

      +
      public User getUser2()
      +
      +
    • +
    • +
      +

      getMessages

      +
      public List<Message> getMessages()
      +
      +
    • +
    • +
      +

      getCreatedAt

      +
      public LocalDateTime getCreatedAt()
      +
      +
    • +
    • +
      +

      showMessages

      +
      public List<String> showMessages()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/GruppenRoom.html b/MyLocalChat/doc/domain/GruppenRoom.html new file mode 100644 index 0000000..1104bbc --- /dev/null +++ b/MyLocalChat/doc/domain/GruppenRoom.html @@ -0,0 +1,319 @@ + + + + +GruppenRoom + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class GruppenRoom

+
+
java.lang.Object +
domain.GruppenRoom
+
+
+
+
public class GruppenRoom +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GruppenRoom

      +
      public GruppenRoom(User creator, + String name, + String description)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addParticipant

      +
      public boolean addParticipant(User user)
      +
      +
    • +
    • +
      +

      removeParticipant

      +
      public boolean removeParticipant(User remover, + User userToRemove)
      +
      +
    • +
    • +
      +

      addAdmin

      +
      public boolean addAdmin(User promoter, + User userToPromote)
      +
      +
    • +
    • +
      +

      removeAdmin

      +
      public boolean removeAdmin(User demoter, + User userToDemote)
      +
      +
    • +
    • +
      +

      addMessage

      +
      public void addMessage(User sender, + String content)
      +
      +
    • +
    • +
      +

      showMessages

      +
      public List<String> showMessages()
      +
      +
    • +
    • +
      +

      isAdmin

      +
      public boolean isAdmin(User user)
      +
      +
    • +
    • +
      +

      isParticipant

      +
      public boolean isParticipant(User user)
      +
      +
    • +
    • +
      +

      getGroupId

      +
      public int getGroupId()
      +
      +
    • +
    • +
      +

      getCreator

      +
      public User getCreator()
      +
      +
    • +
    • +
      +

      getName

      +
      public String getName()
      +
      +
    • +
    • +
      +

      getDescription

      +
      public String getDescription()
      +
      +
    • +
    • +
      +

      getCreatedAt

      +
      public LocalDateTime getCreatedAt()
      +
      +
    • +
    • +
      +

      getAdmins

      +
      public List<User> getAdmins()
      +
      +
    • +
    • +
      +

      getParticipants

      +
      public List<User> getParticipants()
      +
      +
    • +
    • +
      +

      getMessages

      +
      public List<Message> getMessages()
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/Message.html b/MyLocalChat/doc/domain/Message.html new file mode 100644 index 0000000..85421ef --- /dev/null +++ b/MyLocalChat/doc/domain/Message.html @@ -0,0 +1,258 @@ + + + + +Message + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class Message

+
+
java.lang.Object +
domain.Message
+
+
+
+
public class Message +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Message

      +
      public Message(User sender, + String content)
      +
      +
    • +
    • +
      +

      Message

      +
      public Message(User sender, + String content, + MessageType type)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toTimeString

      +
      public String toTimeString()
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    • +
      +

      getSender

      +
      public User getSender()
      +
      +
    • +
    • +
      +

      setSender

      +
      public void setSender(User sender)
      +
      +
    • +
    • +
      +

      getContent

      +
      public String getContent()
      +
      +
    • +
    • +
      +

      setContent

      +
      public void setContent(String content)
      +
      +
    • +
    • +
      +

      getTimestamp

      +
      public LocalDateTime getTimestamp()
      +
      +
    • +
    • +
      +

      setTimestamp

      +
      public void setTimestamp(LocalDateTime timestamp)
      +
      +
    • +
    • +
      +

      getType

      +
      public MessageType getType()
      +
      +
    • +
    • +
      +

      setType

      +
      public void setType(MessageType type)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/MessageType.html b/MyLocalChat/doc/domain/MessageType.html new file mode 100644 index 0000000..3e25bfc --- /dev/null +++ b/MyLocalChat/doc/domain/MessageType.html @@ -0,0 +1,242 @@ + + + + +MessageType + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Enum MessageType

+
+
java.lang.Object +
java.lang.Enum<MessageType> +
domain.MessageType
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<MessageType>, java.lang.constant.Constable
+
+
+
public enum MessageType +extends Enum<MessageType>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      TEXT

      +
      public static final MessageType TEXT
      +
      +
    • +
    • +
      +

      IMAGE

      +
      public static final MessageType IMAGE
      +
      +
    • +
    • +
      +

      FILE

      +
      public static final MessageType FILE
      +
      +
    • +
    • + +
    • +
    • +
      +

      SYSTEM

      +
      public static final MessageType SYSTEM
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static MessageType[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static MessageType valueOf(String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum type has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/User.html b/MyLocalChat/doc/domain/User.html new file mode 100644 index 0000000..1ee659d --- /dev/null +++ b/MyLocalChat/doc/domain/User.html @@ -0,0 +1,244 @@ + + + + +User + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class User

+
+
java.lang.Object +
domain.User
+
+
+
+
public class User +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      User

      +
      public User(String username)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getUserId

      +
      public int getUserId()
      +
      +
    • +
    • +
      +

      isOnline

      +
      public boolean isOnline()
      +
      +
    • +
    • +
      +

      setOnline

      +
      public void setOnline(boolean isOnline)
      +
      +
    • +
    • +
      +

      getUsername

      +
      public String getUsername()
      +
      +
    • +
    • +
      +

      getUserInfo

      +
      public UserInfo getUserInfo()
      +
      +
    • +
    • +
      +

      setUserInfo

      +
      public void setUserInfo(UserInfo userInfo)
      +
      +
    • +
    • +
      +

      getUserContacts

      +
      public UserContacts getUserContacts()
      +
      +
    • +
    • +
      +

      getUserChatRoom

      +
      public UserChatRoom getUserChatRoom()
      +
      +
    • +
    • +
      +

      getUserGruppenRoom

      +
      public UserGruppenRoom getUserGruppenRoom()
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/UserChatRoom.html b/MyLocalChat/doc/domain/UserChatRoom.html new file mode 100644 index 0000000..21c767d --- /dev/null +++ b/MyLocalChat/doc/domain/UserChatRoom.html @@ -0,0 +1,231 @@ + + + + +UserChatRoom + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class UserChatRoom

+
+
java.lang.Object +
domain.UserChatRoom
+
+
+
+
public class UserChatRoom +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      UserChatRoom

      +
      public UserChatRoom()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addChat

      +
      public boolean addChat(ChatRoom chatRoom)
      +
      +
    • +
    • +
      +

      removeChat

      +
      public boolean removeChat(ChatRoom chatRoom)
      +
      +
    • +
    • +
      +

      getAllChatRooms

      +
      public List<ChatRoom> getAllChatRooms()
      +
      +
    • +
    • +
      +

      getChatRoomIds

      +
      public List<Integer> getChatRoomIds()
      +
      +
    • +
    • +
      +

      contains

      +
      public boolean contains(ChatRoom chatRoom)
      +
      +
    • +
    • +
      +

      getChatRoomCount

      +
      public int getChatRoomCount()
      +
      +
    • +
    • +
      +

      isEmpty

      +
      public boolean isEmpty()
      +
      +
    • +
    • +
      +

      clearChatRooms

      +
      public void clearChatRooms()
      +
      +
    • +
    • +
      +

      getChatRoomInfos

      +
      public List<String> getChatRoomInfos()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/UserContacts.html b/MyLocalChat/doc/domain/UserContacts.html new file mode 100644 index 0000000..acc2643 --- /dev/null +++ b/MyLocalChat/doc/domain/UserContacts.html @@ -0,0 +1,204 @@ + + + + +UserContacts + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class UserContacts

+
+
java.lang.Object +
domain.UserContacts
+
+
+
+
public class UserContacts +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      UserContacts

      +
      public UserContacts()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addContact

      +
      public boolean addContact(User user)
      +
      +
    • +
    • +
      +

      removeContact

      +
      public boolean removeContact(User user)
      +
      +
    • +
    • +
      +

      hasContact

      +
      public boolean hasContact(User user)
      +
      +
    • +
    • +
      +

      showAllContacts

      +
      public List<String> showAllContacts()
      +
      +
    • +
    • +
      +

      getContacts

      +
      public List<User> getContacts()
      +
      +
    • +
    • +
      +

      getContactCount

      +
      public int getContactCount()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/UserGruppen.html b/MyLocalChat/doc/domain/UserGruppen.html new file mode 100644 index 0000000..f172037 --- /dev/null +++ b/MyLocalChat/doc/domain/UserGruppen.html @@ -0,0 +1,128 @@ + + + + +UserGruppen + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class UserGruppen

+
+
java.lang.Object +
domain.UserGruppen
+
+
+
+
public class UserGruppen +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      UserGruppen

      +
      public UserGruppen()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/UserGruppenRoom.html b/MyLocalChat/doc/domain/UserGruppenRoom.html new file mode 100644 index 0000000..fd74361 --- /dev/null +++ b/MyLocalChat/doc/domain/UserGruppenRoom.html @@ -0,0 +1,213 @@ + + + + +UserGruppenRoom + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Class UserGruppenRoom

+
+
java.lang.Object +
domain.UserGruppenRoom
+
+
+
+
public class UserGruppenRoom +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      UserGruppenRoom

      +
      public UserGruppenRoom()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addGruppenRoom

      +
      public boolean addGruppenRoom(GruppenRoom gruppenRoom)
      +
      +
    • +
    • +
      +

      removeGruppenRoom

      +
      public boolean removeGruppenRoom(GruppenRoom gruppenRoom)
      +
      +
    • +
    • +
      +

      getGruppenRooms

      +
      public List<GruppenRoom> getGruppenRooms()
      +
      +
    • +
    • +
      +

      contains

      +
      public boolean contains(GruppenRoom gruppenRoom)
      +
      +
    • +
    • +
      +

      getSize

      +
      public int getSize()
      +
      +
    • +
    • +
      +

      isEmpty

      +
      public boolean isEmpty()
      +
      +
    • +
    • +
      +

      getGruppenRoomNames

      +
      public List<String> getGruppenRoomNames()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/UserInfo.html b/MyLocalChat/doc/domain/UserInfo.html new file mode 100644 index 0000000..ae039f4 --- /dev/null +++ b/MyLocalChat/doc/domain/UserInfo.html @@ -0,0 +1,258 @@ + + + + +UserInfo + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package domain
+

Enum UserInfo

+
+ +
+
+
All Implemented Interfaces:
+
Serializable, Comparable<UserInfo>, java.lang.constant.Constable
+
+
+
public enum UserInfo +extends Enum<UserInfo>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      VERFÜGBAR

      +
      public static final UserInfo VERFÜGBAR
      +
      +
    • +
    • +
      +

      BESCHÄFTIGT

      +
      public static final UserInfo BESCHÄFTIGT
      +
      +
    • +
    • +
      +

      IN_DER_SCHULE

      +
      public static final UserInfo IN_DER_SCHULE
      +
      +
    • +
    • +
      +

      IM_KINO

      +
      public static final UserInfo IM_KINO
      +
      +
    • +
    • +
      +

      BEI_DER_ARBEIT

      +
      public static final UserInfo BEI_DER_ARBEIT
      +
      +
    • +
    • +
      +

      AKKU_FAST_LEER

      +
      public static final UserInfo AKKU_FAST_LEER
      +
      +
    • +
    • +
      +

      SCHLAFE

      +
      public static final UserInfo SCHLAFE
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static UserInfo[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static UserInfo valueOf(String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum type has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/ChatRoom.html b/MyLocalChat/doc/domain/class-use/ChatRoom.html new file mode 100644 index 0000000..605e995 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/ChatRoom.html @@ -0,0 +1,98 @@ + + + + +Uses of Class domain.ChatRoom + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.ChatRoom

+
+
Packages that use ChatRoom
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/GruppenRoom.html b/MyLocalChat/doc/domain/class-use/GruppenRoom.html new file mode 100644 index 0000000..353a99a --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/GruppenRoom.html @@ -0,0 +1,98 @@ + + + + +Uses of Class domain.GruppenRoom + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.GruppenRoom

+
+
Packages that use GruppenRoom
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/Message.html b/MyLocalChat/doc/domain/class-use/Message.html new file mode 100644 index 0000000..1496724 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/Message.html @@ -0,0 +1,95 @@ + + + + +Uses of Class domain.Message + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.Message

+
+
Packages that use Message
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/MessageType.html b/MyLocalChat/doc/domain/class-use/MessageType.html new file mode 100644 index 0000000..99d35ee --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/MessageType.html @@ -0,0 +1,114 @@ + + + + +Uses of Enum domain.MessageType + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum
domain.MessageType

+
+
Packages that use MessageType
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/User.html b/MyLocalChat/doc/domain/class-use/User.html new file mode 100644 index 0000000..8d97547 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/User.html @@ -0,0 +1,174 @@ + + + + +Uses of Class domain.User + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.User

+
+
Packages that use User
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/UserChatRoom.html b/MyLocalChat/doc/domain/class-use/UserChatRoom.html new file mode 100644 index 0000000..3b12f4e --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/UserChatRoom.html @@ -0,0 +1,83 @@ + + + + +Uses of Class domain.UserChatRoom + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.UserChatRoom

+
+
Packages that use UserChatRoom
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/UserContacts.html b/MyLocalChat/doc/domain/class-use/UserContacts.html new file mode 100644 index 0000000..bdc2331 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/UserContacts.html @@ -0,0 +1,83 @@ + + + + +Uses of Class domain.UserContacts + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.UserContacts

+
+
Packages that use UserContacts
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/UserGruppen.html b/MyLocalChat/doc/domain/class-use/UserGruppen.html new file mode 100644 index 0000000..f389541 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/UserGruppen.html @@ -0,0 +1,58 @@ + + + + +Uses of Class domain.UserGruppen + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.UserGruppen

+
+No usage of domain.UserGruppen
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/UserGruppenRoom.html b/MyLocalChat/doc/domain/class-use/UserGruppenRoom.html new file mode 100644 index 0000000..28a0f39 --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/UserGruppenRoom.html @@ -0,0 +1,83 @@ + + + + +Uses of Class domain.UserGruppenRoom + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
domain.UserGruppenRoom

+
+
Packages that use UserGruppenRoom
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/class-use/UserInfo.html b/MyLocalChat/doc/domain/class-use/UserInfo.html new file mode 100644 index 0000000..ea09fda --- /dev/null +++ b/MyLocalChat/doc/domain/class-use/UserInfo.html @@ -0,0 +1,103 @@ + + + + +Uses of Enum domain.UserInfo + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum
domain.UserInfo

+
+
Packages that use UserInfo
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/package-summary.html b/MyLocalChat/doc/domain/package-summary.html new file mode 100644 index 0000000..62bda74 --- /dev/null +++ b/MyLocalChat/doc/domain/package-summary.html @@ -0,0 +1,107 @@ + + + + +domain + + + + + + + + + + + + + + + +
+ +
+
+
+

Package domain

+
+
+
package domain
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/package-tree.html b/MyLocalChat/doc/domain/package-tree.html new file mode 100644 index 0000000..bca2db5 --- /dev/null +++ b/MyLocalChat/doc/domain/package-tree.html @@ -0,0 +1,94 @@ + + + + +domain Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package domain

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Enum Hierarchy

+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/domain/package-use.html b/MyLocalChat/doc/domain/package-use.html new file mode 100644 index 0000000..dbe450c --- /dev/null +++ b/MyLocalChat/doc/domain/package-use.html @@ -0,0 +1,96 @@ + + + + +Uses of Package domain + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
domain

+
+
Packages that use domain
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/element-list b/MyLocalChat/doc/element-list new file mode 100644 index 0000000..6b41f42 --- /dev/null +++ b/MyLocalChat/doc/element-list @@ -0,0 +1,6 @@ +app +domain +fassade +server +test +ui diff --git a/MyLocalChat/doc/fassade/ChatService.html b/MyLocalChat/doc/fassade/ChatService.html new file mode 100644 index 0000000..f47399a --- /dev/null +++ b/MyLocalChat/doc/fassade/ChatService.html @@ -0,0 +1,296 @@ + + + + +ChatService + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package fassade
+

Class ChatService

+
+
java.lang.Object +
fassade.ChatService
+
+
+
+
public class ChatService +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatService

      +
      public ChatService()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      createUser

      +
      public boolean createUser(String userName)
      +
      +
    • +
    • +
      +

      createChatRoom

      +
      public int createChatRoom(String user1Name, + String user2Name)
      +
      +
    • +
    • +
      +

      sendMessage

      +
      public void sendMessage(int roomId, + String senderName, + String content)
      +
      +
    • +
    • +
      +

      showMessage

      +
      public List<String> showMessage(int roomId)
      +
      +
    • +
    • +
      +

      addContact

      +
      public boolean addContact(String contactUserName, + String currentUserName)
      +
      +
    • +
    • +
      +

      getUserContacts

      +
      public List<String> getUserContacts(String userName)
      +
      +
    • +
    • +
      +

      getUserChatRoomIds

      +
      public List<Integer> getUserChatRoomIds(String userName)
      +
      +
    • +
    • +
      +

      getChatRoomInfo

      +
      public String getChatRoomInfo(int roomId)
      +
      +
    • +
    • +
      +

      createGruppenRoom

      +
      public int createGruppenRoom(String creatorName, + String groupName, + String description)
      +
      +
    • +
    • +
      +

      addParticipantToGroup

      +
      public boolean addParticipantToGroup(int groupId, + String adderName, + String userToAddName)
      +
      +
    • +
    • +
      +

      sendGroupMessage

      +
      public void sendGroupMessage(int groupId, + String senderName, + String content)
      +
      +
    • +
    • +
      +

      getGroupMessages

      +
      public List<String> getGroupMessages(int groupId)
      +
      +
    • +
    • +
      +

      getUserGruppenRooms

      +
      public List<String> getUserGruppenRooms(String userName)
      +
      +
    • +
    • +
      +

      getGruppenRoomInfo

      +
      public String getGruppenRoomInfo(int groupId)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/MyLocalChat/doc/fassade/class-use/ChatService.html b/MyLocalChat/doc/fassade/class-use/ChatService.html new file mode 100644 index 0000000..aa545be --- /dev/null +++ b/MyLocalChat/doc/fassade/class-use/ChatService.html @@ -0,0 +1,58 @@ + + + + +Uses of Class fassade.ChatService + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
fassade.ChatService

+
+No usage of fassade.ChatService
+
+
+ + diff --git a/MyLocalChat/doc/fassade/package-summary.html b/MyLocalChat/doc/fassade/package-summary.html new file mode 100644 index 0000000..a07c244 --- /dev/null +++ b/MyLocalChat/doc/fassade/package-summary.html @@ -0,0 +1,83 @@ + + + + +fassade + + + + + + + + + + + + + + + +
+ +
+
+
+

Package fassade

+
+
+
package fassade
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
     
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/MyLocalChat/doc/fassade/package-tree.html b/MyLocalChat/doc/fassade/package-tree.html new file mode 100644 index 0000000..a263686 --- /dev/null +++ b/MyLocalChat/doc/fassade/package-tree.html @@ -0,0 +1,72 @@ + + + + +fassade Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package fassade

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/fassade/package-use.html b/MyLocalChat/doc/fassade/package-use.html new file mode 100644 index 0000000..e62f825 --- /dev/null +++ b/MyLocalChat/doc/fassade/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package fassade + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
fassade

+
+No usage of fassade
+
+
+ + diff --git a/MyLocalChat/doc/help-doc.html b/MyLocalChat/doc/help-doc.html new file mode 100644 index 0000000..bf88e39 --- /dev/null +++ b/MyLocalChat/doc/help-doc.html @@ -0,0 +1,187 @@ + + + + +API Help + + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enums
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Types
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-1.html b/MyLocalChat/doc/index-files/index-1.html new file mode 100644 index 0000000..f201a12 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-1.html @@ -0,0 +1,84 @@ + + + + +A-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

A

+
+
addAdmin(User, User) - Method in class domain.GruppenRoom
+
 
+
addChat(ChatRoom) - Method in class domain.UserChatRoom
+
 
+
addContact(User) - Method in class domain.UserContacts
+
 
+
addContact(String, String) - Method in class fassade.ChatService
+
 
+
addGruppenRoom(GruppenRoom) - Method in class domain.UserGruppenRoom
+
 
+
addMessage(Message) - Method in class domain.ChatRoom
+
 
+
addMessage(User, String) - Method in class domain.GruppenRoom
+
 
+
addParticipant(User) - Method in class domain.GruppenRoom
+
 
+
addParticipantToGroup(int, String, String) - Method in class fassade.ChatService
+
 
+
AKKU_FAST_LEER - Enum constant in enum domain.UserInfo
+
 
+
app - package app
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-10.html b/MyLocalChat/doc/index-files/index-10.html new file mode 100644 index 0000000..0203f30 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-10.html @@ -0,0 +1,64 @@ + + + + +L-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

L

+
+
LINK - Enum constant in enum domain.MessageType
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-11.html b/MyLocalChat/doc/index-files/index-11.html new file mode 100644 index 0000000..2fb5d77 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-11.html @@ -0,0 +1,80 @@ + + + + +M-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

M

+
+
main(String[]) - Static method in class app.Main
+
 
+
Main - Class in app
+
 
+
Main() - Constructor for class app.Main
+
 
+
Message - Class in domain
+
 
+
Message(User, String) - Constructor for class domain.Message
+
 
+
Message(User, String, MessageType) - Constructor for class domain.Message
+
 
+
MessageTest - Class in test
+
 
+
MessageTest() - Constructor for class test.MessageTest
+
 
+
MessageType - Enum in domain
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-12.html b/MyLocalChat/doc/index-files/index-12.html new file mode 100644 index 0000000..f9642ba --- /dev/null +++ b/MyLocalChat/doc/index-files/index-12.html @@ -0,0 +1,72 @@ + + + + +R-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

R

+
+
removeAdmin(User, User) - Method in class domain.GruppenRoom
+
 
+
removeChat(ChatRoom) - Method in class domain.UserChatRoom
+
 
+
removeContact(User) - Method in class domain.UserContacts
+
 
+
removeGruppenRoom(GruppenRoom) - Method in class domain.UserGruppenRoom
+
 
+
removeParticipant(User, User) - Method in class domain.GruppenRoom
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-13.html b/MyLocalChat/doc/index-files/index-13.html new file mode 100644 index 0000000..a92e397 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-13.html @@ -0,0 +1,98 @@ + + + + +S-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

S

+
+
SCHLAFE - Enum constant in enum domain.UserInfo
+
 
+
sendGroupMessage(int, String, String) - Method in class fassade.ChatService
+
 
+
sendMessage(int, String, String) - Method in class fassade.ChatService
+
 
+
server - package server
+
 
+
setContent(String) - Method in class domain.Message
+
 
+
setOnline(boolean) - Method in class domain.User
+
 
+
setSender(User) - Method in class domain.Message
+
 
+
setTimestamp(LocalDateTime) - Method in class domain.Message
+
 
+
setType(MessageType) - Method in class domain.Message
+
 
+
setUp() - Method in class test.ChatServiceTest
+
 
+
setUp() - Method in class test.ExceptionTest
+
 
+
setUserInfo(UserInfo) - Method in class domain.User
+
 
+
showAllContacts() - Method in class domain.UserContacts
+
 
+
showMessage(int) - Method in class fassade.ChatService
+
 
+
showMessages() - Method in class domain.ChatRoom
+
 
+
showMessages() - Method in class domain.GruppenRoom
+
 
+
startServer() - Static method in class server.ChatServer
+
 
+
SYSTEM - Enum constant in enum domain.MessageType
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-14.html b/MyLocalChat/doc/index-files/index-14.html new file mode 100644 index 0000000..61cec89 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-14.html @@ -0,0 +1,126 @@ + + + + +T-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

T

+
+
test - package test
+
 
+
testAddAdmin() - Method in class test.GruppenRoomTest
+
 
+
testAddContact() - Method in class test.ChatServiceTest
+
 
+
testAddDuplicateParticipant() - Method in class test.GruppenRoomTest
+
 
+
testAddMessageToChatRoom() - Method in class test.ChatRoomTest
+
 
+
testAddNonExistentContact() - Method in class test.ExceptionTest
+
 
+
testAddParticipant() - Method in class test.GruppenRoomTest
+
 
+
testChatRoomCreation() - Method in class test.ChatRoomTest
+
 
+
testCompleteChatWorkflow() - Method in class test.IntegrationTest
+
 
+
testCreateChatRoom() - Method in class test.ChatServiceTest
+
 
+
testCreateChatRoomNonExistentUsers() - Method in class test.ChatServiceTest
+
 
+
testCreateDuplicateUser() - Method in class test.ChatServiceTest
+
 
+
testCreateUser() - Method in class test.ChatServiceTest
+
 
+
testGetUserContactsNonExistentUser() - Method in class test.ExceptionTest
+
 
+
testGroupChatWorkflow() - Method in class test.IntegrationTest
+
 
+
testGruppenRoomCreation() - Method in class test.GruppenRoomTest
+
 
+
testMessageCreation() - Method in class test.MessageTest
+
 
+
testMessageSetters() - Method in class test.MessageTest
+
 
+
testMessageToString() - Method in class test.MessageTest
+
 
+
testSendAndReceiveMessages() - Method in class test.ChatServiceTest
+
 
+
testSendMessageNonExistentUser() - Method in class test.ExceptionTest
+
 
+
testSendMessageToNonExistentRoom() - Method in class test.ExceptionTest
+
 
+
testShowMessages() - Method in class test.ChatRoomTest
+
 
+
testUserContacts() - Method in class test.UserTest
+
 
+
testUserCreation() - Method in class test.UserTest
+
 
+
testUserEquals() - Method in class test.UserTest
+
 
+
testUserStatusChanges() - Method in class test.UserTest
+
 
+
TEXT - Enum constant in enum domain.MessageType
+
 
+
toString() - Method in class domain.GruppenRoom
+
 
+
toString() - Method in class domain.Message
+
 
+
toString() - Method in class domain.User
+
 
+
toTimeString() - Method in class domain.Message
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-15.html b/MyLocalChat/doc/index-files/index-15.html new file mode 100644 index 0000000..6ac29b6 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-15.html @@ -0,0 +1,90 @@ + + + + +U-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

U

+
+
ui - package ui
+
 
+
User - Class in domain
+
 
+
User(String) - Constructor for class domain.User
+
 
+
UserChatRoom - Class in domain
+
 
+
UserChatRoom() - Constructor for class domain.UserChatRoom
+
 
+
UserContacts - Class in domain
+
 
+
UserContacts() - Constructor for class domain.UserContacts
+
 
+
UserGruppen - Class in domain
+
 
+
UserGruppen() - Constructor for class domain.UserGruppen
+
 
+
UserGruppenRoom - Class in domain
+
 
+
UserGruppenRoom() - Constructor for class domain.UserGruppenRoom
+
 
+
UserInfo - Enum in domain
+
 
+
UserTest - Class in test
+
 
+
UserTest() - Constructor for class test.UserTest
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-16.html b/MyLocalChat/doc/index-files/index-16.html new file mode 100644 index 0000000..deecc24 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-16.html @@ -0,0 +1,82 @@ + + + + +V-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

V

+
+
valueOf(String) - Static method in enum domain.MessageType
+
+
Returns the enum constant of this type with the specified name.
+
+
valueOf(String) - Static method in enum domain.UserInfo
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum domain.MessageType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
values() - Static method in enum domain.UserInfo
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
VERFÜGBAR - Enum constant in enum domain.UserInfo
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-2.html b/MyLocalChat/doc/index-files/index-2.html new file mode 100644 index 0000000..95dc267 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-2.html @@ -0,0 +1,66 @@ + + + + +B-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

B

+
+
BEI_DER_ARBEIT - Enum constant in enum domain.UserInfo
+
 
+
BESCHÄFTIGT - Enum constant in enum domain.UserInfo
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-3.html b/MyLocalChat/doc/index-files/index-3.html new file mode 100644 index 0000000..ede69c2 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-3.html @@ -0,0 +1,98 @@ + + + + +C-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

C

+
+
Chat - Class in ui
+
 
+
Chat(String, int, int) - Constructor for class ui.Chat
+
 
+
ChatRoom - Class in domain
+
 
+
ChatRoom(User, User) - Constructor for class domain.ChatRoom
+
 
+
ChatRoomTest - Class in test
+
 
+
ChatRoomTest() - Constructor for class test.ChatRoomTest
+
 
+
ChatServer - Class in server
+
 
+
ChatServer() - Constructor for class server.ChatServer
+
 
+
ChatService - Class in fassade
+
 
+
ChatService() - Constructor for class fassade.ChatService
+
 
+
ChatServiceTest - Class in test
+
 
+
ChatServiceTest() - Constructor for class test.ChatServiceTest
+
 
+
clearChatRooms() - Method in class domain.UserChatRoom
+
 
+
contains(ChatRoom) - Method in class domain.UserChatRoom
+
 
+
contains(GruppenRoom) - Method in class domain.UserGruppenRoom
+
 
+
createChatRoom(String, String) - Method in class fassade.ChatService
+
 
+
createGruppenRoom(String, String, String) - Method in class fassade.ChatService
+
 
+
createUser(String) - Method in class fassade.ChatService
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-4.html b/MyLocalChat/doc/index-files/index-4.html new file mode 100644 index 0000000..d39c70e --- /dev/null +++ b/MyLocalChat/doc/index-files/index-4.html @@ -0,0 +1,64 @@ + + + + +D-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

D

+
+
domain - package domain
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-5.html b/MyLocalChat/doc/index-files/index-5.html new file mode 100644 index 0000000..6d4ce46 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-5.html @@ -0,0 +1,66 @@ + + + + +E-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

E

+
+
ExceptionTest - Class in test
+
 
+
ExceptionTest() - Constructor for class test.ExceptionTest
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-6.html b/MyLocalChat/doc/index-files/index-6.html new file mode 100644 index 0000000..0c0bb70 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-6.html @@ -0,0 +1,66 @@ + + + + +F-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

F

+
+
fassade - package fassade
+
 
+
FILE - Enum constant in enum domain.MessageType
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-7.html b/MyLocalChat/doc/index-files/index-7.html new file mode 100644 index 0000000..101f045 --- /dev/null +++ b/MyLocalChat/doc/index-files/index-7.html @@ -0,0 +1,146 @@ + + + + +G-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

G

+
+
getAdmins() - Method in class domain.GruppenRoom
+
 
+
getAllChatRooms() - Method in class domain.UserChatRoom
+
 
+
getChatRoomCount() - Method in class domain.UserChatRoom
+
 
+
getChatRoomIds() - Method in class domain.UserChatRoom
+
 
+
getChatRoomInfo(int) - Method in class fassade.ChatService
+
 
+
getChatRoomInfos() - Method in class domain.UserChatRoom
+
 
+
getContactCount() - Method in class domain.UserContacts
+
 
+
getContacts() - Method in class domain.UserContacts
+
 
+
getContent() - Method in class domain.Message
+
 
+
getCreatedAt() - Method in class domain.ChatRoom
+
 
+
getCreatedAt() - Method in class domain.GruppenRoom
+
 
+
getCreator() - Method in class domain.GruppenRoom
+
 
+
getDescription() - Method in class domain.GruppenRoom
+
 
+
getGroupId() - Method in class domain.GruppenRoom
+
 
+
getGroupMessages(int) - Method in class fassade.ChatService
+
 
+
getGruppenRoomInfo(int) - Method in class fassade.ChatService
+
 
+
getGruppenRoomNames() - Method in class domain.UserGruppenRoom
+
 
+
getGruppenRooms() - Method in class domain.UserGruppenRoom
+
 
+
getMessages() - Method in class domain.ChatRoom
+
 
+
getMessages() - Method in class domain.GruppenRoom
+
 
+
getName() - Method in class domain.GruppenRoom
+
 
+
getParticipants() - Method in class domain.GruppenRoom
+
 
+
getRoomId() - Method in class domain.ChatRoom
+
 
+
getSender() - Method in class domain.Message
+
 
+
getSize() - Method in class domain.UserGruppenRoom
+
 
+
getTimestamp() - Method in class domain.Message
+
 
+
getType() - Method in class domain.Message
+
 
+
getUser1() - Method in class domain.ChatRoom
+
 
+
getUser2() - Method in class domain.ChatRoom
+
 
+
getUserChatRoom() - Method in class domain.User
+
 
+
getUserChatRoomIds(String) - Method in class fassade.ChatService
+
 
+
getUserContacts() - Method in class domain.User
+
 
+
getUserContacts(String) - Method in class fassade.ChatService
+
 
+
getUserGruppenRoom() - Method in class domain.User
+
 
+
getUserGruppenRooms(String) - Method in class fassade.ChatService
+
 
+
getUserId() - Method in class domain.User
+
 
+
getUserInfo() - Method in class domain.User
+
 
+
getUsername() - Method in class domain.User
+
 
+
GruppenRoom - Class in domain
+
 
+
GruppenRoom(User, String, String) - Constructor for class domain.GruppenRoom
+
 
+
GruppenRoomTest - Class in test
+
 
+
GruppenRoomTest() - Constructor for class test.GruppenRoomTest
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-8.html b/MyLocalChat/doc/index-files/index-8.html new file mode 100644 index 0000000..c8067eb --- /dev/null +++ b/MyLocalChat/doc/index-files/index-8.html @@ -0,0 +1,64 @@ + + + + +H-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

H

+
+
hasContact(User) - Method in class domain.UserContacts
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index-files/index-9.html b/MyLocalChat/doc/index-files/index-9.html new file mode 100644 index 0000000..b02108d --- /dev/null +++ b/MyLocalChat/doc/index-files/index-9.html @@ -0,0 +1,82 @@ + + + + +I-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form +

I

+
+
IM_KINO - Enum constant in enum domain.UserInfo
+
 
+
IMAGE - Enum constant in enum domain.MessageType
+
 
+
IN_DER_SCHULE - Enum constant in enum domain.UserInfo
+
 
+
IntegrationTest - Class in test
+
 
+
IntegrationTest() - Constructor for class test.IntegrationTest
+
 
+
isAdmin(User) - Method in class domain.GruppenRoom
+
 
+
isEmpty() - Method in class domain.UserChatRoom
+
 
+
isEmpty() - Method in class domain.UserGruppenRoom
+
 
+
isOnline() - Method in class domain.User
+
 
+
isParticipant(User) - Method in class domain.GruppenRoom
+
 
+
+A B C D E F G H I L M R S T U V 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/MyLocalChat/doc/index.html b/MyLocalChat/doc/index.html new file mode 100644 index 0000000..917ae46 --- /dev/null +++ b/MyLocalChat/doc/index.html @@ -0,0 +1,74 @@ + + + + +Overview + + + + + + + + + + + + + + + +
+ +
+
+
+
Packages
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+ + diff --git a/MyLocalChat/doc/jquery-ui.overrides.css b/MyLocalChat/doc/jquery-ui.overrides.css new file mode 100644 index 0000000..facf852 --- /dev/null +++ b/MyLocalChat/doc/jquery-ui.overrides.css @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; + border: 1px solid #F8981D; +} diff --git a/MyLocalChat/doc/legal/ASSEMBLY_EXCEPTION b/MyLocalChat/doc/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..065b8d9 --- /dev/null +++ b/MyLocalChat/doc/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1,27 @@ + +OPENJDK ASSEMBLY EXCEPTION + +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at +openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU +General Public License version 2 +only ("GPL2"), with the following clarification and special exception. + + Linking this OpenJDK Code statically or dynamically with other code + is making a combined work based on this library. Thus, the terms + and conditions of GPL2 cover the whole combination. + + As a special exception, Oracle gives you permission to link this + OpenJDK Code with certain code licensed by Oracle as indicated at + http://openjdk.java.net/legal/exception-modules-2007-05-08.html + ("Designated Exception Modules") to produce an executable, + regardless of the license terms of the Designated Exception Modules, + and to copy and distribute the resulting executable under GPL2, + provided that the Designated Exception Modules continue to be + governed by the licenses under which they were offered by Oracle. + +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code +to build an executable that includes those portions of necessary code that +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2 +with the Classpath exception). If you modify or add to the OpenJDK code, +that new GPL2 code may still be combined with Designated Exception Modules +if the new code is made subject to this exception by its copyright holder. diff --git a/MyLocalChat/doc/legal/jquery.md b/MyLocalChat/doc/legal/jquery.md new file mode 100644 index 0000000..a763ec6 --- /dev/null +++ b/MyLocalChat/doc/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/MyLocalChat/doc/legal/jqueryUI.md b/MyLocalChat/doc/legal/jqueryUI.md new file mode 100644 index 0000000..8bda9d7 --- /dev/null +++ b/MyLocalChat/doc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.2 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/MyLocalChat/doc/member-search-index.js b/MyLocalChat/doc/member-search-index.js new file mode 100644 index 0000000..1b321d7 --- /dev/null +++ b/MyLocalChat/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"domain","c":"GruppenRoom","l":"addAdmin(User, User)","u":"addAdmin(domain.User,domain.User)"},{"p":"domain","c":"UserChatRoom","l":"addChat(ChatRoom)","u":"addChat(domain.ChatRoom)"},{"p":"fassade","c":"ChatService","l":"addContact(String, String)","u":"addContact(java.lang.String,java.lang.String)"},{"p":"domain","c":"UserContacts","l":"addContact(User)","u":"addContact(domain.User)"},{"p":"domain","c":"UserGruppenRoom","l":"addGruppenRoom(GruppenRoom)","u":"addGruppenRoom(domain.GruppenRoom)"},{"p":"domain","c":"ChatRoom","l":"addMessage(Message)","u":"addMessage(domain.Message)"},{"p":"domain","c":"GruppenRoom","l":"addMessage(User, String)","u":"addMessage(domain.User,java.lang.String)"},{"p":"domain","c":"GruppenRoom","l":"addParticipant(User)","u":"addParticipant(domain.User)"},{"p":"fassade","c":"ChatService","l":"addParticipantToGroup(int, String, String)","u":"addParticipantToGroup(int,java.lang.String,java.lang.String)"},{"p":"domain","c":"UserInfo","l":"AKKU_FAST_LEER"},{"p":"domain","c":"UserInfo","l":"BEI_DER_ARBEIT"},{"p":"domain","c":"UserInfo","l":"BESCHÄFTIGT"},{"p":"ui","c":"Chat","l":"Chat(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)"},{"p":"domain","c":"ChatRoom","l":"ChatRoom(User, User)","u":"%3Cinit%3E(domain.User,domain.User)"},{"p":"test","c":"ChatRoomTest","l":"ChatRoomTest()","u":"%3Cinit%3E()"},{"p":"server","c":"ChatServer","l":"ChatServer()","u":"%3Cinit%3E()"},{"p":"fassade","c":"ChatService","l":"ChatService()","u":"%3Cinit%3E()"},{"p":"test","c":"ChatServiceTest","l":"ChatServiceTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"UserChatRoom","l":"clearChatRooms()"},{"p":"domain","c":"UserChatRoom","l":"contains(ChatRoom)","u":"contains(domain.ChatRoom)"},{"p":"domain","c":"UserGruppenRoom","l":"contains(GruppenRoom)","u":"contains(domain.GruppenRoom)"},{"p":"fassade","c":"ChatService","l":"createChatRoom(String, String)","u":"createChatRoom(java.lang.String,java.lang.String)"},{"p":"fassade","c":"ChatService","l":"createGruppenRoom(String, String, String)","u":"createGruppenRoom(java.lang.String,java.lang.String,java.lang.String)"},{"p":"fassade","c":"ChatService","l":"createUser(String)","u":"createUser(java.lang.String)"},{"p":"test","c":"ExceptionTest","l":"ExceptionTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"MessageType","l":"FILE"},{"p":"domain","c":"GruppenRoom","l":"getAdmins()"},{"p":"domain","c":"UserChatRoom","l":"getAllChatRooms()"},{"p":"domain","c":"UserChatRoom","l":"getChatRoomCount()"},{"p":"domain","c":"UserChatRoom","l":"getChatRoomIds()"},{"p":"fassade","c":"ChatService","l":"getChatRoomInfo(int)"},{"p":"domain","c":"UserChatRoom","l":"getChatRoomInfos()"},{"p":"domain","c":"UserContacts","l":"getContactCount()"},{"p":"domain","c":"UserContacts","l":"getContacts()"},{"p":"domain","c":"Message","l":"getContent()"},{"p":"domain","c":"ChatRoom","l":"getCreatedAt()"},{"p":"domain","c":"GruppenRoom","l":"getCreatedAt()"},{"p":"domain","c":"GruppenRoom","l":"getCreator()"},{"p":"domain","c":"GruppenRoom","l":"getDescription()"},{"p":"domain","c":"GruppenRoom","l":"getGroupId()"},{"p":"fassade","c":"ChatService","l":"getGroupMessages(int)"},{"p":"fassade","c":"ChatService","l":"getGruppenRoomInfo(int)"},{"p":"domain","c":"UserGruppenRoom","l":"getGruppenRoomNames()"},{"p":"domain","c":"UserGruppenRoom","l":"getGruppenRooms()"},{"p":"domain","c":"ChatRoom","l":"getMessages()"},{"p":"domain","c":"GruppenRoom","l":"getMessages()"},{"p":"domain","c":"GruppenRoom","l":"getName()"},{"p":"domain","c":"GruppenRoom","l":"getParticipants()"},{"p":"domain","c":"ChatRoom","l":"getRoomId()"},{"p":"domain","c":"Message","l":"getSender()"},{"p":"domain","c":"UserGruppenRoom","l":"getSize()"},{"p":"domain","c":"Message","l":"getTimestamp()"},{"p":"domain","c":"Message","l":"getType()"},{"p":"domain","c":"ChatRoom","l":"getUser1()"},{"p":"domain","c":"ChatRoom","l":"getUser2()"},{"p":"domain","c":"User","l":"getUserChatRoom()"},{"p":"fassade","c":"ChatService","l":"getUserChatRoomIds(String)","u":"getUserChatRoomIds(java.lang.String)"},{"p":"domain","c":"User","l":"getUserContacts()"},{"p":"fassade","c":"ChatService","l":"getUserContacts(String)","u":"getUserContacts(java.lang.String)"},{"p":"domain","c":"User","l":"getUserGruppenRoom()"},{"p":"fassade","c":"ChatService","l":"getUserGruppenRooms(String)","u":"getUserGruppenRooms(java.lang.String)"},{"p":"domain","c":"User","l":"getUserId()"},{"p":"domain","c":"User","l":"getUserInfo()"},{"p":"domain","c":"User","l":"getUsername()"},{"p":"domain","c":"GruppenRoom","l":"GruppenRoom(User, String, String)","u":"%3Cinit%3E(domain.User,java.lang.String,java.lang.String)"},{"p":"test","c":"GruppenRoomTest","l":"GruppenRoomTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"UserContacts","l":"hasContact(User)","u":"hasContact(domain.User)"},{"p":"domain","c":"UserInfo","l":"IM_KINO"},{"p":"domain","c":"MessageType","l":"IMAGE"},{"p":"domain","c":"UserInfo","l":"IN_DER_SCHULE"},{"p":"test","c":"IntegrationTest","l":"IntegrationTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"GruppenRoom","l":"isAdmin(User)","u":"isAdmin(domain.User)"},{"p":"domain","c":"UserChatRoom","l":"isEmpty()"},{"p":"domain","c":"UserGruppenRoom","l":"isEmpty()"},{"p":"domain","c":"User","l":"isOnline()"},{"p":"domain","c":"GruppenRoom","l":"isParticipant(User)","u":"isParticipant(domain.User)"},{"p":"domain","c":"MessageType","l":"LINK"},{"p":"app","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"app","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"domain","c":"Message","l":"Message(User, String)","u":"%3Cinit%3E(domain.User,java.lang.String)"},{"p":"domain","c":"Message","l":"Message(User, String, MessageType)","u":"%3Cinit%3E(domain.User,java.lang.String,domain.MessageType)"},{"p":"test","c":"MessageTest","l":"MessageTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"GruppenRoom","l":"removeAdmin(User, User)","u":"removeAdmin(domain.User,domain.User)"},{"p":"domain","c":"UserChatRoom","l":"removeChat(ChatRoom)","u":"removeChat(domain.ChatRoom)"},{"p":"domain","c":"UserContacts","l":"removeContact(User)","u":"removeContact(domain.User)"},{"p":"domain","c":"UserGruppenRoom","l":"removeGruppenRoom(GruppenRoom)","u":"removeGruppenRoom(domain.GruppenRoom)"},{"p":"domain","c":"GruppenRoom","l":"removeParticipant(User, User)","u":"removeParticipant(domain.User,domain.User)"},{"p":"domain","c":"UserInfo","l":"SCHLAFE"},{"p":"fassade","c":"ChatService","l":"sendGroupMessage(int, String, String)","u":"sendGroupMessage(int,java.lang.String,java.lang.String)"},{"p":"fassade","c":"ChatService","l":"sendMessage(int, String, String)","u":"sendMessage(int,java.lang.String,java.lang.String)"},{"p":"domain","c":"Message","l":"setContent(String)","u":"setContent(java.lang.String)"},{"p":"domain","c":"User","l":"setOnline(boolean)"},{"p":"domain","c":"Message","l":"setSender(User)","u":"setSender(domain.User)"},{"p":"domain","c":"Message","l":"setTimestamp(LocalDateTime)","u":"setTimestamp(java.time.LocalDateTime)"},{"p":"domain","c":"Message","l":"setType(MessageType)","u":"setType(domain.MessageType)"},{"p":"test","c":"ChatServiceTest","l":"setUp()"},{"p":"test","c":"ExceptionTest","l":"setUp()"},{"p":"domain","c":"User","l":"setUserInfo(UserInfo)","u":"setUserInfo(domain.UserInfo)"},{"p":"domain","c":"UserContacts","l":"showAllContacts()"},{"p":"fassade","c":"ChatService","l":"showMessage(int)"},{"p":"domain","c":"ChatRoom","l":"showMessages()"},{"p":"domain","c":"GruppenRoom","l":"showMessages()"},{"p":"server","c":"ChatServer","l":"startServer()"},{"p":"domain","c":"MessageType","l":"SYSTEM"},{"p":"test","c":"GruppenRoomTest","l":"testAddAdmin()"},{"p":"test","c":"ChatServiceTest","l":"testAddContact()"},{"p":"test","c":"GruppenRoomTest","l":"testAddDuplicateParticipant()"},{"p":"test","c":"ChatRoomTest","l":"testAddMessageToChatRoom()"},{"p":"test","c":"ExceptionTest","l":"testAddNonExistentContact()"},{"p":"test","c":"GruppenRoomTest","l":"testAddParticipant()"},{"p":"test","c":"ChatRoomTest","l":"testChatRoomCreation()"},{"p":"test","c":"IntegrationTest","l":"testCompleteChatWorkflow()"},{"p":"test","c":"ChatServiceTest","l":"testCreateChatRoom()"},{"p":"test","c":"ChatServiceTest","l":"testCreateChatRoomNonExistentUsers()"},{"p":"test","c":"ChatServiceTest","l":"testCreateDuplicateUser()"},{"p":"test","c":"ChatServiceTest","l":"testCreateUser()"},{"p":"test","c":"ExceptionTest","l":"testGetUserContactsNonExistentUser()"},{"p":"test","c":"IntegrationTest","l":"testGroupChatWorkflow()"},{"p":"test","c":"GruppenRoomTest","l":"testGruppenRoomCreation()"},{"p":"test","c":"MessageTest","l":"testMessageCreation()"},{"p":"test","c":"MessageTest","l":"testMessageSetters()"},{"p":"test","c":"MessageTest","l":"testMessageToString()"},{"p":"test","c":"ChatServiceTest","l":"testSendAndReceiveMessages()"},{"p":"test","c":"ExceptionTest","l":"testSendMessageNonExistentUser()"},{"p":"test","c":"ExceptionTest","l":"testSendMessageToNonExistentRoom()"},{"p":"test","c":"ChatRoomTest","l":"testShowMessages()"},{"p":"test","c":"UserTest","l":"testUserContacts()"},{"p":"test","c":"UserTest","l":"testUserCreation()"},{"p":"test","c":"UserTest","l":"testUserEquals()"},{"p":"test","c":"UserTest","l":"testUserStatusChanges()"},{"p":"domain","c":"MessageType","l":"TEXT"},{"p":"domain","c":"GruppenRoom","l":"toString()"},{"p":"domain","c":"Message","l":"toString()"},{"p":"domain","c":"User","l":"toString()"},{"p":"domain","c":"Message","l":"toTimeString()"},{"p":"domain","c":"User","l":"User(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"domain","c":"UserChatRoom","l":"UserChatRoom()","u":"%3Cinit%3E()"},{"p":"domain","c":"UserContacts","l":"UserContacts()","u":"%3Cinit%3E()"},{"p":"domain","c":"UserGruppen","l":"UserGruppen()","u":"%3Cinit%3E()"},{"p":"domain","c":"UserGruppenRoom","l":"UserGruppenRoom()","u":"%3Cinit%3E()"},{"p":"test","c":"UserTest","l":"UserTest()","u":"%3Cinit%3E()"},{"p":"domain","c":"MessageType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"domain","c":"UserInfo","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"domain","c":"MessageType","l":"values()"},{"p":"domain","c":"UserInfo","l":"values()"},{"p":"domain","c":"UserInfo","l":"VERFÜGBAR"}];updateSearchResults(); \ No newline at end of file diff --git a/MyLocalChat/doc/module-search-index.js b/MyLocalChat/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/MyLocalChat/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/MyLocalChat/doc/overview-summary.html b/MyLocalChat/doc/overview-summary.html new file mode 100644 index 0000000..46ffa18 --- /dev/null +++ b/MyLocalChat/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/MyLocalChat/doc/overview-tree.html b/MyLocalChat/doc/overview-tree.html new file mode 100644 index 0000000..f2eca10 --- /dev/null +++ b/MyLocalChat/doc/overview-tree.html @@ -0,0 +1,130 @@ + + + + +Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Enum Hierarchy

+ +
+
+
+
+ + diff --git a/MyLocalChat/doc/package-search-index.js b/MyLocalChat/doc/package-search-index.js new file mode 100644 index 0000000..9083f27 --- /dev/null +++ b/MyLocalChat/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"app"},{"l":"domain"},{"l":"fassade"},{"l":"server"},{"l":"test"},{"l":"ui"}];updateSearchResults(); \ No newline at end of file diff --git a/MyLocalChat/doc/resources/glass.png b/MyLocalChat/doc/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/MyLocalChat/doc/script-dir/jquery-3.7.1.min.js b/MyLocalChat/doc/script-dir/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/MyLocalChat/doc/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/MyLocalChat/doc/script.js b/MyLocalChat/doc/script.js new file mode 100644 index 0000000..73cd8fa --- /dev/null +++ b/MyLocalChat/doc/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.getElementById(tableId + '.tabpanel') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/MyLocalChat/doc/search.js b/MyLocalChat/doc/search.js new file mode 100644 index 0000000..2246cdd --- /dev/null +++ b/MyLocalChat/doc/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Types"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + item.category + "
  • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
    " + + item.d + "
    "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/MyLocalChat/doc/serialized-form.html b/MyLocalChat/doc/serialized-form.html new file mode 100644 index 0000000..be9918b --- /dev/null +++ b/MyLocalChat/doc/serialized-form.html @@ -0,0 +1,98 @@ + + + + +Serialized Form + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/server/ChatServer.html b/MyLocalChat/doc/server/ChatServer.html new file mode 100644 index 0000000..7bdec09 --- /dev/null +++ b/MyLocalChat/doc/server/ChatServer.html @@ -0,0 +1,159 @@ + + + + +ChatServer + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package server
    +

    Class ChatServer

    +
    +
    java.lang.Object +
    server.ChatServer
    +
    +
    +
    +
    public class ChatServer +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ChatServer

        +
        public ChatServer()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        startServer

        +
        public static void startServer()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/server/class-use/ChatServer.html b/MyLocalChat/doc/server/class-use/ChatServer.html new file mode 100644 index 0000000..4b0bcc5 --- /dev/null +++ b/MyLocalChat/doc/server/class-use/ChatServer.html @@ -0,0 +1,58 @@ + + + + +Uses of Class server.ChatServer + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    server.ChatServer

    +
    +No usage of server.ChatServer
    +
    +
    + + diff --git a/MyLocalChat/doc/server/package-summary.html b/MyLocalChat/doc/server/package-summary.html new file mode 100644 index 0000000..e4a06d9 --- /dev/null +++ b/MyLocalChat/doc/server/package-summary.html @@ -0,0 +1,83 @@ + + + + +server + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package server

    +
    +
    +
    package server
    +
    +
      +
    • +
      +
      Classes
      +
      +
      Class
      +
      Description
      + +
       
      +
      +
      +
    • +
    +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/server/package-tree.html b/MyLocalChat/doc/server/package-tree.html new file mode 100644 index 0000000..ca15d0c --- /dev/null +++ b/MyLocalChat/doc/server/package-tree.html @@ -0,0 +1,72 @@ + + + + +server Class Hierarchy + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package server

    +Package Hierarchies: + +
    +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/server/package-use.html b/MyLocalChat/doc/server/package-use.html new file mode 100644 index 0000000..737e2e5 --- /dev/null +++ b/MyLocalChat/doc/server/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package server + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    server

    +
    +No usage of server
    +
    +
    + + diff --git a/MyLocalChat/doc/stylesheet.css b/MyLocalChat/doc/stylesheet.css new file mode 100644 index 0000000..4a576bd --- /dev/null +++ b/MyLocalChat/doc/stylesheet.css @@ -0,0 +1,869 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; + background-color: #FFFFFF; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/MyLocalChat/doc/tag-search-index.js b/MyLocalChat/doc/tag-search-index.js new file mode 100644 index 0000000..f38b3cb --- /dev/null +++ b/MyLocalChat/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/MyLocalChat/doc/test/ChatRoomTest.html b/MyLocalChat/doc/test/ChatRoomTest.html new file mode 100644 index 0000000..d9be5b6 --- /dev/null +++ b/MyLocalChat/doc/test/ChatRoomTest.html @@ -0,0 +1,177 @@ + + + + +ChatRoomTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class ChatRoomTest

    +
    +
    java.lang.Object +
    test.ChatRoomTest
    +
    +
    +
    +
    public class ChatRoomTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ChatRoomTest

        +
        public ChatRoomTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        testChatRoomCreation

        +
        public void testChatRoomCreation()
        +
        +
      • +
      • +
        +

        testAddMessageToChatRoom

        +
        public void testAddMessageToChatRoom()
        +
        +
      • +
      • +
        +

        testShowMessages

        +
        public void testShowMessages()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/ChatServiceTest.html b/MyLocalChat/doc/test/ChatServiceTest.html new file mode 100644 index 0000000..c28704d --- /dev/null +++ b/MyLocalChat/doc/test/ChatServiceTest.html @@ -0,0 +1,213 @@ + + + + +ChatServiceTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class ChatServiceTest

    +
    +
    java.lang.Object +
    test.ChatServiceTest
    +
    +
    +
    +
    public class ChatServiceTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ChatServiceTest

        +
        public ChatServiceTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        setUp

        +
        public void setUp()
        +
        +
      • +
      • +
        +

        testCreateUser

        +
        public void testCreateUser()
        +
        +
      • +
      • +
        +

        testCreateDuplicateUser

        +
        public void testCreateDuplicateUser()
        +
        +
      • +
      • +
        +

        testCreateChatRoom

        +
        public void testCreateChatRoom()
        +
        +
      • +
      • +
        +

        testCreateChatRoomNonExistentUsers

        +
        public void testCreateChatRoomNonExistentUsers()
        +
        +
      • +
      • +
        +

        testSendAndReceiveMessages

        +
        public void testSendAndReceiveMessages()
        +
        +
      • +
      • +
        +

        testAddContact

        +
        public void testAddContact()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/ExceptionTest.html b/MyLocalChat/doc/test/ExceptionTest.html new file mode 100644 index 0000000..181577d --- /dev/null +++ b/MyLocalChat/doc/test/ExceptionTest.html @@ -0,0 +1,195 @@ + + + + +ExceptionTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class ExceptionTest

    +
    +
    java.lang.Object +
    test.ExceptionTest
    +
    +
    +
    +
    public class ExceptionTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ExceptionTest

        +
        public ExceptionTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        setUp

        +
        public void setUp()
        +
        +
      • +
      • +
        +

        testSendMessageToNonExistentRoom

        +
        public void testSendMessageToNonExistentRoom()
        +
        +
      • +
      • +
        +

        testSendMessageNonExistentUser

        +
        public void testSendMessageNonExistentUser()
        +
        +
      • +
      • +
        +

        testAddNonExistentContact

        +
        public void testAddNonExistentContact()
        +
        +
      • +
      • +
        +

        testGetUserContactsNonExistentUser

        +
        public void testGetUserContactsNonExistentUser()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/GruppenRoomTest.html b/MyLocalChat/doc/test/GruppenRoomTest.html new file mode 100644 index 0000000..da1b0d2 --- /dev/null +++ b/MyLocalChat/doc/test/GruppenRoomTest.html @@ -0,0 +1,186 @@ + + + + +GruppenRoomTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class GruppenRoomTest

    +
    +
    java.lang.Object +
    test.GruppenRoomTest
    +
    +
    +
    +
    public class GruppenRoomTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        GruppenRoomTest

        +
        public GruppenRoomTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        testGruppenRoomCreation

        +
        public void testGruppenRoomCreation()
        +
        +
      • +
      • +
        +

        testAddParticipant

        +
        public void testAddParticipant()
        +
        +
      • +
      • +
        +

        testAddDuplicateParticipant

        +
        public void testAddDuplicateParticipant()
        +
        +
      • +
      • +
        +

        testAddAdmin

        +
        public void testAddAdmin()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/IntegrationTest.html b/MyLocalChat/doc/test/IntegrationTest.html new file mode 100644 index 0000000..6b962b6 --- /dev/null +++ b/MyLocalChat/doc/test/IntegrationTest.html @@ -0,0 +1,168 @@ + + + + +IntegrationTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class IntegrationTest

    +
    +
    java.lang.Object +
    test.IntegrationTest
    +
    +
    +
    +
    public class IntegrationTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        IntegrationTest

        +
        public IntegrationTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        testCompleteChatWorkflow

        +
        public void testCompleteChatWorkflow()
        +
        +
      • +
      • +
        +

        testGroupChatWorkflow

        +
        public void testGroupChatWorkflow()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/MessageTest.html b/MyLocalChat/doc/test/MessageTest.html new file mode 100644 index 0000000..b3d5dbd --- /dev/null +++ b/MyLocalChat/doc/test/MessageTest.html @@ -0,0 +1,177 @@ + + + + +MessageTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class MessageTest

    +
    +
    java.lang.Object +
    test.MessageTest
    +
    +
    +
    +
    public class MessageTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        MessageTest

        +
        public MessageTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        testMessageCreation

        +
        public void testMessageCreation()
        +
        +
      • +
      • +
        +

        testMessageToString

        +
        public void testMessageToString()
        +
        +
      • +
      • +
        +

        testMessageSetters

        +
        public void testMessageSetters()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/UserTest.html b/MyLocalChat/doc/test/UserTest.html new file mode 100644 index 0000000..85f94f7 --- /dev/null +++ b/MyLocalChat/doc/test/UserTest.html @@ -0,0 +1,186 @@ + + + + +UserTest + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package test
    +

    Class UserTest

    +
    +
    java.lang.Object +
    test.UserTest
    +
    +
    +
    +
    public class UserTest +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        UserTest

        +
        public UserTest()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        testUserCreation

        +
        public void testUserCreation()
        +
        +
      • +
      • +
        +

        testUserStatusChanges

        +
        public void testUserStatusChanges()
        +
        +
      • +
      • +
        +

        testUserContacts

        +
        public void testUserContacts()
        +
        +
      • +
      • +
        +

        testUserEquals

        +
        public void testUserEquals()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/ChatRoomTest.html b/MyLocalChat/doc/test/class-use/ChatRoomTest.html new file mode 100644 index 0000000..86d4c95 --- /dev/null +++ b/MyLocalChat/doc/test/class-use/ChatRoomTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.ChatRoomTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.ChatRoomTest

    +
    +No usage of test.ChatRoomTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/ChatServiceTest.html b/MyLocalChat/doc/test/class-use/ChatServiceTest.html new file mode 100644 index 0000000..d6e11c4 --- /dev/null +++ b/MyLocalChat/doc/test/class-use/ChatServiceTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.ChatServiceTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.ChatServiceTest

    +
    +No usage of test.ChatServiceTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/ExceptionTest.html b/MyLocalChat/doc/test/class-use/ExceptionTest.html new file mode 100644 index 0000000..bf128ba --- /dev/null +++ b/MyLocalChat/doc/test/class-use/ExceptionTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.ExceptionTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.ExceptionTest

    +
    +No usage of test.ExceptionTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/GruppenRoomTest.html b/MyLocalChat/doc/test/class-use/GruppenRoomTest.html new file mode 100644 index 0000000..bc61d3b --- /dev/null +++ b/MyLocalChat/doc/test/class-use/GruppenRoomTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.GruppenRoomTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.GruppenRoomTest

    +
    +No usage of test.GruppenRoomTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/IntegrationTest.html b/MyLocalChat/doc/test/class-use/IntegrationTest.html new file mode 100644 index 0000000..dd94c41 --- /dev/null +++ b/MyLocalChat/doc/test/class-use/IntegrationTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.IntegrationTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.IntegrationTest

    +
    +No usage of test.IntegrationTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/MessageTest.html b/MyLocalChat/doc/test/class-use/MessageTest.html new file mode 100644 index 0000000..4ff6204 --- /dev/null +++ b/MyLocalChat/doc/test/class-use/MessageTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.MessageTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.MessageTest

    +
    +No usage of test.MessageTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/class-use/UserTest.html b/MyLocalChat/doc/test/class-use/UserTest.html new file mode 100644 index 0000000..9a866d2 --- /dev/null +++ b/MyLocalChat/doc/test/class-use/UserTest.html @@ -0,0 +1,58 @@ + + + + +Uses of Class test.UserTest + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    test.UserTest

    +
    +No usage of test.UserTest
    +
    +
    + + diff --git a/MyLocalChat/doc/test/package-summary.html b/MyLocalChat/doc/test/package-summary.html new file mode 100644 index 0000000..d19ff17 --- /dev/null +++ b/MyLocalChat/doc/test/package-summary.html @@ -0,0 +1,95 @@ + + + + +test + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package test

    +
    +
    +
    package test
    +
    + +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/package-tree.html b/MyLocalChat/doc/test/package-tree.html new file mode 100644 index 0000000..fecaf3e --- /dev/null +++ b/MyLocalChat/doc/test/package-tree.html @@ -0,0 +1,78 @@ + + + + +test Class Hierarchy + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package test

    +Package Hierarchies: + +
    +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/test/package-use.html b/MyLocalChat/doc/test/package-use.html new file mode 100644 index 0000000..728cda1 --- /dev/null +++ b/MyLocalChat/doc/test/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package test + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    test

    +
    +No usage of test
    +
    +
    + + diff --git a/MyLocalChat/doc/type-search-index.js b/MyLocalChat/doc/type-search-index.js new file mode 100644 index 0000000..e851699 --- /dev/null +++ b/MyLocalChat/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"ui","l":"Chat"},{"p":"domain","l":"ChatRoom"},{"p":"test","l":"ChatRoomTest"},{"p":"server","l":"ChatServer"},{"p":"fassade","l":"ChatService"},{"p":"test","l":"ChatServiceTest"},{"p":"test","l":"ExceptionTest"},{"p":"domain","l":"GruppenRoom"},{"p":"test","l":"GruppenRoomTest"},{"p":"test","l":"IntegrationTest"},{"p":"app","l":"Main"},{"p":"domain","l":"Message"},{"p":"test","l":"MessageTest"},{"p":"domain","l":"MessageType"},{"p":"domain","l":"User"},{"p":"domain","l":"UserChatRoom"},{"p":"domain","l":"UserContacts"},{"p":"domain","l":"UserGruppen"},{"p":"domain","l":"UserGruppenRoom"},{"p":"domain","l":"UserInfo"},{"p":"test","l":"UserTest"}];updateSearchResults(); \ No newline at end of file diff --git a/MyLocalChat/doc/ui/Chat.html b/MyLocalChat/doc/ui/Chat.html new file mode 100644 index 0000000..ed58453 --- /dev/null +++ b/MyLocalChat/doc/ui/Chat.html @@ -0,0 +1,202 @@ + + + + +Chat + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    Package ui
    +

    Class Chat

    +
    + +
    +
    +
    All Implemented Interfaces:
    +
    ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants
    +
    +
    +
    public class Chat +extends JFrame
    +
    +
    See Also:
    +
    + +
    +
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        Chat

        +
        public Chat(String username, + int x, + int y)
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/MyLocalChat/doc/ui/class-use/Chat.html b/MyLocalChat/doc/ui/class-use/Chat.html new file mode 100644 index 0000000..33c3711 --- /dev/null +++ b/MyLocalChat/doc/ui/class-use/Chat.html @@ -0,0 +1,58 @@ + + + + +Uses of Class ui.Chat + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    ui.Chat

    +
    +No usage of ui.Chat
    +
    +
    + + diff --git a/MyLocalChat/doc/ui/package-summary.html b/MyLocalChat/doc/ui/package-summary.html new file mode 100644 index 0000000..beaea63 --- /dev/null +++ b/MyLocalChat/doc/ui/package-summary.html @@ -0,0 +1,83 @@ + + + + +ui + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package ui

    +
    +
    +
    package ui
    +
    +
      +
    • +
      +
      Classes
      +
      +
      Class
      +
      Description
      + +
       
      +
      +
      +
    • +
    +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/ui/package-tree.html b/MyLocalChat/doc/ui/package-tree.html new file mode 100644 index 0000000..733cf61 --- /dev/null +++ b/MyLocalChat/doc/ui/package-tree.html @@ -0,0 +1,92 @@ + + + + +ui Class Hierarchy + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package ui

    +Package Hierarchies: + +
    +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + + diff --git a/MyLocalChat/doc/ui/package-use.html b/MyLocalChat/doc/ui/package-use.html new file mode 100644 index 0000000..2a87f18 --- /dev/null +++ b/MyLocalChat/doc/ui/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package ui + + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    ui

    +
    +No usage of ui
    +
    +
    + + diff --git a/MyLocalChat/src/main/java/domain/ChatRoom.java b/MyLocalChat/src/main/java/domain/ChatRoom.java index 65f100f..ced91c1 100644 --- a/MyLocalChat/src/main/java/domain/ChatRoom.java +++ b/MyLocalChat/src/main/java/domain/ChatRoom.java @@ -4,56 +4,101 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +/** + * Repräsentiert einen Chatraum zwischen zwei Benutzern. + * Verwaltet Nachrichten und Metadaten der Konversation. + */ public class ChatRoom { - private static int nextRoomId = 1000; - private int roomId; - private List messages; - private final LocalDateTime createdAt; - private User user1; - private User user2; - + private static int nextRoomId = 1000; // Zähler für automatische Raum-ID Vergabe + private int roomId; // Eindeutige ID des Chatraums + private List messages; // Liste aller Nachrichten im Raum + private final LocalDateTime createdAt; // Erstellungszeitpunkt des Raums + private User user1; // Erster Benutzer im Chat + private User user2; // Zweiter Benutzer im Chat + + /** + * Erstellt einen neuen Chatraum zwischen zwei Benutzern. + * + * @param user1 Der erste Benutzer des Chats + * @param user2 Der zweite Benutzer des Chats + */ public ChatRoom(User user1, User user2) { - this.roomId = nextRoomId++; - this.messages = new ArrayList<>(); - this.createdAt = LocalDateTime.now(); + this.roomId = nextRoomId++; // Vergibt automatische ID + this.messages = new ArrayList<>(); // Initialisiert leere Nachrichtenliste + this.createdAt = LocalDateTime.now(); // Setzt aktuellen Zeitpunkt this.user1 = user1; this.user2 = user2; } + + /** + * Fügt eine Nachricht zum Chatraum hinzu. + * + * @param message Die hinzuzufügende Nachricht + */ public void addMessage(Message message) { if (messages == null) - messages = new ArrayList<>(); + messages = new ArrayList<>(); // Sicherstellt, dass Liste existiert - messages.add(message); + messages.add(message); // Nachricht zur Liste hinzufügen } + // Getter-Methoden für Zugriff auf private Felder - // Getter und Setter + /** + * Gibt die eindeutige Raum-ID zurück. + * + * @return Die ID des Chatraums + */ public int getRoomId() { return roomId; } - - + /** + * Gibt den ersten Benutzer des Chats zurück. + * + * @return User-Objekt des ersten Benutzers + */ public User getUser1() { - return user1; - } - public User getUser2() { - return user2; - } - public List getMessages() { + return user1; + } + + /** + * Gibt den zweiten Benutzer des Chats zurück. + * + * @return User-Objekt des zweiten Benutzers + */ + public User getUser2() { + return user2; + } + + /** + * Gibt die Liste aller Nachrichten im Chatraum zurück. + * + * @return Liste von Message-Objekten + */ + public List getMessages() { return messages; } + /** + * Gibt den Erstellungszeitpunkt des Chatraums zurück. + * + * @return LocalDateTime des Erstellungszeitpunkts + */ public LocalDateTime getCreatedAt() { return createdAt; } - - + /** + * Zeigt alle Nachrichten des Chatraums als String-Liste an. + * + * @return Liste von Nachrichten-Strings oder leere Liste bei keinen Nachrichten + */ public List showMessages(){ if (messages == null || messages.isEmpty()) - return new ArrayList<>(); + return new ArrayList<>(); // Rückgabe leere Liste falls keine Nachrichten + // Wandelt jede Nachricht in String um und sammelt in Liste return messages.stream() .map(Message::toString) .toList(); diff --git a/MyLocalChat/src/main/java/domain/GruppenRoom.java b/MyLocalChat/src/main/java/domain/GruppenRoom.java index bb0c177..126c78b 100644 --- a/MyLocalChat/src/main/java/domain/GruppenRoom.java +++ b/MyLocalChat/src/main/java/domain/GruppenRoom.java @@ -5,17 +5,28 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +/** + * Repräsentiert einen Gruppenchatraum mit mehreren Teilnehmern und Administratoren. + * Bietet Funktionen zur Verwaltung von Teilnehmern, Nachrichten und Admin-Rechten. + */ public class GruppenRoom { - private static int nextGroupId = 1000; - private final int groupId; - private final User creator; - private List admins; - private List participants; - private String description; - private String name; - private List messages; - private final LocalDateTime createdAt; + private static int nextGroupId = 1000; // Zähler für automatische Gruppen-ID Vergabe + private final int groupId; // Eindeutige ID der Gruppe + private final User creator; // Ersteller der Gruppe + private List admins; // Liste der Administratoren + private List participants; // Liste aller Teilnehmer + private String description; // Beschreibung der Gruppe + private String name; // Name der Gruppe + private List messages; // Liste aller Gruppen-Nachrichten + private final LocalDateTime createdAt; // Erstellungszeitpunkt der Gruppe + /** + * Erstellt eine neue Gruppe mit dem angegebenen Ersteller, Namen und Beschreibung. + * + * @param creator Der Ersteller der Gruppe (darf nicht null sein) + * @param name Der Name der Gruppe (darf nicht null sein) + * @param description Die Beschreibung der Gruppe (kann null sein) + */ public GruppenRoom(User creator, String name, String description) { Objects.requireNonNull(creator, "Creator darf nicht null sein"); Objects.requireNonNull(name, "Name darf nicht null sein"); @@ -30,13 +41,21 @@ public class GruppenRoom { this.participants = new ArrayList<>(); this.messages = new ArrayList<>(); - this.admins.add(creator); - this.participants.add(creator); + this.admins.add(creator); // Ersteller wird automatisch Admin + this.participants.add(creator); // Ersteller wird automatisch Teilnehmer // Gruppe beim Creator registrieren creator.getUserGruppenRoom().addGruppenRoom(this); } + /** + * Fügt einen neuen Teilnehmer zur Gruppe hinzu. + * + * @param user Der hinzuzufügende Benutzer (darf nicht null sein) + * @return true wenn der Benutzer erfolgreich hinzugefügt wurde + * @throws IllegalArgumentException wenn der Benutzer bereits in der Gruppe ist + * @throws IllegalStateException wenn die Gruppe nicht beim Benutzer registriert werden konnte + */ public boolean addParticipant(User user) { Objects.requireNonNull(user, "User darf nicht null sein"); @@ -53,6 +72,15 @@ public class GruppenRoom { return participants.add(user); } + /** + * Entfernt einen Teilnehmer aus der Gruppe. + * + * @param remover Der Benutzer, der die Entfernung durchführt (darf nicht null sein) + * @param userToRemove Der zu entfernende Benutzer (darf nicht null sein) + * @return true wenn der Benutzer erfolgreich entfernt wurde + * @throws IllegalArgumentException wenn der Entferner keine Berechtigung hat oder + * der Creator entfernt werden soll + */ public boolean removeParticipant(User remover, User userToRemove) { Objects.requireNonNull(remover, "Remover darf nicht null sein"); Objects.requireNonNull(userToRemove, "UserToRemove darf nicht null sein"); @@ -76,6 +104,15 @@ public class GruppenRoom { return participants.remove(userToRemove); } + /** + * Befördert einen Teilnehmer zum Administrator. + * + * @param promoter Der befördernde Administrator (darf nicht null sein) + * @param userToPromote Der zu befördernde Benutzer (darf nicht null sein) + * @return true wenn der Benutzer erfolgreich zum Admin befördert wurde + * @throws IllegalArgumentException wenn der Promoter kein Admin ist, der Benutzer + * nicht in der Gruppe ist oder bereits Admin ist + */ public boolean addAdmin(User promoter, User userToPromote) { Objects.requireNonNull(promoter, "Promoter darf nicht null sein"); Objects.requireNonNull(userToPromote, "UserToPromote darf nicht null sein"); @@ -95,6 +132,15 @@ public class GruppenRoom { return admins.add(userToPromote); } + /** + * Entzieht einem Benutzer die Administrator-Rechte. + * + * @param demoter Der Administrator, der die Rechte entzieht (darf nicht null sein) + * @param userToDemote Der Benutzer, dem die Rechte entzogen werden (darf nicht null sein) + * @return true wenn die Admin-Rechte erfolgreich entzogen wurden + * @throws IllegalArgumentException wenn der Demoter kein Admin ist, der Creator + * betroffen ist oder der Benutzer kein Admin ist + */ public boolean removeAdmin(User demoter, User userToDemote) { Objects.requireNonNull(demoter, "Demoter darf nicht null sein"); Objects.requireNonNull(userToDemote, "UserToDemote darf nicht null sein"); @@ -114,6 +160,13 @@ public class GruppenRoom { return admins.remove(userToDemote); } + /** + * Fügt eine Nachricht zur Gruppenkonversation hinzu. + * + * @param sender Der Absender der Nachricht (darf nicht null sein) + * @param content Der Inhalt der Nachricht (darf nicht null sein) + * @throws IllegalArgumentException wenn der Absender nicht Gruppenmitglied ist + */ public void addMessage(User sender, String content) { Objects.requireNonNull(sender, "Sender darf nicht null sein"); Objects.requireNonNull(content, "Content darf nicht null sein"); @@ -126,6 +179,11 @@ public class GruppenRoom { messages.add(message); } + /** + * Gibt alle Nachrichten der Gruppe als String-Liste zurück. + * + * @return Liste der Nachrichten-Strings oder leere Liste bei keinen Nachrichten + */ public List showMessages() { if (messages.isEmpty()) { return new ArrayList<>(); @@ -136,28 +194,92 @@ public class GruppenRoom { .toList(); } + /** + * Überprüft ob ein Benutzer Administrator der Gruppe ist. + * + * @param user Der zu überprüfende Benutzer + * @return true wenn der Benutzer Admin ist, sonst false + */ public boolean isAdmin(User user) { return admins.contains(user); } + /** + * Überprüft ob ein Benutzer Teilnehmer der Gruppe ist. + * + * @param user Der zu überprüfende Benutzer + * @return true wenn der Benutzer Teilnehmer ist, sonst false + */ public boolean isParticipant(User user) { return participants.contains(user); } - // Getter-Methoden + // Getter-Methoden für den Zugriff auf die privaten Felder + + /** + * Gibt die eindeutige Gruppen-ID zurück. + * + * @return Die ID der Gruppe + */ public int getGroupId() { return groupId; } + + /** + * Gibt den Ersteller der Gruppe zurück. + * + * @return Der Creator der Gruppe + */ public User getCreator() { return creator; } + + /** + * Gibt den Namen der Gruppe zurück. + * + * @return Der Gruppenname + */ public String getName() { return name; } + + /** + * Gibt die Beschreibung der Gruppe zurück. + * + * @return Die Gruppenbeschreibung + */ public String getDescription() { return description; } + + /** + * Gibt den Erstellungszeitpunkt der Gruppe zurück. + * + * @return Der Zeitpunkt der Gruppenerstellung + */ public LocalDateTime getCreatedAt() { return createdAt; } + + /** + * Gibt eine Kopie der Admin-Liste zurück. + * + * @return Liste der Administratoren + */ public List getAdmins() { return new ArrayList<>(admins); } + + /** + * Gibt eine Kopie der Teilnehmerliste zurück. + * + * @return Liste der Teilnehmer + */ public List getParticipants() { return new ArrayList<>(participants); } + + /** + * Gibt eine Kopie der Nachrichtenliste zurück. + * + * @return Liste der Nachrichten + */ public List getMessages() { return new ArrayList<>(messages); } + /** + * Gibt eine String-Repräsentation der Gruppe zurück. + * + * @return String mit Gruppenname, ID, Teilnehmer- und Nachrichtenanzahl + */ @Override public String toString() { return String.format("GruppenRoom{name='%s', id=%d, participants=%d, messages=%d}", name, groupId, participants.size(), messages.size()); } - } \ No newline at end of file diff --git a/MyLocalChat/src/main/java/domain/Message.java b/MyLocalChat/src/main/java/domain/Message.java index 1aaf9f8..fc0c3cf 100644 --- a/MyLocalChat/src/main/java/domain/Message.java +++ b/MyLocalChat/src/main/java/domain/Message.java @@ -3,68 +3,143 @@ package domain; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +/** + * Repräsentiert eine Nachricht im Chat-System. + * Enthält Informationen über Absender, Inhalt, Zeitstempel und Nachrichtentyp. + */ public class Message { - private User sender; - private String content; - private LocalDateTime timestamp; - private MessageType type; + private User sender; // Absender der Nachricht + private String content; // Inhalt der Nachricht + private LocalDateTime timestamp; // Zeitpunkt der Erstellung + private MessageType type; // Typ der Nachricht (TEXT, IMAGE, etc.) + /** + * Zeitformatierer für die Darstellung des Zeitstempels. + * Formatiert die Zeit im Format "HH:mm" (Stunden:Minuten). + */ private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm"); + /** + * Erstellt eine neue Textnachricht mit aktuellem Zeitstempel. + * + * @param sender Der Absender der Nachricht (darf nicht null sein) + * @param content Der Inhalt der Nachricht (darf nicht null oder leer sein) + */ public Message(User sender, String content) { this.sender = sender; this.content = content; - this.timestamp = LocalDateTime.now(); - this.type = MessageType.TEXT; + this.timestamp = LocalDateTime.now(); // Setzt aktuellen Zeitpunkt + this.type = MessageType.TEXT; // Standardmäßig Textnachricht } + /** + * Erstellt eine neue Nachricht mit spezifischem Typ und aktuellem Zeitstempel. + * + * @param sender Der Absender der Nachricht (darf nicht null sein) + * @param content Der Inhalt der Nachricht (darf nicht null oder leer sein) + * @param type Der Typ der Nachricht (TEXT, IMAGE, FILE, etc.) + */ public Message(User sender, String content, MessageType type) { - this(sender, content); - this.type = type; + this(sender, content); // Ruft den Hauptkonstruktor auf + this.type = type; // Setzt den spezifischen Nachrichtentyp } + /** + * Gibt die Nachricht mit Zeitstempel formatiert zurück. + * Format: "[HH:mm] Absender: Nachricht" + * + * @return Formatierter Nachrichten-String mit Zeitstempel + */ public String toTimeString() { return String.format("[%s] %s: %s", - timestamp.format(TIME_FORMATTER), - sender.getUsername(), - content); + timestamp.format(TIME_FORMATTER), // Formatiert Zeit im HH:mm Format + sender.getUsername(), // Holt den Benutzernamen des Absenders + content); // Nachrichteninhalt } + /** + * Gibt die String-Repräsentation der Nachricht zurück. + * Verwendet standardmäßig die Zeitstempel-Formatierung. + * + * @return Formatierte Nachricht als String + */ @Override public String toString() { - return toTimeString(); + return toTimeString(); // Verwendet die Zeitstempel-Formatierung } + // Getter- und Setter-Methoden + + /** + * Gibt den Absender der Nachricht zurück. + * + * @return User-Objekt des Absenders + */ public User getSender() { return sender; } + /** + * Setzt den Absender der Nachricht. + * + * @param sender Der neue Absender (darf nicht null sein) + */ public void setSender(User sender) { this.sender = sender; } + /** + * Gibt den Inhalt der Nachricht zurück. + * + * @return Nachrichteninhalt als String + */ public String getContent() { return content; } + /** + * Setzt den Inhalt der Nachricht. + * + * @param content Der neue Nachrichteninhalt (darf nicht null sein) + */ public void setContent(String content) { this.content = content; } + /** + * Gibt den Zeitstempel der Nachricht zurück. + * + * @return LocalDateTime des Erstellungszeitpunkts + */ public LocalDateTime getTimestamp() { return timestamp; } + /** + * Setzt den Zeitstempel der Nachricht. + * + * @param timestamp Der neue Zeitstempel (darf nicht null sein) + */ public void setTimestamp(LocalDateTime timestamp) { this.timestamp = timestamp; } + /** + * Gibt den Typ der Nachricht zurück. + * + * @return MessageType der Nachricht + */ public MessageType getType() { return type; } + /** + * Setzt den Typ der Nachricht. + * + * @param type Der neue Nachrichtentyp + */ public void setType(MessageType type) { this.type = type; } diff --git a/MyLocalChat/src/main/java/domain/User.java b/MyLocalChat/src/main/java/domain/User.java index 19292a6..3172ae6 100644 --- a/MyLocalChat/src/main/java/domain/User.java +++ b/MyLocalChat/src/main/java/domain/User.java @@ -2,65 +2,125 @@ package domain; import java.util.List; +/** + * Repräsentiert einen Benutzer im Chat-System. + * Enthält Benutzerinformationen, Kontakte, Chaträume und Gruppenmitgliedschaften. + * Jeder Benutzer hat eine eindeutige ID und kann multiple Chat-Beziehungen verwalten. + */ public class User { - private static int nextUserId = 1000; - private int userId; - private final String username; - private boolean isOnline; - private UserInfo userInfo; - private UserContacts userContacts; - private UserChatRoom chatRoom; - private UserGruppenRoom gruppenRoom; - + private static int nextUserId = 1000; // Zähler für automatische User-ID Vergabe + private int userId; // Eindeutige ID des Benutzers + private final String username; // Benutzername (final, da unveränderlich) + private boolean isOnline; // Online-Status des Benutzers + private UserInfo userInfo; // Statusinformation des Benutzers + private UserContacts userContacts; // Kontaktliste des Benutzers + private UserChatRoom chatRoom; // Verwaltung der Chaträume des Benutzers + private UserGruppenRoom gruppenRoom; // Verwaltung der Gruppenmitgliedschaften + /** + * Erstellt einen neuen Benutzer mit dem angegebenen Benutzernamen. + * Der Benutzer wird automatisch als online und "verfügbar" eingestuft. + * + * @param username Der Benutzername für den neuen Benutzer (darf nicht null oder leer sein) + */ public User(String username) { - this.userId = nextUserId++; + this.userId = nextUserId++; // Vergibt automatische eindeutige ID this.username = username; - this.isOnline = true; - this.userInfo = UserInfo.VERFÜGBAR; - this.userContacts = new UserContacts(); - this.chatRoom = new UserChatRoom(); - this.gruppenRoom = new UserGruppenRoom(); - + this.isOnline = true; // Standardmäßig online + this.userInfo = UserInfo.VERFÜGBAR; // Standard-Status "verfügbar" + this.userContacts = new UserContacts(); // Initialisiert leere Kontaktliste + this.chatRoom = new UserChatRoom(); // Initialisiert Chatraum-Verwaltung + this.gruppenRoom = new UserGruppenRoom(); // Initialisiert Gruppen-Verwaltung } + /** + * Gibt die eindeutige User-ID zurück. + * + * @return Die ID des Benutzers + */ public int getUserId() { return userId; } + /** + * Überprüft den Online-Status des Benutzers. + * + * @return true wenn der Benutzer online ist, false wenn offline + */ public boolean isOnline() { return isOnline; } + /** + * Setzt den Online-Status des Benutzers. + * + * @param isOnline true für online, false für offline + */ public void setOnline(boolean isOnline) { this.isOnline = isOnline; } + /** + * Gibt den Benutzernamen zurück. + * + * @return Der Benutzername + */ public String getUsername() { return username; } + /** + * Gibt den aktuellen Statusinformationen des Benutzers zurück. + * + * @return UserInfo-Objekt mit den Statusinformationen + */ public UserInfo getUserInfo() { return userInfo; } + /** + * Setzt die Statusinformationen des Benutzers. + * + * @param userInfo Die neuen Statusinformationen + */ public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; } + /** + * Gibt die Kontaktliste des Benutzers zurück. + * + * @return UserContacts-Objekt mit allen Kontakten + */ public UserContacts getUserContacts() { return userContacts; } + /** + * Gibt die Chatraum-Verwaltung des Benutzers zurück. + * + * @return UserChatRoom-Objekt mit allen Chaträumen + */ public UserChatRoom getUserChatRoom() { return chatRoom; } + /** + * Gibt die Gruppen-Verwaltung des Benutzers zurück. + * + * @return UserGruppenRoom-Objekt mit allen Gruppenmitgliedschaften + */ public UserGruppenRoom getUserGruppenRoom() { return gruppenRoom; } + /** + * Gibt eine String-Repräsentation des Benutzers zurück. + * Enthält User-ID, Benutzername, Online-Status und User-Info. + * + * @return String mit den Benutzerinformationen + */ @Override public String toString() { return "User [userId=" + userId + ", username=" + username + ", isOnline=" + isOnline + ", userInfo=" + userInfo diff --git a/MyLocalChat/src/main/java/domain/UserChatRoom.java b/MyLocalChat/src/main/java/domain/UserChatRoom.java index 7ccf869..02fc575 100644 --- a/MyLocalChat/src/main/java/domain/UserChatRoom.java +++ b/MyLocalChat/src/main/java/domain/UserChatRoom.java @@ -4,14 +4,29 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +/** + * Verwaltet die Chaträume eines Benutzers. + * Enthält Funktionen zum Hinzufügen, Entfernen und Abfragen von Chaträumen. + */ public class UserChatRoom { - private List chatRooms; + private List chatRooms; // Liste aller Chaträume des Benutzers + /** + * Konstruktor für UserChatRoom. + * Initialisiert eine leere Liste von Chaträumen. + */ public UserChatRoom() { this.chatRooms = new ArrayList<>(); } + /** + * Fügt einen Chatraum zur Liste des Benutzers hinzu. + * + * @param chatRoom Der hinzuzufügende Chatraum (darf nicht null sein) + * @return true wenn der Chatraum erfolgreich hinzugefügt wurde + * @throws IllegalArgumentException wenn der Chatraum bereits vorhanden ist + */ public boolean addChat(ChatRoom chatRoom) { Objects.requireNonNull(chatRoom, "ChatRoom darf nicht null sein"); @@ -22,6 +37,13 @@ public class UserChatRoom { return chatRooms.add(chatRoom); } + /** + * Entfernt einen Chatraum aus der Liste des Benutzers. + * + * @param chatRoom Der zu entfernende Chatraum (darf nicht null sein) + * @return true wenn der Chatraum erfolgreich entfernt wurde + * @throws IllegalArgumentException wenn der Chatraum nicht gefunden wurde + */ public boolean removeChat(ChatRoom chatRoom) { Objects.requireNonNull(chatRoom, "ChatRoom darf nicht null sein"); @@ -32,10 +54,20 @@ public class UserChatRoom { return chatRooms.remove(chatRoom); } + /** + * Gibt eine Kopie aller Chaträume des Benutzers zurück. + * + * @return Liste aller Chaträume + */ public List getAllChatRooms() { return new ArrayList<>(chatRooms); // Rückgabe einer Kopie für Encapsulation } + /** + * Gibt eine Liste aller Chatraum-IDs des Benutzers zurück. + * + * @return Liste von Chatraum-IDs + */ public List getChatRoomIds() { List ids = new ArrayList<>(); for (ChatRoom room : chatRooms) { @@ -44,22 +76,46 @@ public class UserChatRoom { return ids; } + /** + * Überprüft ob ein bestimmter Chatraum vorhanden ist. + * + * @param chatRoom Der zu überprüfende Chatraum + * @return true wenn der Chatraum vorhanden ist, sonst false + */ public boolean contains(ChatRoom chatRoom) { return chatRooms.contains(chatRoom); } + /** + * Gibt die Anzahl der Chaträume des Benutzers zurück. + * + * @return Anzahl der Chaträume + */ public int getChatRoomCount() { return chatRooms.size(); } + /** + * Überprüft ob der Benutzer keine Chaträume hat. + * + * @return true wenn keine Chaträume vorhanden sind, sonst false + */ public boolean isEmpty() { return chatRooms.isEmpty(); } + /** + * Entfernt alle Chaträume des Benutzers. + */ public void clearChatRooms() { chatRooms.clear(); } + /** + * Gibt Informationen aller Chaträume als String-Liste zurück. + * + * @return Liste von Chatraum-Informationen + */ public List getChatRoomInfos() { List infos = new ArrayList<>(); for (ChatRoom room : chatRooms) { diff --git a/MyLocalChat/src/main/java/domain/UserContacts.java b/MyLocalChat/src/main/java/domain/UserContacts.java index fa2ec60..4685de6 100644 --- a/MyLocalChat/src/main/java/domain/UserContacts.java +++ b/MyLocalChat/src/main/java/domain/UserContacts.java @@ -4,13 +4,29 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +/** + * Verwaltet die Kontaktliste eines Benutzers. + * Bietet Funktionen zum Hinzufügen, Entfernen und Verwalten von Kontakten. + */ public class UserContacts { - private List contacts; + private List contacts; // Liste aller Kontakte des Benutzers + /** + * Konstruktor für UserContacts. + * Initialisiert eine leere Kontaktliste. + */ public UserContacts() { this.contacts = new ArrayList<>(); } + /** + * Fügt einen neuen Kontakt zur Kontaktliste hinzu. + * + * @param user Der hinzuzufügende Benutzer (darf nicht null sein) + * @return true wenn der Kontakt erfolgreich hinzugefügt wurde + * @throws NullPointerException wenn der Benutzer null ist + * @throws IllegalArgumentException wenn der Benutzer bereits in der Kontaktliste existiert + */ public boolean addContact(User user) { if (user == null) throw new NullPointerException("User darf nicht null sein"); @@ -21,32 +37,61 @@ public class UserContacts { return contacts.add(user); } + /** + * Entfernt einen Kontakt aus der Kontaktliste. + * + * @param user Der zu entfernende Benutzer (darf nicht null sein) + * @return true wenn der Kontakt erfolgreich entfernt wurde, false wenn nicht vorhanden + * @throws NullPointerException wenn der Benutzer null ist + */ public boolean removeContact(User user) { if (user == null) throw new NullPointerException("User darf nicht null sein"); return contacts.remove(user); } + /** + * Überprüft ob ein Benutzer in der Kontaktliste vorhanden ist. + * + * @param user Der zu überprüfende Benutzer (darf nicht null sein) + * @return true wenn der Benutzer in der Kontaktliste ist, sonst false + * @throws NullPointerException wenn der Benutzer null ist + */ public boolean hasContact(User user) { if (user == null) throw new NullPointerException("User darf nicht null sein"); return contacts.contains(user); } + /** + * Zeigt alle Kontakte als String-Liste an. + * + * @return Liste von Kontakt-Strings oder leere Liste bei keinen Kontakten + */ public List showAllContacts() { if (contacts == null || contacts.isEmpty()) { return new ArrayList<>(); } return contacts.stream() - .map(User::toString) + .map(User::toString) // Wandelt jeden User in String um .toList(); } + /** + * Gibt eine Kopie der Kontaktliste zurück. + * + * @return Liste aller Kontakte (Kopie zur Wahrung der Encapsulation) + */ public List getContacts() { return new ArrayList<>(contacts); } + /** + * Gibt die Anzahl der Kontakte zurück. + * + * @return Anzahl der Kontakte in der Liste + */ public int getContactCount() { return contacts.size(); } diff --git a/MyLocalChat/src/main/java/domain/UserGruppenRoom.java b/MyLocalChat/src/main/java/domain/UserGruppenRoom.java index d7c0984..ae0280e 100644 --- a/MyLocalChat/src/main/java/domain/UserGruppenRoom.java +++ b/MyLocalChat/src/main/java/domain/UserGruppenRoom.java @@ -3,45 +3,93 @@ package domain; import java.util.ArrayList; import java.util.List; +/** + * Verwaltet die Gruppenmitgliedschaften eines Benutzers. + * Enthält Funktionen zum Hinzufügen, Entfernen und Abfragen von Gruppenräumen. + */ public class UserGruppenRoom { - private List gruppenRooms; + private List gruppenRooms; // Liste aller Gruppenräume des Benutzers + /** + * Konstruktor für UserGruppenRoom. + * Initialisiert eine leere Liste von Gruppenräumen. + */ public UserGruppenRoom() { this.gruppenRooms = new ArrayList<>(); } + /** + * Fügt einen Gruppenraum zur Liste des Benutzers hinzu. + * + * @param gruppenRoom Der hinzuzufügende Gruppenraum + * @return true wenn der Gruppenraum erfolgreich hinzugefügt wurde, + * false wenn der Gruppenraum bereits vorhanden ist + */ public boolean addGruppenRoom(GruppenRoom gruppenRoom) { if (gruppenRooms.contains(gruppenRoom)) - return false; + return false; // Gruppenraum bereits vorhanden return gruppenRooms.add(gruppenRoom); } + /** + * Entfernt einen Gruppenraum aus der Liste des Benutzers. + * + * @param gruppenRoom Der zu entfernende Gruppenraum + * @return true wenn der Gruppenraum erfolgreich entfernt wurde, + * false wenn der Gruppenraum nicht vorhanden war + */ public boolean removeGruppenRoom(GruppenRoom gruppenRoom) { return gruppenRooms.remove(gruppenRoom); } + /** + * Gibt eine Kopie aller Gruppenräume des Benutzers zurück. + * + * @return Liste aller Gruppenräume (Kopie zur Wahrung der Encapsulation) + */ public List getGruppenRooms() { - return new ArrayList<>(gruppenRooms); // Rückgabe einer Kopie + return new ArrayList<>(gruppenRooms); } + /** + * Überprüft ob ein bestimmter Gruppenraum vorhanden ist. + * + * @param gruppenRoom Der zu überprüfende Gruppenraum + * @return true wenn der Gruppenraum vorhanden ist, sonst false + */ public boolean contains(GruppenRoom gruppenRoom) { return gruppenRooms.contains(gruppenRoom); } + /** + * Gibt die Anzahl der Gruppenräume des Benutzers zurück. + * + * @return Anzahl der Gruppenräume + */ public int getSize() { return gruppenRooms.size(); } + /** + * Überprüft ob der Benutzer keine Gruppenräume hat. + * + * @return true wenn keine Gruppenräume vorhanden sind, sonst false + */ public boolean isEmpty() { return gruppenRooms.isEmpty(); } + /** + * Gibt die Namen aller Gruppenräume des Benutzers zurück. + * + * @return Liste von Gruppennamen + */ public List getGruppenRoomNames() { List names = new ArrayList<>(); - for (GruppenRoom room : gruppenRooms) { - names.add(room.getName()); - } + for (GruppenRoom room : gruppenRooms) + names.add(room.getName()); // Holt den Namen jedes Gruppenraums + return names; } } \ No newline at end of file diff --git a/MyLocalChat/src/main/java/fassade/ChatService.java b/MyLocalChat/src/main/java/fassade/ChatService.java index 695ee30..b5967a5 100644 --- a/MyLocalChat/src/main/java/fassade/ChatService.java +++ b/MyLocalChat/src/main/java/fassade/ChatService.java @@ -6,12 +6,21 @@ import java.util.List; import java.util.Map; import domain.*; +/** + * Zentrale Service-Klasse für die Chat-Anwendungslogik. + * Verwaltet Benutzer, Chaträume, Gruppen und Nachrichten. + * Stellt die Hauptschnittstelle für alle Chat-Operationen dar. + */ public class ChatService { - private Map chatrooms; - private Map gruppenRooms; - private Map users; - private Map usersById; + private Map chatrooms; // Speichert alle Chaträume nach ID + private Map gruppenRooms; // Speichert alle Gruppenräume nach ID + private Map users; // Speichert Benutzer nach Benutzername + private Map usersById; // Speichert Benutzer nach User-ID + /** + * Konstruktor für den ChatService. + * Initialisiert alle benötigten Datenstrukturen. + */ public ChatService() { chatrooms = new HashMap<>(); gruppenRooms = new HashMap<>(); @@ -19,6 +28,13 @@ public class ChatService { usersById = new HashMap<>(); } + /** + * Erstellt einen neuen Benutzer mit dem angegebenen Benutzernamen. + * + * @param userName Der gewünschte Benutzername + * @return true wenn der Benutzer erfolgreich erstellt wurde + * @throws IllegalArgumentException wenn der Benutzername bereits vergeben ist + */ public boolean createUser(String userName) { if (users.containsKey(userName)) throw new IllegalArgumentException("User existiert bereits: " + userName); @@ -29,14 +45,34 @@ public class ChatService { return true; } + /** + * Holt einen Benutzer anhand des Benutzernamens (private Hilfsmethode). + * + * @param userName Der Benutzername + * @return User-Objekt oder null wenn nicht gefunden + */ private User getUser(String userName) { return users.get(userName); } + /** + * Holt einen Benutzer anhand der User-ID (private Hilfsmethode). + * + * @param userId Die User-ID + * @return User-Objekt oder null wenn nicht gefunden + */ private User getUser(int userId) { return usersById.get(userId); } + /** + * Erstellt einen neuen Chatraum zwischen zwei Benutzern. + * + * @param user1Name Benutzername des ersten Benutzers + * @param user2Name Benutzername des zweiten Benutzers + * @return Die ID des erstellten Chatraums + * @throws IllegalArgumentException wenn ein Benutzer nicht existiert + */ public int createChatRoom(String user1Name, String user2Name) { User user1 = getUser(user1Name); User user2 = getUser(user2Name); @@ -44,13 +80,15 @@ public class ChatService { if (user1 == null || user2 == null) throw new IllegalArgumentException("User existiert nicht"); + // Prüft ob bereits ein Chatraum zwischen den Benutzern existiert for (ChatRoom room : chatrooms.values()) { if ((room.getUser1().equals(user1) && room.getUser2().equals(user2)) || (room.getUser1().equals(user2) && room.getUser2().equals(user1))) { - return room.getRoomId(); + return room.getRoomId(); // Gibt existierenden Raum zurück } } + // Erstellt neuen Chatraum ChatRoom tempChatRoom = new ChatRoom(user1, user2); chatrooms.put(tempChatRoom.getRoomId(), tempChatRoom); user1.getUserChatRoom().addChat(tempChatRoom); @@ -59,6 +97,15 @@ public class ChatService { return tempChatRoom.getRoomId(); } + /** + * Sendet eine Nachricht in einen Chatraum. + * + * @param roomId Die ID des Chatraums + * @param senderName Der Benutzername des Absenders + * @param content Der Nachrichteninhalt + * @throws IllegalArgumentException wenn Raum oder Absender nicht existieren + * oder Absender nicht im Raum ist + */ public void sendMessage(int roomId, String senderName, String content) { ChatRoom room = chatrooms.get(roomId); if (room == null) @@ -78,6 +125,13 @@ public class ChatService { room.addMessage(message); } + /** + * Zeigt alle Nachrichten eines Chatraums an. + * + * @param roomId Die ID des Chatraums + * @return Liste der Nachrichten als Strings + * @throws IllegalArgumentException wenn der Chatraum nicht existiert + */ public List showMessage(int roomId) { ChatRoom room = chatrooms.get(roomId); if (room == null) @@ -86,6 +140,15 @@ public class ChatService { return room.showMessages(); } + /** + * Fügt einen Benutzer zur Kontaktliste hinzu. + * + * @param contactUserName Der Benutzername des hinzuzufügenden Kontakts + * @param currentUserName Der Benutzername des aktuellen Benutzers + * @return true wenn der Kontakt erfolgreich hinzugefügt wurde + * @throws IllegalArgumentException wenn ein Benutzer nicht existiert oder + * Selbsthinzufügung versucht wird + */ public boolean addContact(String contactUserName, String currentUserName) { if (!users.containsKey(contactUserName)) throw new IllegalArgumentException("User existiert nicht: " + contactUserName); @@ -104,6 +167,13 @@ public class ChatService { return currentUser.getUserContacts().addContact(contactUser); } + /** + * Zeigt alle Kontakte eines Benutzers an. + * + * @param userName Der Benutzername + * @return Liste der Kontakte als Strings + * @throws IllegalArgumentException wenn der Benutzer nicht existiert + */ public List getUserContacts(String userName) { if (!users.containsKey(userName)) throw new IllegalArgumentException("User existiert nicht: " + userName); @@ -112,6 +182,13 @@ public class ChatService { return user.getUserContacts().showAllContacts(); } + /** + * Gibt alle Chatraum-IDs eines Benutzers zurück. + * + * @param userName Der Benutzername + * @return Liste der Chatraum-IDs + * @throws IllegalArgumentException wenn der Benutzer nicht existiert + */ public List getUserChatRoomIds(String userName) { if (!users.containsKey(userName)) throw new IllegalArgumentException("User existiert nicht: " + userName); @@ -120,6 +197,13 @@ public class ChatService { return user.getUserChatRoom().getChatRoomIds(); } + /** + * Gibt Informationen über einen Chatraum zurück. + * + * @param roomId Die ID des Chatraums + * @return String mit Chatraum-Informationen + * @throws IllegalArgumentException wenn der Chatraum nicht existiert + */ public String getChatRoomInfo(int roomId) { ChatRoom room = chatrooms.get(roomId); if (room == null) @@ -128,7 +212,15 @@ public class ChatService { return room.toString(); } - // Gruppen-Funktionen + /** + * Erstellt einen neuen Gruppenraum. + * + * @param creatorName Der Benutzername des Erstellers + * @param groupName Der Name der Gruppe + * @param description Die Beschreibung der Gruppe + * @return Die ID des erstellten Gruppenraums + * @throws IllegalArgumentException wenn der Ersteller nicht existiert + */ public int createGruppenRoom(String creatorName, String groupName, String description) { User creator = getUser(creatorName); if (creator == null) { @@ -140,6 +232,16 @@ public class ChatService { return gruppenRoom.getGroupId(); } + /** + * Fügt einen Teilnehmer zu einer Gruppe hinzu. + * + * @param groupId Die ID der Gruppe + * @param adderName Der Benutzername des hinzufügenden Admins + * @param userToAddName Der Benutzername des hinzuzufügenden Benutzers + * @return true wenn der Benutzer erfolgreich hinzugefügt wurde + * @throws IllegalArgumentException wenn Gruppe, Admin oder Benutzer nicht existieren + * oder der Admin keine Berechtigung hat + */ public boolean addParticipantToGroup(int groupId, String adderName, String userToAddName) { GruppenRoom group = gruppenRooms.get(groupId); User adder = getUser(adderName); @@ -156,6 +258,14 @@ public class ChatService { return group.addParticipant(userToAdd); } + /** + * Sendet eine Nachricht in einen Gruppenraum. + * + * @param groupId Die ID der Gruppe + * @param senderName Der Benutzername des Absenders + * @param content Der Nachrichteninhalt + * @throws IllegalArgumentException wenn Gruppe oder Absender nicht existieren + */ public void sendGroupMessage(int groupId, String senderName, String content) { GruppenRoom group = gruppenRooms.get(groupId); User sender = getUser(senderName); @@ -166,6 +276,13 @@ public class ChatService { group.addMessage(sender, content); } + /** + * Zeigt alle Nachrichten eines Gruppenraums an. + * + * @param groupId Die ID der Gruppe + * @return Liste der Nachrichten als Strings + * @throws IllegalArgumentException wenn die Gruppe nicht existiert + */ public List getGroupMessages(int groupId) { GruppenRoom group = gruppenRooms.get(groupId); if (group == null) { @@ -175,6 +292,13 @@ public class ChatService { return group.showMessages(); } + /** + * Zeigt alle Gruppenräume eines Benutzers an. + * + * @param userName Der Benutzername + * @return Liste der Gruppennamen + * @throws IllegalArgumentException wenn der Benutzer nicht existiert + */ public List getUserGruppenRooms(String userName) { User user = getUser(userName); if (user == null) { @@ -184,12 +308,18 @@ public class ChatService { return user.getUserGruppenRoom().getGruppenRoomNames(); } + /** + * Gibt Informationen über einen Gruppenraum zurück. + * + * @param groupId Die ID der Gruppe + * @return String mit Gruppenraum-Informationen + * @throws IllegalArgumentException wenn der Gruppenraum nicht existiert + */ public String getGruppenRoomInfo(int groupId) { GruppenRoom room = gruppenRooms.get(groupId); if (room == null) throw new IllegalArgumentException("Gruppenraum existiert nicht: " + groupId); - return room.toString(); } } \ No newline at end of file diff --git a/MyLocalChat/src/main/java/server/ChatServer.java b/MyLocalChat/src/main/java/server/ChatServer.java index 73350de..f77589d 100644 --- a/MyLocalChat/src/main/java/server/ChatServer.java +++ b/MyLocalChat/src/main/java/server/ChatServer.java @@ -7,15 +7,15 @@ import java.util.*; public class ChatServer { private static List clientWriters = new ArrayList<>(); + /** + * + */ public static void startServer() { - System.out.println("🚀 Starte LocalChat server..."); try (ServerSocket serverSocket = new ServerSocket(12345)) { - System.out.println("✅ server läuft auf Port 12345"); while (true) { Socket clientSocket = serverSocket.accept(); - System.out.println("🔗 Neuer Client verbunden"); new Thread(new ClientHandler(clientSocket)).start(); } } catch (IOException e) { @@ -23,6 +23,9 @@ public class ChatServer { } } + /** + * + */ private static class ClientHandler implements Runnable { private Socket socket; private PrintWriter out; @@ -32,23 +35,22 @@ public class ChatServer { this.socket = socket; } + /** + * + */ public void run() { try { out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); - // Username vom Client empfangen username = in.readLine(); - System.out.println("👤 " + username + " ist beigetreten"); clientWriters.add(out); - broadcast("🌟 " + username + " hat den Chat betreten"); - // Nachrichten empfangen und verteilen String message; while ((message = in.readLine()) != null) { - System.out.println("📩 " + username + ": " + message); + broadcast(username + ": " + message); } } catch (IOException e) { @@ -61,6 +63,9 @@ public class ChatServer { } } + /** + * @param message + */ private static void broadcast(String message) { for (PrintWriter writer : clientWriters) { writer.println(message);