Skip to content
Snippets Groups Projects
Commit ac956dc2 authored by BAUER Oscar's avatar BAUER Oscar
Browse files

kinda works

parent 5da80c4d
Branches CSV_Sector
No related tags found
No related merge requests found
Showing
with 397 additions and 125 deletions
File added
File added
......@@ -4,4 +4,8 @@ public interface Data {
@Override
String toString();
byte[] getHeader();
byte[] getData();
String getHeaderString();
}
package regular;
import java.lang.reflect.UndeclaredThrowableException;
import java.nio.charset.StandardCharsets;
import interfaces.Data;
import utils.DataGenerator;
import utils.binaryUtils;
public class BinaryData implements Data {
byte[] data;
private byte[] completePackage;
private String completePackageString;
private String headerString;
private byte[] header;
private byte[] data;
private String keyWord;
public BinaryData(byte[] data) {
this.data = data;
public BinaryData(byte[] bytePackage) {
this.completePackage = bytePackage;
this.completePackageString = this.toString();
this.keyWord = "Temperature4 [C];";
this.header = isolateHeader(completePackageString, keyWord);
this.headerString = binaryUtils.hexBytesToString(this.header);
this.data = isolateData(this.completePackage, this.header.length);
}
private static String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
// Convert each byte to a two-digit hex string
String hex = String.format("%02X", b);
hexString.append(hex);
private byte[] isolateHeader(String completePackageString, String key) {
int pos = posOfLast(completePackageString, key);
byte[] header = new byte[pos];
System.arraycopy(completePackage, 0, header, 0, header.length);
return header;
}
return hexString.toString();
private byte[] isolateData(byte[] complete, int pos) {
byte[] data = new byte[complete.length - pos];
System.arraycopy(complete, pos, data, 0, data.length);
return data;
}
private int posOfLast(String aString, String key) {
return aString.indexOf(key) + key.length();
}
@Deprecated
private void seperate() {
// System.out.println("orig len: " + completePackage.length);
// System.out.println("header len: " + header.length);
// System.out.println("rest len: " + data.length);
// int tot = data.length + header.length;
// System.out.println("new total: " + tot);
}
public String getHeaderString() {
return this.headerString;
}
public byte[] getData() {
return completePackage;
}
@Override
public byte[] getHeader() {
return this.header;
}
@Override
public String toString() {
return bytesToHex(data);
return binaryUtils.hexToString(binaryUtils.bytesToHex(completePackage));
}
}
......@@ -17,7 +17,15 @@ public class CsvSaver {
public void write(Data data) {
try {
writer.write(data.toString());
writer.write(data.toString()+"\n");
} catch (IOException e) {
e.printStackTrace();
}
}
public void close() {
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
......
package regular;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Flow.Publisher;
import java.util.concurrent.Flow.Subscriber;
import interfaces.Data;
public class DataPublisherMock implements Publisher<Data> {
private List<Subscriber> subscribers = new ArrayList<>();
@Override
public void subscribe(Subscriber<? super Data> subscriber) {
subscribers.add(subscriber);
}
public void publish(Data data) {
for (Subscriber subscriber : subscribers) {
// subscriber.update(data);
}
}
}
package regular;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;
import interfaces.Data;
public class DataSubscriber implements Subscriber<Data> {
String folder;
String fileName;
String fullPath;
public BufferedWriter bw;
CsvSaver saver;
private Subscription subscription;
public DataSubscriber(String fileName) {
this();
this.fileName = fileName;
}
public DataSubscriber() {
this.folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
this.fileName = "defaultFile.csv";
this.fullPath = folder + "\\" + fileName;
this.bw = null;
}
@Override
public void onSubscribe(Subscription subscription) {
saver = new CsvSaver(bw);
// try {
// bw = new BufferedWriter(new FileWriter(fullPath));
// } catch (IOException e) {
// e.printStackTrace();
// }
this.subscription = subscription;
subscription.request(1);
}
@Override
public void onNext(Data item) {
subscription.request(1);
saver.write(item);
// try {
// System.out.println("in onnext");
// bw.write(item.toString()+"\n");
// } catch (IOException e) {
// e.printStackTrace();
// }
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
kill();
}
public void kill() {
System.out.println("killing sub");
// try {
// bw.close();
// System.out.println("closed writer");
// } catch (IOException e) {
// e.printStackTrace();
// }
saver.close();
}
}
......@@ -13,4 +13,10 @@ public class StringData implements Data {
public String toString() {
return data;
}
@Override
public byte[] getData() {
// TODO Auto-generated method stub
return null;
}
}
This is a randomly generated String.
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
This is a randomly generated String.
File added
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
package testing;
import java.util.concurrent.SubmissionPublisher;
import interfaces.Data;
import regular.DataSubscriber;
import utils.DataGenerator;
public class PubSubTesting {
public static void main(String[] args) {
SubmissionPublisher<Data> publisher = new SubmissionPublisher<>();
DataSubscriber subscriber = new DataSubscriber();
publisher.subscribe(subscriber);
for (int lines = 0; lines < 10; lines++) {
publisher.submit(DataGenerator.generateRandom());
}
try {
Thread.sleep(100);
publisher.close();
System.out.println("should be closed");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package testing;
import interfaces.Data;
import regular.BinaryData;
import utils.DataGenerator;
public class StringCutFiddle {
public static void main(String[] args) {
Data data = DataGenerator.generateFirstData();
String testString = data.toString();
String searchedString = "Temperature4 [C];";
int pos = testString.indexOf(searchedString);
int lenHeader = pos + searchedString.length();
// System.out.println(testString.substring(0, pos+searchedString.length()));
byte[] header = new byte[lenHeader + 4];
System.arraycopy(data.getData(), 0, header, 0, header.length);
Data meta = new BinaryData(header);
System.out.println(meta.toString());
byte[] rest = new byte[data.getData().length - header.length];
System.arraycopy(data.getData(), header.length, rest, 0, rest.length);
Data noMeta = new BinaryData(rest);
System.out.println("orig len: " + data.getData().length);
System.out.println("header len: " + header.length);
System.out.println("rest len: " + rest.length);
int tot = rest.length + header.length;
System.out.println("new total: " + tot);
// String dataString = testString.substring(pos+searchedString.length(), testString.length());
// System.out.println(dataString);
// String newString = originalString.substring(startIndex, endIndex);
// .substring(0, pos+searchedString.length())
}
}
package testing;
import regular.BinaryData;
import utils.DataGenerator;
import interfaces.Data;
public class TestBinaryData {
public static void main(String[] args) {
byte[] binaryData = {0x4A, 0x6F, 0x68, 0x6E}; // Represents "John"
Data data = new BinaryData(binaryData);
// byte[] binaryData = { 0x4A, 0x6F, 0x68, 0x6E }; // Represents "John"
// Data data = new BinaryData(binaryData);
// System.out.println(data.toString());
Data data = DataGenerator.generateFirstData();
System.out.println(data.getHeaderString());
System.out.println(data.toString());
}
}
package testing;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import interfaces.Data;
import regular.CsvSaver;
import utils.DataGenerator;
public class TestCsvSaver {
public static void main(String[] args) {
String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
String fileName = "defaultTestFile.csv";
String fullPath = folder + "\\" + fileName;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fullPath));
CsvSaver saver = new CsvSaver(bw);
for (int lines = 0; lines < 100; lines++) {
saver.write(DataGenerator.generateRandom());
}
saver.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package testing;
import interfaces.Data;
import utils.DataGenerator;
public class TestDataGenerator {
public static void main(String[] args) {
Data dataS = DataGenerator.generateString();
System.out.println("String: " + dataS.toString());
Data dataB = DataGenerator.generateByte();
System.out.println("Byte: " + dataB.toString());
for (int i = 0; i < 5; i++) {
Data dataR = DataGenerator.generateRandom();
System.out.println("Random: " + dataR.toString());
}
}
}
package testing;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import regular.CsvSaver;
import utils.DataGenerator;
public class TestLoadJSON {
public static void main(String[] args) {
String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
String fileName = "defaultTestFile.csv";
String fullPath = folder + "\\" + fileName;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fullPath));
CsvSaver saver = new CsvSaver(bw);
saver.write(DataGenerator.generateJSON());
saver.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package testing;
import regular.BinaryData;
import regular.StringData;
import interfaces.Data;
public class TestStringData {
public static void main(String[] args) {
String stringData = "This is a String!"; // Represents "John"
Data data = new StringData(stringData);
System.out.println(data.toString());
}
}
......@@ -13,21 +13,17 @@ public class Testing {
public static void main(String[] args) {
String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
String fileName = "firstTest.csv";
String fileName = "defaultTestFile.csv";
String fullPath = folder + "\\" + fileName;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fullPath));
// bw.write("testingtestingtestingtesting");
System.out.println("writer created");
CsvSaver saver = new CsvSaver(bw);
for (int lines = 0; lines < 100; lines++) {
// bw.write("testingtestingtestingtesting");
saver.write(DataGenerator.generateByte());
bw.newLine();
saver.write(DataGenerator.generateRandom());
}
bw.close();
......
package testing;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import interfaces.Data;
import regular.CsvSaver;
import utils.BinaryDataLoader;
import utils.DataGenerator;
public class TestingDataLoader {
public static void main(String[] args) {
String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
String fileName = "defaultTestFile.csv";
String fullPath = folder + "\\" + fileName;
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fullPath));
CsvSaver saver = new CsvSaver(bw);
saver.write(DataGenerator.generateFirstData());
saver.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment