From 106cd2fe02cb210d1cdb70ed7dfba49c44444100 Mon Sep 17 00:00:00 2001
From: tonschnoer <kmtegtmeier@tonschnoer.de>
Date: Sun, 7 Apr 2024 10:57:45 +0200
Subject: [PATCH] implemented Config

added packaging to pom
---
 MediaBackupEJB/pom.xml                        | 54 +++++++++++
 .../src/main/java/de/kmt/ndr/Config.java      | 50 ++++++++++
 .../src/main/java/de/kmt/ndr/Main.java        | 22 +++--
 .../src/main/java/de/kmt/ndr/TCPClient.java   | 92 +++++++++++++++++++
 .../src/main/resources/MediaBackup.ini        | 13 +++
 .../src/test/resources/MediaBackup.ini        | 13 +++
 6 files changed, 235 insertions(+), 9 deletions(-)
 create mode 100644 MediaBackupEJB/src/main/java/de/kmt/ndr/Config.java
 create mode 100644 MediaBackupEJB/src/main/java/de/kmt/ndr/TCPClient.java
 create mode 100644 MediaBackupEJB/src/main/resources/MediaBackup.ini
 create mode 100644 MediaBackupEJB/src/test/resources/MediaBackup.ini

diff --git a/MediaBackupEJB/pom.xml b/MediaBackupEJB/pom.xml
index 0c9ef7d..cc9619a 100644
--- a/MediaBackupEJB/pom.xml
+++ b/MediaBackupEJB/pom.xml
@@ -19,8 +19,33 @@
 			<version>4.0.1</version>
 			<scope>provided</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-api</artifactId>
+			<version>2.23.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-core</artifactId>
+			<version>2.23.1</version>
+		</dependency>
+		<!--
+		https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-configuration2</artifactId>
+			<version>2.10.1</version>
+		</dependency>
+		<!--
+		https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
+		<dependency>
+			<groupId>commons-beanutils</groupId>
+			<artifactId>commons-beanutils</artifactId>
+			<version>1.9.4</version>
+		</dependency>
 
 	</dependencies>
+
 	<repositories>
 		<repository>
 			<id>Maven Repo</id>
@@ -28,4 +53,33 @@
 		</repository>
 	</repositories>
 
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<mainClass>com.kmt.ndr.Main</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+
 </project>
