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