doc/JavaDoc/ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_242-release) on Fri Jun 04 18:15:42 CEST 2021 -->
<title>RemotePointsChallenge</title>
<meta name="date" content="2021-06-04">
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RemotePointsChallenge";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal"><span class="typeNameLink">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html" target="_top">Frames</a></li>
<li><a href="RemotePointsChallenge.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li><a href="#constructor.detail">Constr</a> | </li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">ch.epfl.sdp.peakar.user.challenge.goal</div>
<h2 title="Class RemotePointsChallenge" class="title">Class RemotePointsChallenge</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal">ch.epfl.sdp.peakar.user.challenge.goal.PointsChallenge</a></li>
<li>
<ul class="inheritance">
<li>ch.epfl.sdp.peakar.user.challenge.goal.RemotePointsChallenge</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html" title="interface in ch.epfl.sdp.peakar.user.challenge">Challenge</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">RemotePointsChallenge</span>
extends <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal">PointsChallenge</a></pre>
<div class="block">Concrete implementation of <code>PointsChallenge</code> using Database interaction.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.ch.epfl.sdp.peakar.user.challenge.Challenge">
<!-- -->
</a>
<h3>Fields inherited from interface ch.epfl.sdp.peakar.user.challenge.<a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html" title="interface in ch.epfl.sdp.peakar.user.challenge">Challenge</a></h3>
<code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#FOUNDER">FOUNDER</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#JOINED">JOINED</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#LOSER">LOSER</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#WINNER">WINNER</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#RemotePointsChallenge-java.lang.String-java.lang.String-android.net.Uri-java.lang.String-java.util.List-int-java.time.LocalDateTime-int-java.time.LocalDateTime-java.time.LocalDateTime-java.util.HashMap-java.util.HashMap-">RemotePointsChallenge</a></span>(java.lang.String id,
java.lang.String founderID,
android.net.Uri founderUri,
java.lang.String challengeName,
java.util.List<java.lang.String> users,
int status,
java.time.LocalDateTime creationDateTime,
int durationInDays,
java.time.LocalDateTime startDateTime,
java.time.LocalDateTime finishDateTime,
java.util.HashMap<java.lang.String,java.lang.Integer> userIDPointsMap,
java.util.HashMap<java.lang.String,java.lang.String> userIDUsernameMap)</code>
<div class="block">Constructor for a new concrete points challenge.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#endChallenge--">endChallenge</a></span>()</code>
<div class="block">Challenge Timer expired
Give points to users
Remove challenge from database and from each users that have participated</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#findWinner-java.util.HashMap-">findWinner</a></span>(java.util.HashMap<java.lang.String,java.lang.Integer> enrolledUserScoreMap)</code>
<div class="block">Check among the hashMap of enrolled user which one has the most points</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html" title="interface in ch.epfl.sdp.peakar.user.challenge">Challenge</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#generateNewChallenge-java.lang.String-java.lang.String-int-">generateNewChallenge</a></span>(java.lang.String founderID,
java.lang.String challengeName,
int durationInDays)</code>
<div class="block">Generate a new PointsChallenge.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.HashMap<java.lang.String,java.lang.Integer></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#getPointsGainedPerUser-java.util.List-">getPointsGainedPerUser</a></span>(java.util.List<java.lang.String> enrolledUsers)</code>
<div class="block">Retrieve points gained by each enrolled user during the challenge</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html#join--">join</a></span>()</code>
<div class="block">Make the authenticated user join a new challenge.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.ch.epfl.sdp.peakar.user.challenge.goal.PointsChallenge">
<!-- -->
</a>
<h3>Methods inherited from class ch.epfl.sdp.peakar.user.challenge.goal.<a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal">PointsChallenge</a></h3>
<code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getChallengeName--">getChallengeName</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getChallengeRanking--">getChallengeRanking</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getChallengeUserNames--">getChallengeUserNames</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getCreationDateTime--">getCreationDateTime</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getDurationInDays--">getDurationInDays</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getFinishDateTime--">getFinishDateTime</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getFounderID--">getFounderID</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getFounderUri--">getFounderUri</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getID--">getID</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getStartDateTime--">getStartDateTime</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getStatus--">getStatus</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#getUsers--">getUsers</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#setFinishDateTime-java.time.LocalDateTime-">setFinishDateTime</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#setStartDateTime-java.time.LocalDateTime-">setStartDateTime</a>, <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#setStatus-ch.epfl.sdp.peakar.user.challenge.ChallengeStatus-">setStatus</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="RemotePointsChallenge-java.lang.String-java.lang.String-android.net.Uri-java.lang.String-java.util.List-int-java.time.LocalDateTime-int-java.time.LocalDateTime-java.time.LocalDateTime-java.util.HashMap-java.util.HashMap-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RemotePointsChallenge</h4>
<pre>public RemotePointsChallenge(java.lang.String id,
java.lang.String founderID,
android.net.Uri founderUri,
java.lang.String challengeName,
java.util.List<java.lang.String> users,
int status,
java.time.LocalDateTime creationDateTime,
int durationInDays,
java.time.LocalDateTime startDateTime,
java.time.LocalDateTime finishDateTime,
@Nullable
java.util.HashMap<java.lang.String,java.lang.Integer> userIDPointsMap,
@Nullable
java.util.HashMap<java.lang.String,java.lang.String> userIDUsernameMap)</pre>
<div class="block">Constructor for a new concrete points challenge. This constructor needs to be called to retrieve an existing challenge, not to create a new one.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - unique identifier of the challenge.</dd>
<dd><code>founderID</code> - Id of the founder</dd>
<dd><code>challengeName</code> - challenge name.</dd>
<dd><code>users</code> - users who joined the challenge.</dd>
<dd><code>creationDateTime</code> - challenge creation date</dd>
<dd><code>startDateTime</code> - challenge start date</dd>
<dd><code>finishDateTime</code> - challenge finish date</dd>
<dd><code>durationInDays</code> - challenge duration (given in days)</dd>
<dd><code>founderUri</code> - URI of the founder profile picture</dd>
<dd><code>status</code> - challenge status</dd>
<dd><code>userIDPointsMap</code> - current user ranking</dd>
<dd><code>userIDUsernameMap</code> - map between user ID and user names</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="generateNewChallenge-java.lang.String-java.lang.String-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>generateNewChallenge</h4>
<pre>public static <a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html" title="interface in ch.epfl.sdp.peakar.user.challenge">Challenge</a> generateNewChallenge(java.lang.String founderID,
java.lang.String challengeName,
int durationInDays)</pre>
<div class="block">Generate a new PointsChallenge.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>founderID</code> - ID of the founder of the challenge.</dd>
<dd><code>challengeName</code> - name of the challenge</dd>
<dd><code>durationInDays</code> - duration of the challenge in number of days</dd>
</dl>
</li>
</ul>
<a name="join--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>join</h4>
<pre>public void join()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#join--">Challenge</a></code></span></div>
<div class="block">Make the authenticated user join a new challenge.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html#join--">join</a></code> in interface <code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/Challenge.html" title="interface in ch.epfl.sdp.peakar.user.challenge">Challenge</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html#join--">join</a></code> in class <code><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal">PointsChallenge</a></code></dd>
</dl>
</li>
</ul>
<a name="endChallenge--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>endChallenge</h4>
<pre>public int endChallenge()</pre>
<div class="block">Challenge Timer expired
Give points to users
Remove challenge from database and from each users that have participated</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>number of points gained. If the user has not the most points among the users during
the challenge period, he gets 0 pts</dd>
</dl>
</li>
</ul>
<a name="findWinner-java.util.HashMap-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findWinner</h4>
<pre>public java.lang.String findWinner(java.util.HashMap<java.lang.String,java.lang.Integer> enrolledUserScoreMap)</pre>
<div class="block">Check among the hashMap of enrolled user which one has the most points</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>enrolledUserScoreMap</code> - map between UID and score points gained during the challenge</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>UID of the user with the most points gained</dd>
</dl>
</li>
</ul>
<a name="getPointsGainedPerUser-java.util.List-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getPointsGainedPerUser</h4>
<pre>public java.util.HashMap<java.lang.String,java.lang.Integer> getPointsGainedPerUser(java.util.List<java.lang.String> enrolledUsers)</pre>
<div class="block">Retrieve points gained by each enrolled user during the challenge</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>enrolledUsers</code> - list of enrolled users</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>HashMap<String,Integer> with key = UID and value = points gained</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../ch/epfl/sdp/peakar/user/challenge/goal/PointsChallenge.html" title="class in ch.epfl.sdp.peakar.user.challenge.goal"><span class="typeNameLink">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?ch/epfl/sdp/peakar/user/challenge/goal/RemotePointsChallenge.html" target="_top">Frames</a></li>
<li><a href="RemotePointsChallenge.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary: </li>
<li>Nested | </li>
<li>Field | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li>Field | </li>
<li><a href="#constructor.detail">Constr</a> | </li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>