Add history log to ChallengesPlayerData object.

Add @NonNull annotation to all population methods.
This commit is contained in:
BONNe 2019-02-18 09:24:28 +02:00
parent e6f2b9e0b7
commit ca2b7e2ec6

View File

@ -2,9 +2,14 @@ package world.bentobox.challenges.database.object;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import org.eclipse.jdt.annotation.NonNull;
import java.util.*; import java.util.*;
import world.bentobox.bentobox.api.logs.LogEntry;
import world.bentobox.bentobox.database.objects.DataObject; import world.bentobox.bentobox.database.objects.DataObject;
import world.bentobox.bentobox.database.objects.adapters.Adapter;
import world.bentobox.bentobox.database.objects.adapters.LogEntryListAdapter;
/** /**
* Stores the player's challenge situation * Stores the player's challenge situation
@ -63,6 +68,13 @@ public class ChallengesPlayerData implements DataObject
@Expose @Expose
private Set<String> levelsDone = new HashSet<>(); private Set<String> levelsDone = new HashSet<>();
/**
* Stores history about challenge completion.
*/
@Adapter(LogEntryListAdapter.class)
@Expose
private List<LogEntry> history = new LinkedList<>();
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// Section: Getters // Section: Getters
@ -110,6 +122,16 @@ public class ChallengesPlayerData implements DataObject
} }
/**
* This method returns the history object.
* @return the history object.
*/
public List<LogEntry> getHistory()
{
return history;
}
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// Section: Setters // Section: Setters
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
@ -159,6 +181,16 @@ public class ChallengesPlayerData implements DataObject
} }
/**
* This method sets the history object value.
* @param history the history object new value.
*/
public void setHistory(List<LogEntry> history)
{
this.history = history;
}
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// Section: Other Methods // Section: Other Methods
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
@ -169,7 +201,7 @@ public class ChallengesPlayerData implements DataObject
* *
* @param worldName world which challenges must be reset. * @param worldName world which challenges must be reset.
*/ */
public void reset(String worldName) public void reset(@NonNull String worldName)
{ {
challengeStatus.keySet().removeIf(n -> n.startsWith(worldName)); challengeStatus.keySet().removeIf(n -> n.startsWith(worldName));
challengesTimestamp.keySet().removeIf(n -> n.startsWith(worldName)); challengesTimestamp.keySet().removeIf(n -> n.startsWith(worldName));
@ -183,7 +215,7 @@ public class ChallengesPlayerData implements DataObject
* *
* @param challengeName - unique challenge name * @param challengeName - unique challenge name
*/ */
public void setChallengeDone(String challengeName) public void setChallengeDone(@NonNull String challengeName)
{ {
int times = challengeStatus.getOrDefault(challengeName, 0) + 1; int times = challengeStatus.getOrDefault(challengeName, 0) + 1;
challengeStatus.put(challengeName, times); challengeStatus.put(challengeName, times);
@ -197,7 +229,7 @@ public class ChallengesPlayerData implements DataObject
* @param challengeName - unique challenge name * @param challengeName - unique challenge name
* @param times - the number of times to set * @param times - the number of times to set
*/ */
public void setChallengeTimes(String challengeName, int times) public void setChallengeTimes(@NonNull String challengeName, @NonNull int times)
{ {
challengeStatus.put(challengeName, times); challengeStatus.put(challengeName, times);
challengesTimestamp.put(challengeName, System.currentTimeMillis()); challengesTimestamp.put(challengeName, System.currentTimeMillis());
@ -210,7 +242,7 @@ public class ChallengesPlayerData implements DataObject
* @param challengeName - unique challenge name * @param challengeName - unique challenge name
* @return true if done at least once * @return true if done at least once
*/ */
public boolean isChallengeDone(String challengeName) public boolean isChallengeDone(@NonNull String challengeName)
{ {
return this.getTimes(challengeName) > 0; return this.getTimes(challengeName) > 0;
} }
@ -222,7 +254,7 @@ public class ChallengesPlayerData implements DataObject
* @param challengeName - unique challenge name * @param challengeName - unique challenge name
* @return - number of times * @return - number of times
*/ */
public int getTimes(String challengeName) public int getTimes(@NonNull String challengeName)
{ {
return challengeStatus.getOrDefault(challengeName, 0); return challengeStatus.getOrDefault(challengeName, 0);
} }
@ -232,7 +264,7 @@ public class ChallengesPlayerData implements DataObject
* This method adds given level id to completed level set. * This method adds given level id to completed level set.
* @param uniqueId from ChallengeLevel object. * @param uniqueId from ChallengeLevel object.
*/ */
public void addCompletedLevel(String uniqueId) public void addCompletedLevel(@NonNull String uniqueId)
{ {
this.levelsDone.add(uniqueId); this.levelsDone.add(uniqueId);
} }
@ -243,12 +275,23 @@ public class ChallengesPlayerData implements DataObject
* @param uniqueId of ChallengeLevel object. * @param uniqueId of ChallengeLevel object.
* @return <code>true</code> if level is completed, otherwise <code>false</code> * @return <code>true</code> if level is completed, otherwise <code>false</code>
*/ */
public boolean isLevelDone(String uniqueId) public boolean isLevelDone(@NonNull String uniqueId)
{ {
return !this.levelsDone.isEmpty() && this.levelsDone.contains(uniqueId); return !this.levelsDone.isEmpty() && this.levelsDone.contains(uniqueId);
} }
/**
* This method adds given LogEntry to history.
*
* @param entry of type LogEntry
*/
public void addHistoryRecord(@NonNull LogEntry entry)
{
this.history.add(entry);
}
/** /**
* @see Object#hashCode() * @see Object#hashCode()
* @return object hashCode value. * @return object hashCode value.