Re: Enums

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Aug 12 2007 - 08:37:35 EDT

  • Next message: Andrus Adamchik: "Re: Some ideas extending Cayenne"

    I am reluctant to add a standard option for persisting of what can be
    considered a custom class. But I am not sure why this is even needed?
    You can code your enums as Java enums with custom properties, and do
    not use Cayenne-provided EnumExtendedType, installing your own
    instead. E.g.:

    public enum Color {

         BLACK("000000"), WHITE("FFFFFF");

         private final String dbCode;

         private Color(String dbCode) {
             this.dbCode = dbCode;
         }

         public String getDbCode() {
             return dbCode;
         }
    }

    public class ColorType implements ExtendedType {

         public String getClassName() {
             return Color.class.getName();
         }

         public void setJdbcObject(
                 PreparedStatement statement,
                 Object value,
                 int pos,
                 int type,
                 int precision) throws Exception {

             if (value instanceof MyEnumType) {

                 Color e = (Color) value;
                 statement.setString(pos, e.getDbCode());
             }
             else {
                 statement.setNull(pos, type);
             }
         }
         ....
    }

    On Aug 9, 2007, at 1:42 PM, Michael Gentry wrote:

    > Uhm ... that's why I wanted it in the modeler and supported by Cayenne
    > natively. (Or easier to support, even if not in the modeler.)
    >
    > :-)
    >
    > I'm positive this feature would be useful to others. My current
    > approach is complicated to set up and easy to miss registering one of
    > your types (although you blow up quickly enough) or an actual
    > enumerated value (which is harder to catch). If it could be
    > simplified, it could be much more useful to everyone.
    >
    > Thanks,
    >
    > /dev/mrg
    >
    >
    > On 8/9/07, Andrus Adamchik <andru..bjectstyle.org> wrote:
    >> I see what you are saying. I guess for your case you can keep using
    >> custom ExtendedType (only based on JDK 1.5 enums).
    >>
    >> Andrus
    >



    This archive was generated by hypermail 2.0.0 : Sun Aug 12 2007 - 08:38:00 EDT