         ###*
         property whose type is CREATED_AT
         @property {String} createdAt
+        @public
+        @readonly
         ###
         @createdAt = null
 
         ###*
         property whose type is UPDATED_AT
         @property {String} updatedAt
+        @public
+        @readonly
         ###
         @updatedAt = null
 
         ###*
         properties whose type is DATE, CREATED_AT and UPDATED_AT
         @property {Array(String)} dates
+        @public
+        @readonly
         ###
         @dates = []
 

        !!@typeInfoDic[prop]?.omit


    getSubIdProp: (prop) ->

        @typeInfoDic[prop]?.idPropName


    getSubModelName: (prop) ->

        @typeInfoDic[prop]?.model


    isOptional: (prop) ->

        !!@typeInfoDic[prop]?.optional


    getDefaultValue: (prop) ->

        @typeInfoDic[prop]?.default

        return


    ###*
    get all prop names

    @method getNames
    @public
    @return {Array(String)}
    ###
    getNames: ->
        Object.keys @typeInfoDic


    ###*
    get all entity prop names

    @method getEntities
    @public
    @return {Array(String)}
    ###
    getEntities: ->
        Object.keys @entityDic


    ###*
    get all model prop names

    @method getSubModelProps
    @public
    @return {Array(String)}
    ###
    getSubModelProps: ->
        @subModelProps.slice()

