mirror of
https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
synced 2024-11-22 08:13:20 +00:00
Module Client, service Connexion : ajout code du service + classes utilisées dans le code
This commit is contained in:
parent
e6af406d63
commit
d2c89a31ae
@ -1,46 +1,66 @@
|
|||||||
package com.pqt.client.module.connection;
|
package com.pqt.client.module.connection;
|
||||||
|
|
||||||
import com.pqt.client.module.connection.listeners.IConnectionListener;
|
import com.pqt.client.module.connection.listeners.IConnectionListener;
|
||||||
|
import com.pqt.client.module.connection.senders.HttpTextSender;
|
||||||
|
import com.pqt.client.module.connection.senders.ITextSender;
|
||||||
|
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
//TODO écrire contenu méthodes
|
|
||||||
//TODO écrire javadoc
|
//TODO écrire javadoc
|
||||||
//TODO add log lines?
|
|
||||||
public class ConnectionService {
|
public class ConnectionService {
|
||||||
|
|
||||||
public boolean isConnectedToServer() {
|
private String serverUrl;
|
||||||
return false;
|
private ExecutorService executor;
|
||||||
|
private ITextSender textSender;
|
||||||
|
|
||||||
|
public ConnectionService(String serverUrl) {
|
||||||
|
executor = new ThreadPoolExecutor(1, 1, 1000,
|
||||||
|
TimeUnit.SECONDS, new LinkedBlockingQueue<>());
|
||||||
|
this.serverUrl = serverUrl;
|
||||||
|
this.textSender = new HttpTextSender();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void connectToServer(String ip_address) {
|
public String getServerUrl() {
|
||||||
|
return serverUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnectFromServer() {
|
public void setServerUrl(String url){
|
||||||
|
this.serverUrl = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCurrentServerIpAddress() {
|
/**
|
||||||
return null;
|
* Arrête le service d'envoi.
|
||||||
|
* <p/>
|
||||||
|
* <b>Si ce service est arrêté, il ne sera plus possible de l'utiliser, et ne pourra pas être redémarré</b>. Une
|
||||||
|
* autre isntance devra être utilisée pour pouvoir recommencer à se servir de ce service.
|
||||||
|
* <p/>
|
||||||
|
* Si {@code force} vaut true, le service tentera d'interrompre tous les envois de texte en cours, même s'il ne
|
||||||
|
* sont pas terminés. Sinon, le service attendra que tous les envois en cours soient terminé avant de s'arrêter, mais
|
||||||
|
* n'acceptera pas de nouveaux envois.
|
||||||
|
* @param force {@code true} si l'arrêt du service doit être forcé, {@code false} sinon
|
||||||
|
*/
|
||||||
|
public void stop(boolean force) {
|
||||||
|
if(executor!=null)
|
||||||
|
if(force)
|
||||||
|
executor.shutdownNow();
|
||||||
|
else
|
||||||
|
executor.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
/**
|
||||||
|
* Envoie la chaîne de caractères {@code text} au serveur de donnée correspondant à l'URL {@link #getServerUrl()}, et
|
||||||
|
* utilise {@code listener} pour notifier l'avancement de l'envoi.
|
||||||
|
*
|
||||||
|
* @param text texte à envoyer
|
||||||
|
* @param listener listener à utiliser pour notifier l'avancement de l'envoi (voir {@link IConnectionListener})
|
||||||
|
* @throws IllegalStateException Si l'url du serveur vaut {@code null} (à spécifier à la constructyion ou avec
|
||||||
|
* {@link #setServerUrl(String)}, ou si le service à été arrêté via la méthode {@link #stop(boolean)}.
|
||||||
|
*/
|
||||||
|
public void sendText(String text, IConnectionListener listener) throws IllegalStateException{
|
||||||
|
if(serverUrl==null)
|
||||||
|
throw new IllegalStateException("No url specified for data server");
|
||||||
|
if(executor.isShutdown() || executor.isTerminated())
|
||||||
|
throw new IllegalStateException("Service was shut down : unable to send text");
|
||||||
|
executor.submit(()->textSender.send(serverUrl, text, listener));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendText(String text) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addListener(IConnectionListener listener) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeListener(IConnectionListener listener) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.pqt.client.module.connection.listeners;
|
package com.pqt.client.module.connection.listeners;
|
||||||
|
|
||||||
//TODO écrire contenu méthodes
|
|
||||||
//TODO écrire javadoc
|
|
||||||
public class ConnectionListenerAdapter implements IConnectionListener {
|
public class ConnectionListenerAdapter implements IConnectionListener {
|
||||||
|
|
||||||
|
|
||||||
@ -10,6 +8,7 @@ public class ConnectionListenerAdapter implements IConnectionListener {
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void onMessageReceivedEvent(String msg) {
|
public void onMessageReceivedEvent(String msg) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -20,6 +19,7 @@ public class ConnectionListenerAdapter implements IConnectionListener {
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void onConnectedEvent() {
|
public void onConnectedEvent() {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -30,8 +30,20 @@ public class ConnectionListenerAdapter implements IConnectionListener {
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void onDisconnectedEvent() {
|
public void onDisconnectedEvent() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see com.pqt.client.module.connection.listeners.IConnectionListener#onTimeOutEvent()
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onTimeOutEvent() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,16 @@ package com.pqt.client.module.connection.listeners;
|
|||||||
|
|
||||||
public interface IConnectionFirerer {
|
public interface IConnectionFirerer {
|
||||||
|
|
||||||
public abstract void fireMessageReceivedEvent(String msg);
|
void fireMessageReceivedEvent(String msg);
|
||||||
|
|
||||||
public abstract void fireConnectedEvent();
|
void fireConnectedEvent();
|
||||||
|
|
||||||
public abstract void fireDisconnectedEvent();
|
void fireDisconnectedEvent();
|
||||||
|
|
||||||
public abstract void addListener(IConnectionListener listener);
|
void fireTimeOutEvent();
|
||||||
|
|
||||||
public abstract void removeListener(IConnectionListener listener);
|
void addListener(IConnectionListener listener);
|
||||||
|
|
||||||
|
void removeListener(IConnectionListener listener);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,12 @@ import java.util.EventListener;
|
|||||||
|
|
||||||
public interface IConnectionListener extends EventListener {
|
public interface IConnectionListener extends EventListener {
|
||||||
|
|
||||||
public abstract void onMessageReceivedEvent(String msg);
|
void onMessageReceivedEvent(String msg);
|
||||||
|
|
||||||
public abstract void onConnectedEvent();
|
void onConnectedEvent();
|
||||||
|
|
||||||
public abstract void onDisconnectedEvent();
|
void onDisconnectedEvent();
|
||||||
|
|
||||||
|
void onTimeOutEvent();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,49 +1,67 @@
|
|||||||
package com.pqt.client.module.connection.listeners;
|
package com.pqt.client.module.connection.listeners;
|
||||||
|
|
||||||
//TODO écrire contenu méthodes
|
import javax.swing.event.EventListenerList;
|
||||||
//TODO écrire javadoc
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class SimpleConnectionFirerer implements IConnectionFirerer {
|
public class SimpleConnectionFirerer implements IConnectionFirerer {
|
||||||
|
|
||||||
|
private EventListenerList listenerList;
|
||||||
|
|
||||||
|
public SimpleConnectionFirerer() {
|
||||||
|
listenerList = new EventListenerList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireMessageReceivedEvent(String)
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireMessageReceivedEvent(String)
|
||||||
*
|
*
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void fireMessageReceivedEvent(String msg) {
|
public void fireMessageReceivedEvent(String msg) {
|
||||||
|
Arrays.stream(listenerList.getListeners(IConnectionListener.class)).forEach(listener->listener.onMessageReceivedEvent(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireConnectedEvent()
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireConnectedEvent()
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void fireConnectedEvent() {
|
public void fireConnectedEvent() {
|
||||||
|
Arrays.stream(listenerList.getListeners(IConnectionListener.class)).forEach(IConnectionListener::onConnectedEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireDisconnectedEvent()
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireDisconnectedEvent()
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void fireDisconnectedEvent() {
|
public void fireDisconnectedEvent() {
|
||||||
|
Arrays.stream(listenerList.getListeners(IConnectionListener.class)).forEach(IConnectionListener::onDisconnectedEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#fireTimeOutEvent()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void fireTimeOutEvent() {
|
||||||
|
Arrays.stream(listenerList.getListeners(IConnectionListener.class)).forEach(IConnectionListener::onDisconnectedEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#addListener(com.pqt.client.module.connection.listeners.IConnectionListener)
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#addListener(com.pqt.client.module.connection.listeners.IConnectionListener)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void addListener(IConnectionListener listener) {
|
public void addListener(IConnectionListener listener) {
|
||||||
|
listenerList.add(IConnectionListener.class, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#removeListener(com.pqt.client.module.connection.listeners.IConnectionListener)
|
* @see com.pqt.client.module.connection.listeners.IConnectionFirerer#removeListener(com.pqt.client.module.connection.listeners.IConnectionListener)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void removeListener(IConnectionListener listener) {
|
public void removeListener(IConnectionListener listener) {
|
||||||
|
listenerList.remove(IConnectionListener.class, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
package com.pqt.client.module.connection.senders;
|
||||||
|
|
||||||
|
import com.pqt.client.module.connection.listeners.IConnectionListener;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
|
||||||
|
public class HttpTextSender implements ITextSender{
|
||||||
|
@Override
|
||||||
|
public void send(String url, String text, IConnectionListener listener) {
|
||||||
|
try {
|
||||||
|
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
|
||||||
|
con.setRequestMethod("GET");
|
||||||
|
con.setRequestProperty("Content-Type", "application/json");
|
||||||
|
con.setConnectTimeout(5000);
|
||||||
|
con.setReadTimeout(5000);
|
||||||
|
con.setInstanceFollowRedirects(true);
|
||||||
|
|
||||||
|
String params = URLEncoder.encode("message="+text, "UTF-8");
|
||||||
|
con.setDoOutput(true);
|
||||||
|
try(DataOutputStream out = new DataOutputStream(con.getOutputStream())) {
|
||||||
|
out.writeBytes(params);
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
con.connect();
|
||||||
|
listener.onConnectedEvent();
|
||||||
|
|
||||||
|
try(BufferedReader in = new BufferedReader(
|
||||||
|
new InputStreamReader(con.getInputStream()))) {
|
||||||
|
StringBuilder content = new StringBuilder();
|
||||||
|
String inputLine;
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
content.append(inputLine);
|
||||||
|
}
|
||||||
|
listener.onMessageReceivedEvent(content.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
con.disconnect();
|
||||||
|
|
||||||
|
}catch (java.net.SocketTimeoutException e){
|
||||||
|
listener.onTimeOutEvent();
|
||||||
|
}catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally {
|
||||||
|
listener.onDisconnectedEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.pqt.client.module.connection.senders;
|
||||||
|
|
||||||
|
import com.pqt.client.module.connection.listeners.IConnectionListener;
|
||||||
|
|
||||||
|
public interface ITextSender {
|
||||||
|
void send(String url, String text, IConnectionListener listener);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user