1- package net .sharksystem .cmdline .sharkmessengerUI .commands .simpleMessenger ;
1+ package net .sharksystem .cmdline .sharkmessengerUI .commands .extendedMessenger ;
22
33import net .sharksystem .asap .ASAPException ;
44import net .sharksystem .asap .ASAPHop ;
1313import java .util .Set ;
1414
1515public class ChannelPrinter {
16- private final SharkMessengerApp sharkMessengerApp ;
17-
18- public ChannelPrinter (SharkMessengerApp sharkMessengerApp ) {
19- this .sharkMessengerApp = sharkMessengerApp ;
20- }
21-
22- public static void printChannelDescription (PrintStream ps , SharkMessengerChannel channel )
16+ public String getChannelDescription (SharkMessengerChannel channel )
2317 throws IOException , SharkMessengerException {
2418
25- ps .print (channel .getName ());
26- ps .print (" | uri: " );
27- ps .print (channel .getURI ());
28- ps .print (" | #messages: " );
29- ps .print (channel .getMessages ().size ());
30- ps .print (" | communication-age: " );
19+ StringBuilder sb = new StringBuilder ();
20+
21+ sb .append ("name: " );
22+ sb .append (channel .getName ());
23+ sb .append (" | uri: " );
24+ sb .append (channel .getURI ());
25+ sb .append (" | #messages: " );
26+ sb .append (channel .getMessages ().size ());
27+ sb .append (" | age: " );
3128 SharkCommunicationAge age = channel .getAge ();
3229 switch (age ) {
33- case BRONZE_AGE : ps . print ("bronze" ); break ;
34- case STONE_AGE : ps . print ("stone" ); break ;
35- case NETWORK_AGE : ps . print ("network" ); break ;
36- default : ps . print ("unknown" ); break ;
30+ case BRONZE_AGE : sb . append ("bronze" ); break ;
31+ case STONE_AGE : sb . append ("stone" ); break ;
32+ case NETWORK_AGE : sb . append ("network" ); break ;
33+ default : sb . append ("unknown" ); break ;
3734 }
35+
36+ return sb .toString ();
3837 }
3938
40- public static void printChannelDescriptions (
41- PrintStream ps , SharkMessengerComponent messengerComponent , boolean printIndex )
39+ public String getChannelDescriptions (SharkMessengerComponent messengerComponent )
4240 throws IOException , SharkMessengerException {
4341
42+ StringBuilder sb = new StringBuilder ();
43+
4444 List <CharSequence > channelUris = messengerComponent .getChannelUris ();
4545 if (channelUris .isEmpty ()) {
46- ps . println ("no channels" );
46+ sb . append ("no channels\n " );
4747 } else {
48- int i = 0 ;
48+ sb .append (channelUris .size ());
49+ if (channelUris .size () > 1 ) sb .append (" channels:\n " );
50+ else sb .append (" channel:\n " );
51+
52+ int i = 1 ;
4953 for (CharSequence channelUri : channelUris ) {
50- if ( printIndex ) ps . print (i ++ + ": " );
54+ sb . append (i ++ + ": " );
5155 SharkMessengerChannel channel = messengerComponent .getChannel (channelUri );
52- printChannelDescription (ps , channel );
56+ sb .append (this .getChannelDescription (channel ));
57+ sb .append ("\n " );
5358 }
54- ps . print ("\n " );
59+ sb . append ("\n " );
5560 }
56- }
5761
58- private static void printYesNo (PrintStream ps , boolean value ) {
59- if (value ) ps .print ("yes" );
60- else ps .print ("no" );
62+ return sb .toString ();
6163 }
6264
6365 private String returnYesNo (boolean value ) {
6466 if (value ) return "yes" ;
6567 else return "no" ;
6668 }
6769
68- private static final String CHANNEL_PRINTER_LINE_SEPARATOR = "--------------------------------------------------------------------------------" ;
69- public void printMessages (String channelUri , PrintStream ps , SharkMessageList messages )
70+ private static final String CHANNEL_PRINTER_LINE_SEPARATOR = "\n --------------------------------------------------------------------------------\n " ;
71+ public String getMessagesASString (String channelUri , SharkMessageList messages )
7072 throws IOException , SharkMessengerException , ASAPException {
7173
72- this .sharkMessengerApp .tellUI ("list messages in channel: " + channelUri );
74+ StringBuilder sb = new StringBuilder ();
75+
76+ sb .append ("list messages in channel: " + channelUri );
7377 if (messages .size () < 1 ) {
74- this .sharkMessengerApp .tellUI (": no messages" );
78+ sb .append (": no messages\n " );
79+ return sb .toString ();
7580 }
7681 else {
82+ sb .append ("\n " );
7783 for (int i = 0 ; i < messages .size (); i ++) {
78- this . sharkMessengerApp . tellUI ("#" + i );
79- this . sharkMessengerApp . tellUI (CHANNEL_PRINTER_LINE_SEPARATOR );
84+ sb . append ("#" + i );
85+ sb . append (CHANNEL_PRINTER_LINE_SEPARATOR );
8086 SharkMessage message = messages .getSharkMessage (i , true );
81- this .printMessageDetails (message );
82- this . sharkMessengerApp . tellUI (CHANNEL_PRINTER_LINE_SEPARATOR );
87+ sb . append ( this .getMessageDetails (message ) );
88+ sb . append (CHANNEL_PRINTER_LINE_SEPARATOR );
8389 }
8490 }
91+ return sb .toString ();
8592 }
8693
87- public void printMessageDetails (SharkMessage message )
94+ public String getMessageDetails (SharkMessage message )
8895 throws IOException , ASAPException {
8996
9097 StringBuilder sb = new StringBuilder ();
9198 // content
9299 byte [] content = message .getContent ();
93- if (content .length < 1 ) {
94- sb .append ("no content" );
100+ if (content .length < 1 ) {
101+ sb .append ("no content\n " );
102+ } else {
103+ sb .append ("message content interpreted as String: " );
104+ sb .append (SerializationHelper .bytes2characterSequence (content ).toString ());
105+ sb .append ("\n " );
95106 }
96- sb .append ("message content interpreted as String: " );
97- sb .append (SerializationHelper .bytes2characterSequence (content ).toString ());
98- sb .append ("\n " );
99107
100108 // sender
101109 sb .append ("sender: " );
102110 sb .append (message .getSender ().toString ());
103111 // recipients
104112 sb .append (" | recipients: " );
105113 Set <CharSequence > recipients = message .getRecipients ();
106- if (recipients .size () < 1 ) sb .append ("not specified" );
114+ if (recipients .size () < 1 ) sb .append ("not specified" );
107115 boolean first = true ;
108- for (CharSequence recipient : recipients ) {
109- if (first ) first = false ;
116+ for (CharSequence recipient : recipients ) {
117+ if (first ) first = false ;
110118 else sb .append (";" );
111119 sb .append (recipient .toString ());
112120 }
@@ -117,14 +125,21 @@ public void printMessageDetails(SharkMessage message)
117125
118126 // encryption / verification
119127 sb .append ("\n " );
120- sb .append ("encrypted: " );
128+ sb .append ("E2E security: encrypted: " );
121129 sb .append (this .returnYesNo (message .encrypted ()));
122130
123- sb .append (" | couldBeDecrypted: " );
124- sb .append (this .returnYesNo (message .couldBeDecrypted ()));
131+ if (message .encrypted ()) {
132+ sb .append (" | can decrypt: " );
133+ sb .append (this .returnYesNo (message .couldBeDecrypted ()));
134+ }
125135
126- sb .append (" | verified: " );
127- sb .append (this .returnYesNo (message .verified ()));
136+ sb .append (" | " );
137+ sb .append ("signed: " );
138+ sb .append (this .returnYesNo (message .signed ()));
139+ if (message .signed ()) {
140+ sb .append (" | verified: " );
141+ sb .append (this .returnYesNo (message .verified ()));
142+ }
128143
129144 // hoping list
130145 sb .append ("\n " );
@@ -141,20 +156,19 @@ public void printMessageDetails(SharkMessage message)
141156 this .addHobDetails (sb , hop );
142157 sb .append ("\n " );
143158 }
144- sb .append ("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" );
159+ sb .append ("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n " );
145160 }
146161
147- // content
148- sb .append ("\n " );
162+ //sb.append("\n");
149163
150- this . sharkMessengerApp . tellUI ( sb .toString () );
164+ return sb .toString ();
151165 }
152166
153167 private void addHobDetails (StringBuilder sb , ASAPHop hop ) {
154168 sb .append ("sender: " );
155169 sb .append (hop .sender ());
156170 sb .append (" | " );
157- sb .append ("encrypted: " );
171+ sb .append ("P2P security: encrypted: " );
158172 sb .append (this .returnYesNo (hop .encrypted ()));
159173 sb .append (" | " );
160174 sb .append ("verified: " );
0 commit comments