Skip to content

Commit

Permalink
runtime-core: Replace Google Analytics with api.speedment.com/stat
Browse files Browse the repository at this point in the history
  • Loading branch information
Pyknic committed May 11, 2017
1 parent 54d7798 commit 92c0ae4
Show file tree
Hide file tree
Showing 14 changed files with 116 additions and 588 deletions.
Expand Up @@ -28,10 +28,10 @@
@InjectKey(StatisticsReporterComponent.class) @InjectKey(StatisticsReporterComponent.class)
public interface StatisticsReporterComponent { public interface StatisticsReporterComponent {


default void reportStarted(){}; default void reportStarted() {}


default void reportStopped(){}; default void reportStopped() {}


default void alive(){}; default void alive() {}


} }
Expand Up @@ -25,6 +25,7 @@


import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;


/** /**
Expand All @@ -50,13 +51,17 @@ public Project makeProject() {
return getMetadata().map(json -> DocumentTranscoder.load(json, this::fromJson)).orElseGet(() -> { return getMetadata().map(json -> DocumentTranscoder.load(json, this::fromJson)).orElseGet(() -> {
final Map<String, Object> data = new ConcurrentHashMap<>(); final Map<String, Object> data = new ConcurrentHashMap<>();
data.put(HasName.NAME, "Project"); data.put(HasName.NAME, "Project");
data.put(Project.APP_ID, UUID.randomUUID().toString());
return new ProjectImpl(data); return new ProjectImpl(data);
}); });
} }


private Map<String, Object> fromJson(String json) { private Map<String, Object> fromJson(String json) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Map<String, Object> parsed = (Map<String, Object>) Json.fromJson(json); final Map<String, Object> parsed = (Map<String, Object>) Json.fromJson(json);
if (!parsed.containsKey(Project.APP_ID)) {
parsed.put(Project.APP_ID, UUID.randomUUID().toString());
}
return parsed; return parsed;
} }
} }
Expand Up @@ -25,6 +25,7 @@


import java.io.File; import java.io.File;
import java.util.Map; import java.util.Map;
import java.util.UUID;


/** /**
* The default implementation of the {@link ApplicationMetadata} interface. * The default implementation of the {@link ApplicationMetadata} interface.
Expand Down Expand Up @@ -62,6 +63,9 @@ public Project makeProject() {
private Map<String, Object> fromJson(String json) { private Map<String, Object> fromJson(String json) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Map<String, Object> parsed = (Map<String, Object>) Json.fromJson(json); final Map<String, Object> parsed = (Map<String, Object>) Json.fromJson(json);
if (!parsed.containsKey(Project.APP_ID)) {
parsed.put(Project.APP_ID, UUID.randomUUID().toString());
}
return parsed; return parsed;
} }
} }
Expand Up @@ -20,40 +20,49 @@
import com.speedment.common.logger.Logger; import com.speedment.common.logger.Logger;
import com.speedment.common.logger.LoggerManager; import com.speedment.common.logger.LoggerManager;
import com.speedment.runtime.core.component.InfoComponent; import com.speedment.runtime.core.component.InfoComponent;
import com.speedment.runtime.core.component.ProjectComponent;
import com.speedment.runtime.core.component.StatisticsReporterComponent; import com.speedment.runtime.core.component.StatisticsReporterComponent;
import com.speedment.runtime.core.internal.util.Statistics; import com.speedment.runtime.core.internal.util.Statistics;


import static com.speedment.runtime.core.internal.util.Statistics.Event.NODE_ALIVE;
import static com.speedment.runtime.core.internal.util.Statistics.Event.NODE_STARTED;
import static com.speedment.runtime.core.internal.util.Statistics.Event.NODE_STOPPED;

/** /**
* Default implementation of the {@link StatisticsReporterComponent} component.
* *
* @author Per Minborg * @author Per Minborg
* @author Emil Forslund
* @since 3.0.8
*/ */
public class StatisticsReporterComponentImpl implements StatisticsReporterComponent { public class StatisticsReporterComponentImpl
implements StatisticsReporterComponent {


private static final Logger LOGGER = LoggerManager.getLogger(StatisticsReporterComponentImpl.class); private static final Logger LOGGER =
LoggerManager.getLogger(StatisticsReporterComponentImpl.class);


@Inject private @Inject InfoComponent info;
private InfoComponent infoComponent; private @Inject ProjectComponent projects;


@Override @Override
public void reportStarted() { public void reportStarted() {
debug("started"); debug("started");
Statistics.onNodeStarted(infoComponent); Statistics.report(info, projects, NODE_STARTED);
} }


@Override @Override
public void reportStopped() { public void reportStopped() {
debug("stopped"); debug("stopped");
Statistics.onNodeStopped(infoComponent); Statistics.report(info, projects, NODE_STOPPED);
} }


@Override @Override
public void alive() { public void alive() {
debug("alive"); debug("alive");
Statistics.onNodeAlive(infoComponent); Statistics.report(info, projects, NODE_ALIVE);
} }


private void debug(String action) { private void debug(String action) {
LOGGER.debug("Report node " + action); LOGGER.debug("Report node " + action);
} }

}
}
Expand Up @@ -16,24 +16,28 @@
*/ */
package com.speedment.runtime.core.internal.util; package com.speedment.runtime.core.internal.util;


