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