Added Class for calculating level

This commit is contained in:
tanvidadu 2018-05-28 13:10:39 +05:30
parent 9174dbd8c7
commit c43fce6d84
3 changed files with 55 additions and 3 deletions

View file

@ -9,6 +9,7 @@ public class Achievements {
private int thanksReceived;
private int imagesEditedBySomeoneElse;
private int featuredImages;
private int imagesUploaded;
/**
* Sets the unique images used
@ -97,4 +98,20 @@ public class Achievements {
public int getFeaturedImages() {
return featuredImages;
}
/**
* to set the total number of images uploaded
* @param imagesUploaded
*/
public void setImagesUploaded(int imagesUploaded) {
this.imagesUploaded = imagesUploaded;
}
/**
* to get the total number of uploads
* @return
*/
public int getImagesUploaded() {
return imagesUploaded;
}
}

View file

@ -50,6 +50,8 @@ public class AchievementsActivity extends NavigationBaseActivity {
private static final double BADGE_IMAGE_HEIGHT_RATIO = 0.3;
private Boolean isUploadFetched = false;
private Boolean isStatisticsFetched = false;
private Achievements achievements = new Achievements();
private LevelController level = new LevelController();
@BindView(R.id.achievement_badge)
ImageView imageView;
@ -168,7 +170,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
*/
private void setAchievements() {
compositeDisposable.add(mediaWikiApi
.getAchievements(sessionManager.getCurrentAccount().name)
.getAchievements("Martin_Urbanec")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
@ -181,7 +183,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
*/
private void setUploadCount() {
compositeDisposable.add(mediaWikiApi
.getUploadCount(sessionManager.getCurrentAccount().name)
.getUploadCount("Martin_Urbanec")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
@ -195,6 +197,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
* @param uploadCount
*/
private void setUploadProgress( int uploadCount){
achievements.setImagesUploaded(uploadCount);
Log.i("uploadCount",Integer.toString(uploadCount));
imagesUploadedProgressbar.setProgress(100*uploadCount/25);
imagesUploadedProgressbar.setProgressTextFormatPattern(uploadCount +"/25" );
@ -208,7 +211,6 @@ public class AchievementsActivity extends NavigationBaseActivity {
* @param object
*/
private void parseJson(JSONObject object) {
Achievements achievements = new Achievements();
try {
achievements.setUniqueUsedImages(object.getInt("uniqueUsedImages"));
achievements.setArticlesUsingImages(object.getInt("articlesUsingImages"));
@ -255,6 +257,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
*/
private void hideProgressBar() {
if (progressBar != null && isUploadFetched && isStatisticsFetched) {
Log.i("level", Integer.toString(level.calculateLevelUp(achievements)));
progressBar.setVisibility(View.GONE);
layoutImageReverts.setVisibility(View.VISIBLE);
layoutImageUploaded.setVisibility(View.VISIBLE);

View file

@ -0,0 +1,32 @@
package fr.free.nrw.commons.achievements;
/**
* calculates the level of the user
*/
public class LevelController {
int calculateLevelUp( Achievements achievements){
int level = 1;
if(achievements.getImagesUploaded() >= 100 && achievements.getUniqueUsedImages() >= 45){
level = 10;
} else if (achievements.getImagesUploaded() >= 90 && achievements.getUniqueUsedImages() >= 40){
level = 9;
} else if (achievements.getImagesUploaded() >= 80 && achievements.getUniqueUsedImages() >= 35){
level = 8;
} else if (achievements.getImagesUploaded() >= 70 && achievements.getUniqueUsedImages() >= 30){
level = 7;
} else if (achievements.getImagesUploaded() >= 60 && achievements.getUniqueUsedImages() >= 25 ){
level = 6;
} else if (achievements.getImagesUploaded() >= 50 && achievements.getUniqueUsedImages() >= 20 ){
level = 5;
} else if (achievements.getImagesUploaded() >= 40 && achievements.getUniqueUsedImages() >= 15 ){
level = 4;
} else if (achievements.getImagesUploaded() >= 30 && achievements.getUniqueUsedImages() >= 10 ){
level = 3;
} else if (achievements.getImagesUploaded() >= 20 && achievements.getUniqueUsedImages() >= 5 ){
level = 2;
}
return level;
}
}