import static com.speedment.runtime.core.util.StaticClassUtil.instanceNotAllowed;
import static java.util.Objects.requireNonNull;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
import java.util.prefs.Preferences; import java.util.prefs.Preferences;


import static com.speedment.runtime.core.util.StaticClassUtil.instanceNotAllowed;
import static java.util.Objects.requireNonNull;

/** /**
* *
* @author Emil Forslund * @author Emil Forslund
* @since 3.0.2 * @since 3.0.2
*/ */
public final class InternalEmailUtil { public final class InternalEmailUtil {


private final static String FIELD_NAME = "user_mail"; private static final String ID_FIELD_NAME = "user_id";
private final static String DEFAULT_EMAIL = "no-mail-specified"; private static final String EMAIL_FIELD_NAME = "user_mail";
private final static Preferences PREFERENCES = Preferences.userNodeForPackage(InternalEmailUtil.class); private static final String DEFAULT_EMAIL = "no-mail-specified";
private static final Preferences PREFERENCES =
Preferences.userNodeForPackage(InternalEmailUtil.class);


public static boolean hasEmail() { public static boolean hasEmail() {
final String storedEmail = PREFERENCES.get(FIELD_NAME, null); final String storedEmail = PREFERENCES.get(EMAIL_FIELD_NAME, null);
if (storedEmail == null) { if (storedEmail == null) {
return false; return false;
} }
Expand All @@ -42,17 +46,28 @@ public static boolean hasEmail() {


public static String getEmail() { public static String getEmail() {
return Optional.ofNullable( return Optional.ofNullable(
PREFERENCES.get(FIELD_NAME, null) PREFERENCES.get(EMAIL_FIELD_NAME, null)
).orElse(DEFAULT_EMAIL); ).orElse(DEFAULT_EMAIL);
} }


public static void removeEmail() { public static void removeEmail() {
PREFERENCES.remove(FIELD_NAME); PREFERENCES.remove(EMAIL_FIELD_NAME);
} }


public static void setEmail(String email) { public static void setEmail(String email) {
requireNonNull(email); requireNonNull(email);
PREFERENCES.put(FIELD_NAME, email); PREFERENCES.put(EMAIL_FIELD_NAME, email);
}

public static UUID getUserId() {
final String id = PREFERENCES.get(ID_FIELD_NAME, "");
try {
return UUID.fromString(id);
} catch (final IllegalArgumentException ex) {
final UUID generated = UUID.randomUUID();
PREFERENCES.put(ID_FIELD_NAME, generated.toString());
return generated;
}
} }


private InternalEmailUtil() { private InternalEmailUtil() {
Expand Down

0 comments on commit 92c0ae4

Please sign in to comment.