diff --git a/src/main/java/de/kreth/invoice/Version_Properties.java b/src/main/java/de/kreth/invoice/Version_Properties.java
new file mode 100644
index 0000000..2dc88f6
--- /dev/null
+++ b/src/main/java/de/kreth/invoice/Version_Properties.java
@@ -0,0 +1,56 @@
+package de.kreth.invoice;
+
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.function.UnaryOperator;
+
+import javax.annotation.processing.Generated;
+
+/**
+ * Property keys from version.properties
+ */
+@Generated(date = "29.05.2022, 21:56:35", value = "de.kreth.property2java.Generator")
+public enum Version_Properties {
+
+ /**
+ * project.version = "${project.version}"
+ */
+ PROJECT_VERSION ("project.version"),
+ /**
+ * package_name = "${project.artifactId}-${project.version}.${project.packaging}"
+ */
+ PACKAGE_NAME ("package_name"),
+ /**
+ * build.dateTime = "${timestamp}"
+ */
+ BUILD_DATETIME ("build.dateTime"),
+ /**
+ * project.artifactId = "${project.artifactId}"
+ */
+ PROJECT_ARTIFACTID ("project.artifactId");
+
+ private final String value;
+
+ private Version_Properties (String value) {
+ this.value = value;
+ }
+
+ /**
+ * Represented Key in property File.
+ * @return key
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Resolves the value for this key from the parameter function.
+ *
+ * e.g. Version_Properties.getString(resBundle::getString)
+ * @param resourceFunction {@link Properties#getProperty(String)} or {@link ResourceBundle#getString(String)}
+ * @return
+ */
+ public String getString(UnaryOperator resourceFunction) {
+ return resourceFunction.apply(value);
+ }
+}
diff --git a/src/main/java/de/kreth/invoice/views/FooterComponent.java b/src/main/java/de/kreth/invoice/views/FooterComponent.java
index 48af951..4bb2ae7 100644
--- a/src/main/java/de/kreth/invoice/views/FooterComponent.java
+++ b/src/main/java/de/kreth/invoice/views/FooterComponent.java
@@ -2,15 +2,21 @@ package de.kreth.invoice.views;
import java.io.IOException;
import java.net.URL;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.vaadin.flow.component.Text;
-import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
+import com.vaadin.flow.component.formlayout.FormLayout;
-public class FooterComponent extends HorizontalLayout {
+import de.kreth.invoice.Version_Properties;
+
+public class FooterComponent extends FormLayout {
private static final long serialVersionUID = 4845822203421115202L;
@@ -19,7 +25,7 @@ public class FooterComponent extends HorizontalLayout {
private static final Properties VERSION = new Properties();
static {
- String path = "/../version.properties";
+ String path = "/version.properties";
try {
recursivelyLoadPropFromPath(FooterComponent.class, path, 0);
} catch (Exception e) {
@@ -46,33 +52,32 @@ public class FooterComponent extends HorizontalLayout {
public FooterComponent() {
- Text copyright = new Text("© Markus Kreth");
+ Text copyright = new Text("\u00a9 Markus Kreth");
add(copyright);
-// if (propertiesLoaded()) {
-//
-// String dateTimeProperty = Version_Properties.BUILD_DATETIME.getString(VERSION::getProperty);
-// SimpleDateFormat sourceFormat = new SimpleDateFormat(
-// "yyyy-MM-dd HH:mm:ss");
-// sourceFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
-// try {
-// Date date = sourceFormat.parse(dateTimeProperty);
-// dateTimeProperty = DateFormat.getDateTimeInstance(
-// DateFormat.MEDIUM, DateFormat.SHORT).format(date);
-// } catch (ParseException e) {
-// LOGGER.warn(
-// "Unable to parse dateTimeProperty=" + dateTimeProperty,
-// e);
-// }
-// Label vers = new Label(
-// "Version: " + Version_Properties.PROJECT_VERSION.getString(VERSION::getProperty));
-// Label buildTime = new Label("Build: " + dateTimeProperty);
-// adds(vers, buildTime);
-// }
+ if (propertiesLoaded()) {
+
+ String dateTimeProperty = Version_Properties.BUILD_DATETIME.getString(VERSION::getProperty);
+ SimpleDateFormat sourceFormat = new SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss");
+ try {
+ Date date = sourceFormat.parse(dateTimeProperty);
+ dateTimeProperty = DateFormat.getDateTimeInstance(
+ DateFormat.MEDIUM, DateFormat.SHORT).format(date);
+ } catch (ParseException e) {
+ LOGGER.warn(
+ "Unable to parse dateTimeProperty=" + dateTimeProperty,
+ e);
+ }
+ Text vers = new Text(
+ "Version: " + Version_Properties.PROJECT_VERSION.getString(VERSION::getProperty));
+ Text buildTime = new Text("Build: " + dateTimeProperty);
+ add(vers, buildTime);
+ }
+ getStyle().set("margin", "3px");
}
-// private boolean propertiesLoaded() {
-// return Version_Properties.BUILD_DATETIME.getString(VERSION::getProperty) != null
-// && Version_Properties.BUILD_DATETIME.getString(VERSION::getProperty).trim().isEmpty() == false;
-// }
+ private boolean propertiesLoaded() {
+ return !VERSION.isEmpty() && !Version_Properties.BUILD_DATETIME.getString(VERSION::getProperty).contains("${");
+ }
}
diff --git a/src/main/java/de/kreth/invoice/views/View.java b/src/main/java/de/kreth/invoice/views/View.java
index 67dcc36..b3dc6dc 100644
--- a/src/main/java/de/kreth/invoice/views/View.java
+++ b/src/main/java/de/kreth/invoice/views/View.java
@@ -180,6 +180,7 @@ public class View extends VerticalLayout implements BeforeEnterObserver {
invoiceItems.refreshData();
invoiceCompoent.refreshData();
+ add(new FooterComponent());
}
public void onMenuButtonClick(ClickEvent