diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 9ebaef766..a22c3dcd4 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -5,218 +5,239 @@ import java.util.List; public class Constants { - private Constants() { - throw new IllegalStateException("Utility class"); - } - - 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 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 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 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 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 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"; - - // 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_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"; - - // 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 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"; - - public static final String ORG_LIST = "ORGANISATION_LIST"; + private Constants() { + throw new IllegalStateException("Utility class"); + } + + 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 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 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 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 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 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 ACTIVITY_ID = "activity_id"; + public static final String ACTIVITY_TYPE = "activity_type"; + public static final String RATINGS_USER_ID = "userid"; + 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"; + + // 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_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"; + + // 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 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"; + + public static final String ORG_LIST = "ORGANISATION_LIST"; } diff --git a/src/main/java/org/sunbird/ratings/controller/RatingsController.java b/src/main/java/org/sunbird/ratings/controller/RatingsController.java new file mode 100644 index 000000000..230d91a39 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/controller/RatingsController.java @@ -0,0 +1,47 @@ +package org.sunbird.ratings.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.sunbird.common.model.SBApiResponse; +import org.sunbird.ratings.model.RequestRating; +import org.sunbird.ratings.service.RatingService; + +import javax.validation.Valid; + +@RestController +public class RatingsController { + + @Autowired + RatingService ratingService; + + // ----------------- Public APIs -------------------- + + @PostMapping("/ratings/v1/upsert") + public ResponseEntity upsertRating(@Valid @RequestBody RequestRating requestRatingBody) { + SBApiResponse response = ratingService.upsertRating(requestRatingBody); + return new ResponseEntity<>(response, response.getResponseCode()); + + } + + @GetMapping("/ratings/v1/read/{activity_Type}/{activity_Id}/{userId}") + public ResponseEntity getRating(@PathVariable("activity_Id") String activity_Id, + @PathVariable("activity_Type") String activity_Type, + @PathVariable("userId") String userId) { + SBApiResponse response = ratingService.getRatings(activity_Id, activity_Type, userId); + return new ResponseEntity<>(response, response.getResponseCode()); + + } +// @GetMapping("/ratings/v1/search") +// public ResponseEntity> getUsersList() { +// return new ResponseEntity<>(ratingService.getUsers(activity_Id, activity_Type, userId), HttpStatus.OK); +// } + + +// @PostMapping("/ratings/v1/summary") +// public ResponseEntity getRatingSummary( +// @RequestParam( String activity_Id) throws Exception { +// return new ResponseEntity<>(response, response.getResponseCode()); +// } +} + diff --git a/src/main/java/org/sunbird/ratings/exception/ValidationException.java b/src/main/java/org/sunbird/ratings/exception/ValidationException.java new file mode 100644 index 000000000..a0f31c7f3 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/exception/ValidationException.java @@ -0,0 +1,68 @@ +package org.sunbird.ratings.exception; + + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import java.util.List; + +@ResponseStatus(value = HttpStatus.BAD_REQUEST) +@ResponseBody +public class ValidationException extends RuntimeException { + private static final long serialVersionUID = 1L; + + private String codeMessage = "Validation Exception occurred with these details :"; + /** + * message String ResponseCode. + */ + private List message; + /** + * responseCode int ResponseCode. + */ + private int responseCode; + + public void setMessage(List message) { + this.message = message; + } + + public String getCode() { + return codeMessage; + } + + public void setCode(String code) { + this.codeMessage = code; + } + + public int getResponseCode() { + return responseCode; + } + + public void setResponseCode(int responseCode) { + this.responseCode = responseCode; + } + + public String getMessage() { + return message.toString(); + } + + + public ValidationException(List message) { + this.message = message; + } + + public ValidationException(List message, int responseCode) { + super(); + this.message = message; + this.responseCode = responseCode; + } + + @Override + public String toString() { + return "ValidationException{" + + "code='" + codeMessage + '\'' + + ", message='" + message + '\'' + + ", responseCode=" + responseCode + + '}'; + } +} diff --git a/src/main/java/org/sunbird/ratings/model/RatingMessage.java b/src/main/java/org/sunbird/ratings/model/RatingMessage.java new file mode 100644 index 000000000..fe5e05ab2 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/model/RatingMessage.java @@ -0,0 +1,112 @@ +package org.sunbird.ratings.model; + +public class RatingMessage { + public Integer version = 1; + private String action = "ratingUpdate"; + private String activity_id; + private String activity_Type; + private String user_id; + private String created_Date; + private UpdatedValues prevValues; + private UpdatedValues updatedValues; + + + public RatingMessage( String action, String activity_id, String activity_Type, String user_id, String created_Date) { + this.action = action; + this.activity_id = activity_id; + this.activity_Type = activity_Type; + this.user_id = user_id; + this.created_Date = created_Date; + } + + + public String getActivity_id() { + return activity_id; + } + + public void setActivity_id(String activity_id) { + this.activity_id = activity_id; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getActivity_Type() { + return activity_Type; + } + + public void setActivity_Type(String activity_Type) { + this.activity_Type = activity_Type; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getCreated_Date() { + return created_Date; + } + + public void setCreated_Date(String created_Date) { + this.created_Date = created_Date; + } + + public UpdatedValues getPrevValues() { + return prevValues; + } + + public void setPrevValues(UpdatedValues prevValues) { + this.prevValues = prevValues; + } + + public UpdatedValues getUpdatedValues() { + return updatedValues; + } + + public void setUpdatedValues(UpdatedValues updatedValues) { + this.updatedValues = updatedValues; + } + + public static class UpdatedValues { + public String updatedOn; + public Float rating; + public String review; + + public String getUpdatedOn() { + return updatedOn; + } + + public void setUpdatedOn(String updatedOn) { + this.updatedOn = updatedOn; + } + + public Float getRating() { + return rating; + } + + public void setRating(Float rating) { + this.rating = rating; + } + + public String getReview() { + return review; + } + + public void setReview(String review) { + this.review = review; + } + + } + +} + + diff --git a/src/main/java/org/sunbird/ratings/model/RequestRating.java b/src/main/java/org/sunbird/ratings/model/RequestRating.java new file mode 100644 index 000000000..4b0546ba4 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/model/RequestRating.java @@ -0,0 +1,52 @@ +package org.sunbird.ratings.model; + +public class RequestRating { + String activity_Id; + String userId; + String activity_type; + Float rating; + String review ; + + public String getActivity_Id() { + return activity_Id; + } + + public void setActivity_Id(String activity_Id) { + this.activity_Id = activity_Id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getActivity_type() { + return activity_type; + } + + public void setActivity_type(String activity_type) { + this.activity_type = activity_type; + } + + public Float getRating() { + return rating; + } + + public void setRating(Float rating) { + this.rating = rating; + } + + public String getReview() { + return review; + } + + public void setReview(String review) { + this.review = review; + } + + + +} diff --git a/src/main/java/org/sunbird/ratings/responsecode/ResponseCode.java b/src/main/java/org/sunbird/ratings/responsecode/ResponseCode.java new file mode 100644 index 000000000..2ff484689 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/responsecode/ResponseCode.java @@ -0,0 +1,134 @@ +package org.sunbird.ratings.responsecode; + +import org.apache.commons.lang3.StringUtils; + +public enum ResponseCode { + invalidRating(ResponseMessage.Key.INVALID_RATING, ResponseMessage.Message.INVALID_RATING), + invalidReview( + ResponseMessage.Key.INVALID_REVIEW, ResponseMessage.Message.INVALID_REVIEW), + invalidInput( + ResponseMessage.Key.INVALID_INPUT, ResponseMessage.Message.INVALID_INPUT), + invalidUser( + ResponseMessage.Key.INVALID_INPUT, ResponseMessage.Message.INVALID_INPUT), + + success(ResponseMessage.Key.SUCCESS_MESSAGE, ResponseMessage.Message.SUCCESS_MESSAGE), + + OK(200), + UPDATED(201), + BAD_REQUEST(400), + SERVER_ERROR(500), + RESOURCE_NOT_FOUND(404), + FORBIDDEN(403), + SERVICE_UNAVAILABLE(503), + PARTIAL_SUCCESS_RESPONSE(206); + + private int responseCode; + /** + * error code contains String value + */ + private String errorCode; + /** + * errorMessage contains proper error message. + */ + private String errorMessage; + + private ResponseCode(String errorCode, String errorMessage) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } + + private ResponseCode(String errorCode, String errorMessage, int responseCode) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + this.responseCode = responseCode; + } + + /** + * @param errorCode + * @return + */ + public String getMessage(int errorCode) { + return ""; + } + + /** + * @return + */ + public String getErrorCode() { + return errorCode; + } + + /** + * @param errorCode + */ + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + /** + * @return + */ + public String getErrorMessage() { + return errorMessage; + } + + /** + * @param errorMessage + */ + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + /** + * This method will provide status message based on code + * + * @param code + * @return String + */ + public static String getResponseMessage(String code) { + if (StringUtils.isBlank(code)) { + return ""; + } + ResponseCode responseCodes[] = ResponseCode.values(); + for (ResponseCode actionState : responseCodes) { + if (actionState.getErrorCode().equals(code)) { + return actionState.getErrorMessage(); + } + } + return ""; + } + + private ResponseCode(int responseCode) { + this.responseCode = responseCode; + } + + public int getResponseCode() { + return responseCode; + } + + public void setResponseCode(int responseCode) { + this.responseCode = responseCode; + } + + + /** + * This method will provide ResponseCode enum based on error code + * + * @param errorCode + * @return String + */ + public static ResponseCode getResponse(String errorCode) { + if (StringUtils.isBlank(errorCode)) { + return null; + } else { + // ResponseCode value = null; + ResponseCode responseCodes[] = ResponseCode.values(); + for (ResponseCode response : responseCodes) { + if (response.getErrorCode().equals(errorCode)) { + return response; + } + } + return null; + } + } +} diff --git a/src/main/java/org/sunbird/ratings/responsecode/ResponseMessage.java b/src/main/java/org/sunbird/ratings/responsecode/ResponseMessage.java new file mode 100644 index 000000000..99b00b091 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/responsecode/ResponseMessage.java @@ -0,0 +1,23 @@ +package org.sunbird.ratings.responsecode; + + +public interface ResponseMessage { + + interface Message { + + String INVALID_RATING = "Rating must be between 1 and 5."; + String INVALID_REVIEW = "Review must contain only alphanumeric string."; + String INVALID_INPUT = "Field must not be empty."; + String SUCCESS_MESSAGE = "Success."; + String INVALID_USER = "Invalid User."; + + } + + interface Key { + String INVALID_RATING = "INVALID_RATING_RANGE"; + String INVALID_REVIEW = "INVALID_REVIEW"; + String INVALID_INPUT = "INVALID_INPUT"; + String SUCCESS_MESSAGE = "SUCCESS_MESSAGE"; + String INVALID_USER = "INVALID_USER"; + } +} \ No newline at end of file diff --git a/src/main/java/org/sunbird/ratings/service/RatingService.java b/src/main/java/org/sunbird/ratings/service/RatingService.java new file mode 100644 index 000000000..2bfe6a554 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/service/RatingService.java @@ -0,0 +1,15 @@ +package org.sunbird.ratings.service; + +import org.sunbird.common.model.SBApiResponse; +import org.sunbird.ratings.model.RequestRating; + +public interface RatingService { + public SBApiResponse getRatings(String activity_Id, String activity_Type, String userId); + + public SBApiResponse upsertRating(RequestRating requestRating); + + public SBApiResponse getUsers(String activity_Id, String activity_Type, String userId);//To do + + public SBApiResponse getRatingSummary(String activity_Id, String activity_Type); //To do + +} diff --git a/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java b/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java new file mode 100644 index 000000000..9bf38d0b4 --- /dev/null +++ b/src/main/java/org/sunbird/ratings/service/RatingServiceImpl.java @@ -0,0 +1,192 @@ +package org.sunbird.ratings.service; + +import com.datastax.driver.core.utils.UUIDs; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.sunbird.cassandra.utils.CassandraOperation; +import org.sunbird.common.model.SBApiResponse; +import org.sunbird.common.util.Constants; +import org.sunbird.core.producer.Producer; +import org.sunbird.ratings.exception.ValidationException; +import org.sunbird.ratings.model.RatingMessage; +import org.sunbird.ratings.model.RequestRating; +import org.sunbird.ratings.responsecode.ResponseCode; +import org.sunbird.ratings.responsecode.ResponseMessage; + +import java.util.*; +import java.util.regex.Pattern; + +@Service +public class RatingServiceImpl implements RatingService { + private final ObjectMapper mapper = new ObjectMapper(); + + private final Logger logger = LoggerFactory.getLogger(getClass().getName()); + + @Autowired + CassandraOperation cassandraOperation; + + @Autowired + Producer kafkaProducer; + + @Value("${kafka.topics.parent.rating.event}") + public String updateRatingTopicName; + + //TO DO + @Override + public SBApiResponse getRatings(String activity_Id, String activity_Type, String userId) { + SBApiResponse response = new SBApiResponse(Constants.API_RATINGS_READ); + + try { + Map request = new HashMap<>(); + request.put(Constants.ACTIVITY_ID, activity_Id); + request.put(Constants.ACTIVITY_TYPE, activity_Type); + request.put(Constants.RATINGS_USER_ID, userId); + + List> existingDataList = cassandraOperation.getRecordsByProperties(Constants.KEYSPACE_SUNBIRD, + Constants.TABLE_RATINGS, request, null); + if (!existingDataList.isEmpty()) { + response.put(Constants.MESSAGE, Constants.SUCCESSFUL); + response.put(Constants.RESPONSE, existingDataList); + response.setResponseCode(HttpStatus.OK); + } + else { + String errMsg = "No ratings found for : " + activity_Id + ", activity_Type: " + activity_Type; + response.put(Constants.MESSAGE, Constants.FAILED); + response.getParams().setErrmsg(errMsg); + response.setResponseCode(HttpStatus.BAD_REQUEST); + } + } catch (Exception e) { + System.out.println("The exception has occurred in read ratings" + e.getMessage()); + e.printStackTrace(); + } + return response; + } + + //TO DO + @Override + public SBApiResponse getUsers(String activity_Id, String activity_Type, String userId) { + return null; + } + + + //TO DO + @Override + public SBApiResponse getRatingSummary(String activity_Id, String activity_Type) { + return null; + } + + @Override + public SBApiResponse upsertRating(RequestRating requestRating) { + UUID timeBasedUuid = UUIDs.timeBased(); + + SBApiResponse response = new SBApiResponse(Constants.API_RATINGS_UPDATE); + RatingMessage ratingMessage; + + try { + validateRatingsInfo(requestRating); + + Map request = new HashMap<>(); + request.put(Constants.ACTIVITY_ID, requestRating.getActivity_Id()); + request.put(Constants.ACTIVITY_TYPE, requestRating.getActivity_type()); + request.put(Constants.RATINGS_USER_ID, requestRating.getUserId()); + + + List> existingDataList = cassandraOperation.getRecordsByProperties(Constants.KEYSPACE_SUNBIRD, + Constants.TABLE_RATINGS, request, null); + + if (!existingDataList.isEmpty()) { + + Map updateRequest = new HashMap<>(); + updateRequest.put(Constants.RATING, requestRating.getRating()); + updateRequest.put(Constants.REVIEW, requestRating.getReview()); + updateRequest.put(Constants.UPDATED_ON, timeBasedUuid); + + Map prevInfo = existingDataList.get(0); + cassandraOperation.updateRecord(Constants.KEYSPACE_SUNBIRD, Constants.TABLE_RATINGS, updateRequest, + request); + ratingMessage = new RatingMessage("ratingUpdate", requestRating.getActivity_Id(), requestRating.getActivity_type(), + requestRating.getUserId(), String.valueOf((prevInfo.get("createdon")))); + + ratingMessage.setPrevValues(processEventMessage(String.valueOf(prevInfo.get("createdon")), + (Float) prevInfo.get("rating"), (String) prevInfo.get("review"))); + ratingMessage.setUpdatedValues(processEventMessage(String.valueOf(updateRequest.get(Constants.UPDATED_ON)), + requestRating.getRating(), requestRating.getReview())); + } else { + request.put(Constants.CREATED_ON, timeBasedUuid); + request.put(Constants.RATING, requestRating.getRating()); + request.put(Constants.REVIEW, requestRating.getReview()); + request.put(Constants.UPDATED_ON, timeBasedUuid); + + cassandraOperation.insertRecord(Constants.KEYSPACE_SUNBIRD, Constants.TABLE_RATINGS, request); + + ratingMessage = new RatingMessage("ratingAdd", requestRating.getActivity_Id(), requestRating.getActivity_type(), + requestRating.getUserId(), String.valueOf(timeBasedUuid)); + + ratingMessage.setUpdatedValues(processEventMessage(String.valueOf(request.get(Constants.CREATED_ON)), + requestRating.getRating(), requestRating.getReview())); + response.put(Constants.DATA, request); + + } + response.setResponseCode(HttpStatus.OK); + response.getParams().setStatus(Constants.SUCCESSFUL); + kafkaProducer.push(updateRatingTopicName, ratingMessage); + } catch (ValidationException ex) { + return processExceptionBody(response, ex, "", HttpStatus.BAD_REQUEST); + } catch (Exception ex) { + String errMsg = "Exception occurred while adding the course review : "; + return processExceptionBody(response, ex, errMsg, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return response; + } + + public RatingMessage.UpdatedValues processEventMessage(String date, Float rating, String review) { + RatingMessage.UpdatedValues values = new RatingMessage.UpdatedValues(); + values.setUpdatedOn(date); + values.setRating(rating); + values.setReview(review); + return values; + } + + private void validateRatingsInfo(RequestRating requestRating) { + List errObjList = new ArrayList<>(); + + if (StringUtils.isEmpty(requestRating.getActivity_Id())) { + errObjList.add(ResponseMessage.Message.INVALID_INPUT); + } + if (StringUtils.isEmpty(requestRating.getActivity_type())) { + errObjList.add(ResponseMessage.Message.INVALID_INPUT); + } + if (StringUtils.isEmpty((String.valueOf(requestRating.getRating()))) || requestRating.getRating() < 1 + || requestRating.getRating() > 5) { + errObjList.add(ResponseMessage.Message.INVALID_INPUT + ResponseMessage.Message.INVALID_RATING); + } + if (StringUtils.isEmpty(requestRating.getReview()) || (!Pattern.matches("^[A-Za-z0-9, ]++$", requestRating.getReview()))) { + errObjList.add(ResponseMessage.Message.INVALID_REVIEW); + + } + if (StringUtils.isEmpty(requestRating.getUserId())) { + errObjList.add(ResponseMessage.Message.INVALID_USER); + } + if (!CollectionUtils.isEmpty(errObjList)) { + throw new ValidationException(errObjList, ResponseCode.BAD_REQUEST.getResponseCode()); + } + } + + public SBApiResponse processExceptionBody(SBApiResponse response, Exception ex, + String exceptionMessage, HttpStatus status) { + String errMsg = exceptionMessage + ex.getMessage(); + logger.error(errMsg, ex.toString()); + response.getParams().setErrmsg(errMsg); + response.setResponseCode(status); + return response; + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 008c4ce4e..4b56c8c8a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -55,6 +55,7 @@ kafka.topics.org.creation=orgCreation kafka.topics.userrole.audit=userRoleAuditTopic kafka.topics.wat.telemetry.event=watTelemetryTopic kafka.topics.parent.telemetry.event=dev.telemetry.raw +kafka.topics.parent.rating.event = test_ratings #Kafka Server spring.kafka.bootstrap.servers=localhost:9092