From 48fb27b3635b31f7b918a03776d553b659c23b85 Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Fri, 6 Jan 2023 15:47:13 +0530 Subject: [PATCH 1/8] Changed endpoint and database table name --- src/main/java/org/sunbird/common/util/Constants.java | 2 +- .../sunbird/passbook/controller/PassbookController.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 31491076d..6381c286a 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -465,7 +465,7 @@ public class Constants { public static final String PASSBOOK_READ_API = "user.passbook.read"; public static final String PASSBOOK_ADMIN_READ_API = "user.passbook.admin.read"; public static final String PASSBOOK_ADD_API = "user.passbook.add"; - public static final String USER_PASSBOOK_TABLE = "user_passbook"; + public static final String USER_PASSBOOK_TABLE = "user_passbook_v2"; public static final String TYPE_NAME = "typeName"; public static final String TYPE_ID = "typeId"; public static final String ADDITIONAL_PARAM = "additionalParams"; diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index b36ce5829..e49eb54a2 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -30,7 +30,12 @@ public ResponseEntity updatePassbook(@RequestHeader(Constants.X_A SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); return new ResponseEntity<>(response, response.getResponseCode()); } - + @PatchMapping("/user/v2/passbook") + public ResponseEntity updatePassbookv2(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, + @RequestBody Map request) { + SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); + return new ResponseEntity<>(response, response.getResponseCode()); + } @PostMapping("/user/v1/passbook") public ResponseEntity getUserPassbook( @RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, @RequestBody Map request) From f2c260254b2dfc54961292b32d0b232ffa5b8bbe Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Wed, 11 Jan 2023 10:53:47 +0530 Subject: [PATCH 2/8] Changed endpoint and database table name --- .../org/sunbird/common/util/ProjectUtil.java | 35 ++++++++++++++++--- .../controller/PassbookController.java | 7 ++-- .../parser/CompetencyPassbookParser.java | 11 +++--- .../passbook/service/PassbookService.java | 2 ++ .../passbook/service/PassbookServiceImpl.java | 5 +++ 5 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/ProjectUtil.java b/src/main/java/org/sunbird/common/util/ProjectUtil.java index c195e8865..76df2ffef 100644 --- a/src/main/java/org/sunbird/common/util/ProjectUtil.java +++ b/src/main/java/org/sunbird/common/util/ProjectUtil.java @@ -1,12 +1,10 @@ package org.sunbird.common.util; import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.UUID; +import java.util.*; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; @@ -21,6 +19,8 @@ import com.datastax.driver.core.utils.UUIDs; import com.fasterxml.jackson.databind.ObjectMapper; +import static java.lang.Long.parseLong; + /** * This class will contains all the common utility methods. * @@ -110,4 +110,29 @@ public static UUID getUUIDFromTimeStamp(String time) { } return null; } + public static long getEpochTime(String time){ + SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz"); + Date date = null; + try { + date = df.parse(time); + } catch (ParseException e) { + throw new RuntimeException(e); + } + long epoch = date.getTime(); + return epoch; + } + + public static String getInstantTime(){ + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + Date date = new Date(); + return formatter.format(date); + } + + public static String getTimestampFromEpoch(String epochDate){ + Date date = new Date(parseLong(epochDate) * 1000L); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + format.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); + String formatted = format.format(date); + return formatted; + } } \ No newline at end of file diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index e49eb54a2..2433901a1 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -30,10 +30,9 @@ public ResponseEntity updatePassbook(@RequestHeader(Constants.X_A SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); return new ResponseEntity<>(response, response.getResponseCode()); } - @PatchMapping("/user/v2/passbook") - public ResponseEntity updatePassbookv2(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, - @RequestBody Map request) { - SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); + @PatchMapping("/user/v1/migrateData") + public ResponseEntity migrateData() { + SBApiResponse response = passbookService.migrateData(); return new ResponseEntity<>(response, response.getResponseCode()); } @PostMapping("/user/v1/passbook") diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index 7d8a78fe1..ba62f8e8d 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -66,7 +66,7 @@ public void parseDBInfo(List> passbookList, SBApiResponse re acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); acquiredDetail.put(Constants.EFFECTIVE_DATE, - ProjectUtil.getTimestampFromUUID((UUID) competencyObj.get(Constants.EFFECTIVE_DATE))); + ProjectUtil.getTimestampFromEpoch((Constants.EFFECTIVE_DATE))); acquiredDetail.put(Constants.ADDITIONAL_PARAM, (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); Map acquiredDetailAdditionalParam = (Map) competencyObj @@ -209,15 +209,16 @@ private String validateCompetencyObject(String requestedUserId, String compUserI } String effectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); + if (StringUtils.isBlank(effectiveDate)) { - competency.put(Constants.EFFECTIVE_DATE, UUIDs.timeBased()); + competency.put(Constants.EFFECTIVE_DATE, ProjectUtil.getInstantTime()); // missingAttributes.add(Constants.EFFECTIVE_DATE); } else { - UUID effectiveDateUUID = ProjectUtil.getUUIDFromTimeStamp(effectiveDate); - if (effectiveDateUUID == null) { + String effectiveDate1 = String.valueOf(ProjectUtil.getEpochTime(effectiveDate)); + if (effectiveDate1 == null) { errList.add("Invalid effectiveDate format."); } else { - competency.put(Constants.EFFECTIVE_DATE, ProjectUtil.getUUIDFromTimeStamp(effectiveDate)); + competency.put(Constants.EFFECTIVE_DATE, effectiveDate1); } } } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookService.java b/src/main/java/org/sunbird/passbook/service/PassbookService.java index a514fff25..a06f8c3b9 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookService.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookService.java @@ -16,4 +16,6 @@ public interface PassbookService { public SBApiResponse getPassbookByAdmin(String requestedId, Map request); public SBApiResponse updatePassbook(String requestedUserId, Map request); + + public SBApiResponse migrateData(); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index 75594802a..8f559d45a 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -209,4 +209,9 @@ private String validateUpdateRequest(Map request) { private PassbookParser getPassbookParser(String typeName) { return parserHanlder.getPassbookParser(typeName); } + + public SBApiResponse migrateData(){ + SBApiResponse response = null; + return response; + } } From 4b3939e80a59a03e0a7aeae0edb0c24950b9f96f Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Thu, 12 Jan 2023 12:23:47 +0530 Subject: [PATCH 3/8] Changed endpoint and database table name Added code for Migrate data Changed effectiveDate read and write datapoint --- .../java/org/sunbird/common/util/Constants.java | 2 ++ .../org/sunbird/common/util/ProjectUtil.java | 4 ++-- .../passbook/controller/PassbookController.java | 5 ++--- .../parser/CompetencyPassbookParser.java | 16 ++++++---------- .../passbook/service/PassbookService.java | 2 +- .../passbook/service/PassbookServiceImpl.java | 7 ++++--- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 6381c286a..7e9d3c979 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -466,6 +466,8 @@ public class Constants { public static final String PASSBOOK_ADMIN_READ_API = "user.passbook.admin.read"; public static final String PASSBOOK_ADD_API = "user.passbook.add"; public static final String USER_PASSBOOK_TABLE = "user_passbook_v2"; + + public static final String USER_PASSBOOK_TABLE_OLD = "user_passbook"; public static final String TYPE_NAME = "typeName"; public static final String TYPE_ID = "typeId"; public static final String ADDITIONAL_PARAM = "additionalParams"; diff --git a/src/main/java/org/sunbird/common/util/ProjectUtil.java b/src/main/java/org/sunbird/common/util/ProjectUtil.java index 76df2ffef..5dbb5a4fa 100644 --- a/src/main/java/org/sunbird/common/util/ProjectUtil.java +++ b/src/main/java/org/sunbird/common/util/ProjectUtil.java @@ -122,10 +122,10 @@ public static long getEpochTime(String time){ return epoch; } - public static String getInstantTime(){ + public static Timestamp getInstantTime(){ SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); Date date = new Date(); - return formatter.format(date); + return Timestamp.valueOf(formatter.format(date)); } public static String getTimestampFromEpoch(String epochDate){ diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index 2433901a1..d293abf3c 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -31,9 +31,8 @@ public ResponseEntity updatePassbook(@RequestHeader(Constants.X_A return new ResponseEntity<>(response, response.getResponseCode()); } @PatchMapping("/user/v1/migrateData") - public ResponseEntity migrateData() { - SBApiResponse response = passbookService.migrateData(); - return new ResponseEntity<>(response, response.getResponseCode()); + public void migrateData() { + passbookService.migrateData(); } @PostMapping("/user/v1/passbook") public ResponseEntity getUserPassbook( diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index ba62f8e8d..25e49d7d2 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -1,12 +1,8 @@ package org.sunbird.passbook.parser; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.sql.Timestamp; +import java.util.*; import java.util.Map.Entry; -import java.util.UUID; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -208,13 +204,13 @@ private String validateCompetencyObject(String requestedUserId, String compUserI competency.put(Constants.CONTEXT_ID, competencyLevelId); } - String effectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); + Date effectiveDate = (Date)acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); - if (StringUtils.isBlank(effectiveDate)) { - competency.put(Constants.EFFECTIVE_DATE, ProjectUtil.getInstantTime()); + if (StringUtils.isBlank(String.valueOf(effectiveDate))) { + competency.put(Constants.EFFECTIVE_DATE, new Timestamp(System.currentTimeMillis())); // missingAttributes.add(Constants.EFFECTIVE_DATE); } else { - String effectiveDate1 = String.valueOf(ProjectUtil.getEpochTime(effectiveDate)); + Timestamp effectiveDate1 = new Timestamp(effectiveDate.getTime()); if (effectiveDate1 == null) { errList.add("Invalid effectiveDate format."); } else { diff --git a/src/main/java/org/sunbird/passbook/service/PassbookService.java b/src/main/java/org/sunbird/passbook/service/PassbookService.java index a06f8c3b9..22c67d77e 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookService.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookService.java @@ -17,5 +17,5 @@ public interface PassbookService { public SBApiResponse updatePassbook(String requestedUserId, Map request); - public SBApiResponse migrateData(); + public void migrateData(); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index 8f559d45a..3983ba68b 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -210,8 +210,9 @@ private PassbookParser getPassbookParser(String typeName) { return parserHanlder.getPassbookParser(typeName); } - public SBApiResponse migrateData(){ - SBApiResponse response = null; - return response; + public void migrateData(){ + List> passbookList = cassandraOperation.getRecordsByProperties(Constants.DATABASE, + Constants.USER_PASSBOOK_TABLE_OLD, null, null); + cassandraOperation.insertBulkRecord(Constants.DATABASE,Constants.USER_PASSBOOK_TABLE,passbookList); } } From e38b503a0feae16eaf4e5968b0b26b19e7359902 Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Fri, 13 Jan 2023 12:57:51 +0530 Subject: [PATCH 4/8] Changed endpoint and database table name Added code for Migrate data Changed effectiveDate read and write datapoint Changes in Constant values Commented unused methods --- .../org/sunbird/common/util/ProjectUtil.java | 4 +- .../passbook/model/PassbookDBInfo.java | 7 ++- .../parser/CompetencyPassbookParser.java | 59 ++++++++++++++++++- .../passbook/parser/PassbookParser.java | 2 + .../passbook/service/PassbookServiceImpl.java | 6 ++ 5 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/ProjectUtil.java b/src/main/java/org/sunbird/common/util/ProjectUtil.java index 5dbb5a4fa..8eb0f70c5 100644 --- a/src/main/java/org/sunbird/common/util/ProjectUtil.java +++ b/src/main/java/org/sunbird/common/util/ProjectUtil.java @@ -122,7 +122,7 @@ public static long getEpochTime(String time){ return epoch; } - public static Timestamp getInstantTime(){ + /*public static Timestamp getInstantTime(){ SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); Date date = new Date(); return Timestamp.valueOf(formatter.format(date)); @@ -134,5 +134,5 @@ public static String getTimestampFromEpoch(String epochDate){ format.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); String formatted = format.format(date); return formatted; - } + }*/ } \ No newline at end of file diff --git a/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java b/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java index 615a0a29e..f7727c30c 100644 --- a/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java +++ b/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java @@ -1,5 +1,6 @@ package org.sunbird.passbook.model; +import java.sql.Timestamp; import java.util.Map; public class PassbookDBInfo { @@ -8,7 +9,7 @@ public class PassbookDBInfo { private String acquiredChannel; private String typeId; private String contextId; - private String effectiveDate; + private Timestamp effectiveDate; private Map additionalParams; private Map acquiredDetails; @@ -52,11 +53,11 @@ public void setContextId(String contextId) { this.contextId = contextId; } - public String getEffectiveDate() { + public Timestamp getEffectiveDate() { return effectiveDate; } - public void setEffectiveDate(String effectiveDate) { + public void setEffectiveDate(Timestamp effectiveDate) { this.effectiveDate = effectiveDate; } diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index 25e49d7d2..3b0833a74 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -61,8 +61,7 @@ public void parseDBInfo(List> passbookList, SBApiResponse re Map acquiredDetail = new HashMap(); acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); - acquiredDetail.put(Constants.EFFECTIVE_DATE, - ProjectUtil.getTimestampFromEpoch((Constants.EFFECTIVE_DATE))); + acquiredDetail.put(Constants.EFFECTIVE_DATE, (Timestamp)competencyObj.get(Constants.EFFECTIVE_DATE)); acquiredDetail.put(Constants.ADDITIONAL_PARAM, (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); Map acquiredDetailAdditionalParam = (Map) competencyObj @@ -204,7 +203,7 @@ private String validateCompetencyObject(String requestedUserId, String compUserI competency.put(Constants.CONTEXT_ID, competencyLevelId); } - Date effectiveDate = (Date)acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); + Timestamp effectiveDate = (Timestamp) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); if (StringUtils.isBlank(String.valueOf(effectiveDate))) { competency.put(Constants.EFFECTIVE_DATE, new Timestamp(System.currentTimeMillis())); @@ -239,4 +238,58 @@ private String validateCompetencyObject(String requestedUserId, String compUserI return errMsg.toString(); } + public void parseDBInfoOld(List> passbookList, SBApiResponse response) { + if (CollectionUtils.isEmpty(passbookList)) { + response.getResult().put(Constants.COUNT, 0); + response.getResult().put(Constants.CONTENT, CollectionUtils.EMPTY_COLLECTION); + return; + } + + Map competencyMap = new HashMap(); + // Parse the read values from DB and add it into response.result object + for (Map competencyObj : passbookList) { + String userId = (String) competencyObj.get(Constants.USER_ID); + CompetencyPassbookInfo competencyPassbookInfo = null; + if (competencyMap.containsKey(userId)) { + competencyPassbookInfo = competencyMap.get(userId); + } else { + competencyPassbookInfo = new CompetencyPassbookInfo(userId); + competencyMap.put(userId, competencyPassbookInfo); + } + String competencyId = (String) competencyObj.get(Constants.TYPE_ID); + CompetencyInfo competencyInfo = competencyPassbookInfo.getCompetencies().get(competencyId); + if (competencyInfo == null) { + competencyInfo = new CompetencyInfo(competencyId); + } + + if (ObjectUtils.isEmpty(competencyInfo.getAdditionalParams())) { + competencyInfo.setAdditionalParams((Map) competencyObj.get(Constants.ADDITIONAL_PARAM)); + } + Map acquiredDetail = new HashMap(); + acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); + acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); + acquiredDetail.put(Constants.EFFECTIVE_DATE, + ProjectUtil.getTimestampFromUUID((UUID) competencyObj.get(Constants.EFFECTIVE_DATE))); + acquiredDetail.put(Constants.ADDITIONAL_PARAM, + (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); + Map acquiredDetailAdditionalParam = (Map) competencyObj + .get(Constants.ACQUIRED_DETAILS); + + Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (entry.getValue() instanceof String) { + acquiredDetail.put(entry.getKey(), (String) entry.getValue()); + } else { + // TODO - We need JSON schema config to determine the type of value. + } + } + + competencyInfo.getAcquiredDetails().add(acquiredDetail); + competencyPassbookInfo.getCompetencies().put(competencyId, competencyInfo); + } + response.getResult().put(Constants.COUNT, competencyMap.size()); + response.getResult().put(Constants.CONTENT, competencyMap.values()); + } + } diff --git a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java index f34d52f50..68215ab5d 100644 --- a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java @@ -8,6 +8,8 @@ public interface PassbookParser { public void parseDBInfo(List> passbookList, SBApiResponse response); + public void parseDBInfoOld(List> passbookList, SBApiResponse response); + public String validateUpdateReqeust(Map request, String requestedUserId, List> dbModel); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index 3983ba68b..f824b6ecc 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -19,6 +19,7 @@ import org.sunbird.common.util.CbExtServerProperties; import org.sunbird.common.util.Constants; import org.sunbird.common.util.ProjectUtil; +import org.sunbird.passbook.parser.CompetencyPassbookParser; import org.sunbird.passbook.parser.PassbookParser; import org.sunbird.passbook.parser.PassbookParserHandler; @@ -36,6 +37,9 @@ public class PassbookServiceImpl implements PassbookService { @Autowired PassbookParserHandler parserHanlder; + @Autowired + PassbookParser parser; + @Override public SBApiResponse getPassbook(String requestedUserId, Map request) { return getPassbookDetails(requestedUserId, request, false); @@ -213,6 +217,8 @@ private PassbookParser getPassbookParser(String typeName) { public void migrateData(){ List> passbookList = cassandraOperation.getRecordsByProperties(Constants.DATABASE, Constants.USER_PASSBOOK_TABLE_OLD, null, null); + SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.PASSBOOK_READ_API); + parser.parseDBInfoOld(passbookList,response); cassandraOperation.insertBulkRecord(Constants.DATABASE,Constants.USER_PASSBOOK_TABLE,passbookList); } } From 00cd939da9245510b4fbe60e8f0b5496f24645f7 Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Mon, 16 Jan 2023 17:20:10 +0530 Subject: [PATCH 5/8] Migrate data code change tested locally working fine --- .../controller/PassbookController.java | 2 +- .../parser/CompetencyPassbookParser.java | 55 ------------------- .../passbook/parser/PassbookParser.java | 2 - .../passbook/service/PassbookServiceImpl.java | 15 ++--- 4 files changed, 9 insertions(+), 65 deletions(-) diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index d293abf3c..8fbf0e1c6 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -30,7 +30,7 @@ public ResponseEntity updatePassbook(@RequestHeader(Constants.X_A SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); return new ResponseEntity<>(response, response.getResponseCode()); } - @PatchMapping("/user/v1/migrateData") + @PostMapping("/user/v1/migrateData") public void migrateData() { passbookService.migrateData(); } diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index 3b0833a74..e25b4a14f 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -18,7 +18,6 @@ import org.sunbird.passbook.competency.model.CompetencyPassbookInfo; import org.sunbird.passbook.model.PassbookDBInfo; -import com.datastax.driver.core.utils.UUIDs; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -238,58 +237,4 @@ private String validateCompetencyObject(String requestedUserId, String compUserI return errMsg.toString(); } - public void parseDBInfoOld(List> passbookList, SBApiResponse response) { - if (CollectionUtils.isEmpty(passbookList)) { - response.getResult().put(Constants.COUNT, 0); - response.getResult().put(Constants.CONTENT, CollectionUtils.EMPTY_COLLECTION); - return; - } - - Map competencyMap = new HashMap(); - // Parse the read values from DB and add it into response.result object - for (Map competencyObj : passbookList) { - String userId = (String) competencyObj.get(Constants.USER_ID); - CompetencyPassbookInfo competencyPassbookInfo = null; - if (competencyMap.containsKey(userId)) { - competencyPassbookInfo = competencyMap.get(userId); - } else { - competencyPassbookInfo = new CompetencyPassbookInfo(userId); - competencyMap.put(userId, competencyPassbookInfo); - } - String competencyId = (String) competencyObj.get(Constants.TYPE_ID); - CompetencyInfo competencyInfo = competencyPassbookInfo.getCompetencies().get(competencyId); - if (competencyInfo == null) { - competencyInfo = new CompetencyInfo(competencyId); - } - - if (ObjectUtils.isEmpty(competencyInfo.getAdditionalParams())) { - competencyInfo.setAdditionalParams((Map) competencyObj.get(Constants.ADDITIONAL_PARAM)); - } - Map acquiredDetail = new HashMap(); - acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); - acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); - acquiredDetail.put(Constants.EFFECTIVE_DATE, - ProjectUtil.getTimestampFromUUID((UUID) competencyObj.get(Constants.EFFECTIVE_DATE))); - acquiredDetail.put(Constants.ADDITIONAL_PARAM, - (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); - Map acquiredDetailAdditionalParam = (Map) competencyObj - .get(Constants.ACQUIRED_DETAILS); - - Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); - while (iterator.hasNext()) { - Entry entry = iterator.next(); - if (entry.getValue() instanceof String) { - acquiredDetail.put(entry.getKey(), (String) entry.getValue()); - } else { - // TODO - We need JSON schema config to determine the type of value. - } - } - - competencyInfo.getAcquiredDetails().add(acquiredDetail); - competencyPassbookInfo.getCompetencies().put(competencyId, competencyInfo); - } - response.getResult().put(Constants.COUNT, competencyMap.size()); - response.getResult().put(Constants.CONTENT, competencyMap.values()); - } - } diff --git a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java index 68215ab5d..f34d52f50 100644 --- a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java @@ -8,8 +8,6 @@ public interface PassbookParser { public void parseDBInfo(List> passbookList, SBApiResponse response); - public void parseDBInfoOld(List> passbookList, SBApiResponse response); - public String validateUpdateReqeust(Map request, String requestedUserId, List> dbModel); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index f824b6ecc..e64c74edf 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -1,10 +1,7 @@ package org.sunbird.passbook.service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.sql.Timestamp; +import java.util.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -217,8 +214,12 @@ private PassbookParser getPassbookParser(String typeName) { public void migrateData(){ List> passbookList = cassandraOperation.getRecordsByProperties(Constants.DATABASE, Constants.USER_PASSBOOK_TABLE_OLD, null, null); + passbookList.forEach(item -> item.forEach((k, v) -> System.out.println(k + ": " + v))); SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.PASSBOOK_READ_API); - parser.parseDBInfoOld(passbookList,response); - cassandraOperation.insertBulkRecord(Constants.DATABASE,Constants.USER_PASSBOOK_TABLE,passbookList); + for (Map requestMap : passbookList){ + Timestamp time = ProjectUtil.getTimestampFromUUID((UUID) requestMap.get(Constants.EFFECTIVE_DATE)); + requestMap.put(Constants.EFFECTIVE_DATE,time); + cassandraOperation.insertRecord(Constants.KEYSPACE_SUNBIRD,Constants.USER_PASSBOOK_TABLE,requestMap); + } } } From c224bbecf9e9700455ba19610e4aaf007f8340ac Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Tue, 17 Jan 2023 13:29:12 +0530 Subject: [PATCH 6/8] Migration, Adding and reading passbook working code --- .../org/sunbird/common/util/ProjectUtil.java | 25 ------------------- .../parser/CompetencyPassbookParser.java | 11 ++++---- 2 files changed, 5 insertions(+), 31 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/ProjectUtil.java b/src/main/java/org/sunbird/common/util/ProjectUtil.java index 8eb0f70c5..056dd5ad9 100644 --- a/src/main/java/org/sunbird/common/util/ProjectUtil.java +++ b/src/main/java/org/sunbird/common/util/ProjectUtil.java @@ -110,29 +110,4 @@ public static UUID getUUIDFromTimeStamp(String time) { } return null; } - public static long getEpochTime(String time){ - SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz"); - Date date = null; - try { - date = df.parse(time); - } catch (ParseException e) { - throw new RuntimeException(e); - } - long epoch = date.getTime(); - return epoch; - } - - /*public static Timestamp getInstantTime(){ - SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - Date date = new Date(); - return Timestamp.valueOf(formatter.format(date)); - } - - public static String getTimestampFromEpoch(String epochDate){ - Date date = new Date(parseLong(epochDate) * 1000L); - DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - format.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); - String formatted = format.format(date); - return formatted; - }*/ } \ No newline at end of file diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index e25b4a14f..60691f606 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -1,6 +1,7 @@ package org.sunbird.passbook.parser; import java.sql.Timestamp; +import java.time.Instant; import java.util.*; import java.util.Map.Entry; @@ -60,7 +61,7 @@ public void parseDBInfo(List> passbookList, SBApiResponse re Map acquiredDetail = new HashMap(); acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); - acquiredDetail.put(Constants.EFFECTIVE_DATE, (Timestamp)competencyObj.get(Constants.EFFECTIVE_DATE)); + acquiredDetail.put(Constants.EFFECTIVE_DATE, competencyObj.get(Constants.EFFECTIVE_DATE)); acquiredDetail.put(Constants.ADDITIONAL_PARAM, (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); Map acquiredDetailAdditionalParam = (Map) competencyObj @@ -201,14 +202,12 @@ private String validateCompetencyObject(String requestedUserId, String compUserI } else { competency.put(Constants.CONTEXT_ID, competencyLevelId); } - - Timestamp effectiveDate = (Timestamp) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); - + String effectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); if (StringUtils.isBlank(String.valueOf(effectiveDate))) { - competency.put(Constants.EFFECTIVE_DATE, new Timestamp(System.currentTimeMillis())); + competency.put(Constants.EFFECTIVE_DATE, Instant.now()); // missingAttributes.add(Constants.EFFECTIVE_DATE); } else { - Timestamp effectiveDate1 = new Timestamp(effectiveDate.getTime()); + Timestamp effectiveDate1 = Timestamp.valueOf(effectiveDate); if (effectiveDate1 == null) { errList.add("Invalid effectiveDate format."); } else { From 3206f66e7b2740c267c6f36405ae8df104ee0e13 Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Thu, 19 Jan 2023 14:46:55 +0530 Subject: [PATCH 7/8] Code optimization for passbook API after review comments --- .../java/org/sunbird/common/util/Constants.java | 3 ++- .../passbook/controller/PassbookController.java | 5 +++-- .../passbook/parser/CompetencyPassbookParser.java | 10 +++++----- .../sunbird/passbook/service/PassbookService.java | 2 +- .../passbook/service/PassbookServiceImpl.java | 14 +++++++++----- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 7e9d3c979..0208bde29 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -479,8 +479,9 @@ public class Constants { public static final String COMPETENCY_DETAILS = "competencyDetails"; public static final String COMPETENCY_ID = "competencyId"; public static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L; + public static String PASSBOOK_MIGRATE_API = "user.passbook.migrate"; - private Constants() { + private Constants() { throw new IllegalStateException("Utility class"); } diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index 8fbf0e1c6..6421c330f 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -31,8 +31,9 @@ public ResponseEntity updatePassbook(@RequestHeader(Constants.X_A return new ResponseEntity<>(response, response.getResponseCode()); } @PostMapping("/user/v1/migrateData") - public void migrateData() { - passbookService.migrateData(); + public ResponseEntity migrateData() { + SBApiResponse response = passbookService.migrateData(); + return new ResponseEntity<>(response, response.getResponseCode()); } @PostMapping("/user/v1/passbook") public ResponseEntity getUserPassbook( diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index 60691f606..2e5d6cefd 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -202,16 +202,16 @@ private String validateCompetencyObject(String requestedUserId, String compUserI } else { competency.put(Constants.CONTEXT_ID, competencyLevelId); } - String effectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); - if (StringUtils.isBlank(String.valueOf(effectiveDate))) { + String strEffectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); + if (StringUtils.isBlank(strEffectiveDate)) { competency.put(Constants.EFFECTIVE_DATE, Instant.now()); // missingAttributes.add(Constants.EFFECTIVE_DATE); } else { - Timestamp effectiveDate1 = Timestamp.valueOf(effectiveDate); - if (effectiveDate1 == null) { + Timestamp effectiveDate = Timestamp.valueOf(strEffectiveDate); + if (effectiveDate == null) { errList.add("Invalid effectiveDate format."); } else { - competency.put(Constants.EFFECTIVE_DATE, effectiveDate1); + competency.put(Constants.EFFECTIVE_DATE, effectiveDate); } } } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookService.java b/src/main/java/org/sunbird/passbook/service/PassbookService.java index 22c67d77e..a06f8c3b9 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookService.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookService.java @@ -17,5 +17,5 @@ public interface PassbookService { public SBApiResponse updatePassbook(String requestedUserId, Map request); - public void migrateData(); + public SBApiResponse migrateData(); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index e64c74edf..c4945d1c2 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -16,7 +16,6 @@ import org.sunbird.common.util.CbExtServerProperties; import org.sunbird.common.util.Constants; import org.sunbird.common.util.ProjectUtil; -import org.sunbird.passbook.parser.CompetencyPassbookParser; import org.sunbird.passbook.parser.PassbookParser; import org.sunbird.passbook.parser.PassbookParserHandler; @@ -211,15 +210,20 @@ private PassbookParser getPassbookParser(String typeName) { return parserHanlder.getPassbookParser(typeName); } - public void migrateData(){ + public SBApiResponse migrateData(){ List> passbookList = cassandraOperation.getRecordsByProperties(Constants.DATABASE, Constants.USER_PASSBOOK_TABLE_OLD, null, null); - passbookList.forEach(item -> item.forEach((k, v) -> System.out.println(k + ": " + v))); - SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.PASSBOOK_READ_API); + SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.PASSBOOK_MIGRATE_API); + if(passbookList.size()==0){ + response.getParams().setStatus(Constants.FAILED); + response.getParams().setErrmsg("No data available to migrate"); + response.setResponseCode(HttpStatus.BAD_REQUEST); + } for (Map requestMap : passbookList){ Timestamp time = ProjectUtil.getTimestampFromUUID((UUID) requestMap.get(Constants.EFFECTIVE_DATE)); requestMap.put(Constants.EFFECTIVE_DATE,time); cassandraOperation.insertRecord(Constants.KEYSPACE_SUNBIRD,Constants.USER_PASSBOOK_TABLE,requestMap); } + return response; } -} +} \ No newline at end of file From 92eddbe4c506da05b46d95f8e4d3ee984cb391c8 Mon Sep 17 00:00:00 2001 From: ti-lap-563 Date: Fri, 20 Jan 2023 10:34:44 +0530 Subject: [PATCH 8/8] Code formatting --- .../org/sunbird/common/util/Constants.java | 934 +++++++++--------- .../competency/model/CompetencyInfo.java | 48 +- .../model/CompetencyPassbookInfo.java | 48 +- .../controller/PassbookController.java | 57 +- .../passbook/model/CompetencyPassbook.java | 45 +- .../passbook/model/PassbookDBInfo.java | 144 +-- .../parser/CompetencyPassbookParser.java | 415 ++++---- .../passbook/parser/PassbookParser.java | 6 +- .../parser/PassbookParserHandler.java | 20 +- .../passbook/service/PassbookService.java | 13 +- .../passbook/service/PassbookServiceImpl.java | 17 +- 11 files changed, 879 insertions(+), 868 deletions(-) diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 0208bde29..ef5f3124a 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -5,484 +5,484 @@ import java.util.List; public class Constants { - public static final String UUID = "wid"; - public static final String KID = "kid"; - public static final String SOURCE_ID = "source_id"; - public static final String FIRST_NAME = "first_name"; - public static final String LAST_NAME = "last_name"; - public static final String MIDDLE_NAME = "middle_name"; - public static final String FIRSTNAME = "firstName"; - public static final String SURNAME = "surname"; - public static final String LASTNAME = "lastName"; - public static final String CONTACT_PHONE_NUMBER_OFFICE = "contact_phone_number_office"; - public static final String CONTACT_PHONE_NUMBER_HOME = "contact_phone_number_home"; - public static final String CONTACT_PHONE_NUMBER_PERSONAL = "contact_phone_number_personal"; - public static final String KNOWN_AS = "known_as"; - public static final String GENDER = "gender"; - public static final String DOB = "dob"; - public static final String SALUTATION = "salutation"; - public static final String EMAIL = "email"; - public static final String PROFILE_DETAILS_KEY = "profiledetails"; - public static final String SOURCE_PROFILE_PICTURE = "source_profile_picture"; - public static final String ROOT_ORG = "root_org"; - public static final String ORG = "org"; - public static final String EMPLOYEMENT_STATUS = "employement_status"; - public static final String CONTRACT_TYPE = "contract_type"; - public static final String JOB_TITLE = "job_title"; - public static final String JOB_ROLE = "job_role"; - public static final String DEPARTMENT_NAME = "department_name"; - public static final String UNIT_NAME = "unit_name"; - public static final String LANGUAGES_KNOWN = "languages_known"; - public static final String ORGANIZATION_LOCATION_COUNTRY = "organization_location_country"; - public static final String ORGANIZATION_LOCATION_STATE = "organization_location_state"; - public static final String ORGANIZATION_LOCATION_CITY = "organization_location_city"; - public static final String RESIDENCE_COUNTRY = "residence_country"; - public static final String RESIDENCE_STATE = "residence_state"; - public static final String RESIDENCE_CITY = "residence_city"; - public static final String TIME_INSERTED = "time_inserted"; - public static final String TIME_UPDATED = "time_updated"; - public static final String JSON_UNMAPPED_FIELDS = "json_unmapped_fields"; - public static final String IS_ACTIVE = "is_active"; - public static final String ACCOUNT_EXPIRY_DATE = "account_expiry_date"; - public static final String SOURCE_DATA = "source_data"; - public static final String USER_ID = "userId"; - public static final String FILTERS = "filters"; - public static final String CONTENT_ID = "content_id"; - public static final String BATCH_ID = "batchId"; - public static final String COURSE_ID = "courseId"; - public static final String ENROLMENT_TYPE = "enrollmenttype"; - public static final String IDENTIFIER = "identifier"; - public static final String START_DATE = "startDate"; - public static final String END_DATE = "endDate"; - public static final String ACTIVE = "active"; - public static final String COMPLETION_PERCENTAGE = "completionPercentage"; - public static final String PROGRESS = "progress"; - public static final String PROFILEDETAILS = "profiledetails"; - public static final String EMPLOYMENTDETAILS = "employmentDetails"; - public static final String DEPARTMENTNAME = "departmentName"; - public static final String ISSUED_CERTIFICATES = "issued_certificates"; - public static final String IS_MDO = "isMdo"; - public static final String IS_CBP = "isCbp"; - public static final String PROFILE_DETAILS_DESIGNATION = "profileDetails.professionalDetails.designation"; - public static final String PROFILE_DETAILS_DESIGNATION_OTHER = "profileDetails.professionalDetails.designationOther"; - public static final String PROFILE_DETAILS_PRIMARY_EMAIL = "profileDetails.personalDetails.primaryEmail"; - public static final String DEPARTMENT = "department"; - public static final String DESIGNATION = "designation"; - public static final String PRIMARY_EMAIL = "primaryEmail"; - public static final String FIRST_LOGIN_TIME = "firstLoginTime"; - public static final String RESPONSE_CODE = "responseCode"; - public static final String AUTH_TOKEN = "Authorization"; - public static final String X_AUTH_TOKEN = "x-authenticated-user-token"; - public static final String SUCCESSFUL = "Successful"; - public static final String FAILED = "Failed"; - public static final String MESSAGE = "message"; - public static final String DATA = "data"; - public static final String STATUS = "status"; - public static final String RESULT = "result"; - public static final String OK = "OK"; - public static final String ADD = "add"; - public static final String UPDATE = "update"; - public static final String CREATE = "create"; - public static final String ROOT_ORG_CONSTANT = "rootOrg"; - public static final String ORG_CONSTANT = "org"; - public static final String USER_ID_CONSTANT = "userId"; - public static final String FIELD_PASSED_CONSTANT = "fieldsPassed"; - public static final String FETCH_ONE_LEVEL_CONSTANT = "fetchOneLevel"; - public static final String SKIP_ACCESS_CHECK_CONSTANT = "skipAccessCheck"; - public static final String FIELDS_CONSTANT = "fields"; - public static final boolean FIELDS_PASSED = true; - public static final boolean FETCH_ON_LEVEL = false; - public static final boolean SKIP_ACCESS_CHECK = true; - public static final List MINIMUL_FIELDS = Collections - .unmodifiableList(Arrays.asList("identifier", "duration", "downloadUrl", "description", "mimeType", - "artifactUrl", "name", STATUS, "resourceType", "categoryType", "category")); - public static final String FETCH_RESULT_CONSTANT = ".fetchResult:"; - public static final String URI_CONSTANT = "URI: "; - public static final String REQUEST_CONSTANT = "Request: "; - public static final String RESPONSE_CONSTANT = "Response: "; - public static final String SERVICE_ERROR_CONSTANT = "Http Client threw an Exception:"; - public static final String EXTERNAL_SERVICE_ERROR_CODE = "Exception while querying the external service:"; - public static final String CONTENT_ID_REPLACER = "{contentId}"; - // User assessment pass mark - public static final Float ASSESSMENT_PASS_SCORE = 60.0f; - public static final String DATE_FORMAT = "yyyy-mm-dd hh:mm:ss"; - public static final String RESPONSE = "response"; - public static final String STAFF = "staff"; - public static final String API_STAFF_POSITION_ADD = "api.staff.position.add"; - public static final String API_STAFF_POSITION_UPDATE = "api.staff.position.update"; - public static final String API_STAFF_POSITION_READ = "api.staff.position.read"; - public static final String API_STAFF_POSITION_DELETE = "api.staff.position.delete"; - public static final String API_STAFF_POSITION_HISTORY_READ = "api.staff.position.history.read"; - public static final String API_BUDGET_SCHEME_ADD = "api.budget.schme.add"; - public static final String API_BUDGET_SCHEME_DOC_ADD = "api.budget.schme.doc.add"; - public static final String API_BUDGET_SCHEME_UPDATE = "api.budget.schme.update"; - public static final String API_BUDGET_SCHEME_READ = "api.budget.scheme.read"; - public static final String API_BUDGET_SCHEME_DELETE = "api.budget.scheme.delete"; - public static final String API_BUDGET_SCHEME_HISTORY_READ = "api.budget.scheme.history.read"; - public static final String API_FILE_UPLOAD = "api.file.upload"; - public static final String API_FILE_DELETE = "api.file.delete"; - public static final String API_PROFILE_UPDATE = "api.profile.update"; - public static final String ID = "id"; - public static final String ORG_ID = "orgId"; - public static final String POSITION = "position"; - public static final String TOTAL_POSITION_FILLED = "totalPositionsFilled"; - public static final String TOTAL_POSITION_VACANT = "totalPositionsVacant"; - public static final String NAME = "name"; - public static final String URL = "url"; - public static final String DELETED = "deleted"; - public static final String SCHEME_ID = "schemeId"; - public static final String BUDGET = "budget"; - public static final String BUDGET_YEAR = "budgetYear"; - public static final String SCHEME_NAME = "schemeName"; - public static final String SALARY_BUDGET_ALLOCATED = "salaryBudgetAllocated"; - public static final String TRAINING_BUDGET_ALLOCATED = "trainingBudgetAllocated"; - public static final String TRAINING_BUDGET_UTILIZATION = "trainingBudgetUtilization"; + public static final String UUID = "wid"; + public static final String KID = "kid"; + public static final String SOURCE_ID = "source_id"; + public static final String FIRST_NAME = "first_name"; + public static final String LAST_NAME = "last_name"; + public static final String MIDDLE_NAME = "middle_name"; + public static final String FIRSTNAME = "firstName"; + public static final String SURNAME = "surname"; + public static final String LASTNAME = "lastName"; + public static final String CONTACT_PHONE_NUMBER_OFFICE = "contact_phone_number_office"; + public static final String CONTACT_PHONE_NUMBER_HOME = "contact_phone_number_home"; + public static final String CONTACT_PHONE_NUMBER_PERSONAL = "contact_phone_number_personal"; + public static final String KNOWN_AS = "known_as"; + public static final String GENDER = "gender"; + public static final String DOB = "dob"; + public static final String SALUTATION = "salutation"; + public static final String EMAIL = "email"; + public static final String PROFILE_DETAILS_KEY = "profiledetails"; + public static final String SOURCE_PROFILE_PICTURE = "source_profile_picture"; + public static final String ROOT_ORG = "root_org"; + public static final String ORG = "org"; + public static final String EMPLOYEMENT_STATUS = "employement_status"; + public static final String CONTRACT_TYPE = "contract_type"; + public static final String JOB_TITLE = "job_title"; + public static final String JOB_ROLE = "job_role"; + public static final String DEPARTMENT_NAME = "department_name"; + public static final String UNIT_NAME = "unit_name"; + public static final String LANGUAGES_KNOWN = "languages_known"; + public static final String ORGANIZATION_LOCATION_COUNTRY = "organization_location_country"; + public static final String ORGANIZATION_LOCATION_STATE = "organization_location_state"; + public static final String ORGANIZATION_LOCATION_CITY = "organization_location_city"; + public static final String RESIDENCE_COUNTRY = "residence_country"; + public static final String RESIDENCE_STATE = "residence_state"; + public static final String RESIDENCE_CITY = "residence_city"; + public static final String TIME_INSERTED = "time_inserted"; + public static final String TIME_UPDATED = "time_updated"; + public static final String JSON_UNMAPPED_FIELDS = "json_unmapped_fields"; + public static final String IS_ACTIVE = "is_active"; + public static final String ACCOUNT_EXPIRY_DATE = "account_expiry_date"; + public static final String SOURCE_DATA = "source_data"; + public static final String USER_ID = "userId"; + public static final String FILTERS = "filters"; + public static final String CONTENT_ID = "content_id"; + public static final String BATCH_ID = "batchId"; + public static final String COURSE_ID = "courseId"; + public static final String ENROLMENT_TYPE = "enrollmenttype"; + public static final String IDENTIFIER = "identifier"; + public static final String START_DATE = "startDate"; + public static final String END_DATE = "endDate"; + public static final String ACTIVE = "active"; + public static final String COMPLETION_PERCENTAGE = "completionPercentage"; + public static final String PROGRESS = "progress"; + public static final String PROFILEDETAILS = "profiledetails"; + public static final String EMPLOYMENTDETAILS = "employmentDetails"; + public static final String DEPARTMENTNAME = "departmentName"; + public static final String ISSUED_CERTIFICATES = "issued_certificates"; + public static final String IS_MDO = "isMdo"; + public static final String IS_CBP = "isCbp"; + public static final String PROFILE_DETAILS_DESIGNATION = "profileDetails.professionalDetails.designation"; + public static final String PROFILE_DETAILS_DESIGNATION_OTHER = "profileDetails.professionalDetails.designationOther"; + public static final String PROFILE_DETAILS_PRIMARY_EMAIL = "profileDetails.personalDetails.primaryEmail"; + public static final String DEPARTMENT = "department"; + public static final String DESIGNATION = "designation"; + public static final String PRIMARY_EMAIL = "primaryEmail"; + public static final String FIRST_LOGIN_TIME = "firstLoginTime"; + public static final String RESPONSE_CODE = "responseCode"; + public static final String AUTH_TOKEN = "Authorization"; + public static final String X_AUTH_TOKEN = "x-authenticated-user-token"; + public static final String SUCCESSFUL = "Successful"; + public static final String FAILED = "Failed"; + public static final String MESSAGE = "message"; + public static final String DATA = "data"; + public static final String STATUS = "status"; + public static final String RESULT = "result"; + public static final String OK = "OK"; + public static final String ADD = "add"; + public static final String UPDATE = "update"; + public static final String CREATE = "create"; + public static final String ROOT_ORG_CONSTANT = "rootOrg"; + public static final String ORG_CONSTANT = "org"; + public static final String USER_ID_CONSTANT = "userId"; + public static final String FIELD_PASSED_CONSTANT = "fieldsPassed"; + public static final String FETCH_ONE_LEVEL_CONSTANT = "fetchOneLevel"; + public static final String SKIP_ACCESS_CHECK_CONSTANT = "skipAccessCheck"; + public static final String FIELDS_CONSTANT = "fields"; + public static final boolean FIELDS_PASSED = true; + public static final boolean FETCH_ON_LEVEL = false; + public static final boolean SKIP_ACCESS_CHECK = true; + public static final List MINIMUL_FIELDS = Collections + .unmodifiableList(Arrays.asList("identifier", "duration", "downloadUrl", "description", "mimeType", + "artifactUrl", "name", STATUS, "resourceType", "categoryType", "category")); + public static final String FETCH_RESULT_CONSTANT = ".fetchResult:"; + public static final String URI_CONSTANT = "URI: "; + public static final String REQUEST_CONSTANT = "Request: "; + public static final String RESPONSE_CONSTANT = "Response: "; + public static final String SERVICE_ERROR_CONSTANT = "Http Client threw an Exception:"; + public static final String EXTERNAL_SERVICE_ERROR_CODE = "Exception while querying the external service:"; + public static final String CONTENT_ID_REPLACER = "{contentId}"; + // User assessment pass mark + public static final Float ASSESSMENT_PASS_SCORE = 60.0f; + public static final String DATE_FORMAT = "yyyy-mm-dd hh:mm:ss"; + public static final String RESPONSE = "response"; + public static final String STAFF = "staff"; + public static final String API_STAFF_POSITION_ADD = "api.staff.position.add"; + public static final String API_STAFF_POSITION_UPDATE = "api.staff.position.update"; + public static final String API_STAFF_POSITION_READ = "api.staff.position.read"; + public static final String API_STAFF_POSITION_DELETE = "api.staff.position.delete"; + public static final String API_STAFF_POSITION_HISTORY_READ = "api.staff.position.history.read"; + public static final String API_BUDGET_SCHEME_ADD = "api.budget.schme.add"; + public static final String API_BUDGET_SCHEME_DOC_ADD = "api.budget.schme.doc.add"; + public static final String API_BUDGET_SCHEME_UPDATE = "api.budget.schme.update"; + public static final String API_BUDGET_SCHEME_READ = "api.budget.scheme.read"; + public static final String API_BUDGET_SCHEME_DELETE = "api.budget.scheme.delete"; + public static final String API_BUDGET_SCHEME_HISTORY_READ = "api.budget.scheme.history.read"; + public static final String API_FILE_UPLOAD = "api.file.upload"; + public static final String API_FILE_DELETE = "api.file.delete"; + public static final String API_PROFILE_UPDATE = "api.profile.update"; + public static final String ID = "id"; + public static final String ORG_ID = "orgId"; + public static final String POSITION = "position"; + public static final String TOTAL_POSITION_FILLED = "totalPositionsFilled"; + public static final String TOTAL_POSITION_VACANT = "totalPositionsVacant"; + public static final String NAME = "name"; + public static final String URL = "url"; + public static final String DELETED = "deleted"; + public static final String SCHEME_ID = "schemeId"; + public static final String BUDGET = "budget"; + public static final String BUDGET_YEAR = "budgetYear"; + public static final String SCHEME_NAME = "schemeName"; + public static final String SALARY_BUDGET_ALLOCATED = "salaryBudgetAllocated"; + public static final String TRAINING_BUDGET_ALLOCATED = "trainingBudgetAllocated"; + public static final String TRAINING_BUDGET_UTILIZATION = "trainingBudgetUtilization"; - // ratings and review - public static final String API_RATINGS_ADD = "api.ratings.add"; - public static final String API_RATINGS_READ = "api.ratings.read"; - public static final String API_RATINGS_UPDATE = "api.ratings.update"; - public static final String API_RATINGS_SUMMARY = "api.ratings.summary"; - public static final String API_RATINGS_LOOKUP = "api.ratings.lookup"; - public static final String DATABASE = "sunbird"; - public static final String LOGIN_TABLE = "user_first_login_details"; - public static final String ACTIVITY_ID = "activityId"; - public static final String ACTIVITY_TYPE = "activityType"; - public static final String RATINGS_USER_ID = "userId"; - public static final String USER_FIRST_NAME = "firstName"; - public static final String USER_LAST_NAME = "lastName"; - 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 RATING = "rating"; - public static final String REVIEW = "review"; - 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"; - public static final String TOTALCOUNT1STARS = "totalcount1stars"; - public static final String TOTALCOUNT2STARS = "totalcount2stars"; - public static final String TOTALCOUNT3STARS = "totalcount3stars"; - public static final String TOTALCOUNT4STARS = "totalcount4stars"; - public static final String TOTALCOUNT5STARS = "totalcount5stars"; - public static final String TOTALNUMBEROFRATINGS = "total_number_of_ratings"; - public static final String SUMOFTOTALRATINGS = "sum_of_total_ratings"; - public static final String NO_RATING_EXCEPTION_MESSAGE = "No ratings found for : "; - public static final String NO_REVIEW_EXCEPTION_MESSAGE = "No reviews found for : "; - public static final String RATING_GENERIC_EXCEPTION_MESSAGE = "Exception occurred while adding the course review : "; - public static final String KAFKA_RATING_EXCEPTION_MESSAGE = "Exception occurred while connecting to kafka topic : "; - public static final String RATING_UPSERT_OPERATION = "upsert"; - public static final String RATING_LOOKUP_RATING_OPERATION = "lookup"; - public static final String RATING_GET_OPERATION = "getRating"; - public static final String RATING_SUMMARY_OPERATION = "getSummary"; - // assessment - public static final String QUESTION_SET = "questionSet"; - public static final String ASSESSMENT_QNS_ANS_SET = "assessmentQnsAnsSet_"; - public static final String ASSESSMENT_QNS_SET = "assessmentQnsSet_"; - // Cassandra Constants - public static final String INSERT_INTO = "INSERT INTO "; - public static final String DOT = "."; - public static final String OPEN_BRACE = "("; - public static final String VALUES_WITH_BRACE = ") VALUES ("; - public static final String QUE_MARK = "?"; - public static final String COMMA = ","; - public static final String CLOSING_BRACE = ");"; - public static final String SUCCESS = "success"; - public static final String UNKNOWN_IDENTIFIER = "Unknown identifier "; - public static final String UNDEFINED_IDENTIFIER = "Undefined column name "; - public static final String EXCEPTION_MSG_FETCH = "Exception occurred while fetching record from "; - public static final String EXCEPTION_MSG_DELETE = "Exception occurred while deleting record from "; - public static final String AUDIT_TYPE = "auditType"; - public static final String CREATED_DATE = "createdDate"; - public static final String CREATED_BY = "createdBy"; - public static final String UPDATED_DATE = "updatedDate"; - public static final String UPDATED_BY = "updatedBy"; - public static final String TRANSACTION_DETAILS = "transactionDetails"; - public static final String PROOF_DOCS = "proofDocs"; - public static final String WORK_ORDER_ID = "workOrderId"; - public static final String WORK_ALLOCATION_ID = "workAllocationId"; - public static final String BEGIN_BATCH = "BEGIN BATCH "; - public static final String APPLY_BATCH = " APPLY BATCH;"; - // Database and Tables - public static final String KEYSPACE_SUNBIRD = "sunbird"; - public static final String KEYSPACE_SUNBIRD_COURSES = "sunbird_courses"; - public static final String TABLE_ORG_BUDGET_SCHEME = "org_budget_scheme"; - public static final String TABLE_USER_ASSESSMENT_TIME = "user_assessment_time"; - public static final String SHA_256_WITH_RSA = "SHA256withRSA"; - public static final String SUB = "sub"; - public static final String _UNAUTHORIZED = "Unauthorized"; - public static final String DOT_SEPARATOR = "."; - public static final String ACCESS_TOKEN_PUBLICKEY_BASEPATH = "accesstoken.publickey.basepath"; - public static final String TABLE_ORG_AUDIT = "org_audit"; - public static final String TABLE_ORG_STAFF_POSITION = "org_staff_position"; - public static final String TABLE_WORK_ORDER = "work_order"; - public static final String TABLE_WORK_ALLOCATION = "work_allocation"; - public static final String TABLE_USER_WORK_ALLOCATION_MAPPING = "user_work_allocation_mapping"; - public static final String TABLE_MANDATORY_USER_CONTENT = "mandatory_user_content"; - public static final String TABLE_ORGANIZATION = "organisation"; - public static final String TABLE_USER_ENROLMENT = "user_enrolments"; - public static final String TABLE_USER = "user"; - public static final String TABLE_COURSE_BATCH = "course_batch"; - public static final String TABLE_RATINGS = "ratings"; - public static final String TABLE_RATINGS_LOOKUP = "ratings_lookup"; - public static final String TABLE_RATINGS_SUMMARY = "ratings_summary"; - public static final String VALUE = "value"; - public static final String DEPT_NAME = "deptName"; - public static final String PROFILE_DETAILS = "profileDetails"; - public static final String PROFESSIONAL_DETAILS = "professionalDetails"; - public static final String CONTENT_TYPE = "Content-Type"; - public static final String APPLICATION_JSON = "application/json"; - public static final String OSID = "osid"; - public static final String INITIATE = "INITIATE"; - public static final String FIELD_KEY = "fieldKey"; - public static final String TO_VALUE = "toValue"; - public static final String FROM_VALUE = "fromValue"; - public static final String STATE = "state"; - public static final String ACTION = "action"; - public static final String APPLICATION_ID = "applicationId"; - public static final String ACTOR_USER_ID = "actorUserId"; - public static final String SERVICE_NAME = "serviceName"; - public static final String PROFILE = "profile"; - public static final String WFID = "wfId"; - public static final String UPDATE_FIELD_VALUES = "updateFieldValues"; - public static final String PROFILE_UPDATE_FIELDS = "profileUpdateFields_"; - public static final String IGOT = "igot"; - public static final String DOPT = "dopt"; - public static final String PERSONAL_DETAILS = "personalDetails"; - public static final String TRANSITION_DETAILS = "transitionDetails"; - public static final String UNAUTHORIZED = "unauthorized"; - // Redis - public static final String API_REDIS_DELETE = "api.redis.delete"; - public static final String API_REDIS_GET_KEYS = "api.redis.get.keys"; - public static final String API_REDIS_GET_KEYS_VALUE_SET = "api.redis.get.keys&values"; - public static final String REDIS_COMMON_KEY = "CB_EXT_"; - public static final String COMPETENCY_CACHE_NAME = "competency"; - public static final String COMPETENCY_CACHE_NAME_BY_AREA = "competencyByArea"; - public static final String COMPETENCY_CACHE_NAME_BY_TYPE = "competencyByType"; - public static final String PROVIDER_CACHE_NAME = "provider"; - public static final String POSITIONS_CACHE_NAME = "positions"; - public static final String COMPETENCY_FACET_NAME = "competencies_v3.name"; - public static final String IS_TENANT = "isTenant"; - public static final String CHANNEL = "channel"; - public static final String USER_TOKEN = "x-authenticated-user-token"; - public static final String AUTHORIZATION = "authorization"; - public static final String FACETS = "facets"; - public static final String PRIMARY_CATEGORY = "primaryCategory"; - public static final String LIMIT = "limit"; - public static final String REQUEST = "request"; - public static final String FIELDS = "fields"; - public static final String OFFSET = "offset"; - public static final String BUDGET_DOC_UPLOADED_BY = "uploadedBy"; - public static final String BUDGET_DOC_UPLOADED_DATE = "uploadedDate"; - public static final String BUDGET_DOC_FILE_NAME = "fileName"; - public static final String BUDGET_DOC_FILE_TYPE = "fileType"; - public static final String BUDGET_DOC_FILE_SIZE = "fileSize"; - public static final String BUDGET_DOC_FILE_URL = "fileUrl"; - // telemetry audit constants - public static final String ORG_LIST = "ORGANISATION_LIST"; - public static final String VERSION = "3.0.2"; - public static final String EID = "AUDIT"; - public static final String PDATA_ID = "dev.sunbird.cb.ext.service"; - public static final String PDATA_PID = "sunbird-cb-ext-service"; - public static final String CURRENT_STATE = "FirstLogin"; - public static final String LOGIN_TIME = "login_time"; - public static final List PROPS = Collections.unmodifiableList(Arrays.asList("WAT")); - public static final String USER_CONST = "User"; - public static final String ASSESSMENT_LEVEL_SCORE_CUTOFF = "assessmentlevel"; - public static final String SECTION_LEVEL_SCORE_CUTOFF = "sectionlevel"; - public static final String IDENTIFIER_REPLACER = "{identifier}"; - public static final String CHILDREN = "children"; - public static final String PARAMS = "params"; - public static final String MAX_QUESTIONS = "maxQuestions"; - public static final String CHILD_NODES = "childNodes"; - public static final String SEARCH = "search"; - public static final String SEARCHES = "searches"; - public static final String QUESTION_ID = "qs_id_"; - public static final String ASSESSMENT_ID = "assess_id_"; - public static final String EDITOR_STATE = "editorState"; - public static final String CHOICES = "choices"; - public static final String ANSWER = "answer"; - public static final String QUESTION = "question"; - public static final String OPTIONS = "options"; - public static final String USER_ASSESS_REQ = "user_assess_req_"; - public static final String HIERARCHY = "hierarchy"; - public static final String DEV_HIERARCHY_STORE = "dev_hierarchy_store"; - public static final String CONTENT_HIERARCHY = "content_hierarchy"; - public static final String BATCH_ID_ = "batchid"; - public static final String COURSE_ID_ = "courseid"; - public static final String COMPLETION_PERCENTAGE_ = "completionpercentage"; - public static final String LAST_ACCESS_TIME = "last_access_time"; - public static final String SUNBIRD_KEY_SPACE_NAME = "sunbird"; - public static final String SUNBIRD_COURSES_KEY_SPACE_NAME = "sunbird_courses"; - public static final String LAST_ACCESS_TIME_GAP = "last.access.time.gap.millis"; - public static final String USER_CONTENT_CONSUMPTION = "user_content_consumption"; - public static final String NOTIFICATION_UTIL = "notificationUtil"; - public static final String NOTIFICATIONS = "notifications"; - public static final String CORE_CONNECTIONS_PER_HOST_FOR_LOCAL = "coreConnectionsPerHostForLocal"; - public static final String CORE_CONNECTIONS_PER_HOST_FOR_REMOTE = "coreConnectionsPerHostForRemote"; - public static final String MAX_CONNECTIONS_PER_HOST_FOR_LOCAl = "maxConnectionsPerHostForLocal"; - public static final String MAX_CONNECTIONS_PER_HOST_FOR_REMOTE = "maxConnectionsPerHostForRemote"; - public static final String MAX_REQUEST_PER_CONNECTION = "maxRequestsPerConnection"; - public static final String HEARTBEAT_INTERVAL = "heartbeatIntervalSeconds"; - public static final String POOL_TIMEOUT = "poolTimeoutMillis"; - public static final String CONTACT_POINT = "contactPoint"; - public static final String PORT = "port"; - public static final String QUERY_LOGGER_THRESHOLD = "queryLoggerConstantThreshold"; - public static final String SUNBIRD_CASSANDRA_CONSISTENCY_LEVEL = "sunbird_cassandra_consistency_level"; - public static final String INCOMPLETE_COURSES_MAIL_SUBJECT = "Complete the courses you started"; - public static final String COURSE = "Course"; - public static final String _URL = "_url"; - public static final String THUMBNAIL = "_thumbnail"; - public static final String _NAME = "_name"; - public static final String _DURATION = "_duration"; - public static final String SEND_NOTIFICATION_PROPERTIES = "send-notification"; - public static final String NOTIFICATION_HOST = "notification.service.host"; - public static final String NOTIFICATION_ENDPOINT = "notification.event.endpoint"; - public static final String SUBJECT = "subject"; - public static final String SCHEDULER_TIME_GAP = "scheduler-time-gap"; - public static final String SCHEDULER_RUN_DAY = "scheduler-run-day"; - public static final String SCHEDULER_RUN_TIME = "scheduler-run-time"; - public static final String IS_DELETED = "isDeleted"; - public static final String EXCLUDE_USER_EMAILS = "exclude_user_emails"; - public static final String INCOMPLETE_COURSES = "incompletecourses"; - public static final String POSTER_IMAGE = "posterImage"; + // ratings and review + public static final String API_RATINGS_ADD = "api.ratings.add"; + public static final String API_RATINGS_READ = "api.ratings.read"; + public static final String API_RATINGS_UPDATE = "api.ratings.update"; + public static final String API_RATINGS_SUMMARY = "api.ratings.summary"; + public static final String API_RATINGS_LOOKUP = "api.ratings.lookup"; + public static final String DATABASE = "sunbird"; + public static final String LOGIN_TABLE = "user_first_login_details"; + public static final String ACTIVITY_ID = "activityId"; + public static final String ACTIVITY_TYPE = "activityType"; + public static final String RATINGS_USER_ID = "userId"; + public static final String USER_FIRST_NAME = "firstName"; + public static final String USER_LAST_NAME = "lastName"; + 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 RATING = "rating"; + public static final String REVIEW = "review"; + 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"; + public static final String TOTALCOUNT1STARS = "totalcount1stars"; + public static final String TOTALCOUNT2STARS = "totalcount2stars"; + public static final String TOTALCOUNT3STARS = "totalcount3stars"; + public static final String TOTALCOUNT4STARS = "totalcount4stars"; + public static final String TOTALCOUNT5STARS = "totalcount5stars"; + public static final String TOTALNUMBEROFRATINGS = "total_number_of_ratings"; + public static final String SUMOFTOTALRATINGS = "sum_of_total_ratings"; + public static final String NO_RATING_EXCEPTION_MESSAGE = "No ratings found for : "; + public static final String NO_REVIEW_EXCEPTION_MESSAGE = "No reviews found for : "; + public static final String RATING_GENERIC_EXCEPTION_MESSAGE = "Exception occurred while adding the course review : "; + public static final String KAFKA_RATING_EXCEPTION_MESSAGE = "Exception occurred while connecting to kafka topic : "; + public static final String RATING_UPSERT_OPERATION = "upsert"; + public static final String RATING_LOOKUP_RATING_OPERATION = "lookup"; + public static final String RATING_GET_OPERATION = "getRating"; + public static final String RATING_SUMMARY_OPERATION = "getSummary"; + // assessment + public static final String QUESTION_SET = "questionSet"; + public static final String ASSESSMENT_QNS_ANS_SET = "assessmentQnsAnsSet_"; + public static final String ASSESSMENT_QNS_SET = "assessmentQnsSet_"; + // Cassandra Constants + public static final String INSERT_INTO = "INSERT INTO "; + public static final String DOT = "."; + public static final String OPEN_BRACE = "("; + public static final String VALUES_WITH_BRACE = ") VALUES ("; + public static final String QUE_MARK = "?"; + public static final String COMMA = ","; + public static final String CLOSING_BRACE = ");"; + public static final String SUCCESS = "success"; + public static final String UNKNOWN_IDENTIFIER = "Unknown identifier "; + public static final String UNDEFINED_IDENTIFIER = "Undefined column name "; + public static final String EXCEPTION_MSG_FETCH = "Exception occurred while fetching record from "; + public static final String EXCEPTION_MSG_DELETE = "Exception occurred while deleting record from "; + public static final String AUDIT_TYPE = "auditType"; + public static final String CREATED_DATE = "createdDate"; + public static final String CREATED_BY = "createdBy"; + public static final String UPDATED_DATE = "updatedDate"; + public static final String UPDATED_BY = "updatedBy"; + public static final String TRANSACTION_DETAILS = "transactionDetails"; + public static final String PROOF_DOCS = "proofDocs"; + public static final String WORK_ORDER_ID = "workOrderId"; + public static final String WORK_ALLOCATION_ID = "workAllocationId"; + public static final String BEGIN_BATCH = "BEGIN BATCH "; + public static final String APPLY_BATCH = " APPLY BATCH;"; + // Database and Tables + public static final String KEYSPACE_SUNBIRD = "sunbird"; + public static final String KEYSPACE_SUNBIRD_COURSES = "sunbird_courses"; + public static final String TABLE_ORG_BUDGET_SCHEME = "org_budget_scheme"; + public static final String TABLE_USER_ASSESSMENT_TIME = "user_assessment_time"; + public static final String SHA_256_WITH_RSA = "SHA256withRSA"; + public static final String SUB = "sub"; + public static final String _UNAUTHORIZED = "Unauthorized"; + public static final String DOT_SEPARATOR = "."; + public static final String ACCESS_TOKEN_PUBLICKEY_BASEPATH = "accesstoken.publickey.basepath"; + public static final String TABLE_ORG_AUDIT = "org_audit"; + public static final String TABLE_ORG_STAFF_POSITION = "org_staff_position"; + public static final String TABLE_WORK_ORDER = "work_order"; + public static final String TABLE_WORK_ALLOCATION = "work_allocation"; + public static final String TABLE_USER_WORK_ALLOCATION_MAPPING = "user_work_allocation_mapping"; + public static final String TABLE_MANDATORY_USER_CONTENT = "mandatory_user_content"; + public static final String TABLE_ORGANIZATION = "organisation"; + public static final String TABLE_USER_ENROLMENT = "user_enrolments"; + public static final String TABLE_USER = "user"; + public static final String TABLE_COURSE_BATCH = "course_batch"; + public static final String TABLE_RATINGS = "ratings"; + public static final String TABLE_RATINGS_LOOKUP = "ratings_lookup"; + public static final String TABLE_RATINGS_SUMMARY = "ratings_summary"; + public static final String VALUE = "value"; + public static final String DEPT_NAME = "deptName"; + public static final String PROFILE_DETAILS = "profileDetails"; + public static final String PROFESSIONAL_DETAILS = "professionalDetails"; + public static final String CONTENT_TYPE = "Content-Type"; + public static final String APPLICATION_JSON = "application/json"; + public static final String OSID = "osid"; + public static final String INITIATE = "INITIATE"; + public static final String FIELD_KEY = "fieldKey"; + public static final String TO_VALUE = "toValue"; + public static final String FROM_VALUE = "fromValue"; + public static final String STATE = "state"; + public static final String ACTION = "action"; + public static final String APPLICATION_ID = "applicationId"; + public static final String ACTOR_USER_ID = "actorUserId"; + public static final String SERVICE_NAME = "serviceName"; + public static final String PROFILE = "profile"; + public static final String WFID = "wfId"; + public static final String UPDATE_FIELD_VALUES = "updateFieldValues"; + public static final String PROFILE_UPDATE_FIELDS = "profileUpdateFields_"; + public static final String IGOT = "igot"; + public static final String DOPT = "dopt"; + public static final String PERSONAL_DETAILS = "personalDetails"; + public static final String TRANSITION_DETAILS = "transitionDetails"; + public static final String UNAUTHORIZED = "unauthorized"; + // Redis + public static final String API_REDIS_DELETE = "api.redis.delete"; + public static final String API_REDIS_GET_KEYS = "api.redis.get.keys"; + public static final String API_REDIS_GET_KEYS_VALUE_SET = "api.redis.get.keys&values"; + public static final String REDIS_COMMON_KEY = "CB_EXT_"; + public static final String COMPETENCY_CACHE_NAME = "competency"; + public static final String COMPETENCY_CACHE_NAME_BY_AREA = "competencyByArea"; + public static final String COMPETENCY_CACHE_NAME_BY_TYPE = "competencyByType"; + public static final String PROVIDER_CACHE_NAME = "provider"; + public static final String POSITIONS_CACHE_NAME = "positions"; + public static final String COMPETENCY_FACET_NAME = "competencies_v3.name"; + public static final String IS_TENANT = "isTenant"; + public static final String CHANNEL = "channel"; + public static final String USER_TOKEN = "x-authenticated-user-token"; + public static final String AUTHORIZATION = "authorization"; + public static final String FACETS = "facets"; + public static final String PRIMARY_CATEGORY = "primaryCategory"; + public static final String LIMIT = "limit"; + public static final String REQUEST = "request"; + public static final String FIELDS = "fields"; + public static final String OFFSET = "offset"; + public static final String BUDGET_DOC_UPLOADED_BY = "uploadedBy"; + public static final String BUDGET_DOC_UPLOADED_DATE = "uploadedDate"; + public static final String BUDGET_DOC_FILE_NAME = "fileName"; + public static final String BUDGET_DOC_FILE_TYPE = "fileType"; + public static final String BUDGET_DOC_FILE_SIZE = "fileSize"; + public static final String BUDGET_DOC_FILE_URL = "fileUrl"; + // telemetry audit constants + public static final String ORG_LIST = "ORGANISATION_LIST"; + public static final String VERSION = "3.0.2"; + public static final String EID = "AUDIT"; + public static final String PDATA_ID = "dev.sunbird.cb.ext.service"; + public static final String PDATA_PID = "sunbird-cb-ext-service"; + public static final String CURRENT_STATE = "FirstLogin"; + public static final String LOGIN_TIME = "login_time"; + public static final List PROPS = Collections.unmodifiableList(Arrays.asList("WAT")); + public static final String USER_CONST = "User"; + public static final String ASSESSMENT_LEVEL_SCORE_CUTOFF = "assessmentlevel"; + public static final String SECTION_LEVEL_SCORE_CUTOFF = "sectionlevel"; + public static final String IDENTIFIER_REPLACER = "{identifier}"; + public static final String CHILDREN = "children"; + public static final String PARAMS = "params"; + public static final String MAX_QUESTIONS = "maxQuestions"; + public static final String CHILD_NODES = "childNodes"; + public static final String SEARCH = "search"; + public static final String SEARCHES = "searches"; + public static final String QUESTION_ID = "qs_id_"; + public static final String ASSESSMENT_ID = "assess_id_"; + public static final String EDITOR_STATE = "editorState"; + public static final String CHOICES = "choices"; + public static final String ANSWER = "answer"; + public static final String QUESTION = "question"; + public static final String OPTIONS = "options"; + public static final String USER_ASSESS_REQ = "user_assess_req_"; + public static final String HIERARCHY = "hierarchy"; + public static final String DEV_HIERARCHY_STORE = "dev_hierarchy_store"; + public static final String CONTENT_HIERARCHY = "content_hierarchy"; + public static final String BATCH_ID_ = "batchid"; + public static final String COURSE_ID_ = "courseid"; + public static final String COMPLETION_PERCENTAGE_ = "completionpercentage"; + public static final String LAST_ACCESS_TIME = "last_access_time"; + public static final String SUNBIRD_KEY_SPACE_NAME = "sunbird"; + public static final String SUNBIRD_COURSES_KEY_SPACE_NAME = "sunbird_courses"; + public static final String LAST_ACCESS_TIME_GAP = "last.access.time.gap.millis"; + public static final String USER_CONTENT_CONSUMPTION = "user_content_consumption"; + public static final String NOTIFICATION_UTIL = "notificationUtil"; + public static final String NOTIFICATIONS = "notifications"; + public static final String CORE_CONNECTIONS_PER_HOST_FOR_LOCAL = "coreConnectionsPerHostForLocal"; + public static final String CORE_CONNECTIONS_PER_HOST_FOR_REMOTE = "coreConnectionsPerHostForRemote"; + public static final String MAX_CONNECTIONS_PER_HOST_FOR_LOCAl = "maxConnectionsPerHostForLocal"; + public static final String MAX_CONNECTIONS_PER_HOST_FOR_REMOTE = "maxConnectionsPerHostForRemote"; + public static final String MAX_REQUEST_PER_CONNECTION = "maxRequestsPerConnection"; + public static final String HEARTBEAT_INTERVAL = "heartbeatIntervalSeconds"; + public static final String POOL_TIMEOUT = "poolTimeoutMillis"; + public static final String CONTACT_POINT = "contactPoint"; + public static final String PORT = "port"; + public static final String QUERY_LOGGER_THRESHOLD = "queryLoggerConstantThreshold"; + public static final String SUNBIRD_CASSANDRA_CONSISTENCY_LEVEL = "sunbird_cassandra_consistency_level"; + public static final String INCOMPLETE_COURSES_MAIL_SUBJECT = "Complete the courses you started"; + public static final String COURSE = "Course"; + public static final String _URL = "_url"; + public static final String THUMBNAIL = "_thumbnail"; + public static final String _NAME = "_name"; + public static final String _DURATION = "_duration"; + public static final String SEND_NOTIFICATION_PROPERTIES = "send-notification"; + public static final String NOTIFICATION_HOST = "notification.service.host"; + public static final String NOTIFICATION_ENDPOINT = "notification.event.endpoint"; + public static final String SUBJECT = "subject"; + public static final String SCHEDULER_TIME_GAP = "scheduler-time-gap"; + public static final String SCHEDULER_RUN_DAY = "scheduler-run-day"; + public static final String SCHEDULER_RUN_TIME = "scheduler-run-time"; + public static final String IS_DELETED = "isDeleted"; + public static final String EXCLUDE_USER_EMAILS = "exclude_user_emails"; + public static final String INCOMPLETE_COURSES = "incompletecourses"; + public static final String POSTER_IMAGE = "posterImage"; - public static final String COURSE_URL = "course.url"; - public static final String OVERVIEW_BATCH_ID = "overview.batch"; - public static final String SENDER_MAIL = "sender.mail"; - public static final String CASSANDRA_CONFIG_HOST = "cassandra.config.host"; - public static final String OBJECT_TYPE = "objectType"; - public static final String QUESTIONS = "questions"; - public static final String RHS_CHOICES = "rhsChoices"; - public static final String MTF_QUESTION = "MTF Question"; - public static final String FTB_QUESTION = "FTB Question"; - public static final String API_QUESTIONSET_HIERARCHY_GET = "api.questionset.hierarchy.get"; - public static final String VER = "3.0"; - public static final String API_QUESTIONS_LIST = "api.questions.list"; - public static final String MINIMUM_PASS_PERCENTAGE = "minimumPassPercentage"; - public static final String SCORE_CUTOFF_TYPE = "scoreCutoffType"; - public static final String PASS_PERCENTAGE = "passPercentage"; - public static final String TOTAL = "total"; - public static final String BLANK = "blank"; - public static final String CORRECT = "correct"; - public static final String INCORRECT = "incorrect"; - public static final String PASS = "pass"; - public static final String OVERALL_RESULT = "overallResult"; - public static final String DO = "do_"; - public static final String SSO_CLIENT_ID = "sso.client.id"; - public static final String SSO_CLIENT_SECRET = "sso.client.secret"; - public static final String SSO_PASSWORD = "sso.password"; - public static final String SSO_POOL_SIZE = "sso.connection.pool.size"; - public static final String SSO_PUBLIC_KEY = "sunbird_sso_publickey"; - public static final String SSO_REALM = "sso.realm"; - public static final String SSO_URL = "sso.url"; - public static final String SSO_USERNAME = "sso.username"; - public static final String SUNBIRD_SSO_CLIENT_ID = "sunbird_sso_client_id"; - public static final String SUNBIRD_SSO_CLIENT_SECRET = "sunbird_sso_client_secret"; - public static final String SUNBIRD_SSO_PASSWORD = "sunbird_sso_password"; - public static final String SUNBIRD_SSO_RELAM = "sunbird_sso_realm"; - public static final String SUNBIRD_SSO_URL = "sunbird_sso_url"; - public static final String SUNBIRD_SSO_USERNAME = "sunbird_sso_username"; - public static final String DURATION = "duration"; - public static final String USER_REGISTRATION_REGISTER_API = "api.user.registration.register"; - public static final String USER_REGISTRATION_UPDATE_API = "api.user.registration.update"; - public static final String USER_REGISTRATION_RETRIEVE_API = "api.user.registration.retrieve"; - public static final String USER_REGISTRATION_DEPT_INFO_API = "api.user.registration.dept.info"; - public static final String COUNT = "count"; + public static final String COURSE_URL = "course.url"; + public static final String OVERVIEW_BATCH_ID = "overview.batch"; + public static final String SENDER_MAIL = "sender.mail"; + public static final String CASSANDRA_CONFIG_HOST = "cassandra.config.host"; + public static final String OBJECT_TYPE = "objectType"; + public static final String QUESTIONS = "questions"; + public static final String RHS_CHOICES = "rhsChoices"; + public static final String MTF_QUESTION = "MTF Question"; + public static final String FTB_QUESTION = "FTB Question"; + public static final String API_QUESTIONSET_HIERARCHY_GET = "api.questionset.hierarchy.get"; + public static final String VER = "3.0"; + public static final String API_QUESTIONS_LIST = "api.questions.list"; + public static final String MINIMUM_PASS_PERCENTAGE = "minimumPassPercentage"; + public static final String SCORE_CUTOFF_TYPE = "scoreCutoffType"; + public static final String PASS_PERCENTAGE = "passPercentage"; + public static final String TOTAL = "total"; + public static final String BLANK = "blank"; + public static final String CORRECT = "correct"; + public static final String INCORRECT = "incorrect"; + public static final String PASS = "pass"; + public static final String OVERALL_RESULT = "overallResult"; + public static final String DO = "do_"; + public static final String SSO_CLIENT_ID = "sso.client.id"; + public static final String SSO_CLIENT_SECRET = "sso.client.secret"; + public static final String SSO_PASSWORD = "sso.password"; + public static final String SSO_POOL_SIZE = "sso.connection.pool.size"; + public static final String SSO_PUBLIC_KEY = "sunbird_sso_publickey"; + public static final String SSO_REALM = "sso.realm"; + public static final String SSO_URL = "sso.url"; + public static final String SSO_USERNAME = "sso.username"; + public static final String SUNBIRD_SSO_CLIENT_ID = "sunbird_sso_client_id"; + public static final String SUNBIRD_SSO_CLIENT_SECRET = "sunbird_sso_client_secret"; + public static final String SUNBIRD_SSO_PASSWORD = "sunbird_sso_password"; + public static final String SUNBIRD_SSO_RELAM = "sunbird_sso_realm"; + public static final String SUNBIRD_SSO_URL = "sunbird_sso_url"; + public static final String SUNBIRD_SSO_USERNAME = "sunbird_sso_username"; + public static final String DURATION = "duration"; + public static final String USER_REGISTRATION_REGISTER_API = "api.user.registration.register"; + public static final String USER_REGISTRATION_UPDATE_API = "api.user.registration.update"; + public static final String USER_REGISTRATION_RETRIEVE_API = "api.user.registration.retrieve"; + public static final String USER_REGISTRATION_DEPT_INFO_API = "api.user.registration.dept.info"; + public static final String COUNT = "count"; - // email params - public static final String TITLE = "title"; - public static final String DESCRIPTION = "description"; - public static final String TEMPLATE = "template"; - public static final String USER_REGISTERATION_TEMPLATE = "user-registration"; - public static final String STATUS_PARAM = "{status}"; - public static final String REG_CODE_PARAM = "{regCode}"; - public static final String BUTTON_URL = "btn-url"; - public static final String BUTTON_NAME = "btn-name"; + // email params + public static final String TITLE = "title"; + public static final String DESCRIPTION = "description"; + public static final String TEMPLATE = "template"; + public static final String USER_REGISTERATION_TEMPLATE = "user-registration"; + public static final String STATUS_PARAM = "{status}"; + public static final String REG_CODE_PARAM = "{regCode}"; + public static final String BUTTON_URL = "btn-url"; + public static final String BUTTON_NAME = "btn-name"; - // notification reuest params - public static final String DELIVERY_TYPE = "deliveryType"; - public static final String CONFIG = "config"; - public static final String IDS = "ids"; + // notification reuest params + public static final String DELIVERY_TYPE = "deliveryType"; + public static final String CONFIG = "config"; + public static final String IDS = "ids"; - // wf status - public static final String INITIATED = "initiated"; - public static final String APPROVED = "approved"; - public static final String DENIED = "denied"; + // wf status + public static final String INITIATED = "initiated"; + public static final String APPROVED = "approved"; + public static final String DENIED = "denied"; - public static final String EMAIL_EXIST_ERROR = "Email id already registered"; - public static final String EMAIL_VERIFIED = "emailVerified"; - public static final String USER_NAME = "userName"; - public static final String USER_FULL_NAME = "fullName"; + public static final String EMAIL_EXIST_ERROR = "Email id already registered"; + public static final String EMAIL_VERIFIED = "emailVerified"; + public static final String USER_NAME = "userName"; + public static final String USER_FULL_NAME = "fullName"; - public static final String MANDATORY_FIELDS_EXISTS = "mandatoryFieldsExists"; - public static final String KEY = "key"; - public static final String TYPE = "type"; - public static final String LINK = "link"; - public static final String ALLOWED_LOGGING = "allowedLoging"; + public static final String MANDATORY_FIELDS_EXISTS = "mandatoryFieldsExists"; + public static final String KEY = "key"; + public static final String TYPE = "type"; + public static final String LINK = "link"; + public static final String ALLOWED_LOGGING = "allowedLoging"; - public static final String API_VERSION_1 = "1.0"; - public static final String BODY = "body"; - public static final String EMAIL_TEMPLATE_TYPE = "emailTemplateType"; - public static final String MODE = "mode"; - public static final String ORG_NAME = "orgName"; - public static final String RECIPIENT_EMAILS = "recipientEmails"; - public static final String SET_PASSWORD_LINK = "setPasswordLink"; - public static final String WELCOME_MESSAGE = "welcomeMessage"; - public static final String HELLO = "Hello"; - public static final String WELCOME_EMAIL_TEMPLATE_TYPE = "iGotWelcome"; - public static final String WELCOME_EMAIL_MESSAGE = "Welcome Email"; - public static final String ORGANIZATION_ID = "organisationId"; - public static final String ROLES = "roles"; - public static final String PUBLIC = "PUBLIC"; - public static final String ASC_ORDER = "asc"; - public static final String SORT_BY = "sort_by"; - public static final String FIELD = "field"; - public static final String KEYWORD = "keyword"; - public static final String VERIFIED = "VERIFIED"; - public static final String COMPETENCY_AREA = "competencyArea"; - public static final String COMPETENCY_TYPE = "competencyType"; - public static final String SOURCE = "source"; - public static final String ADDITIONAL_PROPERTIES = "additionalProperties"; - public static final String CONTENT = "content"; - public static final String COMPETENCY = "competency"; - public static final String CHILD_COUNT = "childCount"; - public static final String RESPONSE_DATA = "responseData"; - public static final String DEPARTMENT_LIST_CACHE_NAME = "deptCacheList"; - public static final String POSITIONS = "positions"; - public static final String BEARER = "bearer "; - public static final String IMG_URL = "imgurl"; - public static final String VALUES = "values"; - public static final String PROGRAM = "Program"; - public static final String LIVE = "Live"; - public static final String GOVERNMENT = "Government"; - public static final String ORGANIZATION_TYPE = "organisationType"; - public static final String FIRST_NAME_LOWER_CASE = "firstname"; + public static final String API_VERSION_1 = "1.0"; + public static final String BODY = "body"; + public static final String EMAIL_TEMPLATE_TYPE = "emailTemplateType"; + public static final String MODE = "mode"; + public static final String ORG_NAME = "orgName"; + public static final String RECIPIENT_EMAILS = "recipientEmails"; + public static final String SET_PASSWORD_LINK = "setPasswordLink"; + public static final String WELCOME_MESSAGE = "welcomeMessage"; + public static final String HELLO = "Hello"; + public static final String WELCOME_EMAIL_TEMPLATE_TYPE = "iGotWelcome"; + public static final String WELCOME_EMAIL_MESSAGE = "Welcome Email"; + public static final String ORGANIZATION_ID = "organisationId"; + public static final String ROLES = "roles"; + public static final String PUBLIC = "PUBLIC"; + public static final String ASC_ORDER = "asc"; + public static final String SORT_BY = "sort_by"; + public static final String FIELD = "field"; + public static final String KEYWORD = "keyword"; + public static final String VERIFIED = "VERIFIED"; + public static final String COMPETENCY_AREA = "competencyArea"; + public static final String COMPETENCY_TYPE = "competencyType"; + public static final String SOURCE = "source"; + public static final String ADDITIONAL_PROPERTIES = "additionalProperties"; + public static final String CONTENT = "content"; + public static final String COMPETENCY = "competency"; + public static final String CHILD_COUNT = "childCount"; + public static final String RESPONSE_DATA = "responseData"; + public static final String DEPARTMENT_LIST_CACHE_NAME = "deptCacheList"; + public static final String POSITIONS = "positions"; + public static final String BEARER = "bearer "; + public static final String IMG_URL = "imgurl"; + public static final String VALUES = "values"; + public static final String PROGRAM = "Program"; + public static final String LIVE = "Live"; + public static final String GOVERNMENT = "Government"; + public static final String ORGANIZATION_TYPE = "organisationType"; + public static final String FIRST_NAME_LOWER_CASE = "firstname"; - public static final String X_AUTH_USER_ID = "x-authenticated-userid"; - public static final String PASSBOOK_READ_API = "user.passbook.read"; - public static final String PASSBOOK_ADMIN_READ_API = "user.passbook.admin.read"; - public static final String PASSBOOK_ADD_API = "user.passbook.add"; - public static final String USER_PASSBOOK_TABLE = "user_passbook_v2"; + public static final String X_AUTH_USER_ID = "x-authenticated-userid"; + public static final String PASSBOOK_READ_API = "user.passbook.read"; + public static final String PASSBOOK_ADMIN_READ_API = "user.passbook.admin.read"; + public static final String PASSBOOK_ADD_API = "user.passbook.add"; + public static final String USER_PASSBOOK_TABLE = "user_passbook_v2"; - public static final String USER_PASSBOOK_TABLE_OLD = "user_passbook"; - public static final String TYPE_NAME = "typeName"; - public static final String TYPE_ID = "typeId"; - public static final String ADDITIONAL_PARAM = "additionalParams"; - public static final String ACQUIRED_CHANNEL = "acquiredChannel"; - public static final String CONTEXT_ID = "contextId"; - public static final String EFFECTIVE_DATE = "effectiveDate"; - public static final String COMPETENCY_LEVEL_ID = "competencyLevelId"; - public static final String ACQUIRED_DETAILS = "acquiredDetails"; - public static final String COMPETENCY_DETAILS = "competencyDetails"; - public static final String COMPETENCY_ID = "competencyId"; - public static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L; + public static final String USER_PASSBOOK_TABLE_OLD = "user_passbook"; + public static final String TYPE_NAME = "typeName"; + public static final String TYPE_ID = "typeId"; + public static final String ADDITIONAL_PARAM = "additionalParams"; + public static final String ACQUIRED_CHANNEL = "acquiredChannel"; + public static final String CONTEXT_ID = "contextId"; + public static final String EFFECTIVE_DATE = "effectiveDate"; + public static final String COMPETENCY_LEVEL_ID = "competencyLevelId"; + public static final String ACQUIRED_DETAILS = "acquiredDetails"; + public static final String COMPETENCY_DETAILS = "competencyDetails"; + public static final String COMPETENCY_ID = "competencyId"; + public static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L; public static String PASSBOOK_MIGRATE_API = "user.passbook.migrate"; - + private Constants() { - throw new IllegalStateException("Utility class"); - } + throw new IllegalStateException("Utility class"); + } } diff --git a/src/main/java/org/sunbird/passbook/competency/model/CompetencyInfo.java b/src/main/java/org/sunbird/passbook/competency/model/CompetencyInfo.java index bc2fc10d2..3bab200c6 100644 --- a/src/main/java/org/sunbird/passbook/competency/model/CompetencyInfo.java +++ b/src/main/java/org/sunbird/passbook/competency/model/CompetencyInfo.java @@ -5,35 +5,35 @@ import java.util.Map; public class CompetencyInfo { - private String competencyId; - private Map additionalParams; - private List> acquiredDetails = new ArrayList>(); + private String competencyId; + private Map additionalParams; + private List> acquiredDetails = new ArrayList>(); - public CompetencyInfo(String competencyId) { - this.competencyId = competencyId; - } + public CompetencyInfo(String competencyId) { + this.competencyId = competencyId; + } - public String getCompetencyId() { - return competencyId; - } + public String getCompetencyId() { + return competencyId; + } - public void setCompetencyId(String competencyId) { - this.competencyId = competencyId; - } + public void setCompetencyId(String competencyId) { + this.competencyId = competencyId; + } - public Map getAdditionalParams() { - return additionalParams; - } + public Map getAdditionalParams() { + return additionalParams; + } - public void setAdditionalParams(Map additionalParams) { - this.additionalParams = additionalParams; - } + public void setAdditionalParams(Map additionalParams) { + this.additionalParams = additionalParams; + } - public List> getAcquiredDetails() { - return acquiredDetails; - } + public List> getAcquiredDetails() { + return acquiredDetails; + } - public void setAcquiredDetails(List> acquiredDetails) { - this.acquiredDetails = acquiredDetails; - } + public void setAcquiredDetails(List> acquiredDetails) { + this.acquiredDetails = acquiredDetails; + } } diff --git a/src/main/java/org/sunbird/passbook/competency/model/CompetencyPassbookInfo.java b/src/main/java/org/sunbird/passbook/competency/model/CompetencyPassbookInfo.java index 564f33e0c..bb1de1068 100644 --- a/src/main/java/org/sunbird/passbook/competency/model/CompetencyPassbookInfo.java +++ b/src/main/java/org/sunbird/passbook/competency/model/CompetencyPassbookInfo.java @@ -6,35 +6,35 @@ import org.sunbird.common.util.Constants; public class CompetencyPassbookInfo { - private String userId; - private String typeName = Constants.COMPETENCY; - private Map competencies = new HashMap(); + private String userId; + private String typeName = Constants.COMPETENCY; + private Map competencies = new HashMap(); - public CompetencyPassbookInfo(String userId) { - this.userId = userId; - } + public CompetencyPassbookInfo(String userId) { + this.userId = userId; + } - public String getUserId() { - return userId; - } + public String getUserId() { + return userId; + } - public void setUserId(String userId) { - this.userId = userId; - } + public void setUserId(String userId) { + this.userId = userId; + } - public String getTypeName() { - return typeName; - } + public String getTypeName() { + return typeName; + } - public void setTypeName(String typeName) { - this.typeName = typeName; - } + public void setTypeName(String typeName) { + this.typeName = typeName; + } - public Map getCompetencies() { - return competencies; - } + public Map getCompetencies() { + return competencies; + } - public void setCompetencies(Map competencies) { - this.competencies = competencies; - } + public void setCompetencies(Map competencies) { + this.competencies = competencies; + } } diff --git a/src/main/java/org/sunbird/passbook/controller/PassbookController.java b/src/main/java/org/sunbird/passbook/controller/PassbookController.java index 6421c330f..362ae78cf 100644 --- a/src/main/java/org/sunbird/passbook/controller/PassbookController.java +++ b/src/main/java/org/sunbird/passbook/controller/PassbookController.java @@ -15,38 +15,39 @@ /** * Provides REST APIs for Passbook feature - * - * @author karthik * + * @author karthik */ @RestController public class PassbookController { - @Autowired - PassbookService passbookService; + @Autowired + PassbookService passbookService; + + @PatchMapping("/user/v1/passbook") + public ResponseEntity updatePassbook(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, + @RequestBody Map request) { + SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); + return new ResponseEntity<>(response, response.getResponseCode()); + } + + @PostMapping("/user/v1/migrateData") + public ResponseEntity migrateData() { + SBApiResponse response = passbookService.migrateData(); + return new ResponseEntity<>(response, response.getResponseCode()); + } - @PatchMapping("/user/v1/passbook") - public ResponseEntity updatePassbook(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, - @RequestBody Map request) { - SBApiResponse response = passbookService.updatePassbook(requestedUserId, request); - return new ResponseEntity<>(response, response.getResponseCode()); - } - @PostMapping("/user/v1/migrateData") - public ResponseEntity migrateData() { - SBApiResponse response = passbookService.migrateData(); - return new ResponseEntity<>(response, response.getResponseCode()); - } - @PostMapping("/user/v1/passbook") - public ResponseEntity getUserPassbook( - @RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, @RequestBody Map request) - throws Exception { - SBApiResponse response = passbookService.getPassbook(requestedUserId, request); - return new ResponseEntity<>(response, response.getResponseCode()); - } + @PostMapping("/user/v1/passbook") + public ResponseEntity getUserPassbook( + @RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, @RequestBody Map request) + throws Exception { + SBApiResponse response = passbookService.getPassbook(requestedUserId, request); + return new ResponseEntity<>(response, response.getResponseCode()); + } - @PostMapping("/admin/user/v1/passbook") - public ResponseEntity getU(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, - @RequestBody Map request) throws Exception { - SBApiResponse response = passbookService.getPassbookByAdmin(requestedUserId, request); - return new ResponseEntity<>(response, response.getResponseCode()); - } + @PostMapping("/admin/user/v1/passbook") + public ResponseEntity getU(@RequestHeader(Constants.X_AUTH_USER_ID) String requestedUserId, + @RequestBody Map request) throws Exception { + SBApiResponse response = passbookService.getPassbookByAdmin(requestedUserId, request); + return new ResponseEntity<>(response, response.getResponseCode()); + } } diff --git a/src/main/java/org/sunbird/passbook/model/CompetencyPassbook.java b/src/main/java/org/sunbird/passbook/model/CompetencyPassbook.java index ec8941d69..96c80a995 100644 --- a/src/main/java/org/sunbird/passbook/model/CompetencyPassbook.java +++ b/src/main/java/org/sunbird/passbook/model/CompetencyPassbook.java @@ -5,37 +5,36 @@ /** * Competency Passbook Object for user representation - * - * @author karthik * + * @author karthik */ public class CompetencyPassbook { - private String competencyId; - private Map additionalParam; - private List> acquiredDetails; + private String competencyId; + private Map additionalParam; + private List> acquiredDetails; - public String getCompetencyId() { - return competencyId; - } + public String getCompetencyId() { + return competencyId; + } - public void setCompetencyId(String competencyId) { - this.competencyId = competencyId; - } + public void setCompetencyId(String competencyId) { + this.competencyId = competencyId; + } - public Map getAdditionalParam() { - return additionalParam; - } + public Map getAdditionalParam() { + return additionalParam; + } - public void setAdditionalParam(Map additionalParam) { - this.additionalParam = additionalParam; - } + public void setAdditionalParam(Map additionalParam) { + this.additionalParam = additionalParam; + } - public List> getAcquiredDetails() { - return acquiredDetails; - } + public List> getAcquiredDetails() { + return acquiredDetails; + } - public void setAcquiredDetails(List> acquiredDetails) { - this.acquiredDetails = acquiredDetails; - } + public void setAcquiredDetails(List> acquiredDetails) { + this.acquiredDetails = acquiredDetails; + } } diff --git a/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java b/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java index f7727c30c..60c6f1ccb 100644 --- a/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java +++ b/src/main/java/org/sunbird/passbook/model/PassbookDBInfo.java @@ -4,77 +4,77 @@ import java.util.Map; public class PassbookDBInfo { - private String userId; - private String typeName; - private String acquiredChannel; - private String typeId; - private String contextId; - private Timestamp effectiveDate; - private Map additionalParams; - private Map acquiredDetails; - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } - - public String getTypeName() { - return typeName; - } - - public void setTypeName(String typeName) { - this.typeName = typeName; - } - - public String getAcquiredChannel() { - return acquiredChannel; - } - - public void setAcquiredChannel(String acquiredChannel) { - this.acquiredChannel = acquiredChannel; - } - - public String getTypeId() { - return typeId; - } - - public void setTypeId(String typeId) { - this.typeId = typeId; - } - - public String getContextId() { - return contextId; - } - - public void setContextId(String contextId) { - this.contextId = contextId; - } - - public Timestamp getEffectiveDate() { - return effectiveDate; - } - - public void setEffectiveDate(Timestamp effectiveDate) { - this.effectiveDate = effectiveDate; - } - - public Map getAdditionalParams() { - return additionalParams; - } - - public void setAdditionalParams(Map additionalParams) { - this.additionalParams = additionalParams; - } - - public Map getAcquiredDetails() { - return acquiredDetails; - } - - public void setAcquiredDetails(Map acquiredDetails) { - this.acquiredDetails = acquiredDetails; - } + private String userId; + private String typeName; + private String acquiredChannel; + private String typeId; + private String contextId; + private Timestamp effectiveDate; + private Map additionalParams; + private Map acquiredDetails; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getAcquiredChannel() { + return acquiredChannel; + } + + public void setAcquiredChannel(String acquiredChannel) { + this.acquiredChannel = acquiredChannel; + } + + public String getTypeId() { + return typeId; + } + + public void setTypeId(String typeId) { + this.typeId = typeId; + } + + public String getContextId() { + return contextId; + } + + public void setContextId(String contextId) { + this.contextId = contextId; + } + + public Timestamp getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(Timestamp effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public Map getAdditionalParams() { + return additionalParams; + } + + public void setAdditionalParams(Map additionalParams) { + this.additionalParams = additionalParams; + } + + public Map getAcquiredDetails() { + return acquiredDetails; + } + + public void setAcquiredDetails(Map acquiredDetails) { + this.acquiredDetails = acquiredDetails; + } } diff --git a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java index 2e5d6cefd..e3261bffe 100644 --- a/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/CompetencyPassbookParser.java @@ -2,19 +2,24 @@ import java.sql.Timestamp; import java.time.Instant; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import org.sunbird.common.model.SBApiResponse; import org.sunbird.common.util.CbExtServerProperties; import org.sunbird.common.util.Constants; -import org.sunbird.common.util.ProjectUtil; import org.sunbird.passbook.competency.model.CompetencyInfo; import org.sunbird.passbook.competency.model.CompetencyPassbookInfo; import org.sunbird.passbook.model.PassbookDBInfo; @@ -25,215 +30,217 @@ @Service public class CompetencyPassbookParser implements PassbookParser { - @Autowired - CbExtServerProperties serverProperties; - - ObjectMapper mapper = new ObjectMapper(); - - @Override - public void parseDBInfo(List> passbookList, SBApiResponse response) { - if (CollectionUtils.isEmpty(passbookList)) { - response.getResult().put(Constants.COUNT, 0); - response.getResult().put(Constants.CONTENT, CollectionUtils.EMPTY_COLLECTION); - return; - } - - Map competencyMap = new HashMap(); - // Parse the read values from DB and add it into response.result object - for (Map competencyObj : passbookList) { - String userId = (String) competencyObj.get(Constants.USER_ID); - CompetencyPassbookInfo competencyPassbookInfo = null; - if (competencyMap.containsKey(userId)) { - competencyPassbookInfo = competencyMap.get(userId); + private Logger logger = LoggerFactory.getLogger(CompetencyPassbookParser.class); + + @Autowired + CbExtServerProperties serverProperties; + + ObjectMapper mapper = new ObjectMapper(); + + @Override + public void parseDBInfo(List> passbookList, SBApiResponse response) { + if (CollectionUtils.isEmpty(passbookList)) { + response.getResult().put(Constants.COUNT, 0); + response.getResult().put(Constants.CONTENT, CollectionUtils.EMPTY_COLLECTION); + return; + } + + Map competencyMap = new HashMap(); + // Parse the read values from DB and add it into response.result object + for (Map competencyObj : passbookList) { + String userId = (String) competencyObj.get(Constants.USER_ID); + CompetencyPassbookInfo competencyPassbookInfo = null; + if (competencyMap.containsKey(userId)) { + competencyPassbookInfo = competencyMap.get(userId); + } else { + competencyPassbookInfo = new CompetencyPassbookInfo(userId); + competencyMap.put(userId, competencyPassbookInfo); + } + String competencyId = (String) competencyObj.get(Constants.TYPE_ID); + CompetencyInfo competencyInfo = competencyPassbookInfo.getCompetencies().get(competencyId); + if (competencyInfo == null) { + competencyInfo = new CompetencyInfo(competencyId); + } + + if (ObjectUtils.isEmpty(competencyInfo.getAdditionalParams())) { + competencyInfo.setAdditionalParams((Map) competencyObj.get(Constants.ADDITIONAL_PARAM)); + } + Map acquiredDetail = new HashMap(); + acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); + acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); + acquiredDetail.put(Constants.EFFECTIVE_DATE, competencyObj.get(Constants.EFFECTIVE_DATE)); + acquiredDetail.put(Constants.ADDITIONAL_PARAM, + (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); + Map acquiredDetailAdditionalParam = (Map) competencyObj + .get(Constants.ACQUIRED_DETAILS); + + Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (entry.getValue() instanceof String) { + acquiredDetail.put(entry.getKey(), (String) entry.getValue()); + } else { + // TODO - We need JSON schema config to determine the type of value. + } + } + + competencyInfo.getAcquiredDetails().add(acquiredDetail); + competencyPassbookInfo.getCompetencies().put(competencyId, competencyInfo); + } + response.getResult().put(Constants.COUNT, competencyMap.size()); + response.getResult().put(Constants.CONTENT, competencyMap.values()); + } + + @Override + public String validateUpdateReqeust(Map request, String requestedUserId, + List> dbModel) { + StringBuilder errMsg = new StringBuilder(); + PassbookDBInfo passbookDbInfo = null; + Map requestBody = (Map) request.get(Constants.REQUEST); + List missingAttributes = new ArrayList(); + List errList = new ArrayList(); + Map> competencyMap = new HashMap>(); + + String compUserId = (String) requestBody.get(Constants.USER_ID); + if (StringUtils.isEmpty(compUserId)) { + missingAttributes.add(Constants.USER_ID); + } + + String typeName = (String) requestBody.get(Constants.TYPE_NAME); + if (StringUtils.isBlank(typeName)) { + missingAttributes.add(Constants.TYPE_NAME); + } else { + if (!serverProperties.getUserPassbookSupportedTypeName().contains(typeName)) { + errList.add(String.format("Invalid TypeName value. Supported TypeNames are %s", + serverProperties.getUserPassbookSupportedTypeName())); + } + } + + if (!missingAttributes.isEmpty()) { + errMsg.append("Request doesn't have mandatory parameters - [").append(missingAttributes.toString()) + .append("]. "); + } + + if (!errList.isEmpty()) { + errMsg.append(errList.toString()); + } + + List> competencyList = (List>) requestBody + .get(Constants.COMPETENCY_DETAILS); + if (CollectionUtils.isEmpty(competencyList)) { + missingAttributes.add(Constants.COMPETENCY_DETAILS); + } else if (errMsg.length() == 0) { + for (Map competency : competencyList) { + String err = validateCompetencyObject(requestedUserId, compUserId, competency, competencyMap); + if (!StringUtils.isEmpty(err)) { + errMsg.append(err); + break; + } + } + } + + if (errMsg.length() == 0) { + dbModel.addAll(competencyMap.values()); + } + return errMsg.toString(); + } + + private String validateCompetencyObject(String requestedUserId, String compUserId, + Map competencyRequest, Map> competencyMap) { + if (ObjectUtils.isEmpty(competencyRequest)) { + return "Invalid CompetencyDetail object"; + } + StringBuilder errMsg = new StringBuilder(); + List missingAttributes = new ArrayList(); + List errList = new ArrayList(); + + String competencyId = (String) competencyRequest.get(Constants.COMPETENCY_ID); + if (StringUtils.isBlank(competencyId)) { + missingAttributes.add(Constants.COMPETENCY_ID); + } + + if (competencyMap.containsKey(competencyId)) { + return String.format("Invalid Request. Competency %s is provided twice.", competencyId); + } + + Map competency = new HashMap(); + competency.put(Constants.USER_ID, compUserId); + competency.put(Constants.TYPE_ID, competencyId); + competency.put(Constants.TYPE_NAME, Constants.COMPETENCY); + + Map acquiredDetailsMap = (Map) competencyRequest + .get(Constants.ACQUIRED_DETAILS); + if (ObjectUtils.isEmpty(acquiredDetailsMap)) { + missingAttributes.add(Constants.ACQUIRED_DETAILS); + } else { + String acquiredChannel = (String) acquiredDetailsMap.get(Constants.ACQUIRED_CHANNEL); + if (StringUtils.isBlank(acquiredChannel)) { + missingAttributes.add(Constants.ACQUIRED_CHANNEL); + } else { + competency.put(Constants.ACQUIRED_CHANNEL, acquiredChannel); + // Parse additionalParams from request + Map acquiredDetailAdditionalParam = (Map) acquiredDetailsMap + .get(Constants.ADDITIONAL_PARAM); + Map acquiredDetails = new HashMap(); + if (!ObjectUtils.isEmpty(acquiredDetailAdditionalParam)) { + Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (entry.getValue() instanceof String) { + acquiredDetails.put(entry.getKey(), (String) entry.getValue()); + } else { + try { + acquiredDetails.put(entry.getKey(), mapper.writeValueAsString(entry.getValue())); + } catch (JsonProcessingException e) { + errList.add("Failed to parse acquiredDetails for competency : " + competencyId); + break; + } + } + } + } + acquiredDetails.put(Constants.CREATED_BY, requestedUserId); + acquiredDetails.put(Constants.CREATED_DATE, DateTime.now().toString()); + competency.put(Constants.ACQUIRED_DETAILS, acquiredDetails); + } + + String competencyLevelId = (String) acquiredDetailsMap.get(Constants.COMPETENCY_LEVEL_ID); + if (StringUtils.isBlank(competencyLevelId)) { + missingAttributes.add(Constants.COMPETENCY_LEVEL_ID); + } else { + competency.put(Constants.CONTEXT_ID, competencyLevelId); + } + String strEffectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); + if (StringUtils.isBlank(strEffectiveDate)) { + competency.put(Constants.EFFECTIVE_DATE, Instant.now()); + // missingAttributes.add(Constants.EFFECTIVE_DATE); } else { - competencyPassbookInfo = new CompetencyPassbookInfo(userId); - competencyMap.put(userId, competencyPassbookInfo); - } - String competencyId = (String) competencyObj.get(Constants.TYPE_ID); - CompetencyInfo competencyInfo = competencyPassbookInfo.getCompetencies().get(competencyId); - if (competencyInfo == null) { - competencyInfo = new CompetencyInfo(competencyId); - } - - if (ObjectUtils.isEmpty(competencyInfo.getAdditionalParams())) { - competencyInfo.setAdditionalParams((Map) competencyObj.get(Constants.ADDITIONAL_PARAM)); - } - Map acquiredDetail = new HashMap(); - acquiredDetail.put(Constants.ACQUIRED_CHANNEL, (String) competencyObj.get(Constants.ACQUIRED_CHANNEL)); - acquiredDetail.put(Constants.COMPETENCY_LEVEL_ID, (String) competencyObj.get(Constants.CONTEXT_ID)); - acquiredDetail.put(Constants.EFFECTIVE_DATE, competencyObj.get(Constants.EFFECTIVE_DATE)); - acquiredDetail.put(Constants.ADDITIONAL_PARAM, - (Map) competencyObj.get(Constants.ACQUIRED_DETAILS)); - Map acquiredDetailAdditionalParam = (Map) competencyObj - .get(Constants.ACQUIRED_DETAILS); - - Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); - while (iterator.hasNext()) { - Entry entry = iterator.next(); - if (entry.getValue() instanceof String) { - acquiredDetail.put(entry.getKey(), (String) entry.getValue()); - } else { - // TODO - We need JSON schema config to determine the type of value. - } - } - - competencyInfo.getAcquiredDetails().add(acquiredDetail); - competencyPassbookInfo.getCompetencies().put(competencyId, competencyInfo); - } - response.getResult().put(Constants.COUNT, competencyMap.size()); - response.getResult().put(Constants.CONTENT, competencyMap.values()); - } - - @Override - public String validateUpdateReqeust(Map request, String requestedUserId, - List> dbModel) { - StringBuilder errMsg = new StringBuilder(); - PassbookDBInfo passbookDbInfo = null; - Map requestBody = (Map) request.get(Constants.REQUEST); - List missingAttributes = new ArrayList(); - List errList = new ArrayList(); - Map> competencyMap = new HashMap>(); - - String compUserId = (String) requestBody.get(Constants.USER_ID); - if (StringUtils.isEmpty(compUserId)) { - missingAttributes.add(Constants.USER_ID); - } - - String typeName = (String) requestBody.get(Constants.TYPE_NAME); - if (StringUtils.isBlank(typeName)) { - missingAttributes.add(Constants.TYPE_NAME); - } else { - if (!serverProperties.getUserPassbookSupportedTypeName().contains(typeName)) { - errList.add(String.format("Invalid TypeName value. Supported TypeNames are %s", - serverProperties.getUserPassbookSupportedTypeName())); - } - } - - if (!missingAttributes.isEmpty()) { - errMsg.append("Request doesn't have mandatory parameters - [").append(missingAttributes.toString()) - .append("]. "); - } - - if (!errList.isEmpty()) { - errMsg.append(errList.toString()); - } - - List> competencyList = (List>) requestBody - .get(Constants.COMPETENCY_DETAILS); - if (CollectionUtils.isEmpty(competencyList)) { - missingAttributes.add(Constants.COMPETENCY_DETAILS); - } else if (errMsg.length() == 0) { - for (Map competency : competencyList) { - String err = validateCompetencyObject(requestedUserId, compUserId, competency, competencyMap); - if (!StringUtils.isEmpty(err)) { - errMsg.append(err); - break; - } - } - } - - if (errMsg.length() == 0) { - dbModel.addAll(competencyMap.values()); - } - return errMsg.toString(); - } - - private String validateCompetencyObject(String requestedUserId, String compUserId, - Map competencyRequest, Map> competencyMap) { - if (ObjectUtils.isEmpty(competencyRequest)) { - return "Invalid CompetencyDetail object"; - } - StringBuilder errMsg = new StringBuilder(); - List missingAttributes = new ArrayList(); - List errList = new ArrayList(); - - String competencyId = (String) competencyRequest.get(Constants.COMPETENCY_ID); - if (StringUtils.isBlank(competencyId)) { - missingAttributes.add(Constants.COMPETENCY_ID); - } - - if (competencyMap.containsKey(competencyId)) { - return String.format("Invalid Request. Competency %s is provided twice.", competencyId); - } - - Map competency = new HashMap(); - competency.put(Constants.USER_ID, compUserId); - competency.put(Constants.TYPE_ID, competencyId); - competency.put(Constants.TYPE_NAME, Constants.COMPETENCY); - - Map acquiredDetailsMap = (Map) competencyRequest - .get(Constants.ACQUIRED_DETAILS); - if (ObjectUtils.isEmpty(acquiredDetailsMap)) { - missingAttributes.add(Constants.ACQUIRED_DETAILS); - } else { - String acquiredChannel = (String) acquiredDetailsMap.get(Constants.ACQUIRED_CHANNEL); - if (StringUtils.isBlank(acquiredChannel)) { - missingAttributes.add(Constants.ACQUIRED_CHANNEL); - } else { - competency.put(Constants.ACQUIRED_CHANNEL, acquiredChannel); - // Parse additionalParams from request - Map acquiredDetailAdditionalParam = (Map) acquiredDetailsMap - .get(Constants.ADDITIONAL_PARAM); - Map acquiredDetails = new HashMap(); - if (!ObjectUtils.isEmpty(acquiredDetailAdditionalParam)) { - Iterator> iterator = acquiredDetailAdditionalParam.entrySet().iterator(); - while (iterator.hasNext()) { - Entry entry = iterator.next(); - if (entry.getValue() instanceof String) { - acquiredDetails.put(entry.getKey(), (String) entry.getValue()); - } else { - try { - acquiredDetails.put(entry.getKey(), mapper.writeValueAsString(entry.getValue())); - } catch (JsonProcessingException e) { - errList.add("Failed to parse acquiredDetails for competency : " + competencyId); - break; - } - } - } - } - acquiredDetails.put(Constants.CREATED_BY, requestedUserId); - acquiredDetails.put(Constants.CREATED_DATE, DateTime.now().toString()); - competency.put(Constants.ACQUIRED_DETAILS, acquiredDetails); - } - - String competencyLevelId = (String) acquiredDetailsMap.get(Constants.COMPETENCY_LEVEL_ID); - if (StringUtils.isBlank(competencyLevelId)) { - missingAttributes.add(Constants.COMPETENCY_LEVEL_ID); - } else { - competency.put(Constants.CONTEXT_ID, competencyLevelId); - } - String strEffectiveDate = (String) acquiredDetailsMap.get(Constants.EFFECTIVE_DATE); - if (StringUtils.isBlank(strEffectiveDate)) { - competency.put(Constants.EFFECTIVE_DATE, Instant.now()); - // missingAttributes.add(Constants.EFFECTIVE_DATE); - } else { - Timestamp effectiveDate = Timestamp.valueOf(strEffectiveDate); - if (effectiveDate == null) { - errList.add("Invalid effectiveDate format."); - } else { + try { + Timestamp effectiveDate = Timestamp.valueOf(strEffectiveDate); competency.put(Constants.EFFECTIVE_DATE, effectiveDate); + } catch (IllegalArgumentException e) { + logger.error(String.format("Failed to parse date: %s, Exception: ", strEffectiveDate), e); } } - } + } - Map additionalParams = (Map) competencyRequest.get(Constants.ADDITIONAL_PARAM); - if (!ObjectUtils.isEmpty(additionalParams)) { - competency.put(Constants.ADDITIONAL_PARAM, additionalParams); - } + Map additionalParams = (Map) competencyRequest.get(Constants.ADDITIONAL_PARAM); + if (!ObjectUtils.isEmpty(additionalParams)) { + competency.put(Constants.ADDITIONAL_PARAM, additionalParams); + } - if (!missingAttributes.isEmpty()) { - errMsg.append("Request doesn't have mandatory parameters - [").append(missingAttributes.toString()) - .append("]. "); - } + if (!missingAttributes.isEmpty()) { + errMsg.append("Request doesn't have mandatory parameters - [").append(missingAttributes.toString()) + .append("]. "); + } - if (!errList.isEmpty()) { - errMsg.append(errList.toString()); - } + if (!errList.isEmpty()) { + errMsg.append(errList.toString()); + } - if (errMsg.length() == 0) { - competencyMap.put(competencyId, competency); - } + if (errMsg.length() == 0) { + competencyMap.put(competencyId, competency); + } - return errMsg.toString(); - } + return errMsg.toString(); + } } diff --git a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java index f34d52f50..df302e9a7 100644 --- a/src/main/java/org/sunbird/passbook/parser/PassbookParser.java +++ b/src/main/java/org/sunbird/passbook/parser/PassbookParser.java @@ -6,8 +6,8 @@ import org.sunbird.common.model.SBApiResponse; public interface PassbookParser { - public void parseDBInfo(List> passbookList, SBApiResponse response); + public void parseDBInfo(List> passbookList, SBApiResponse response); - public String validateUpdateReqeust(Map request, String requestedUserId, - List> dbModel); + public String validateUpdateReqeust(Map request, String requestedUserId, + List> dbModel); } diff --git a/src/main/java/org/sunbird/passbook/parser/PassbookParserHandler.java b/src/main/java/org/sunbird/passbook/parser/PassbookParserHandler.java index b80f6c153..f76780ff1 100644 --- a/src/main/java/org/sunbird/passbook/parser/PassbookParserHandler.java +++ b/src/main/java/org/sunbird/passbook/parser/PassbookParserHandler.java @@ -6,15 +6,15 @@ @Component public class PassbookParserHandler { - @Autowired - private CompetencyPassbookParser competencyPassbookParser; + @Autowired + private CompetencyPassbookParser competencyPassbookParser; - public PassbookParser getPassbookParser(String typeName) { - switch (typeName) { - case "competency": - return competencyPassbookParser; - default: - return null; - } - } + public PassbookParser getPassbookParser(String typeName) { + switch (typeName) { + case "competency": + return competencyPassbookParser; + default: + return null; + } + } } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookService.java b/src/main/java/org/sunbird/passbook/service/PassbookService.java index a06f8c3b9..c8d098a13 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookService.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookService.java @@ -6,16 +6,15 @@ /** * Provides the CURD APIs for passbook feature - * - * @author karthik * + * @author karthik */ public interface PassbookService { - public SBApiResponse getPassbook(String requestedUserId, Map request); + public SBApiResponse getPassbook(String requestedUserId, Map request); + + public SBApiResponse getPassbookByAdmin(String requestedId, Map request); - public SBApiResponse getPassbookByAdmin(String requestedId, Map request); - - public SBApiResponse updatePassbook(String requestedUserId, Map request); + public SBApiResponse updatePassbook(String requestedUserId, Map request); - public SBApiResponse migrateData(); + public SBApiResponse migrateData(); } diff --git a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java index c4945d1c2..5f094e086 100644 --- a/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java +++ b/src/main/java/org/sunbird/passbook/service/PassbookServiceImpl.java @@ -1,7 +1,12 @@ package org.sunbird.passbook.service; import java.sql.Timestamp; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -210,19 +215,19 @@ private PassbookParser getPassbookParser(String typeName) { return parserHanlder.getPassbookParser(typeName); } - public SBApiResponse migrateData(){ + public SBApiResponse migrateData() { List> passbookList = cassandraOperation.getRecordsByProperties(Constants.DATABASE, Constants.USER_PASSBOOK_TABLE_OLD, null, null); SBApiResponse response = ProjectUtil.createDefaultResponse(Constants.PASSBOOK_MIGRATE_API); - if(passbookList.size()==0){ + if (passbookList.size() == 0) { response.getParams().setStatus(Constants.FAILED); response.getParams().setErrmsg("No data available to migrate"); response.setResponseCode(HttpStatus.BAD_REQUEST); } - for (Map requestMap : passbookList){ + for (Map requestMap : passbookList) { Timestamp time = ProjectUtil.getTimestampFromUUID((UUID) requestMap.get(Constants.EFFECTIVE_DATE)); - requestMap.put(Constants.EFFECTIVE_DATE,time); - cassandraOperation.insertRecord(Constants.KEYSPACE_SUNBIRD,Constants.USER_PASSBOOK_TABLE,requestMap); + requestMap.put(Constants.EFFECTIVE_DATE, time); + cassandraOperation.insertRecord(Constants.KEYSPACE_SUNBIRD, Constants.USER_PASSBOOK_TABLE, requestMap); } return response; }