From 14fa12edfb9ac2c2a890dda4452fe76e7bc62635 Mon Sep 17 00:00:00 2001 From: pyknic Date: Wed, 25 Jan 2017 13:14:06 -0800 Subject: [PATCH] runtime-core: Expose stored email address in API --- .../StatisticsReporterComponentImpl.java | 3 +- ...{EmailUtil.java => InternalEmailUtil.java} | 16 +++--- .../core/internal/util/Statistics.java | 2 +- .../internal/util/analytics/FocusPoint.java | 4 +- .../runtime/core/util/EmailUtil.java | 56 +++++++++++++++++++ .../java/com/speedment/tool/core/MainApp.java | 4 +- .../controller/MailPromptController.java | 4 +- 7 files changed, 72 insertions(+), 17 deletions(-) rename runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/{EmailUtil.java => InternalEmailUtil.java} (85%) create mode 100644 runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/util/EmailUtil.java diff --git a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/component/StatisticsReporterComponentImpl.java b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/component/StatisticsReporterComponentImpl.java index 0b97753c25..1fa7c3859d 100644 --- a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/component/StatisticsReporterComponentImpl.java +++ b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/component/StatisticsReporterComponentImpl.java @@ -37,8 +37,7 @@ public class StatisticsReporterComponentImpl implements StatisticsReporterCompon private static final Logger LOGGER = LoggerManager.getLogger(StatisticsReporterComponentImpl.class); private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); - private @Inject - InfoComponent infoComponent; + private @Inject InfoComponent infoComponent; @ExecuteBefore(State.STARTED) public void start() { diff --git a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/EmailUtil.java b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/InternalEmailUtil.java similarity index 85% rename from runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/EmailUtil.java rename to runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/InternalEmailUtil.java index 550e7761d8..91a11247a8 100644 --- a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/EmailUtil.java +++ b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/InternalEmailUtil.java @@ -16,21 +16,21 @@ */ package com.speedment.runtime.core.internal.util; -import java.util.Optional; -import java.util.prefs.Preferences; - import static com.speedment.runtime.core.util.StaticClassUtil.instanceNotAllowed; import static java.util.Objects.requireNonNull; +import java.util.Optional; +import java.util.prefs.Preferences; /** * * @author Emil Forslund + * @since 3.0.2 */ -public final class EmailUtil { +public final class InternalEmailUtil { - private final static String FIELD_NAME = "user_mail"; - private final static String DEFAULT_EMAIL = "no-mail-specified"; - private final static Preferences PREFERENCES = Preferences.userNodeForPackage(EmailUtil.class); + private final static String FIELD_NAME = "user_mail"; + private final static String DEFAULT_EMAIL = "no-mail-specified"; + private final static Preferences PREFERENCES = Preferences.userNodeForPackage(InternalEmailUtil.class); public static boolean hasEmail() { final String storedEmail = PREFERENCES.get(FIELD_NAME, null); @@ -55,7 +55,7 @@ public static void setEmail(String email) { PREFERENCES.put(FIELD_NAME, email); } - private EmailUtil() { + private InternalEmailUtil() { instanceNotAllowed(getClass()); } } diff --git a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/Statistics.java b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/Statistics.java index 2f76ea7043..12d3aaf6c6 100644 --- a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/Statistics.java +++ b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/Statistics.java @@ -100,7 +100,7 @@ private static void notifyEvent(InfoComponent infoComponent, final String event, } private static Param includeMail() { - return new Param("mail", EmailUtil.getEmail()); + return new Param("mail", InternalEmailUtil.getEmail()); } private static void sendPostRequest(final Collection params) { diff --git a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/analytics/FocusPoint.java b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/analytics/FocusPoint.java index fa7a9054c4..ad18a25b40 100644 --- a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/analytics/FocusPoint.java +++ b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/util/analytics/FocusPoint.java @@ -17,7 +17,7 @@ package com.speedment.runtime.core.internal.util.analytics; import com.speedment.runtime.core.component.InfoComponent; -import com.speedment.runtime.core.internal.util.EmailUtil; +import com.speedment.runtime.core.internal.util.InternalEmailUtil; import static java.util.stream.Collectors.joining; import java.util.stream.Stream; @@ -46,7 +46,7 @@ public String getContentURI(InfoComponent infoComponent) { return Stream.of(infoComponent.getTitle(), infoComponent.getImplementationVersion(), eventName, - EmailUtil.getEmail() + InternalEmailUtil.getEmail() ).collect(joining(SEPARATOR)); } } diff --git a/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/util/EmailUtil.java b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/util/EmailUtil.java new file mode 100644 index 0000000000..8a4b16fcb3 --- /dev/null +++ b/runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/util/EmailUtil.java @@ -0,0 +1,56 @@ +package com.speedment.runtime.core.util; + +import com.speedment.runtime.core.internal.util.InternalEmailUtil; +import static com.speedment.runtime.core.util.StaticClassUtil.instanceNotAllowed; + +/** + * Reads and writes to the internal file where a user's email address is stored. + * This is used by the UI to know if it has already asked for a user's email + * address. + * + * @author Emil Forslund + * @since 3.0.2 + */ +public final class EmailUtil { + + /** + * Returns {@code true} if an email address has already been entered. + * + * @return {@code true} if an email exists, else {@code false} + */ + public static boolean hasEmail() { + return InternalEmailUtil.hasEmail(); + } + + /** + * Returns the email address of the current user. + * + * @return the email address + */ + public static String getEmail() { + return InternalEmailUtil.getEmail(); + } + + /** + * Removes the email address stored on the computer. + */ + public static void removeEmail() { + InternalEmailUtil.removeEmail(); + } + + /** + * Overwrites the email address stored (if any) with the one specified. + * + * @param email the new email address to store + */ + public static void setEmail(String email) { + InternalEmailUtil.setEmail(email); + } + + /** + * Should not be instantiated. + */ + private EmailUtil() { + instanceNotAllowed(getClass()); + } +} \ No newline at end of file diff --git a/tool-parent/tool-core/src/main/java/com/speedment/tool/core/MainApp.java b/tool-parent/tool-core/src/main/java/com/speedment/tool/core/MainApp.java index c3a7076413..4e441413be 100644 --- a/tool-parent/tool-core/src/main/java/com/speedment/tool/core/MainApp.java +++ b/tool-parent/tool-core/src/main/java/com/speedment/tool/core/MainApp.java @@ -23,7 +23,7 @@ import com.speedment.runtime.core.component.ProjectComponent; import com.speedment.runtime.core.internal.DefaultApplicationBuilder; import com.speedment.runtime.core.internal.DefaultApplicationMetadata; -import com.speedment.runtime.core.internal.util.EmailUtil; +import com.speedment.runtime.core.internal.util.InternalEmailUtil; import com.speedment.tool.core.brand.Palette; import com.speedment.tool.core.internal.component.UserInterfaceComponentImpl; import com.speedment.tool.core.internal.util.InjectionLoader; @@ -65,7 +65,7 @@ public void start(Stage stage) throws Exception { ui.start(this, stage); if (projects.getProject().dbmses().noneMatch(dbms -> true)) { - if (EmailUtil.hasEmail()) { + if (InternalEmailUtil.hasEmail()) { loader.loadAndShow("Connect"); } else { loader.loadAndShow("MailPrompt"); diff --git a/tool-parent/tool-core/src/main/java/com/speedment/tool/core/internal/controller/MailPromptController.java b/tool-parent/tool-core/src/main/java/com/speedment/tool/core/internal/controller/MailPromptController.java index 0216827147..56354964ca 100644 --- a/tool-parent/tool-core/src/main/java/com/speedment/tool/core/internal/controller/MailPromptController.java +++ b/tool-parent/tool-core/src/main/java/com/speedment/tool/core/internal/controller/MailPromptController.java @@ -18,7 +18,7 @@ import com.speedment.common.injector.annotation.Inject; import com.speedment.generator.core.component.EventComponent; -import com.speedment.runtime.core.internal.util.EmailUtil; +import com.speedment.runtime.core.internal.util.InternalEmailUtil; import com.speedment.tool.core.component.UserInterfaceComponent; import com.speedment.tool.core.event.UIEvent; import com.speedment.tool.core.internal.util.InjectionLoader; @@ -70,7 +70,7 @@ public void initialize(URL location, ResourceBundle resources) { okey.setOnAction(ev -> { injectionLoader.loadAndShow("Connect"); - EmailUtil.setEmail(email.getText()); + InternalEmailUtil.setEmail(email.getText()); eventComponent.notify(UIEvent.OPEN_CONNECT_WINDOW); });