diff --git a/.classpath b/.classpath
index a5d95095c..a97cb0ebb 100644
--- a/.classpath
+++ b/.classpath
@@ -9,6 +9,7 @@
+
@@ -28,5 +29,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
index 0d3c7a9ee..3f2f99e0d 100644
--- a/.project
+++ b/.project
@@ -20,4 +20,15 @@
org.eclipse.jdt.core.javanature
org.eclipse.m2e.core.maven2Nature
+
+
+ 1691054016055
+
+ 30
+
+ org.eclipse.core.resources.regexFilterMatcher
+ node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+
+
+
diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 000000000..dfa4f3adb
--- /dev/null
+++ b/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=true
+org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations
+org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 71df5229c..90b69d45c 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -5,5 +5,6 @@ org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 000000000..13a744b24
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,14 @@
+{
+ "configurations": [
+ {
+ "type": "java",
+ "name": "Spring Boot-SbCbExtApplication",
+ "request": "launch",
+ "cwd": "${workspaceFolder}",
+ "mainClass": "org.sunbird.portal.SbCbExtApplication",
+ "projectName": "sb-cb-ext",
+ "args": "",
+ "envFile": "${workspaceFolder}/.env"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/java/org/sunbird/common/helper/cassandra/CassandraConnectionManagerImpl.java b/src/main/java/org/sunbird/common/helper/cassandra/CassandraConnectionManagerImpl.java
index a652e4d2b..1436bdff3 100644
--- a/src/main/java/org/sunbird/common/helper/cassandra/CassandraConnectionManagerImpl.java
+++ b/src/main/java/org/sunbird/common/helper/cassandra/CassandraConnectionManagerImpl.java
@@ -108,7 +108,7 @@ private static Cluster createCluster(String[] hosts, PoolingOptions poolingOptio
}
private static ConsistencyLevel getConsistencyLevel() {
- String consistency = ProjectUtil.getConfigValue(Constants.SUNBIRD_CASSANDRA_CONSISTENCY_LEVEL);
+ String consistency = PropertiesCache.getInstance().readProperty(Constants.SUNBIRD_CASSANDRA_CONSISTENCY_LEVEL);
logger.info("CassandraConnectionManagerImpl:getConsistencyLevel: level = " + consistency);
diff --git a/src/main/java/org/sunbird/common/util/CbExtServerProperties.java b/src/main/java/org/sunbird/common/util/CbExtServerProperties.java
index c943e227a..7bb3e6302 100644
--- a/src/main/java/org/sunbird/common/util/CbExtServerProperties.java
+++ b/src/main/java/org/sunbird/common/util/CbExtServerProperties.java
@@ -467,6 +467,9 @@ public class CbExtServerProperties {
@Value("${assessment.ratake.count.verification.enabled}")
private boolean assessmentRetakeCountVerificationEnabled;
+ @Value("${bulk.upload.tag.verification.regex}")
+ private String bulkUploadTagVerificationRegex;
+
public String getAssessmentSubmitTopic() {
return assessmentSubmitTopic;
}
@@ -1705,4 +1708,12 @@ public boolean isAssessmentRetakeCountVerificationEnabled() {
public void setAssessmentRetakeCountVerificationEnabled(boolean assessmentRetakeCountVerificationEnabled) {
this.assessmentRetakeCountVerificationEnabled = assessmentRetakeCountVerificationEnabled;
}
+
+ public String getBulkUploadTagVerificationRegex() {
+ return bulkUploadTagVerificationRegex;
+ }
+
+ public void setBulkUploadTagVerificationRegex(String bulkUploadTagVerificationRegex) {
+ this.bulkUploadTagVerificationRegex = bulkUploadTagVerificationRegex;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java
index 5b8e83e27..f9be7f101 100644
--- a/src/main/java/org/sunbird/common/util/Constants.java
+++ b/src/main/java/org/sunbird/common/util/Constants.java
@@ -171,11 +171,11 @@ public class Constants {
public static final String USERID = "id";
public static final String COMMENT = "comment";
public static final String COMMENT_BY = "commentBy";
- public static final String COMMENT_UPDATED_ON = "commentupdatedon";
- public static final String CREATED_ON = "createdon";
+ public static final String COMMENT_UPDATED_ON = "commentUpdatedOn";
+ public static final String CREATED_ON = "createdOn";
public static final String RATING = "rating";
public static final String REVIEW = "review";
- public static final String UPDATED_ON = "updatedon";
+ public static final String UPDATED_ON = "updatedOn";
public static final String LATEST50REVIEWS = "latest50reviews";
public static final String SUMMARY_ACTIVITY_ID = "activityid";
public static final String SUMMARY_ACTIVITY_TYPE = "activitytype";
@@ -683,6 +683,7 @@ public class Constants {
public static final String BULK_USER_UPDATE_API_FAILED = "Bulk User Update API Failed";
public static final String SECURE_SETTINGS = "secureSettings";
public static final String API_USER_ENROLMENT = "user.enrolment";
+ public static final String USER_REGISTRATION_GROUP_LIST = "api.user.registration.group.list";
public static final String SUBMIT_ASSESSMENT_RESPONSE_KEY = "submitAssessmentResponse";
public static final String API_READ_ASSESSMENT = "api.assessment.read";
public static final String API_READ_ASSESSMENT_RESULT = "api.assessment.read.result";
@@ -692,6 +693,7 @@ public class Constants {
public static final String START_TIME_KEY = "startTime";
public static final String VERIFIED_PROFILE_FIELDS_KEY = "verifiedProfileFields";
public static final String PROFILE_APPROVAL_FIELDS_KEY = "profileApprovalFields";
+ public static final String BULK_UPLOAD_VERIFICATION_REGEX = "bulk.upload.tag.verification.regex";
private Constants() {
throw new IllegalStateException("Utility class");
diff --git a/src/main/java/org/sunbird/common/util/ProjectUtil.java b/src/main/java/org/sunbird/common/util/ProjectUtil.java
index 137610109..5d0153380 100644
--- a/src/main/java/org/sunbird/common/util/ProjectUtil.java
+++ b/src/main/java/org/sunbird/common/util/ProjectUtil.java
@@ -24,19 +24,7 @@
public class ProjectUtil {
public static CbExtLogger logger = new CbExtLogger(ProjectUtil.class.getName());
-
- public static PropertiesCache propertiesCache;
-
- static {
- propertiesCache = PropertiesCache.getInstance();
- }
-
- public static String getConfigValue(String key) {
- if (StringUtils.isNotBlank(System.getenv(key))) {
- return System.getenv(key);
- }
- return propertiesCache.readProperty(key);
- }
+ public static String DEFAULT_BULK_UPLOAD_VERIFICATION_REGEX = "^[a-zA-Z\\s,]+$";
/**
* This method will check incoming value is null or empty it will do empty check
@@ -119,7 +107,6 @@ public static String firstLetterCapitalWithSingleSpace(final String words) {
public static Boolean validateEmailPattern(String email) {
String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\." + "[a-zA-Z0-9_+&*-]+)*@" + "(?:[a-zA-Z0-9-]+\\.)+[a-z"
+ "A-Z]{2,7}$";
- Boolean retValue = Boolean.FALSE;
Pattern pat = Pattern.compile(emailRegex);
if (pat.matcher(email).matches()) {
return Boolean.TRUE;
@@ -148,8 +135,12 @@ public static Boolean validateFullName(String firstName ) {
}
public static Boolean validateTag(List tags) {
+ String regEx = PropertiesCache.getInstance().getProperty(Constants.BULK_UPLOAD_VERIFICATION_REGEX);
+ if (StringUtils.isBlank(regEx)) {
+ regEx = DEFAULT_BULK_UPLOAD_VERIFICATION_REGEX;
+ }
for (String tag : tags) {
- if (!tag.matches("^[a-zA-Z]+(?: [a-zA-Z]+)*$")) {
+ if (!tag.matches(regEx)) {
return false;
}
}
diff --git a/src/main/java/org/sunbird/profile/controller/ProfileController.java b/src/main/java/org/sunbird/profile/controller/ProfileController.java
index bb6525a22..15cf0486f 100644
--- a/src/main/java/org/sunbird/profile/controller/ProfileController.java
+++ b/src/main/java/org/sunbird/profile/controller/ProfileController.java
@@ -107,4 +107,10 @@ public ResponseEntity> generateUserReport() {
public ResponseEntity> downloadFile(@PathVariable("fileName") String fileName) {
return profileService.downloadFile(fileName);
}
+
+ @GetMapping("/user/v1/groups")
+ public ResponseEntity> getGroupList() throws Exception {
+ SBApiResponse response = profileService.getGroupList();
+ return new ResponseEntity<>(response, response.getResponseCode());
+ }
}
diff --git a/src/main/java/org/sunbird/profile/service/ProfileService.java b/src/main/java/org/sunbird/profile/service/ProfileService.java
index ef3ba2bdf..605d59035 100644
--- a/src/main/java/org/sunbird/profile/service/ProfileService.java
+++ b/src/main/java/org/sunbird/profile/service/ProfileService.java
@@ -33,4 +33,6 @@ public interface ProfileService {
SBApiResponse getUserReport();
ResponseEntity downloadFile(String fileName);
+
+ SBApiResponse getGroupList();
}
diff --git a/src/main/java/org/sunbird/profile/service/ProfileServiceImpl.java b/src/main/java/org/sunbird/profile/service/ProfileServiceImpl.java
index 23fb20cff..9c211fde9 100644
--- a/src/main/java/org/sunbird/profile/service/ProfileServiceImpl.java
+++ b/src/main/java/org/sunbird/profile/service/ProfileServiceImpl.java
@@ -543,6 +543,9 @@ public SBApiResponse userBasicInfo(String userId) {
Map personalDetail = (Map) profileData
.get(Constants.PERSONAL_DETAILS);
responseMap.put(Constants.EMAIL, personalDetail.get(Constants.PRIMARY_EMAIL));
+ if (personalDetail.containsKey(Constants.MOBILE)) {
+ responseMap.put(Constants.PHONE, String.valueOf(personalDetail.get(Constants.MOBILE)));
+ }
}
responseMap.put(Constants.FIRSTNAME, userData.get(Constants.FIRSTNAME));
@@ -886,7 +889,7 @@ private String validateBasicProfilePayload(Map requestObj) {
errList.add(Constants.REQUEST);
} else {
Map request = (Map) requestObj.get(Constants.REQUEST);
- List keys = Arrays.asList(Constants.USER_ID, Constants.POSITION, Constants.CHANNEL,
+ List keys = Arrays.asList(Constants.USER_ID, Constants.GROUP, Constants.CHANNEL,
Constants.MAP_ID, Constants.ORGANIZATION_TYPE, Constants.ORGANIZATION_SUB_TYPE);
for (String key : keys) {
if (StringUtils.isBlank((String) request.get(key))) {
@@ -1017,7 +1020,7 @@ private String updateUserProfile(Map request) {
};
existingProfile.put(Constants.PROFESSIONAL_DETAILS, professionalDetails);
}
- professionalDetails.get(0).put(Constants.DESIGNATION, request.get(Constants.POSITION));
+ professionalDetails.get(0).put(Constants.GROUP, request.get(Constants.GROUP));
professionalDetails.get(0).put(Constants.ORGANIZATION_TYPE, Constants.GOVERNMENT);
Map empDetails;
@@ -1186,6 +1189,17 @@ private boolean updateUser(Map requestObject) {
Map requestBody = (Map) requestObject.get(Constants.REQUEST);
personalDetails.put(Constants.FIRSTNAME.toLowerCase(), requestBody.get(Constants.FIRSTNAME));
personalDetails.put(Constants.PRIMARY_EMAIL, requestBody.get(Constants.EMAIL));
+ if (requestBody.containsKey(Constants.PHONE)) {
+ String incomingPhoneValue = "";
+ try {
+ incomingPhoneValue = (String) requestBody.get(Constants.PHONE);
+ long mobileNumber = Long.parseLong(incomingPhoneValue);
+ personalDetails.put(Constants.MOBILE, mobileNumber);
+ } catch (NumberFormatException e) {
+ log.error("Failed to parse mobile number from signup request. Received Phone: " + incomingPhoneValue
+ + ", Exception: " + e.getMessage(), e);
+ }
+ }
profileDetails.put(Constants.PERSONAL_DETAILS, personalDetails);
Map professionDetailObj = new HashMap();
@@ -1595,4 +1609,18 @@ public ResponseEntity downloadFile(String fileName) {
}
}
}
+
+ @Override
+ public SBApiResponse getGroupList() {
+ SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.USER_REGISTRATION_GROUP_LIST);
+ List groupList = serverConfig.getBulkUploadGroupValue();
+ if (CollectionUtils.isNotEmpty(groupList)) {
+ response.getResult().put(Constants.COUNT, groupList.size());
+ response.getResult().put(Constants.RESPONSE, groupList);
+ } else {
+ response.setResponseCode(HttpStatus.INTERNAL_SERVER_ERROR);
+ response.getParams().setStatus(Constants.FAILED);
+ }
+ return response;
+ }
}
diff --git a/src/main/java/org/sunbird/profile/service/UserBulkUploadService.java b/src/main/java/org/sunbird/profile/service/UserBulkUploadService.java
index 93d385e02..94812ff88 100644
--- a/src/main/java/org/sunbird/profile/service/UserBulkUploadService.java
+++ b/src/main/java/org/sunbird/profile/service/UserBulkUploadService.java
@@ -188,7 +188,10 @@ private void processBulkUpload(HashMap inputDataMap) throws IOEx
String tagStr = nextRow.getCell(4).getStringCellValue().trim();
List tagList = new ArrayList();
if (!StringUtils.isEmpty(tagStr)) {
- tagList = Arrays.asList(tagStr.split(",", -1));
+ String[] tagStrList = tagStr.split(",", -1);
+ for(String tag : tagStrList) {
+ tagList.add(tag.trim());
+ }
}
userRegistration.setTag(tagList);
if (!ProjectUtil.validateTag(userRegistration.getTag())) {
diff --git a/src/main/java/org/sunbird/ratings/controller/RatingsController.java b/src/main/java/org/sunbird/ratings/controller/RatingsController.java
index 7d04ccf60..05c47aacf 100644
--- a/src/main/java/org/sunbird/ratings/controller/RatingsController.java
+++ b/src/main/java/org/sunbird/ratings/controller/RatingsController.java
@@ -1,15 +1,21 @@
package org.sunbird.ratings.controller;
+import java.util.Map;
+
+import javax.validation.Valid;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
import org.sunbird.common.model.SBApiResponse;
import org.sunbird.ratings.model.LookupRequest;
import org.sunbird.ratings.model.RequestRating;
import org.sunbird.ratings.service.RatingService;
-import javax.validation.Valid;
-
@RestController
public class RatingsController {
@@ -22,7 +28,6 @@ public class RatingsController {
public ResponseEntity> upsertRating(@Valid @RequestBody RequestRating requestRatingBody) {
SBApiResponse response = ratingService.upsertRating(requestRatingBody);
return new ResponseEntity<>(response, response.getResponseCode());
-
}
@GetMapping("/ratings/v1/read/{activityId}/{activityType}/{userId}")
@@ -31,7 +36,6 @@ public ResponseEntity> getRating(@PathVariable("activityId") String activityId
@PathVariable("userId") String userId) {
SBApiResponse response = ratingService.getRatings(activityId, activityType, userId);
return new ResponseEntity<>(response, response.getResponseCode());
-
}
@GetMapping("/ratings/v1/summary/{activityId}/{activityType}")
@@ -46,5 +50,11 @@ public ResponseEntity> ratingLookUp(@RequestBody LookupRequest request) {
SBApiResponse response = ratingService.ratingLookUp(request);
return new ResponseEntity<>(response, response.getResponseCode());
}
+
+ @PostMapping("/ratings/v2/read")
+ public ResponseEntity> readRating(@RequestBody Map request) {
+ SBApiResponse response = ratingService.readRatings(request);
+ return new ResponseEntity<>(response, response.getResponseCode());
+ }
}
diff --git a/src/main/java/org/sunbird/ratings/model/LookupDataModel.java b/src/main/java/org/sunbird/ratings/model/LookupDataModel.java
index 9e4214e3c..5d39539b5 100644
--- a/src/main/java/org/sunbird/ratings/model/LookupDataModel.java
+++ b/src/main/java/org/sunbird/ratings/model/LookupDataModel.java
@@ -3,32 +3,32 @@
import java.util.UUID;
public class LookupDataModel {
- private String activityid;
+ private String activityId;
private String review;
private Float rating;
- private String updatedon;
- private String activitytype;
+ private String updatedOn;
+ private String activityType;
private String userId;
public LookupDataModel() {
}
- public LookupDataModel(String activityid, String review, Float rating, UUID updatedon, String activitytype, String userId) {
- this.activityid = activityid;
+ public LookupDataModel(String activityId, String review, Float rating, UUID updatedOn, String activityType, String userId) {
+ this.activityId = activityId;
this.review = review;
this.rating = rating;
- this.updatedon = updatedon.toString();
- this.activitytype = activitytype;
+ this.updatedOn = updatedOn.toString();
+ this.activityType = activityType;
this.userId = userId;
}
- public String getActivityid() {
- return activityid;
+ public String getActivityId() {
+ return activityId;
}
- public void setActivityid(String activityid) {
- this.activityid = activityid;
+ public void setActivityId(String activityId) {
+ this.activityId = activityId;
}
public String getReview() {
@@ -48,20 +48,20 @@ public void setRating(Float rating) {
}
- public String getUpdatedon() {
- return updatedon;
+ public String getUpdatedOn() {
+ return updatedOn;
}
- public void setUpdatedon(UUID updatedon) {
- this.updatedon = updatedon.toString();
+ public void setUpdatedon(UUID updatedOn) {
+ this.updatedOn = updatedOn.toString();
}
- public String getActivitytype() {
- return activitytype;
+ public String getActivityType() {
+ return activityType;
}
- public void setActivitytype(String activitytype) {
- this.activitytype = activitytype;
+ public void setActivitytype(String activityType) {
+ this.activityType = activityType;
}
public String getUserId() {
@@ -75,11 +75,11 @@ public void setUserId(String userId) {
@Override
public String toString() {
return "LookupDataModel{" +
- "activityid='" + activityid + '\'' +
+ "activityId='" + activityId + '\'' +
", review='" + review + '\'' +
", rating=" + rating +
- ", updatedon='" + updatedon + '\'' +
- ", activitytype='" + activitytype + '\'' +
+ ", updatedOn='" + updatedOn + '\'' +
+ ", activityType='" + activityType + '\'' +
", userId='" + userId + '\'' +
'}';
}
diff --git a/src/main/java/org/sunbird/ratings/service/RatingService.java b/src/main/java/org/sunbird/ratings/service/RatingService.java
index c2bfe5ad6..cdbabfa9e 100644
--- a/src/main/java/org/sunbird/ratings/service/RatingService.java
+++ b/src/main/java/org/sunbird/ratings/service/RatingService.java
@@ -1,5 +1,7 @@
package org.sunbird.ratings.service;
+import java.util.Map;
+
import org.sunbird.common.model.SBApiResponse;
import org.sunbird.ratings.model.LookupRequest;
import org.sunbird.ratings.model.RequestRating;
@@ -12,4 +14,6 @@ public interface RatingService {
public SBApiResponse getRatingSummary(String activityId, String activityType);
public SBApiResponse ratingLookUp(LookupRequest request);
+
+ public SBApiResponse readRatings(Map request);
}
diff --git a/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java b/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java
index 235baa9de..c697773f2 100644
--- a/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java
+++ b/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java
@@ -10,9 +10,11 @@
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
import org.sunbird.cassandra.utils.CassandraOperation;
import org.sunbird.common.model.SBApiResponse;
import org.sunbird.common.util.Constants;
+import org.sunbird.common.util.ProjectUtil;
import org.sunbird.core.logger.CbExtLogger;
import org.sunbird.core.producer.Producer;
import org.sunbird.ratings.exception.ValidationException;
@@ -57,29 +59,29 @@ public SBApiResponse getRatings(String activityId, String activityType, String u
request.put(Constants.ACTIVITY_ID, activityId);
request.put(Constants.ACTIVITY_TYPE, activityType);
request.put(Constants.RATINGS_USER_ID, userId);
- List