refactoring

This commit is contained in:
moreris 2018-12-17 18:46:49 +01:00
parent 0b043a0715
commit cec961f46a
8 changed files with 154 additions and 93 deletions

View File

@ -18,10 +18,10 @@ public class ConnectController implements ActionListener
private ChatView view; private ChatView view;
private static Logger logger = OhmLogger.getLogger(); private static Logger logger = OhmLogger.getLogger();
public ConnectController(Transmitter m, ChatView v) public ConnectController(Transmitter model, ChatView view)
{ {
this.model = m; this.model = model;
this.view = v; this.view = view;
} }
public void registerEvents() public void registerEvents()
@ -34,9 +34,10 @@ public class ConnectController implements ActionListener
@Override @Override
public void actionPerformed(ActionEvent ae) public void actionPerformed(ActionEvent ae)
{ {
Object o = ae.getSource(); Object object = ae.getSource();
if (o == view.getBtConnect()) { if (object == view.getBtConnect())
{
int port = -1; int port = -1;
try { try {
@ -59,37 +60,43 @@ public class ConnectController implements ActionListener
view.getRbServer().setEnabled(false); view.getRbServer().setEnabled(false);
view.getTfIP().setEnabled(false); view.getTfIP().setEnabled(false);
view.getTfPort().setEnabled(false); view.getTfPort().setEnabled(false);
} else {
view.getTfIP().setEnabled(view.getRbClient().isSelected());
} }
} }
private boolean validIP (String ip) { private boolean validIP (String ip)
try { {
if ( ip == null || ip.isEmpty() ) { try
{
if (ip == null || ip.isEmpty())
{
return false; return false;
} }
String[] parts = ip.split("\\."); String[] parts = ip.split("\\.");
if ( parts.length != 4 ) { if ( parts.length != 4 )
{
return false; return false;
} }
for ( String s : parts ) { for (String s : parts)
{
int i = Integer.parseInt(s); int i = Integer.parseInt(s);
if ( (i < 0) || (i > 255) ) { if ((i < 0) || (i > 255))
{
return false; return false;
} }
} }
if ( ip.endsWith(".") ) { if (ip.endsWith("."))
{
return false; return false;
} }
return true; return true;
} catch (NumberFormatException e) { }
catch (NumberFormatException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return false; return false;
} }
} }
} }

View File

@ -20,9 +20,9 @@ public class ReceiveAdapterController implements Observer
@Override @Override
public void update(Observable observable, Object object) public void update(Observable observable, Object object)
{ {
String msg = (String)object; String message = (String)object;
view.getTaCommunication().append(msg + "\n"); view.getTaCommunication().append(message + "\n");
} }
} }

View File

@ -14,10 +14,10 @@ public class SendController implements ActionListener
private Transmitter model; private Transmitter model;
private ChatView view; private ChatView view;
public SendController(Transmitter m, ChatView v) public SendController(Transmitter model, ChatView view)
{ {
this.model = m; this.model = model;
this.view = v; this.view = view;
} }
public void registerEvents() public void registerEvents()

View File

