2012-09-12 10 views
5

Tengo un Eclass Vehicle que tiene un atributo de enumeración BreakType breakType.Cómo establecer la referencia enum con el valor predeterminado = nulo en el modelo ecore y gen?

BreakType se define en el mismo modelo Ecore como:

BreakType{ 
    DRUM(0), DISC(1), BLADE(2) 
} 

Quiero establecer el atributo de breakType por defecto en nulo. por eso me puse siguientes propiedades de atributo, breakType>

DefaultLiteralValue: // it's blank 
Unsettable: True 

Properties of BreakType enum 
Default Value : DRUM=0 // this is shown in editor UI even If i remove it from xml. 

Lo que quiero decir después de generar gen-modelo y el código de ello es

BreakType breakType = DRUM // attribute set with default value 

¿Cómo se establecen a NULL, por defecto ?

Respuesta

1

No creo que puedas. Si no proporciona un valor predeterminado a través de la propiedad defaultValueLiteral, EMF selecciona automáticamente un valor apropiado para el tipo del atributo. Para un tipo enumerado, es el primer valor literal que define.

Siempre puede modificar el código generado usted mismo. O tal vez usted debe hacer uso de los métodos generados para proporcionar la funcionalidad unsettable:

void unsetAttribute(); 
boolean isSetAttribute(); 

y comprobar la situación de desconexión en lugar del valor null.

+0

gracias Jose. Esto será útil –

+4

Mmm, mira lo que he encontrado en las recetas de EMF. Todavía no lo he probado, pero tal vez esto es lo que estabas buscando: [Generar atributos basados ​​en enumeración que admitan null] (http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_enumeration-based_attributes_that_support_null) –

+0

Como alternativa a la receta EMF vinculada, puede definir una instancia enum adicional, digamos INDEFINIDO, y asegurarse de que se usa una por defecto, es decir, en la ecorregulación moverlo a la parte superior de la lista literal (el valor predeterminado para esa tipo enum se ajustará automáticamente). Con esto hay al menos un valor predeterminado indefinido en su lugar, sin embargo, no es nulo. –

Cuestiones relacionadas