def snedNotification(builder):
     service = SendPushNotificationService()
     m_converter = ConvertJSONToPb()
     m_convertPbtoJson = ConvertPbToJSON()
     builder = m_converter.converjsontoPBProper(response=builder,
                                                instanceType=pushnotification_pb2.PushNotificationRequestPb())
     return m_convertPbtoJson.converPbtojson(service.sendNotification(pushNotificationRequestPb=builder))
 def getLogin(builder):
     service = LoginModuleService()
     m_converter = ConvertJSONToPb()
     m_convertPbtoJson = ConvertPbToJSON()
     builder = m_converter.converjsontoPBProper(
         response=builder, instanceType=login_pb2.LoginRequestPb())
     return m_convertPbtoJson.converPbtojson(
         service.login(loginRequestPb=builder))
 def createRegistrationworker(builder):
     service = RegistrationWorkerService()
     m_converter = ConvertJSONToPb()
     m_convertPbtoJson = ConvertPbToJSON()
     builder = m_converter.converjsontoPBProper(
         response=builder,
         instanceType=registration_pb2.RegistrationRequestPb())
     return m_convertPbtoJson.converPbtojson(
         service.registration(registrationRequestPb=builder))
class CreateLoginEntity:
    m_entityId = EntityService()
    m_helper = EntityHelper()
    m_queryExecutor = QueryExecuter()
    m_converter = ConvertPbToJSON()
    builder = None
    id = None

    def start(self, builder):
        self.builder = builder
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        self.id = self.m_entityId.get()
        self.controlFlow(currentState=States.CREATE_LOGIN_ENTITY)

    def createEntityId(self):
        loginEntity = self.m_helper.createEntity(id=self.id, builder=self.builder)
        self.builder = self.m_queryExecutor.create(builder=loginEntity,table=Tables.LOGIN.name)
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.CREATE_LOGIN_ENTITY):
            self.createEntityId()
        elif (currentState == States.DONE):
            self.done()
class GetWorkerTypeEntity:
    m_helper = EntityHelper()
    m_queryExecutor = QueryExecuter()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    builder = None
    id = None

    def start(self, id):
        self.id = id
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        workerPb = self.m_queryExecutor.get(id=self.id,
                                            table=Tables.WORKER_TYPE.name)
        if (workerPb != None):
            self.builder = self.m_converterJsonToPb.converjsontoPBProper(
                response=workerPb, instanceType=workertype_pb2.WorkertypePb())
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.DONE):
            self.done()
class GetPushNotificationEntity:
    m_helper = EntityHelper()
    m_queryExecutor = QueryExecuter()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    builder = None
    id = None

    def start(self, id):
        self.id = id
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        pushNotificationPb = self.m_queryExecutor.get(
            id=self.id, table=Tables.PUSH_NOTIFICATON.name)
        if (pushNotificationPb != None):
            self.builder = self.m_converterJsonToPb.converjsontoPBProper(
                response=pushNotificationPb,
                instanceType=pushnotification_pb2.PushNotificationPb())
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.DONE):
            self.done()
Example #7
0
class UpdateLoginEntity:
    m_helper = EntityHelper()
    m_getEntity = GetLoginEntity()
    m_queryExecutor = QueryExecuter()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    oldPb = None
    builder = None
    id = None

    def start(self, id, builder):
        self.id = id
        self.builder = builder
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        self.m_getEntity.start(id=self.id)
        self.oldPb = self.m_getEntity.done()
        self.controlFlow(currentState=States.UPDATE_ENTITY_ID)

    def updateEntity(self):
        newPb = self.m_queryExecutor.update(id=self.id,builder=self.builder,table=Tables.LOGIN.name)
        self.builder = newPb
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.UPDATE_ENTITY_ID):
            self.updateEntity()
        elif (currentState == States.DONE):
            self.done()
