33import net .sharksystem .asap .*;
44
55import java .io .*;
6- import java .util .HashMap ;
7- import java .util .Map ;
8- import java .util .StringTokenizer ;
6+ import java .util .*;
97
108/**
119 * @author thsc
@@ -20,9 +18,11 @@ public class CmdLineUI {
2018 public static final String SETWAITING = "setwaiting" ;
2119 public static final String CREATE_ASAP_ENGINE = "newengine" ;
2220 public static final String CREATE_ASAP_STORAGE = "newstorage" ;
21+ public static final String CREATE_ASAP_CHANNEL = "newchannel" ;
2322 public static final String CREATE_ASAP_MESSAGE = "newmessage" ;
2423 public static final String RESET_ASAP_STORAGES = "resetstorage" ;
2524 public static final String SET_SEND_RECEIVED_MESSAGES = "sendReceived" ;
25+ public static final String PRINT_CHANNEL_INFORMATION = "printChannelInfo" ;
2626
2727 private final PrintStream consoleOutput ;
2828 private final BufferedReader userInput ;
@@ -82,6 +82,9 @@ public void printUsage() {
8282 b .append (CREATE_ASAP_STORAGE );
8383 b .append (".. create new asap storage" );
8484 b .append ("\n " );
85+ b .append (CREATE_ASAP_CHANNEL );
86+ b .append (".. create new closed asap channel" );
87+ b .append ("\n " );
8588 b .append (CREATE_ASAP_MESSAGE );
8689 b .append (".. add message to storage" );
8790 b .append ("\n " );
@@ -91,6 +94,9 @@ public void printUsage() {
9194 b .append (SET_SEND_RECEIVED_MESSAGES );
9295 b .append (".. set whether received message are to be sent" );
9396 b .append ("\n " );
97+ b .append (PRINT_CHANNEL_INFORMATION );
98+ b .append (".. print general information about a channel" );
99+ b .append ("\n " );
94100 b .append (EXIT );
95101 b .append (".. exit" );
96102
@@ -110,7 +116,6 @@ public void printUsage(String cmdString, String comment) {
110116 out .println ("example: " + CONNECT + " localhost 7070 Bob" );
111117 out .println ("example: " + CONNECT + " 7070 Bob" );
112118 out .println ("in both cases try to connect to localhost:7070 and let engine Bob handle connection when established" );
113-
114119 break ;
115120 case OPEN :
116121 out .println (OPEN + " localPort engineName" );
@@ -141,6 +146,10 @@ public void printUsage(String cmdString, String comment) {
141146 out .println (CREATE_ASAP_STORAGE + " owner appName" );
142147 out .println ("example: " + CREATE_ASAP_STORAGE + " Alice chat" );
143148 break ;
149+ case CREATE_ASAP_CHANNEL :
150+ out .println (CREATE_ASAP_CHANNEL + " owner appName uri (recipient)+" );
151+ out .println ("example: " + CREATE_ASAP_CHANNEL + " Alice chat sn2://abChat Bob Clara" );
152+ break ;
144153 case CREATE_ASAP_MESSAGE :
145154 out .println (CREATE_ASAP_MESSAGE + " owner appName uri message" );
146155 out .println ("example: " + CREATE_ASAP_MESSAGE + " Alice chat sn2://abChat HiBob" );
@@ -157,6 +166,10 @@ public void printUsage(String cmdString, String comment) {
157166 out .println ("set whether send received messages" );
158167 out .println ("example: " + SET_SEND_RECEIVED_MESSAGES + " Alice:chat on" );
159168 break ;
169+ case PRINT_CHANNEL_INFORMATION :
170+ out .println (PRINT_CHANNEL_INFORMATION + " user appName uri" );
171+ out .println ("example: " + PRINT_CHANNEL_INFORMATION + " Alice chat sn2://abChat" );
172+ break ;
160173 default :
161174 out .println ("unknown command: " + cmdString );
162175 }
@@ -204,12 +217,16 @@ public void runCommandLoop() {
204217 this .doCreateASAPMultiEngine (parameterString ); break ;
205218 case CREATE_ASAP_STORAGE :
206219 this .doCreateASAPStorage (parameterString ); break ;
220+ case CREATE_ASAP_CHANNEL :
221+ this .doCreateASAPChannel (parameterString ); break ;
207222 case CREATE_ASAP_MESSAGE :
208223 this .doCreateASAPMessage (parameterString ); break ;
209224 case RESET_ASAP_STORAGES :
210225 this .doResetASAPStorages (); break ;
211226 case SET_SEND_RECEIVED_MESSAGES :
212227 this .doSetSendReceivedMessage (parameterString ); break ;
228+ case PRINT_CHANNEL_INFORMATION :
229+ this .doPrintChannelInformation (parameterString ); break ;
213230 case "q" : // convenience
214231 case EXIT :
215232 this .doKill ("all" );
@@ -400,6 +417,35 @@ public void doCreateASAPStorage(String parameterString) {
400417 }
401418 }
402419
420+ public void doCreateASAPChannel (String parameterString ) {
421+ StringTokenizer st = new StringTokenizer (parameterString );
422+
423+ try {
424+ String owner = st .nextToken ();
425+ String appName = st .nextToken ();
426+ String uri = st .nextToken ();
427+
428+ String appFolderName = TESTS_ROOT_FOLDER + "/" + owner + "/" + appName ;
429+ String format = "sn2://" + appName ;
430+
431+ List <CharSequence > recipients = new ArrayList <>();
432+ while (st .hasMoreTokens ()) {
433+ recipients .add (st .nextToken ());
434+ }
435+
436+ ASAPStorage storage = ASAPEngineFS .getASAPStorage (owner , appFolderName , format );
437+
438+ storage .createChannel (uri , recipients );
439+
440+ this .storages .put (this .getStorageKey (owner , appName ), storage );
441+ }
442+ catch (RuntimeException e ) {
443+ this .printUsage (CREATE_ASAP_STORAGE , e .getLocalizedMessage ());
444+ } catch (IOException | ASAPException e ) {
445+ this .printUsage (CREATE_ASAP_STORAGE , e .getLocalizedMessage ());
446+ }
447+ }
448+
403449 public void doCreateASAPMessage (String parameterString ) {
404450 StringTokenizer st = new StringTokenizer (parameterString );
405451
@@ -445,6 +491,37 @@ public void doSetSendReceivedMessage(String parameterString) {
445491 }
446492 }
447493
494+ public void doPrintChannelInformation (String parameterString ) {
495+ // out.println("example: " + PRINT_CHANNEL_INFORMATION + " Alice chat sn2://abChat");
496+ StringTokenizer st = new StringTokenizer (parameterString );
497+
498+ try {
499+ String owner = st .nextToken ();
500+ String appName = st .nextToken ();
501+ String uri = st .nextToken ();
502+
503+ // first - get storage
504+ ASAPStorage asapStorage = this .storages .get (this .getStorageKey (owner , appName ));
505+ if (asapStorage == null ) {
506+ System .err .println ("storage does not exist: " + this .getStorageKey (owner , appName ));
507+ return ;
508+ }
509+
510+ List <CharSequence > recipients = asapStorage .getRecipients (uri );
511+
512+ System .out .println ("Owner:App:Channel == " + owner + ":" + appName + ":" + uri );
513+ System .out .println ("#Recipients == " + recipients .size ());
514+ for (CharSequence recipient : recipients ) {
515+ System .out .println (recipient );
516+ }
517+ }
518+ catch (RuntimeException e ) {
519+ this .printUsage (CREATE_ASAP_MESSAGE , e .getLocalizedMessage ());
520+ } catch (IOException e ) {
521+ this .printUsage (CREATE_ASAP_MESSAGE , e .getLocalizedMessage ());
522+ }
523+ }
524+
448525 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
449526 // helper methods //
450527 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
0 commit comments