diff options
author | Jordan Byrne <draknyte1@hotmail.com> | 2017-12-11 15:19:20 +1000 |
---|---|---|
committer | Jordan Byrne <draknyte1@hotmail.com> | 2017-12-11 15:19:20 +1000 |
commit | 59a92cdfe5f339051eda0f092ed4020a7d164566 (patch) | |
tree | 3ef1359f401c7885cda937577e6fb83eef1694a5 /src/Java | |
parent | ccb601dd7e675a9829dfac7080a917b1083d9a6d (diff) | |
download | GT5-Unofficial-59a92cdfe5f339051eda0f092ed4020a7d164566.tar.gz GT5-Unofficial-59a92cdfe5f339051eda0f092ed4020a7d164566.tar.bz2 GT5-Unofficial-59a92cdfe5f339051eda0f092ed4020a7d164566.zip |
$ Fixed UUID generation and Data flushing to Segment servers.
Diffstat (limited to 'src/Java')
4 files changed, 71 insertions, 22 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index cf42eaa38e..5b0ce82689 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -147,7 +147,12 @@ public class GTplusplus implements ActionListener { @Mod.EventHandler public void serverStopping(final FMLServerStoppingEvent event) { - + //Flush all data to Server at the end of the day. + if (SegmentAnalytics.sAnalyticsMasterList.size() > 0){ + for (SegmentAnalytics sa : SegmentAnalytics.sAnalyticsMasterList.values()){ + sa.flushAllData(); + } + } } @Override diff --git a/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java b/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java index 9000bfd95a..18b53fabe7 100644 --- a/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java +++ b/src/Java/gtPlusPlus/api/analytics/SegmentAnalytics.java @@ -20,23 +20,23 @@ import ic2.core.IC2; import net.minecraft.entity.player.EntityPlayer; public class SegmentAnalytics { - + //Globally Enabled public static boolean isEnabled = true; - + //Analytics Map with IDs - public static final Map<Integer, SegmentAnalytics> sAnalyticsMasterList = new ConcurrentHashMap<Integer, SegmentAnalytics>(); + public static final Map<Integer, SegmentAnalytics> sAnalyticsMasterList = new ConcurrentHashMap<Integer, SegmentAnalytics>(); //ID count - private static int sAnalyticsMapID = 0; - + private static int sAnalyticsMapID = 0; + //Analytics Player Mapping - public static final Map<UUID, Integer> sAnalyticsToPlayermap = new ConcurrentHashMap<UUID, Integer>(); - + public static final Map<UUID, Integer> sAnalyticsToPlayermap = new ConcurrentHashMap<UUID, Integer>(); + //Set some Vars final BlockingFlush mBlockingFlush; final Analytics mAnalytics; final UUIDGenerator mUuidGenerator; - + final GameProfile mLocalProfile; final String aLocalName; final UUID aUUID; @@ -46,13 +46,13 @@ public class SegmentAnalytics { //Build a new instance of this class public SegmentAnalytics(EntityPlayer mPlayer){ LOG("Generating a new instance of Segment Analytics Handler 2.1.0 for "+mPlayer.getDisplayName()); - + int currentID = sAnalyticsMapID; sAnalyticsMapID++; - + sAnalyticsMasterList.put(currentID, this); sAnalyticsToPlayermap.put(mPlayer.getUniqueID(), currentID); - + this.mLocalProfile = mPlayer.getGameProfile(); this.aLocalName = mLocalProfile.getName(); this.aUUID = PlayerUtils.getPlayersUUIDByName(aLocalName); @@ -68,7 +68,7 @@ public class SegmentAnalytics { .plugin(mBlockingFlush.plugin()) .plugin(new AnalyticsLoggingPlugin()) .build(); - + //Let us submit a doorknock to Segment to let them know who this is. submitInitData(mPlayer); } @@ -111,7 +111,7 @@ public class SegmentAnalytics { .anonymousId(anonymousId) //Save Random Session UUID .traits(properties)); - mAnalytics.flush(); + flushAllData(); } public void submitTrackingData(String aActionPerformed){ @@ -122,7 +122,15 @@ public class SegmentAnalytics { mAnalytics.enqueue(TrackMessage.builder(aActionPerformed) // //.properties(properties) //Save Stats .anonymousId(anonymousId) //Save Random Session UUID - .userId(aUserName)); // Save Username as UUID, for future sessions to attach to. + .userId(aUserName)); // Save Username as UUID, for future sessions to attach to. + + flushAllData(); + } + + public void flushAllData(){ + LOG("Flushing all data from Queue to Segment Analytics database."); + this.flushAllData(); + mAnalytics.flush(); } public UUID generateIdForSession(){ @@ -130,21 +138,55 @@ public class SegmentAnalytics { } private final byte[] generateUUID(){ - return mUuidGenerator.next(4); + byte[] mUUID; + + if (this.mUuidGenerator != null){ + try { + if ((mUUID = mUuidGenerator.next(4)) != null){ + LOG("Generated Type 4 UUID for Session ID."); + return mUUID; + } + else if ((mUUID = mUuidGenerator.next(1)) != null){ + LOG("Generated Type 1 UUID for Session ID."); + return mUUID; + } + } + catch (Throwable t){ + t.printStackTrace(); + } + } + + LOG("Generated Type 3 UUID for Session ID."); + return UUIDUtils.getBytesFromUUID(UUID.randomUUID()); + } public final String getStringForm(UUID mID){ return mID.toString(); } - + // Non-Dev Comments public static void LOG(final String s) { - Utils.getLogger().info("[Analytics] "+s); + Utils.getLogger().info("[Analytics] "+s); } - + public static SegmentAnalytics getAnalyticsForPlayer(EntityPlayer mPlayer){ - if (SegmentAnalytics.sAnalyticsToPlayermap.containsKey(mPlayer)){ - return SegmentAnalytics.sAnalyticsMasterList.get(SegmentAnalytics.sAnalyticsToPlayermap.get(mPlayer.getUniqueID())); + try { + if (mPlayer != null){ + if (SegmentAnalytics.sAnalyticsToPlayermap.containsKey(mPlayer.getUniqueID())){ + int ID = sAnalyticsToPlayermap.get(mPlayer.getUniqueID()); + return SegmentAnalytics.sAnalyticsMasterList.get(ID); + } + else { + LOG("Map does not contain Player."); + } + } + else { + LOG("Invalid Player."); + } + } + catch (Throwable t){ + t.printStackTrace(); } return null; } diff --git a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java index b4872bde93..1876c1ef26 100644 --- a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java @@ -161,7 +161,7 @@ public class BlockEventHandler { } } - //Try submit some data for this event. + //Try submit some data for this event. SegmentAnalytics.getAnalyticsForPlayer(event.harvester).submitTrackingData("Action_Block_Broken"); } diff --git a/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java index 9664c7d340..52e3845bde 100644 --- a/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java @@ -35,6 +35,8 @@ public class LoginEventHandler { new SegmentAnalytics(event.player); } catch (Throwable t){ + t.printStackTrace(); + SegmentAnalytics.LOG("====================================================."); SegmentAnalytics.LOG("Failed to create Analytics submission during log in process."); SegmentAnalytics.LOG("Disabling."); SegmentAnalytics.isEnabled = false; |