Re: Enums

From: Mike Kienenberger (mkienen..mail.com)
Date: Mon Aug 13 2007 - 10:54:30 EDT

  • Next message: Andrus Adamchik: "Re: Enums"

    I admit that I don't quite understand everything that's going on here
    since I haven't had the opportunity to use java 1.5 enumerations yet,
    but I can certainly see how being able to define database enumerations
    in the data model and then generating java constants or enumerations
    for them would be a useful feature.

    I'd make use of such a feature if it were available in the modeler.
    I have a large number of "*_TYPE" tables that contain data that's
    essentially enumerations, and under Java 1.4, I manually add constants
    to my non-generated DataObject classes to represent this.

    On 8/12/07, Andrus Adamchik <andru..bjectstyle.org> wrote:
    > 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 : Mon Aug 13 2007 - 10:55:08 EDT