@ -43,7 +43,8 @@ public class Client extends Observable implements Runnable
public void init() public void init()
{ {
if (thd == null) { if (thd == null)
{
thd = new Thread(this); thd = new Thread(this);
thd.start(); thd.start();
} }
@ -51,10 +52,13 @@ public class Client extends Observable implements Runnable
public void sendMessage(String msg) public void sendMessage(String msg)
{ {
if (ready) { if (ready)
{
writer.println(msg); writer.println(msg);
writer.flush(); writer.flush();
} else { }
else
{
logger.warning("Server not ready to send message. Connect first"); logger.warning("Server not ready to send message. Connect first");
} }
} }
@ -66,63 +70,85 @@ public class Client extends Observable implements Runnable
while (true) while (true)
{ {
if (socket == null) { if (socket == null)
try { {
try
{
socket = new Socket(ip, port); socket = new Socket(ip, port);
logger.info("Connected to server"); logger.info("Connected to server");
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.getMessage()); logger.severe(e.getMessage());
socket = null; socket = null;
try { try
{
Thread.sleep(1000); Thread.sleep(1000);
} catch (InterruptedException ex) { }
catch (InterruptedException ex)
{
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} }
continue; continue;
} }
InputStream iStream; InputStream iStream;
try { try
{
iStream = socket.getInputStream(); iStream = socket.getInputStream();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.getMessage()); logger.severe(e.getMessage());
return; return;
} }
OutputStream oStream; OutputStream oStream;
try { try
{
oStream = socket.getOutputStream(); oStream = socket.getOutputStream();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.getMessage()); logger.severe(e.getMessage());
return; return;
} }
InputStreamReader isr; InputStreamReader isr;
try { try
{
isr = new InputStreamReader(iStream, "UTF-8"); isr = new InputStreamReader(iStream, "UTF-8");
} catch (UnsupportedEncodingException e) { }
catch (UnsupportedEncodingException e)
{
logger.severe(e.getMessage()); logger.severe(e.getMessage());
return; return;
} }
OutputStreamWriter osr; OutputStreamWriter osr;
try { try
{
osr = new OutputStreamWriter(oStream, "UTF-8"); osr = new OutputStreamWriter(oStream, "UTF-8");
} catch (UnsupportedEncodingException e) { }
catch (UnsupportedEncodingException e)
{
logger.severe(e.getMessage()); logger.severe(e.getMessage());
return; return;
} }
reader = new BufferedReader(isr); reader = new BufferedReader(isr);
writer = new PrintWriter(osr); writer = new PrintWriter(osr);
ready = true; ready = true;
} }
if (ready) { if (ready)
{
String msg; String msg;
try { try
logger.info("Waiting for message"); {
logger.info("Waiting");
msg = reader.readLine(); msg = reader.readLine();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }

View File

@ -31,8 +31,6 @@ public class Server extends Observable implements Runnable
private PrintWriter writer; private PrintWriter writer;
private volatile boolean ready; private volatile boolean ready;
private Thread thd; private Thread thd;
private static final SimpleDateFormat sdf = new SimpleDateFormat("HH.mm.ss");
public Server(int port) public Server(int port)
{ {
@ -56,79 +54,100 @@ public class Server extends Observable implements Runnable
@Override @Override
public void run() public void run()
{ {
logger.info("Running server..."); logger.info("Server running");
while (true) while (true)
{ {
if (server == null) { if (server == null)
try { {
try
{
server = new ServerSocket(port); server = new ServerSocket(port);
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
logger.info("Waiting for client to connect"); logger.info("Waiting for client");
try { try
{
client = server.accept(); client = server.accept();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
logger.info("Client connected"); logger.info("Client connected");
InputStream iStream; InputStream iStream;
try { try
{
iStream = client.getInputStream(); iStream = client.getInputStream();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
OutputStream oStream; OutputStream oStream;
try { try
{
oStream = client.getOutputStream(); oStream = client.getOutputStream();
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
InputStreamReader isr; InputStreamReader isr;
try { try
{
isr = new InputStreamReader(iStream, "UTF-8"); isr = new InputStreamReader(iStream, "UTF-8");
} catch (UnsupportedEncodingException e) { }
catch (UnsupportedEncodingException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
OutputStreamWriter osr; OutputStreamWriter osr;
try { try
{
osr = new OutputStreamWriter(oStream, "UTF-8"); osr = new OutputStreamWriter(oStream, "UTF-8");
} catch (UnsupportedEncodingException e) { }
catch (UnsupportedEncodingException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
return; return;
} }
reader = new BufferedReader(isr); reader = new BufferedReader(isr);
writer = new PrintWriter(osr); writer = new PrintWriter(osr);
ready = true; ready = true;
} }
if (ready) { if (ready)
try { {
try
{
logger.info("Waiting for message"); logger.info("Waiting for message");
String msg = reader.readLine(); String msg = reader.readLine();
if (msg == null) { if (msg == null)
{
ready = false; ready = false;
continue; continue;
} }
this.setChanged(); this.setChanged();
this.notifyObservers(msg); this.notifyObservers(msg);
} catch (IOException e) { }
catch (IOException e)
{
logger.severe(e.toString()); logger.severe(e.toString());
ready = false; ready = false;
continue;
} }
} }
} }
@ -136,11 +155,13 @@ public class Server extends Observable implements Runnable
public void sendMessage(String msg) public void sendMessage(String msg)
{ {
if (ready) { if (ready)
{
writer.println(msg); writer.println(msg);
writer.flush(); writer.flush();
} else { } else
logger.warning("Server not ready to send message. Connect first"); {
logger.warning("Server not ready");
} }
} }

View File

@ -33,46 +33,53 @@ public class Transmitter extends Observable implements Observer
public void connectToPeer(boolean mode, String ip, int port) public void connectToPeer(boolean mode, String ip, int port)
{ {
if (initialized) { if (initialized)
logger.info("Chat already running"); {
logger.info("Chat's already running");
return; return;
} }
this.mode = mode; this.mode = mode;
if (mode) { if (mode)
{
logger.info("Running as server"); logger.info("Running as server");
srv = new Server(port); srv = new Server(port);
srv.addObserver(this); srv.addObserver(this);
srv.init(); srv.init();
} else { }
else
{
logger.info("Running as client"); logger.info("Running as client");
cli = new Client(ip, port); cli = new Client(ip, port);
cli.addObserver(this); cli.addObserver(this);
cli.init(); cli.init();
} }
initialized = true; initialized = true;
} }
public void sendMessage(String msg) public void sendMessage(String msg)
{ {
if (!initialized) { if (!initialized)
{
logger.warning("Chat not initialized"); logger.warning("Chat not initialized");
return; return;
} }
if (mode) { if (mode)
{
srv.sendMessage(msg); srv.sendMessage(msg);
} else { }
else
{
cli.sendMessage(msg); cli.sendMessage(msg);
} }
} }
@Override @Override
public void update(Observable o, Object o1) public void update(Observable observable, Object object)
{ {
this.setChanged(); this.setChanged();
this.notifyObservers(o1); this.notifyObservers(object);
} }
} }

View File

@ -38,7 +38,7 @@
<Component id="lbIP" min="-2" max="-2" attributes="0"/> <Component id="lbIP" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="tfIP" min="-2" pref="191" max="-2" attributes="0"/> <Component id="tfIP" min="-2" pref="191" max="-2" attributes="0"/>
<EmptySpace pref="34" max="32767" attributes="0"/> <EmptySpace pref="247" max="32767" attributes="0"/>
<Component id="btConnect" min="-2" max="-2" attributes="0"/> <Component id="btConnect" min="-2" max="-2" attributes="0"/>
</Group> </Group>
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
@ -63,7 +63,7 @@
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="134" max="32767" attributes="0"/> <Component id="jScrollPane1" pref="243" max="32767" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/> <EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0"> <Group type="103" groupAlignment="3" attributes="0">
<Component id="tfMessage" alignment="3" min="-2" pref="25" max="-2" attributes="0"/> <Component id="tfMessage" alignment="3" min="-2" pref="25" max="-2" attributes="0"/>
@ -114,7 +114,7 @@
</Component> </Component>
<Component class="javax.swing.JTextField" name="tfPort"> <Component class="javax.swing.JTextField" name="tfPort">
<Properties> <Properties>
<Property name="text" type="java.lang.String" value="3210"/> <Property name="text" type="java.lang.String" value="45000"/>
<Property name="toolTipText" type="java.lang.String" value=""/> <Property name="toolTipText" type="java.lang.String" value=""/>
</Properties> </Properties>
</Component> </Component>

View File

@ -119,7 +119,7 @@ public class ChatView extends javax.swing.JFrame {
btSend.setText("send"); btSend.setText("send");
tfPort.setText("3210"); tfPort.setText("45000");
tfPort.setToolTipText(""); tfPort.setToolTipText("");
lbPort.setText("Port:"); lbPort.setText("Port:");
@ -164,7 +164,7 @@ public class ChatView extends javax.swing.JFrame {
.addComponent(lbIP) .addComponent(lbIP)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tfIP, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tfIP, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 247, Short.MAX_VALUE)
.addComponent(btConnect)) .addComponent(btConnect))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(rbClient, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(rbClient, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
@ -183,7 +183,7 @@ public class ChatView extends javax.swing.JFrame {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup() .addGroup(layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
.addGap(18, 18, 18) .addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tfMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tfMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)