\ No newline at end of file
diff --git a/MediaBackupEJB/src/main/java/de/kmt/ndr/Config.java b/MediaBackupEJB/src/main/java/de/kmt/ndr/Config.java
new file mode 100644
index 0000000..e2e62f3
--- /dev/null
+++ b/MediaBackupEJB/src/main/java/de/kmt/ndr/Config.java
@@ -0,0 +1,50 @@
+package de.kmt.ndr;
+import org.apache.commons.configuration2.*;
+import org.apache.commons.configuration2.builder.fluent.Configurations;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+
+public class Config {
+	
+	public static int listenerport=0;
+	public static int serverport = 0;
+	public static String server ="";
+	public static String directory="";
+	public static String file="";
+	
+	public static String hours="";
+	public static String minutes="";
+	public static String seconds="";
+	
+
+	
+	public static void readini() {
+		try {
+			
+			Configurations c = new Configurations();
+			INIConfiguration ic = c.ini("MediaBackup.ini");
+			SubnodeConfiguration general = ic.getSection("general");
+			SubnodeConfiguration files = ic.getSection("file");
+			SubnodeConfiguration schedule = ic.getSection("schedule");
+			
+
+			listenerport = general.getInt("listenerport");
+			serverport = general.getInt("serverport");
+			server = general.getString("server");
+			
+			directory = files.getString("directory");
+			file = files.getString("file");
+	
+			hours = schedule.getString("hours");
+			minutes = schedule.getString("minutes");
+			seconds = schedule.getString("seconds");
+			
+			System.out.println("ini file read. schedule=" + hours + " " + minutes + " " + seconds);
+			
+			
+		} catch (ConfigurationException e) {
+			
+			e.printStackTrace();
+		}
+		
+	}
+}
diff --git a/MediaBackupEJB/src/main/java/de/kmt/ndr/Main.java b/MediaBackupEJB/src/main/java/de/kmt/ndr/Main.java
index d6d978f..fd33649 100644
--- a/MediaBackupEJB/src/main/java/de/kmt/ndr/Main.java
+++ b/MediaBackupEJB/src/main/java/de/kmt/ndr/Main.java
@@ -20,7 +20,9 @@ public class Main {
 	private TimerService timerService;
 
 	private void _setUP() {
-
+		System.out.println("Read ini file");
+		Config.readini();
+		
 	}
 
 	// ***********************************************************************************
@@ -29,10 +31,9 @@ public class Main {
 	@Timeout
 	public void scheduler(Timer timer) {
 		try {
-			_setUP();
 			System.out.println("Timer fired.");
 		} catch (Exception _ex) {
-
+			_ex.printStackTrace();
 		}
 	}
 
@@ -43,12 +44,17 @@ public class Main {
 	public void initialize() {
 		try {
 			_setUP();
+			System.out.println("initialize application");
 			ScheduleExpression se = new ScheduleExpression();
-			se.hour("*").minute("0/1").second("0/1");
-
-			timerService.createCalendarTimer(se, new TimerConfig("Cleanup Service scheduled at ", false));
+			
+			if (!Config.hours.equals("")) se = se.hour(Config.hours);
+			if (!Config.minutes.equals("")) se = se.minute(Config.minutes);
+			if (!Config.seconds.equals("")) se = se.second(Config.seconds);
+			
+			timerService.createCalendarTimer(se, new TimerConfig("Next Backup Request scheduled at ", false));
 		} catch (Exception _ex) {
 
+			_ex.printStackTrace();
 		}
 	}
 
@@ -59,13 +65,11 @@ public class Main {
 	public void stop() {
 
 		try {
-			_setUP();
 			for (Timer timer : timerService.getTimers()) {
-
 				timer.cancel();
 			}
 		} catch (Exception _ex) {
-
+			_ex.printStackTrace();
 		}
 	}
 
diff --git a/MediaBackupEJB/src/main/java/de/kmt/ndr/TCPClient.java b/MediaBackupEJB/src/main/java/de/kmt/ndr/TCPClient.java
new file mode 100644
index 0000000..a186f62
--- /dev/null
+++ b/MediaBackupEJB/src/main/java/de/kmt/ndr/TCPClient.java
@@ -0,0 +1,92 @@
+package de.kmt.ndr;
+
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class TCPClient.
+ */
+public class TCPClient {
+	
+	/** The logger. */
+	protected final Logger logger = LogManager.getLogger();
+	
+	/**
+	 * The main method.
+	 *
+	 * @param args the arguments
+	 */
+	public void main(String[] args) {
+		byte[] buffer = new byte[32768];
+
+		try {
+			
+			logger.info("Startup TCPClient");
+			DataOutputStream dos = new DataOutputStream(new FileOutputStream(Config.directory + Config.file));
+			Socket clientSocket = new Socket(Config.server,Config.serverport);
+			OutputStreamWriter out = new OutputStreamWriter(clientSocket.getOutputStream());
+			InputStream is = clientSocket.getInputStream();
+			
+			
+			while (true) {
+					
+				// request file from server
+				out.write(Config.file);
+				out.flush();
+
+				while (true) {
+					
+					// read up to 32768 bytes from stream
+					int readbytes = is.read(buffer,0,32768);
+					System.out.print(".");
+
+					// check if 32768 bytes where read (i.e. there are some more)
+					if (readbytes<32768) {
+						
+						// less than 32768 bytes are read. Check if last 3 bytes are "END". If so: stop receiving data
+						if ((buffer[readbytes-3]==0x45) & (buffer[readbytes-2]==0x4e) & (buffer[readbytes-1]==0x44)) {
+							System.out.println("Schluss");
+							
+							// if there is some interesting data, before END, write it to file
+							if (readbytes>3) {
+								dos.write(buffer,0,readbytes-3);
+							}
+							break;
+						} else {
+							// if bytesread < 32768, but no ending Tag "END" -> write buffer to file
+							dos.write(buffer,0,readbytes);
+						}
+					} else {
+						// if bytesread = 32768, assume there is more and write buffer to file
+						dos.write(buffer,0,readbytes);
+					}
+				}
+				
+				// close output file
+				dos.close();
+
+				// Send a response back to the client
+				out.write(".");
+
+				// Close the socket and streams for this client
+				clientSocket.close();
+				
+				// exit while(true)
+				break;
+			}
+
+		} catch (Exception e) {
+			System.out.println("An exception has occurred:");
+			e.printStackTrace();
+		}
+	
+	}
+}
diff --git a/MediaBackupEJB/src/main/resources/MediaBackup.ini b/MediaBackupEJB/src/main/resources/MediaBackup.ini
new file mode 100644
index 0000000..182dc69
--- /dev/null
+++ b/MediaBackupEJB/src/main/resources/MediaBackup.ini
@@ -0,0 +1,13 @@
+[general]
+listenerport = 4000
+serverport = 12345
+server = 127.0.0.1
+
+[files]
+directory=E:\\Daten\\Client\\
+file=herz.mp4
+
+[schedule]
+hours=*
+minutes=*
+seconds=0/5
\ No newline at end of file
diff --git a/MediaBackupEJB/src/test/resources/MediaBackup.ini b/MediaBackupEJB/src/test/resources/MediaBackup.ini
new file mode 100644
index 0000000..b4681e6
--- /dev/null
+++ b/MediaBackupEJB/src/test/resources/MediaBackup.ini
@@ -0,0 +1,13 @@
+[general]
+listenerport = 4000
+serverport = 12345
+server = 127.0.0.1
+
+[files]
+directory=E:\\Daten\\Client\\
+file=herz.mp4
+
+[schedule]
+hours=*
+minutes=0/1
+seconds=
\ No newline at end of file
-- 
GitLab