Example #8
0
class ConsumerSearchEntity:
    m_helper = EntityHelper()
    m_query = QueryExecuter()
    m_searchHandler = ConsumerSearcher()
    m_converterPbtoJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    builder = None
    id = None
    consumerResp = None
    consumerSearchResponse = ConsumerSearchResponsePb()

    def start(self, consumersearchreqPb):
        self.builder = consumersearchreqPb
        self.controlFlow(currentState=States.GET_SEARCH)

    def getSearch(self):
        consumerResp = self.m_searchHandler.handle(consumerpb=self.builder)
        if (consumerResp != None):
            self.consumerResp = consumerResp
        self.controlFlow(currentState=States.FORM_RESPONSE)

    def getFormResponse(self):
        if (self.consumerResp != None):
            self.consumerSearchResponse = self.m_helper.consumerRespose(
                consumerResp=self.consumerResp)
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_SEARCH):
            self.getSearch()
        elif (currentState == States.FORM_RESPONSE):
            self.getFormResponse()
        elif (currentState == States.DONE):
            self.done()
class WorkerCache(BasicCache):
    m_workerService = WorkerService()
    m_convertorJsonToPb = ConvertJSONToPb()
    m_convertorPbToJson = ConvertPbToJSON()

    def getUnchecked(self, key):
        if (self.get(key=key) != None):
            return self.m_convertorJsonToPb.converjsontoPBProper(
                response=self.get(key=key), instanceType=worker_pb2.WorkerPb())
        else:
            self.set(key=key,
                     value=self.m_convertorPbToJson.converPbtojsonString(
                         builder=self.m_workerService.get(id=key)))
        return self.m_convertorJsonToPb.converjsontoPBProper(
            response=self.get(key=key), instanceType=worker_pb2.WorkerPb())
class UpdateConsumerEntity:
    m_helper = EntityHelper()
    m_getEntity = GetConsumerEntity()
    m_queryExecutor = QueryExecuter()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    m_compareConsumerPb = ConsumerComparetor()
    oldPb = None
    builder = None
    id = None

    def start(self, id, builder):
        self.id = id
        self.builder = builder
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        self.m_getEntity.start(id=self.id)
        self.oldPb = self.m_getEntity.done()
        if (self.oldPb == None):
            self.controlFlow(currentState=States.DONE)
        self.controlFlow(currentState=States.COMPARE_PB)

    def comaprePb(self):
        self.m_compareConsumerPb.compareConsumerPb(oldPb=self.oldPb,
                                                   newPb=self.builder)
        self.controlFlow(currentState=States.UPDATE_ENTITY_ID)

    def updateEntity(self):
        newPb = self.m_queryExecutor.update(id=self.id,
                                            builder=self.builder,
                                            table=Tables.CONSUMER_DATA.name)
        self.builder = newPb
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.COMPARE_PB):
            self.comaprePb()
        elif (currentState == States.UPDATE_ENTITY_ID):
            self.updateEntity()
        elif (currentState == States.DONE):
            self.done()
class PushNotificationSearchEntity:
    m_helper = EntityHelper()
    m_queryExecutor = QueryExecuter()
    m_searchHandler = PushNotificationSearcher()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    builder = None
    id = None
    Resp = None
    pushNotificationSearchResponse = PushNotificationSearchResponsePb()

    def start(self, pushNotificationSearchReqPb):
        self.builder = pushNotificationSearchReqPb
        self.controlFlow(currentState=States.GET_SEARCH)

    def done(self):
        return self.Resp

    def getSearch(self):
        pushNotificatonResp = self.m_searchHandler.handle(
            pushNotificationSearchPb=self.builder)
        if (pushNotificatonResp != None):
            self.Resp = pushNotificatonResp
        self.controlFlow(currentState=States.FORM_RESPONSE)

    def getFormResponse(self):
        if (self.Resp != None):
            self.Resp = self.m_helper.pushNotificationResponse(
                pushNotificationResp=self.Resp)
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_SEARCH):
            self.getSearch()
        elif (currentState == States.FORM_RESPONSE):
            self.getFormResponse()
        elif (currentState == States.DONE):
            self.done()
