class Data:
    def getSheetId(self):
        raise NotImplementedError

    def getSheetMetadataId(self):
        raise NotImplementedError

    def get(self,cellMetadataId):
        raise NotImplementedError

    def set(self,cellMetadata,value):
        raise NotImplementedError

    def getPrivateData(self):
        raise NotImplementedError

class Dynamic:
    def getSheetId(self):
        raise NotImplementedError

    def getSheetMetadata(self):
        raise NotImplementedError

    def getCellMetadata(self, name):
        raise NotImplementedError

    def getValue(self, name):
        raise NotImplementedError

    def get(self,cellMetadata):
        raise NotImplementedError

    def getDataObject(self):
        raise NotImplementedError

class Static:
    def getSheetId(self):
        raise NotImplementedError

    def getSheetName(self):
        raise NotImplementedError

    def get(self,metadataName,key):
        raise NotImplementedError

    def getList(self,metadataName,keyList):
        raise NotImplementedError

class Auth:
    def authenticate(self, contoller):
        raise NotImplementedError

    def doPreRequest(self, controller):
        raise NotImplementedError

    def renderLogin(self, controller):
        raise NotImplementedError

    def processLogin(self, controller):
        raise NotImplementedError

    def getLogoutUrl(self):
        raise NotImplementedError

class Instance:
    def create(self,url):
        raise NotImplementedError
    def new(self,sheetMetadataid):
        raise NotImplementedError
    def read(self,url):
        raise NotImplementedError
    def update(self,url):
        raise NotImplementedError
    def delete(self,url):
        raise NotImplementedError
    def submit(self,action):
        raise NotImplementedError
    def invoke(self,action,values):
        raise NotImplementedError

class Session:
    def __init__(self, application):
        raise NotImplementedError

    def createModel(self, metadata):
        raise NotImplementedError

    def getIfExists(self, sheetId, metadata):
        raise NotImplementedError

    def get(self, sheetId, metadata):
        raise NotImplementedError

    def put(self, model):
        raise NotImplementedError

    def getList(self, model, referenceCell):
        raise NotImplementedError

    def filter(self, model, referenceCell, criteriaNode):
        raise NotImplementedError

    def query(self, metadata, limit, baseQuery, criteriaNode, orderBy, isDescending, offset):
        raise NotImplementedError

    def delete(self, model):
        raise NotImplementedError

    def getApplication(self):
        return self.application

    def setUser(self,userins):
        raise  NotImplementedError

    def getUser(self):
        raise NotImplementedError

    def commit(self):
        raise NotImplementedError

    def rollback(self):
        raise NotImplementedError

    def getBySheetName(self, sheetName, metadata):
        raise NotImplementedError

    def updateAttachment(self, id, file):
        raise NotImplementedError

    def getAttachment(self, id):
        raise NotImplementedError

    def deleteAttachment(self, id):
        raise NotImplementedError

    def getAttachmentList(self, parentSheet, referenceCell):
        raise NotImplementedError

    def getMulti(self, metadataIdDict):
        raise NotImplementedError

    def getByCellValue(self, value, metadata, cell):
        raise NotImplementedError

    def aggregate_query(self, metadata, limit, baseQuery, measures, dimensions, operations, orderBy = None, isDescending = False, offset=0):
        raise NotImplementedError

class Engine:
    def __init__(self, session):
        raise NotImplementedError

    def new(self, metadata, values):
        raise NotImplementedError

    def create(self, sheet, referenceCell, values):
        raise NotImplementedError

    def replace(self, sheet, referenceKey, referenceValue):
        raise NotImplementedError

    def createUpdate(self, sheet, referenceCell, values):
        raise NotImplementedError

    def update(self, sheet, values):
        raise NotImplementedError

    def read(self, sheetId, metadata):
        raise NotImplementedError

    def delete(self, sheet):
        raise NotImplementedError

    def invoke(self, module, values):
        raise NotImplementedError

    def updateAttachment(self, parentSheet, referenceCell, fileName, fileContent, tag):
        raise NotImplementedError

    def updateAttachmentWithId(self, sheet, fileName, fileContent, tag=False):
        raise NotImplementedError

    def getAttachment(self, parentSheet, referenceCell, fileName):
        raise NotImplementedError

    def getAttachmentWithId(self, sheet):
        raise NotImplementedError

    def getAttachmentList(self, parentSheet, referenceCell):
        raise NotImplementedError

    def deleteAttachment(self, parentSheet, referenceCell, fileName):
        raise NotImplementedError

    def deleteAttachmentWithId(self, parentSheet, referenceCell, sheet):
        raise NotImplementedError

class User:
    def getUserName(self):
        raise NotImplementedError

    def getUserId(self):
        raise NotImplementedError

    def getFirstName(self):
        raise NotImplementedError

    def getLastName(self):
        raise NotImplementedError

    def getMiddleName(self):
        raise NotImplementedError

    def getInitial(self):
        raise NotImplementedError

    def getNickName(self):
        raise NotImplementedError

    def getDOB(self):
        raise NotImplementedError

    def getDOJ(self):
        raise NotImplementedError

    def getMale(self):
        raise NotImplementedError

    def getActive(self):
        raise NotImplementedError

    def getPassword(self):
        raise NotImplementedError

    def getPasswordEncrypted(self):
        raise NotImplementedError

    def getPasswordReset(self):
        raise NotImplementedError

    def getPasswordExpiryDate(self):
        raise NotImplementedError

    def getEmailId(self):
        raise NotImplementedError

    def getDesignation(self):
        raise NotImplementedError

    def getApplication(self):
        raise NotImplementedError

    def getActivityDefinitionList(self):
        raise NotImplementedError

    def getKey(self):
        raise NotImplementedError
