Skip to content

Commit b19f556

Browse files
author
Open Lowcode SAS
committed
Addition of a message writing and reading sample file
1 parent a4d3b81 commit b19f556

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package org.openlowcode.samples.message;
2+
3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
5+
import java.io.IOException;
6+
import java.io.StringReader;
7+
import java.io.StringWriter;
8+
import java.math.BigDecimal;
9+
import java.util.ArrayList;
10+
import java.util.Date;
11+
12+
import org.openlowcode.tools.messages.MessageArrayEnd;
13+
import org.openlowcode.tools.messages.MessageArrayLine;
14+
import org.openlowcode.tools.messages.MessageArrayStart;
15+
import org.openlowcode.tools.messages.MessageBufferedWriter;
16+
import org.openlowcode.tools.messages.MessageFieldSpec;
17+
import org.openlowcode.tools.messages.MessageFieldTypeBoolean;
18+
import org.openlowcode.tools.messages.MessageFieldTypeDecimal;
19+
import org.openlowcode.tools.messages.MessageFieldTypeInteger;
20+
import org.openlowcode.tools.messages.MessageFieldTypeString;
21+
import org.openlowcode.tools.messages.MessageSimpleReader;
22+
import org.openlowcode.tools.messages.OLcRemoteException;
23+
24+
/**
25+
* This sample shows how to use the OLc messaging.
26+
* It transmits the information through a local reader
27+
* and does not require network connection.
28+
* @author Open Lowcode SAS
29+
*
30+
*/
31+
public class OLcMessageSample {
32+
33+
public static void main(String[] args) {
34+
try {
35+
System.out.println(" -----------------------------------------------------------");
36+
System.out.println(" Transmission of a simple message");
37+
transmitsSimpleMessage();
38+
transmitArray();
39+
} catch (Exception e) {
40+
System.err.println("An error happended "+e.getMessage());
41+
for (int i=0;i<e.getStackTrace().length;i++) {
42+
System.err.println(" - "+e.getStackTrace()[i]);
43+
}
44+
}
45+
}
46+
/**
47+
* Transmits a compact array. This allows transfer of sets of identical elements
48+
* with very limited overhead.
49+
* @throws IOException
50+
* @throws OLcRemoteException
51+
*/
52+
private static void transmitArray() throws IOException, OLcRemoteException {
53+
System.out.println(" -----------------------------------------------------------");
54+
System.out.println(" Transmission of a message with compact array");
55+
56+
StringWriter messageholder = new StringWriter();
57+
MessageBufferedWriter messagewriter = new MessageBufferedWriter(new BufferedWriter(messageholder), false);
58+
// -- write message writer here
59+
messagewriter.startNewMessage();
60+
ArrayList<MessageFieldSpec> fullspec = new ArrayList<MessageFieldSpec>();
61+
fullspec.add(new MessageFieldSpec("FIELD1",MessageFieldTypeBoolean.singleton));
62+
fullspec.add(new MessageFieldSpec("FIELD2",MessageFieldTypeInteger.singleton));
63+
fullspec.add(new MessageFieldSpec("FIELD3",MessageFieldTypeDecimal.singleton));
64+
fullspec.add(new MessageFieldSpec("FIELD4",MessageFieldTypeString.singleton));
65+
MessageArrayStart arraystart = new MessageArrayStart("TESTARRAY", fullspec);
66+
messagewriter.sendMessageElement(arraystart);
67+
messagewriter.sendMessageElement(new MessageArrayLine(arraystart, new Object[] {new Boolean(true),new Integer(123),new BigDecimal(12.5),"Line 1 "}));
68+
messagewriter.sendMessageElement(new MessageArrayLine(arraystart, new Object[] {new Boolean(false),new Integer(-50),new BigDecimal(-123.50),"Line 2 "}));
69+
messagewriter.sendMessageElement(new MessageArrayLine(arraystart, new Object[] {new Boolean(true),new Integer(45000),new BigDecimal(45.50),"Line 45 --< "}));
70+
messagewriter.sendMessageElement(new MessageArrayEnd());
71+
messagewriter.endMessage();
72+
73+
String message = messageholder.toString();
74+
System.out.println("*** MESSAGE DROP ***");
75+
System.out.println(message);
76+
System.out.println("*** MESSAGE DROP END ***");
77+
78+
MessageSimpleReader reader = new MessageSimpleReader(new BufferedReader(new StringReader(message)));
79+
// -- write message reader here
80+
reader.returnNextMessageStart();
81+
MessageArrayStart startarray = reader.returnNextMessageStartArray("TESTARRAY");
82+
System.out.println(" -- Array field definition ");
83+
for (int i=0;i<startarray.getFieldSpecNr();i++) {
84+
System.out.println(" Field "+ startarray.getFieldSpecAt(i).getName()+" type = "+startarray.getFieldSpecAt(i).getType());
85+
}
86+
while (reader.hasArrayNextLine()) {
87+
MessageArrayLine arrayline = reader.getArrayNextLine();
88+
System.out.println(">>> New Array Line");
89+
for (int i=0;i<arrayline.getObjectNumber();i++) {
90+
System.out.println(" - "+arrayline.getPayloadAt(i));
91+
}
92+
}
93+
reader.returnNextEndMessage();
94+
95+
96+
97+
}
98+
private static void transmitsSimpleMessage() throws IOException, OLcRemoteException {
99+
StringWriter messageholder = new StringWriter();
100+
MessageBufferedWriter messagewriter = new MessageBufferedWriter(new BufferedWriter(messageholder), false);
101+
messagewriter.startNewMessage();
102+
messagewriter.startStructure("STR1");
103+
messagewriter.addStringField("FLD1","Content of field 1");
104+
messagewriter.startStructure("SUBSTR1_1");
105+
messagewriter.addStringField("FLD1_1","Content of field 1.1");
106+
messagewriter.addDateField("FLD1_2",new Date());
107+
108+
messagewriter.endStructure("SUBSTR1_1");
109+
110+
messagewriter.endStructure("STR1");
111+
112+
messagewriter.endMessage();
113+
String message = messageholder.toString();
114+
System.out.println("*** MESSAGE DROP ***");
115+
System.out.println(message);
116+
System.out.println("*** MESSAGE DROP END ***");
117+
MessageSimpleReader reader = new MessageSimpleReader(new BufferedReader(new StringReader(message)));
118+
reader.returnNextMessageStart();
119+
reader.returnNextStartStructure("STR1");
120+
System.out.println("Content of Field 1 "+reader.returnNextStringField("FLD1"));
121+
reader.returnNextStartStructure("SUBSTR1_1");
122+
System.out.println("Content of Field 1.1 "+reader.returnNextStringField("FLD1_1"));
123+
System.out.println("Content of Field 1.2 "+reader.returnNextDateField("FLD1_2"));
124+
125+
126+
reader.returnNextEndStructure("SUBSTR1_1");
127+
128+
reader.returnNextEndStructure("STR1");
129+
130+
reader.returnNextEndMessage();
131+
}
132+
}

0 commit comments

Comments
 (0)