2012-09-12 14 views
5

Ho una Eclass Vehicle che ha un attributo enum BreakType breakType.Come impostare il riferimento enum con valore predefinito = null in ecore e gen model?

BreakType è definito nello stesso modello Ecore come:

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

voglio impostare l'attributo breakType predefinito su null. per questo ho impostato seguenti proprietà per breakType Attribute->

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. 

Quello che sto ottenendo, dopo la generazione di Gen-modello e il codice fuori di esso è

BreakType breakType = DRUM // attribute set with default value 

Come posso impostare a NULL, per impostazione predefinita ?

risposta

1

Non penso che tu possa. Se non si riesce a fornire un valore predefinito tramite la proprietà defaultValueLiteral, EMF seleziona automaticamente un valore appropriato per il tipo dell'attributo. Per un tipo enumerato, è il primo valore letterale che definisce.

È sempre possibile modificare autonomamente il codice generato. O forse si dovrebbe fare uso dei metodi generati per fornire la funzionalità unsettable:

void unsetAttribute(); 
boolean isSetAttribute(); 

e verificare lo stato di disinserimento invece del valore null.

+0

grazie Jose. Questo sarà utile –

+4

Mmm, guarda cosa ho trovato nelle ricette EMF. Non l'ho ancora provato, ma forse questo è quello che stavi cercando: [Generazione di attributi basati sull'enumerazione che supportano null] (http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_enumeration-based_attributes_that_support_null) –

+0

In alternativa alla ricetta EMF collegata, è possibile definire un'istanza di enumerazione aggiuntiva, ad esempio UNDEFINED, e assicurarsi che ne venga utilizzata una di default, ovvero in ecorediag spostarla nella parte superiore dell'elenco letterale (il valore predefinito per quello il tipo di enum sarà regolato automaticamente). Con questo c'è almeno un valore predefinito non definito, tuttavia non è nullo. –

Problemi correlati