class WorkerTypeSearchEntity:
    m_helper = EntityHelper()
    m_queryExecutor = QueryExecuter()
    m_searchHandler = WorkerTypeSearcher()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    builder = None
    id = None
    workerTypeResp = None
    workerTypeSearchResponse = WorkerTypeSearchResponsePb()

    def start(self, workerTypePb):
        self.builder = workerTypePb
        self.controlFlow(currentState=States.GET_SEARCH)

    def done(self):
        return self.workerTypeSearchResponse

    def getSearch(self):
        workerTypeResp = self.m_searchHandler.handle(workerTypepb=self.builder)
        if (workerTypeResp != None):
            self.workerTypeResp = workerTypeResp
        self.controlFlow(currentState=States.FORM_RESPONSE)

    def getFormResponse(self):
        if (self.workerTypeResp != None):
            self.workerTypeSearchResponse = self.m_helper.workerTypeResponse(
                workerTpeResp=self.workerTypeResp)
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_SEARCH):
            self.getSearch()
        elif (currentState == States.FORM_RESPONSE):
            self.getFormResponse()
        elif (currentState == States.DONE):
            self.done()
class ResponseHandlerHelper:
    m_convertToJson = ConvertPbToJSON()

    def getProtobufToJSON(self, uipb):
        return json.dumps(json.loads(
            self.m_convertToJson.converPbtojson(uipb)),
                          separators=(',', ':'))

    def sendValidResponse(self, uipb):
        return Response(self.getProtobufToJSON(uipb),
                        status=200,
                        mimetype='application/json')

    def getRequestData(self, request):
        if (not "query" in str(request.full_path)):
            data = request.full_path.replace(request.path, '')
            return data.replace("?", '')
        else:
            return request.args.get('query')

    def isJson(self, json):
        if (Strings.isEmpty(str(json))):
            return None
        elif ("{" in str(json)):
            if (self.json_validator(json)):
                return True
            else:
                return JSON_VALIDATION_ERROR
        else:
            return False

    def json_validator(data):
        try:
            json.loads(data)
            return True
        except ValueError as error:
            return False
 def getWorkerType(id):
     service = WorkerTypeService()
     m_convertPbtoJson = ConvertPbToJSON()
     return m_convertPbtoJson.converPbtojson(service.get(id=id))
