refactored SwissTiming connector APIs

This commit is contained in:
Axel Uhl committed 2011-09-30 11:11:07 +02:00
1 parent 9ee8128701
commit c802d2885d
10 files changed
+104 -27

No files matched your search

@@ -0,0 +1,8 @@
package com.sap.sailing.domain.swisstimingadapter;
import java.io.IOException;
import java.net.UnknownHostException;
public interface SailMasterConnector {
SailMasterMessage sendRequestAndGetResponse(String requestMessage) throws UnknownHostException, IOException;
}
@@ -0,0 +1,14 @@
package com.sap.sailing.domain.swisstimingadapter;
public interface SailMasterMessage {
/**
* @return the entire message with STX and ETX stripped
*/
String getMessage();
/**
* @return the {@link #getMessage()} result split along occurrences of the "|" character ("pipe")
*/
String[] getSections();
}
@@ -0,0 +1,11 @@
package com.sap.sailing.domain.swisstimingadapter;
import com.sap.sailing.domain.swisstimingadapter.impl.SwissTimingFactoryImpl;
public interface SwissTimingFactory {
SwissTimingFactory INSTANCE = new SwissTimingFactoryImpl();
SwissTimingMessageParser createMessageParser();
SailMasterConnector createSailMasterConnector(String host, int port);
}
@@ -1,11 +1,8 @@
package com.sap.sailing.domain.swisstimingadapter;
import com.sap.sailing.domain.swisstimingadapter.impl.SwissTimingMessageParserImpl;
import com.sap.sailing.udpconnector.UDPMessageParser;
public interface SwissTimingMessageParser extends UDPMessageParser<SwissTimingMessage> {
SwissTimingMessageParser INSTANCE = new SwissTimingMessageParserImpl();
SwissTimingMessage parse(byte[] message) throws SwissTimingFormatException;
SwissTimingMessage parse(byte[] message, int offset, int length) throws SwissTimingFormatException;
@@ -5,22 +5,25 @@ import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class SailMasterConnector extends SailMasterTransceiver {
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage;
public class SailMasterConnectorImpl extends SailMasterTransceiver implements SailMasterConnector {
private final String host;
private final int port;
private Socket socket;
public SailMasterConnector(String host, int port) {
public SailMasterConnectorImpl(String host, int port) {
super();
this.host = host;
this.port = port;
}
public String sendRequestAndGetResponse(String requestMessage) throws UnknownHostException, IOException {
public SailMasterMessage sendRequestAndGetResponse(String requestMessage) throws UnknownHostException, IOException {
ensureSocketIsOpen();
OutputStream os = socket.getOutputStream();
sendMessage(requestMessage, os);
return receiveMessage(socket.getInputStream());
return new SailMasterMessageImpl(receiveMessage(socket.getInputStream()));
}
private void ensureSocketIsOpen() throws UnknownHostException, IOException {
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.swisstimingadapter.impl;
import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage;
public class SailMasterMessageImpl implements SailMasterMessage {
private final String message;
public SailMasterMessageImpl(String message) {
super();
this.message = message;
}
@Override
public String getMessage() {
return message;
}
@Override
public String[] getSections() {
return getMessage().split("|");
}
@Override
public String toString() {
return getMessage();
}
}
@@ -0,0 +1,19 @@
package com.sap.sailing.domain.swisstimingadapter.impl;
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingMessageParser;
public class SwissTimingFactoryImpl implements SwissTimingFactory {
@Override
public SwissTimingMessageParser createMessageParser() {
return new SwissTimingMessageParserImpl();
}
@Override
public SailMasterConnector createSailMasterConnector(String host, int port) {
return new SailMasterConnectorImpl(host, port);
}
}