         !!@typeInfoDic[prop]?.omit
 
 
-    getSubIdProp: (prop) ->
-
-        @typeInfoDic[prop]?.idPropName
-
-
+    ###*
+    get prop name of id of entity prop
+
+    @method getSubIdProp
+    @param {String} prop
+    @return {String} idPropName
+    ###
+    getSubIdProp: (entityProp) ->
+
+        @typeInfoDic[entityProp]?.idPropName
+
+
+    ###*
+    get model name of model prop
+
+    @method getSubModelProps
+    @param {String} prop
+    @return {String} model name
+    ###
     getSubModelName: (prop) ->
 
         @typeInfoDic[prop]?.model
 
 
+    ###*
+    check if the prop is optional
+
+    @method isOptional
+    @param {String} prop
+    @return {Boolean}
+    ###
     isOptional: (prop) ->
 
         !!@typeInfoDic[prop]?.optional
 
 
+    ###*
+    get the default value of the prop
+
+    @method getDefaultValue
+    @param {String} prop
+    @return {any} defaultValue
+    ###
     getDefaultValue: (prop) ->
 
         @typeInfoDic[prop]?.default

        ###*
        property whose type is CREATED_AT
        @property {String} createdAt
        ###
        @createdAt = null

        ###*
        property whose type is UPDATED_AT
        @property {String} updatedAt
        ###
        @updatedAt = null

        ###*
        properties whose type is DATE, CREATED_AT and UPDATED_AT
        @property {Array(String)} dates
        ###
        @dates = []


        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()