Example #15
0
class UpdateQueryCF():
    m_id = None
    m_pb = None
    m_response = None
    m_pbFromDb = None
    m_json = None
    m_table = None
    m_instance = None
    m_convertor = None
    m_comparetor = None
    m_check = False

    def __init__(self, comparetor, convertor, instance, table):
        self.m_convertor = convertor
        self.m_comparetor = comparetor
        self.m_table = table
        self.m_instance = instance

    m_convertToPb = ConvertJSONToPb()
    m_convertToJson = ConvertPbToJSON()
    m_getQueryExecutor = GetQueryExecutor()
    m_updateQueryExecutor = UpdateQueryExecutor()

    def start(self, id, pb):
        self.m_id = id
        self.m_pb = pb
        self.controlFlow(currentState=State.CHECK_ID_IS_EMPTY)

    def done(self):
        return self.m_pbFromDb

    def checkIdIsEmpty(self):
        if (self.m_id == None):
            assert True, "id Cannot be Empty"
        else:
            self.controlFlow(currentState=State.CHECK_PB_IS_EMPTY)

    def checkPbIsEmpty(self):
        if (self.m_pb == None):
            assert True, "Pb Cannot be Empty"
        else:
            self.controlFlow(currentState=State.GET_FROM_DB)

    def getFromDb(self):
        resp = self.m_getQueryExecutor.get(id=self.m_id,
                                           table=self.m_table.tableName())
        if (resp != None):
            self.m_response = resp
            self.controlFlow(currentState=State.CONVERT_TO_PB)
        elif (self.m_pb.dbInfo.id != self.m_pbFromDb.dbInfo.id):
            raise Exception('id NOT_MATCHED you are updating wrong Entity ' +
                            MessageToJson(self.m_pb))
        else:
            # self.controlFlow(currentState=State.DONE)
            raise Exception('id NOT_FOUND or UNEXPECTED ERROR' + self.m_id)

    def convertJsonToPb(self):
        self.m_pbFromDb = self.m_convertToPb.converjsontoPBProper(
            response=self.m_response, instanceType=self.m_instance)
        if (self.m_pbFromDb == None):
            raise Exception('Error while Converting to Pb' + self.m_response)
        else:
            if (self.m_check):
                self.controlFlow(currentState=State.DONE)
            else:
                self.m_check = True
                self.controlFlow(currentState=State.COMPARE_BOTH_PBS)

    def comapreBothPbs(self):
        resp = self.m_comparetor.compare(newPb=self.m_pb,
                                         oldPb=self.m_pbFromDb)
        if (resp != None):
            self.m_pb = resp
            self.controlFlow(currentState=State.CONVERT_TO_JSON)
        else:
            raise Exception('UPDATE FAILED due to improper UiPb' +
                            MessageToJson(self.m_pb))

    def convertToJson(self):
        self.m_json = self.m_convertToJson.converPbtojsonString(
            builder=self.m_pb)
        if (self.m_json == None):
            raise Exception('Convert to json Failed' +
                            MessageToJson(self.m_pb))
        else:
            self.controlFlow(currentState=State.UPDATE_TO_DB)

    def updateToDb(self):
        resp = self.m_updateQueryExecutor.update(
            id=self.m_id, json=self.m_json, table=self.m_table.tableName())
        if (resp == None):
            raise Exception('Update to database Failed' +
                            MessageToJson(self.m_pb))
        else:
            self.controlFlow(currentState=State.GET_FROM_DB)

    def controlFlow(self, currentState):
        if (currentState == State.CHECK_ID_IS_EMPTY):
            self.checkIdIsEmpty()
        elif (currentState == State.CHECK_PB_IS_EMPTY):
            self.checkPbIsEmpty()
        elif (currentState == State.GET_FROM_DB):
            self.getFromDb()
        elif (currentState == State.CONVERT_TO_PB):
            self.convertJsonToPb()
        elif (currentState == State.COMPARE_BOTH_PBS):
            self.comapreBothPbs()
        elif (currentState == State.CONVERT_TO_JSON):
            self.convertToJson()
        elif (currentState == State.UPDATE_TO_DB):
            self.updateToDb()
        elif (currentState == State.DONE):
            self.done()
 def getConsumer(id):
     service = ConsumerService()
     m_convertPbtoJson = ConvertPbToJSON()
     return m_convertPbtoJson.converPbtojson(service.get(id=id))
Example #17
0
class UpdatePushNotificationEntity:
    m_helper = EntityHelper()
    m_workerService = WorkerService()
    m_getEntity = GetPushNotificationEntity()
    m_queryExecutor = QueryExecuter()
    m_converterPbToJson = ConvertPbToJSON()
    m_converterJsonToPb = ConvertJSONToPb()
    m_comparePushNotificationPb = PushNotificationComparetor()
    oldPb = None
    builder = None
    id = None
    m_worker = None

    def start(self, id, builder):
        self.id = id
        self.builder = builder
        self.controlFlow(currentState=States.GET_ENTITY_ID)

    def done(self):
        return self.builder

    def getEntityId(self):
        self.m_getEntity.start(id=self.id)
        self.oldPb = self.m_getEntity.done()
        if (self.oldPb == None):
            self.controlFlow(currentState=States.DONE)
        self.controlFlow(currentState=States.COMPARE_PB)

    def comaprePb(self):
        self.m_comparePushNotificationPb.comaprePushNotifiactionPb(
            oldPb=self.oldPb, newPb=self.builder)
        self.controlFlow(currentState=States.UPDATE_ENTITY_ID)

    def updateEntity(self):
        newPb = self.m_queryExecutor.update(id=self.id,
                                            builder=self.builder,
                                            table=Tables.PUSH_NOTIFICATON.name)
        self.builder = newPb
        self.controlFlow(currentState=States.GET_WORKER)

    def getWorker(self):
        worker = self.m_workerService.get(id=self.builder.workerRef.dbInfo.id)
        if (worker != None):
            self.m_worker = worker
        self.controlFlow(currentState=States.UPDATE_PUSHNOTIFICATION_IN_WORKER)

    def updateWorker(self):
        self.m_worker.pushNotificationRef.name.canonicalName = self.builder.tokenId
        worker = self.m_workerService.update(id=self.m_worker.dbInfo.id,
                                             builder=self.m_worker)
        if (worker != None):
            self.m_worker = worker
        self.controlFlow(currentState=States.DONE)

    def controlFlow(self, currentState):
        if (currentState == States.GET_ENTITY_ID):
            self.getEntityId()
        elif (currentState == States.COMPARE_PB):
            self.comaprePb()
        elif (currentState == States.UPDATE_ENTITY_ID):
            self.updateEntity()
        elif (currentState == States.GET_WORKER):
            self.getWorker()
        elif (currentState == States.UPDATE_PUSHNOTIFICATION_IN_WORKER):
            self.updateWorker()
        elif (currentState == States.DONE):
            self.done()
