Class SRecordMeta<T extends SRecordInstance>

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    RecordMeta

    public class SRecordMeta<T extends SRecordInstance>
    extends java.lang.Object
    implements java.io.Serializable
    Defines the meta data for a SRecordInstance such as the table name. Details about each field are stored in SFieldMeta refered to from this object.

    Thus Instance Variables of this class only describe the definition of a Record, not instances or connections.

    This class also contains routines to create new SRecordInstancees such as #findOrCreate and #select. (This packaging makes the calls shorter than using a static method on SRecordInstance.)

    See Also:
    Serialized Form
    • Field Detail

      • quoteName

        public boolean quoteName
    • Constructor Detail

      • SRecordMeta

        public SRecordMeta​(java.lang.Class<T> userClass,
                           java.lang.String tableName)
        Create a new table/record definition.

        Parameters:
        userClass - an instance of the class this RecordMeta holds the metadata for (ie T )
        tableName - The name of the SQL table that will be associated with this record.
    • Method Detail

      • readResolve

        protected java.lang.Object readResolve()
                                        throws java.io.ObjectStreamException
        SRecordMeta is like a singleton, in that only one instance of SRecordMeta must exist in the VM for a specific table. This is a special method used during de-serialization to determine if the object de-serialized should be substituted. This method is implemented to return the SRecordMeta object for the appropriate user Class that already exists.

        (This method is reflected into and magically called by serialization.)

        Throws:
        java.io.ObjectStreamException
      • getFieldMetas

        public java.util.List<SFieldMeta> getFieldMetas()
        Returns:
        the an unmodifiable view of the field metas (both Scalar and References)
      • fieldsForMode

        public SFieldScalar[] fieldsForMode​(SSelectMode selectMode)
        Returns SFieldMetas that are updated to select given SelectMode.
      • getPrimaryKeys

        public SFieldScalar[] getPrimaryKeys()
        Get the scalar primary key fields meta for this record meta
        Returns:
        a readonly list of the primary key Fields meta of the record meta
      • getQueriedScalarFields

        public SFieldScalar[] getQueriedScalarFields()
      • getAllScalarFields

        public SFieldScalar[] getAllScalarFields()
      • getDescriptiveScalarFields

        public SFieldScalar[] getDescriptiveScalarFields()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • toLongerString

        public java.lang.String toLongerString()
        Displays all columns
      • getUserClass

        public java.lang.Class<T> getUserClass()
      • getFieldNames

        public java.util.Set<java.lang.String> getFieldNames()
        All the field names. use getField to look up the actual field.
      • getField

        public SFieldMeta getField​(java.lang.String fieldName)
        Returns the field by its name, or null if not found.
      • getTableName

        public java.lang.String getTableName()
      • setQuoted

        public SRecordMeta setQuoted​(boolean quote)
        Causes the generated sql to quote ("") the table name. Makes it case sensitive, allows reserved words and odd characters. Beware that Postgresql (only) defaults to lower case, not upper case.
      • putUserProperty

        public SRecordMeta putUserProperty​(java.lang.Object key,
                                           java.lang.Object value)
      • getUserProperty

        public <T> T getUserProperty​(java.lang.Object key)
      • getUserProperties

        public java.util.Map getUserProperties()