I don't mind having the mapping in the Java file itself.  That's what
I did before in this example:

  public static final DateFrequencyEnumeration ANNUALLY = new
DateFrequencyEnumeration("ANNUALLY", new Integer(1));
...
  public static final DateFrequencyEnumeration QUARTERLY = new
DateFrequencyEnumeration("QUARTERLY", new Integer(4));
  public static final DateFrequencyEnumeration MONTHLY = new
DateFrequencyEnumeration("MONTHLY", new Integer(12));
...

Mapping ANNUALLY -> 1, QUARTERLY -> 4, MONTHLY -> 12 (integers in this
case).  Of course, this isn't a requirement, I suppose.  As long as
everything gets registered before using them, although then you might
risk accidentally changing them.  I made sure values were uniqued,
too.  All values mapped to QUARTERLY pointed to the same instance, so
you could use == for equality testing.

/dev/mrg

PS. I haven't thought seriously about how to re-implement this using
Java 1.5 enums (if it is even reasonably possible).  I just know that
the current enum support doesn't map well to real-world usage.  Maybe
annotations make sense, I'm just not sure (I can read up on them).
PPS. I'm not going to start coding on it today -- plenty of time to
hash out what is the best for Cayenne if we want native support.


On Jan 16, 2008 12:49 PM, Andrus Adamchik <[EMAIL PROTECTED]> wrote:
> Sorry for the email flood... I jumped the gun on enums. It will be
> inconsistent with the best Cayenne tradition of keeping the mapping
> completely separate form the code. So I'd say we'd have to map the
> stuff below in the DataMap... so we will have to add yet another
> mapping primitive :-/
>
> Andrus
>
>
>
> On Jan 16, 2008, at 7:42 PM, Andrus Adamchik wrote:
>
> >
> > On Jan 16, 2008, at 7:34 PM, Andrus Adamchik wrote:
> >
> >> public enum SomeArbitraryType {
> >>
> >>      TYPE1, TYPE2, ...;
> >>
> >>      @EnumCode
> >>      public String getCode() {
> >>              // this is dumb, but demonstrates the idea
> >>              return name() + "_CODE";
> >>      }
> >> }
> >
> >
> > Or this:
> >
> >  public enum SomeArbitraryType {
> >
> >       @DbCode(value="X")
> >       TYPE1,
> >
> >       @DbCode(value="Y")
> >       TYPE2, ...;
> >  }
> >
> > Andrus
> >
>
>

Reply via email to