From f667e378df429563db95cbe7ea88cd1fb71e2847 Mon Sep 17 00:00:00 2001 From: Xcreen Date: Thu, 27 Sep 2018 13:07:55 +0200 Subject: [PATCH] Added Start/Stop Logic --- .../java/net/xcreen/restsms/HomeFragment.java | 51 +++++++++++++++---- .../java/net/xcreen/restsms/SMSServer.java | 44 +++++++++++++++- app/src/main/res/values/strings.xml | 2 + 3 files changed, 86 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/xcreen/restsms/HomeFragment.java b/app/src/main/java/net/xcreen/restsms/HomeFragment.java index ce21249..bd3cb91 100644 --- a/app/src/main/java/net/xcreen/restsms/HomeFragment.java +++ b/app/src/main/java/net/xcreen/restsms/HomeFragment.java @@ -7,6 +7,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.Toast; public class HomeFragment extends Fragment { @@ -28,20 +29,52 @@ public class HomeFragment extends Fragment { toggleServerBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new Thread(new Runnable() { - @Override - public void run() { - try { - appContext.smsServer.start(); + //Check if Server is running + if(appContext.smsServer.isRunning() && !appContext.smsServer.isStopping()){ + //Stop Server + new Thread(new Runnable() { + @Override + public void run() { + try { + appContext.smsServer.stop(); + } + catch (Exception ex){ + ex.printStackTrace(); + } } - catch (Exception ex){ - ex.printStackTrace(); + }).start(); + //Switch Button-Text + toggleServerBtn.setText(getResources().getText(R.string.start_server)); + } + else if(!appContext.smsServer.isStopping()){ + //Start Server + new Thread(new Runnable() { + @Override + public void run() { + try { + appContext.smsServer.start(); + } + catch (Exception ex){ + ex.printStackTrace(); + Toast.makeText(getContext(), getResources().getText(R.string.server_failed_to_start), Toast.LENGTH_SHORT).show(); + } } - } - }).start(); + }).start(); + //Switch Button-Text + toggleServerBtn.setText(getResources().getText(R.string.stop_server)); + } + else{ + //Server is stopping + Toast.makeText(getContext(), getResources().getText(R.string.server_is_stopping), Toast.LENGTH_SHORT).show(); + } } }); + //Check Server is running, to set correct Button-Text + if(appContext.smsServer.isRunning()){ + toggleServerBtn.setText(getResources().getText(R.string.stop_server)); + } + return rootView; } } diff --git a/app/src/main/java/net/xcreen/restsms/SMSServer.java b/app/src/main/java/net/xcreen/restsms/SMSServer.java index 14c1ab6..f3d09b6 100644 --- a/app/src/main/java/net/xcreen/restsms/SMSServer.java +++ b/app/src/main/java/net/xcreen/restsms/SMSServer.java @@ -24,9 +24,49 @@ public class SMSServer { jettyServer.join(); } + /** + * Stopping Jetty-Server + * @throws Exception - Jetty Exception + */ public void stop() throws Exception{ - Log.i("SMS-Server", "Stopping Server..."); - jettyServer.stop(); + if(jettyServer != null) { + Log.i("SMS-Server", "Stopping Server..."); + jettyServer.stop(); + } + } + + /** + * Checks if the Jetty is running + * @return boolean - true when server is running/starting/stopping, false otherwise + */ + public boolean isRunning(){ + if(jettyServer != null){ + if(jettyServer.isRunning()){ + return true; + } + else if(jettyServer.isStopping()){ + return true; + } + else{ + return false; + } + } + else{ + return false; + } + } + + /** + * Checks if Jetty is stopping + * @return boolean - True when server is stopping + */ + public boolean isStopping(){ + if(jettyServer != null) { + return jettyServer.isStopping(); + } + else{ + return false; + } } /** diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 132d713..e43a8bc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,6 @@ Start Server Stop Server + Server is shutting down. Please wait. + Server failed to start!