class DatabaseHelper:
    m_pbConvertor = ConvertPbToJSON()
    BASE_QUERY = "SELECT * FROM"
    BASE_UPDATE_QUERY = "UPDATE"
    BASE_INSERT_QUERY = 'INSERT INTO'
    BASE_RAW_DATA_QUERY = "SELECT raw_data FROM "
    BASE_COUNT_RAW_DATA_QUERY = "SELECT count(raw_data) FROM "

    def getBaseQuery(self):
        return self.BASE_QUERY

    def getQuotedString(self, data):
        return '"' + data + '"'

    def getSingleQuotedString(self, data):
        return "'" + data + "'"

    def getEntityQuery(self, data):
        return self.BASE_QUERY + ' "' + data + '"'

    def updateEntityQuery(self, data, value):
        return self.BASE_UPDATE_QUERY + ' "' + data + '"' + " SET dbid = " + value + " WHERE id = 1"

    def getInsertQuery(self, table, data):
        if (table == Tables.WORKER_TYPE.name):
            print(type(data.workerType))
            return self.BASE_INSERT_QUERY + ' "' + table + '"' + "( dbid ,workertype, raw_data) " + " VALUES " + "(" + self.getSingleQuotedString(
                data.dbInfo.id) + " , " + self.getSingleQuotedString(
                    str(WorkerTypeEnum.Name(data.workerType))
                ) + " , " + self.m_pbConvertor.converPbtojsonString(
                    builder=data) + ");"
        else:
            return self.BASE_INSERT_QUERY + ' "' + table + '"' + "( dbid , raw_data) " + " VALUES " + "(" + self.getSingleQuotedString(
                data.dbInfo.id
            ) + " , " + self.m_pbConvertor.converPbtojsonString(
                builder=data) + ");"

    def getRowDataQuery(self, table, id):
        return self.BASE_RAW_DATA_QUERY + ' "' + table + '"' + "WHERE dbid = " + self.getSingleQuotedString(
            id) + ";"

    def updateRawDataEntityQuery(self, id, newPb, table):
        return self.BASE_UPDATE_QUERY + ' "' + table + '"' + " SET raw_data = " + self.m_pbConvertor.converPbtojsonString(
            builder=newPb) + " WHERE dbid = " + self.getSingleQuotedString(
                id) + " ;"

    def getAllTableQuery(self):
        return "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"

    def getCreateTableQuery(self, table):
        return 'CREATE TABLE' + '"' + table + '"' + '(id serial PRIMARY KEY,dbid VARCHAR (255) UNIQUE NOT NULL,raw_data json NOT NULL);'

    def getCreateEntityTableQuery(self, table):
        return 'CREATE TABLE ' + '"' + table + '"' + ' (id serial PRIMARY KEY,dbid VARCHAR (255) UNIQUE NOT NULL);'

    def getWorkerTypeTableQuery(self, table):
        return 'CREATE TABLE' + '"' + table + '"' + '(id serial PRIMARY KEY,dbid VARCHAR (255) UNIQUE NOT NULL,workertype VARCHAR (255) UNIQUE NOT NULL,raw_data json NOT NULL);'

    def getSearchQuery(self, table, subquery):
        return self.BASE_RAW_DATA_QUERY + '"' + table + '" WHERE ' + subquery + ';'

    def getCountQuery(self, table, subquery):
        if (Strings.isEmpty(subquery)):
            return self.BASE_COUNT_RAW_DATA_QUERY + '"' + table + '" WHERE ' + 'true' + ';'
        else:
            return self.BASE_COUNT_RAW_DATA_QUERY + '"' + table + '" WHERE ' + subquery + ';'
