Class PostgresqlSchemaCodegen

    • Field Detail

      • ENUM_MAX_ELEMENTS

        public static final Integer ENUM_MAX_ELEMENTS
      • IDENTIFIER_MAX_LENGTH

        public static final Integer IDENTIFIER_MAX_LENGTH
      • postgresqlNumericTypes

        protected Vector<String> postgresqlNumericTypes
      • postgresqlDateAndTimeTypes

        protected Vector<String> postgresqlDateAndTimeTypes
      • postgresqlStringTypes

        protected Vector<String> postgresqlStringTypes
      • postgresqlSpatialTypes

        protected Vector<String> postgresqlSpatialTypes
      • defaultDatabaseName

        protected String defaultDatabaseName
        Returns default database name for all PostgreSQL queries This value must be used with backticks only, e.g. `database_name`
      • databaseNamePrefix

        protected String databaseNamePrefix
        Returns default database name for all PostgreSQL queries This value must be used with backticks only, e.g. `database_name`
      • databaseNameSuffix

        protected String databaseNameSuffix
        Returns default database name for all PostgreSQL queries This value must be used with backticks only, e.g. `database_name`
      • tableNamePrefix

        protected String tableNamePrefix
      • tableNameSuffix

        protected String tableNameSuffix
      • columnNamePrefix

        protected String columnNamePrefix
      • columnNameSuffix

        protected String columnNameSuffix
      • jsonDataType

        protected String jsonDataType
        Which type of JSON data types will be used. JSON data type requires PostgreSQL version 9.4 or newer
      • namedParametersEnabled

        protected Boolean namedParametersEnabled
        Whether named parameters enabled or disabled in prepared SQLs
      • identifierNamingConvention

        protected String identifierNamingConvention
        Returns identifier naming convention for table names and column names.
      • idAutoIncEnabled

        protected Boolean idAutoIncEnabled
        Whether autoincrement feature enabled for integer 'id' fields
    • Constructor Detail

      • PostgresqlSchemaCodegen

        public PostgresqlSchemaCodegen()
    • Method Detail

      • processIntegerTypeProperty

        public void processIntegerTypeProperty​(CodegenModel model,
                                               CodegenProperty property)
        Processes each model's property mapped to integer type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processDecimalTypeProperty

        public void processDecimalTypeProperty​(CodegenModel model,
                                               CodegenProperty property)
        Processes each model's property mapped to decimal type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processStringTypeProperty

        public void processStringTypeProperty​(CodegenModel model,
                                              CodegenProperty property)
        Processes each model's property mapped to string type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processBooleanTypeProperty

        public void processBooleanTypeProperty​(CodegenModel model,
                                               CodegenProperty property)
        Processes each model's property mapped to boolean type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processDateTypeProperty

        public void processDateTypeProperty​(CodegenModel model,
                                            CodegenProperty property)
        Processes each model's property mapped to date type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processJsonTypeProperty

        public void processJsonTypeProperty​(CodegenModel model,
                                            CodegenProperty property)
        Processes each model's property mapped to JSON type and adds related vendor extensions
        Parameters:
        model - model
        property - model's property
      • processUnknownTypeProperty

        public void processUnknownTypeProperty​(CodegenModel model,
                                               CodegenProperty property)
        Processes each model's property not mapped to any type and adds related vendor extensions Most of time it's related to referenced properties eg. \Model\User
        Parameters:
        model - model
        property - model's property
      • toCodegenPostgresqlDataTypeArgument

        public HashMap<String,​Object> toCodegenPostgresqlDataTypeArgument​(Object value)
        Generates codegen property for PostgreSQL data type argument
        Parameters:
        value - argument value
        Returns:
        generated codegen property
      • toCodegenPostgresqlDataTypeDefault

        public HashMap<String,​Object> toCodegenPostgresqlDataTypeDefault​(String defaultValue,
                                                                               String postgresqlDataType)
        Generates default value codegen property for PostgreSQL column definition Ref: https://www.postgresql.org/docs/17/datatype.html
        Parameters:
        defaultValue - value
        postgresqlDataType - PostgreSQL data type
        Returns:
        generated codegen property
      • getPostgresqlMatchedIntegerDataType

        public String getPostgresqlMatchedIntegerDataType​(Long minimum,
                                                          Long maximum,
                                                          Boolean unsigned)
        Finds best fitted PostgreSQL data type for integer variable based on minimum and maximum properties
        Parameters:
        minimum - (optional) codegen property
        maximum - (optional) codegen property
        unsigned - (optional) whether variable is unsigned or not
        Returns:
        PostgreSQL integer data type
      • getPostgresqlMatchedStringDataType

        public String getPostgresqlMatchedStringDataType​(Integer minLength,
                                                         Integer maxLength)
        Finds best fitted PostgreSQL data type for string variable based on minLength and maxLength properties
        Parameters:
        minLength - (optional) codegen property
        maxLength - (optional) codegen property
        Returns:
        PostgreSQL string data type
      • isPostgresqlDataType

        public Boolean isPostgresqlDataType​(String dataType)
        Checks whether string is one of PostgreSQL Data Types Ref: https://dev.postgresql.com/doc/refman/8.0/en/data-type-overview.html
        Parameters:
        dataType - which needs to check
        Returns:
        true if value is correct PostgreSQL data type, otherwise false
      • toDatabaseName

        public String toDatabaseName​(String name)
        Converts name to valid PostgreSQL database name
        Parameters:
        name - source name
        Returns:
        database name
      • toTableName

        public String toTableName​(String name)
        Converts name to valid PostgreSQL column name
        Parameters:
        name - source name
        Returns:
        table name
      • toColumnName

        public String toColumnName​(String name)
        Converts name to valid PostgreSQL column name
        Parameters:
        name - source name
        Returns:
        column name
      • toPostgresqlIdentifier

        public String toPostgresqlIdentifier​(String name,
                                             String prefix,
                                             String suffix)
        Converts name to valid PostgreSQL identifier which can be used as database, table, column name
        Parameters:
        name - source name
        prefix - when escaped name is digits only, prefix will be prepended
        suffix - when escaped name is digits only, suffix will be appended
        Returns:
        identifier name
      • escapePostgresqlUnquotedIdentifier

        public String escapePostgresqlUnquotedIdentifier​(String identifier)
        Escapes PostgreSQL identifier to use it in SQL statements without backticks, eg. SELECT identifier FROM
        Parameters:
        identifier - source identifier
        Returns:
        escaped identifier
      • escapePostgresqlQuotedIdentifier

        public String escapePostgresqlQuotedIdentifier​(String identifier)
        Escapes PostgreSQL identifier to use it in SQL statements with backticks, eg. SELECT `identifier` FROM
        Parameters:
        identifier - source identifier
        Returns:
        escaped identifier
      • setDefaultDatabaseName

        public void setDefaultDatabaseName​(String databaseName)
        Sets default database name for all PostgreSQL queries Provided value will be escaped when necessary
        Parameters:
        databaseName - source name
      • setIdentifierNamingConvention

        public void setIdentifierNamingConvention​(String naming)
        Sets identifier naming convention for table names and column names. This is not related to database name which is defined by defaultDatabaseName option.
        Parameters:
        naming - identifier naming convention (snake_case|original)
      • toSrcPath

        public String toSrcPath​(String packageName)
        Slightly modified version of AbstractPhpCodegen.toSrcPath method.
        Parameters:
        packageName - package name
        Returns:
        path