11import { JavaRenderer } from '../JavaRenderer' ;
22
3- import { EnumPreset } from '../../../models' ;
3+ import { CommonModel , EnumPreset } from '../../../models' ;
44import { FormatHelpers } from '../../../helpers' ;
55
66/**
@@ -10,14 +10,13 @@ import { FormatHelpers } from '../../../helpers';
1010 */
1111export class EnumRenderer extends JavaRenderer {
1212 async defaultSelf ( ) : Promise < string > {
13- const enumName = this . model . $id ;
14- const type = Array . isArray ( this . model . type ) ? 'Object' : this . model . type ! ;
15- const classType = this . toClassType ( this . toJavaType ( type , this . model ) ) ;
13+ const content = [
14+ await this . renderItems ( ) ,
15+ await this . runAdditionalContentPreset ( ) ,
16+ ] ;
1617
17- return `public enum ${ enumName } {
18- ${ this . indent ( await this . renderItems ( ) ) } ;
19-
20- ${ this . indent ( this . renderHelpers ( enumName ! , classType ) ) }
18+ return `public enum ${ this . model . $id } {
19+ ${ this . indent ( this . renderBlock ( content , 2 ) ) }
2120}` ;
2221 }
2322
@@ -26,11 +25,12 @@ ${this.indent(this.renderHelpers(enumName!, classType))}
2625 const items : string [ ] = [ ] ;
2726
2827 for ( const value of enums ) {
29- const renderedItem = await this . runItemPreset ( value ) ;
28+ const renderedItem = await this . runItemPreset ( value , this . model ) ;
3029 items . push ( renderedItem ) ;
3130 }
3231
33- return items . join ( ', ' ) ;
32+ const content = items . join ( ', ' ) ;
33+ return `${ content } ;` ;
3434 }
3535
3636 normalizeKey ( value : any ) : string {
@@ -55,9 +55,27 @@ ${this.indent(this.renderHelpers(enumName!, classType))}
5555 }
5656 }
5757
58- renderHelpers ( enumName : string , classType : string ) : string {
58+ async runItemPreset ( item : any , parentModel : CommonModel ) : Promise < string > {
59+ return this . runPreset ( 'item' , { item, parentModel } ) ;
60+ }
61+ }
62+
63+ export const JAVA_DEFAULT_ENUM_PRESET : EnumPreset < EnumRenderer > = {
64+ self ( { renderer } ) {
65+ return renderer . defaultSelf ( ) ;
66+ } ,
67+ item ( { renderer, item } ) {
68+ const key = renderer . normalizeKey ( item ) ;
69+ const value = renderer . normalizeValue ( item ) ;
70+ return `${ key } (${ value } )` ;
71+ } ,
72+ additionalContent ( { renderer, model } ) {
73+ const enumName = model . $id ;
74+ const type = Array . isArray ( model . type ) ? 'Object' : model . type ;
75+ const classType = renderer . toClassType ( renderer . toJavaType ( type , model ) ) ;
76+
5977 return `private ${ classType } value;
60-
78+
6179${ enumName } (${ classType } value) {
6280 this.value = value;
6381}
@@ -81,20 +99,5 @@ public static ${enumName} fromValue(${classType} value) {
8199 }
82100 throw new IllegalArgumentException("Unexpected value '" + value + "'");
83101}` ;
84- }
85-
86- async runItemPreset ( item : any ) : Promise < string > {
87- return this . runPreset ( 'item' , { item } ) ;
88- }
89- }
90-
91- export const JAVA_DEFAULT_ENUM_PRESET : EnumPreset < EnumRenderer > = {
92- self ( { renderer } ) {
93- return renderer . defaultSelf ( ) ;
94- } ,
95- item ( { renderer, item } ) {
96- const key = renderer . normalizeKey ( item ) ;
97- const value = renderer . normalizeValue ( item ) ;
98- return `${ key } (${ value } )` ;
99102 } ,
100103} ;
0 commit comments