Example #19
0
 def getPushNotification(id):
     service = PushNotificationService()
     m_convertPbtoJson = ConvertPbToJSON()
     return m_convertPbtoJson.converPbtojson(service.get(id=id))
Example #20
0
class CreateQueryCF():
    m_pb = None
    m_pbFromDb = None
    m_response = None
    m_instance = None
    m_table = None

    def __init__(self, instance, table):
        self.m_table = table
        self.m_instance = instance

    m_convertToPb = ConvertJSONToPb()
    m_convertToJson = ConvertPbToJSON()
    m_getQueryExecutor = GetQueryExecutor()
    m_createQueryExecutor = CreateQueryExecuter()

    def start(self, m_pb):
        self.m_pb = m_pb
        self.controlFlow(currentState=State.CHECK_UIPB_IS_EMPTY)

    def done(self):
        return self.m_pbFromDb

    def checkUiPbIsEmpty(self):
        if (self.m_pb == None):
            assert True, "table Name Cannot be Empty"
        else:
            self.controlFlow(currentState=State.CONVERT_TO_JSON)

    def convertToJson(self):
        self.m_response = self.m_convertToJson.converPbtojsonString(
            builder=self.m_pb)
        if (self.m_response != None):
            self.controlFlow(currentState=State.INSERT_TO_DB)
        else:
            # self.controlFlow(currentState=State.DONE)
            raise Exception('Convert to json Failed' +
                            MessageToJson(self.m_pb))

    def insertInDb(self):
        resp = self.m_createQueryExecutor.create(
            id=self.m_pb.dbInfo.id,
            json=self.m_response,
            table=self.m_table.tableName())
        if (resp == None):
            # self.controlFlow(currentState=State.DONE)
            raise Exception('Insert to json Failed' + MessageToJson(self.m_pb))
        else:
            self.m_response = resp
            self.controlFlow(currentState=State.GET_FROM_DB)

    def getFromDb(self):
        resp = self.m_getQueryExecutor.get(id=self.m_pb.dbInfo.id,
                                           table=self.m_table.tableName())
        if (resp != None):
            self.m_response = resp
            self.controlFlow(currentState=State.CONVERT_TO_PB)
        else:
            # self.controlFlow(currentState=State.DONE)
            raise Exception('id NOT_FOUND or UNEXPECTED ERROR' +
                            self.m_pb.dbInfo.id)

    def convertJsonToPb(self):
        self.m_pbFromDb = self.m_convertToPb.converjsontoPBProper(
            response=self.m_response, instanceType=self.m_instance)
        if (self.m_pbFromDb == None):
            raise Exception('Error while Converting to Pb' + self.m_response)
        else:
            self.controlFlow(currentState=State.DONE)

    def controlFlow(self, currentState):
        if (currentState == State.CHECK_UIPB_IS_EMPTY):
            self.checkUiPbIsEmpty()
        elif (currentState == State.CONVERT_TO_JSON):
            self.convertToJson()
        elif (currentState == State.INSERT_TO_DB):
            self.insertInDb()
        elif (currentState == State.GET_FROM_DB):
            self.getFromDb()
        elif (currentState == State.CONVERT_TO_PB):
            self.convertJsonToPb()
        elif (currentState == State.DONE):
            self.done()