Skip to content

Commit 1c5e6d8

Browse files
committed
further simplifications
1 parent 0ae6e5d commit 1c5e6d8

File tree

19 files changed

+135
-239
lines changed

19 files changed

+135
-239
lines changed

bundles/org.zikula.modulestudio.generator/src/org/zikula/modulestudio/generator/cartridges/symfony/controller/config/ConfigureFields.xtend

Lines changed: 40 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import de.guite.modulestudio.metamodel.DateTimeRole
77
import de.guite.modulestudio.metamodel.DatetimeField
88
import de.guite.modulestudio.metamodel.Entity
99
import de.guite.modulestudio.metamodel.Field
10-
import de.guite.modulestudio.metamodel.IntegerField
1110
import de.guite.modulestudio.metamodel.ListField
1211
import de.guite.modulestudio.metamodel.NumberField
12+
import de.guite.modulestudio.metamodel.NumberFieldType
13+
import de.guite.modulestudio.metamodel.NumberRole
1314
import de.guite.modulestudio.metamodel.RelationAutoCompletionUsage
1415
import de.guite.modulestudio.metamodel.RelationEditMode
1516
import de.guite.modulestudio.metamodel.Relationship
@@ -20,7 +21,6 @@ import de.guite.modulestudio.metamodel.TextRole
2021
import de.guite.modulestudio.metamodel.UploadField
2122
import de.guite.modulestudio.metamodel.UploadNamingScheme
2223
import de.guite.modulestudio.metamodel.UserField
23-
import java.math.BigInteger
2424
import java.util.ArrayList
2525
import org.zikula.modulestudio.generator.cartridges.symfony.controller.ControllerMethodInterface
2626
import org.zikula.modulestudio.generator.cartridges.symfony.models.business.ValidationHelpProvider
@@ -68,7 +68,7 @@ class ConfigureFields implements ControllerMethodInterface {
6868
}*/
6969

7070
val nsSymfonyFormType = 'Symfony\\Component\\Form\\Extension\\Core\\Type\\'
71-
if (!formFields.filter(IntegerField).filter[range].empty) {
71+
if (!formFields.filter(NumberField).filter[NumberRole.RANGE == role].empty) {
7272
imports.add(nsSymfonyFormType + 'RangeType')
7373
}
7474
if (geographical) {
@@ -229,7 +229,6 @@ class ConfigureFields implements ControllerMethodInterface {
229229
def private alignment(Object it) {
230230
switch it {
231231
BooleanField: 'center'
232-
IntegerField: 'right'
233232
NumberField: 'right'
234233
StringField: if (#[StringRole.MAIL, StringRole.URL].contains(role)) 'center' else 'left'
235234
default: 'left'
@@ -252,51 +251,19 @@ class ConfigureFields implements ControllerMethodInterface {
252251
calls
253252
}
254253

255-
def private dispatch fieldType(IntegerField it) {
256-
if (primaryKey) 'Id' else
257-
if (percentage) 'Percent' else
258-
if (length >= 12) 'Integer' else 'Integer' // EAB recommends Text for bigint, changing this would require passing the value as string though
254+
def private dispatch fieldType(NumberField it) {
255+
if (primaryKey) 'Id'
256+
else if (NumberRole.MONEY == role) 'Money'
257+
else if (NumberRole.PERCENTAGE == role) 'Percent'
258+
else if (NumberFieldType.DECIMAL == numberType) 'Integer'
259+
else 'Number'
259260
}
260-
def private dispatch options(IntegerField it) {
261+
def private dispatch options(NumberField it) {
261262
var calls = commonOptions
262263
if (primaryKey) {
263264
// https://symfony.com/bundles/EasyAdminBundle/current/fields/IdField.html
264265
calls += '''->setMaxLength(«length»)'''
265-
} else if (percentage) {
266-
// https://symfony.com/bundles/EasyAdminBundle/current/fields/PercentField.html
267-
calls += '''->setNumDecimals(0)'''
268-
// setRoundingMode(...)
269-
calls += '''->setStoredAsFractional(false)'''
270-
if (null !== unit && !unit.empty) {
271-
calls += '''->setSymbol('«unit»')'''
272-
}
273-
/*} else if (length >= 12) {
274-
// https://symfony.com/bundles/EasyAdminBundle/current/fields/TextField.html
275-
// renderAsHtml()
276-
calls += '''->setMaxLength(«length»)'''
277-
calls += '''->stripTags()'''*/
278-
} else {
279-
// https://symfony.com/bundles/EasyAdminBundle/current/fields/IntegerField.html
280-
// setNumberFormat(...)
281-
}
282-
calls
283-
}
284-
285-
def private dispatch fieldType(NumberField it) {
286-
if (percentage) 'Percent' else
287-
if (currency) 'Money' else 'Number'
288-
}
289-
def private dispatch options(NumberField it) {
290-
var calls = commonOptions
291-
if (percentage) {
292-
// https://symfony.com/bundles/EasyAdminBundle/current/fields/PercentField.html
293-
calls += '''->setNumDecimals(«scale»)'''
294-
// setRoundingMode(...)
295-
// setStoredAsFractional(...)
296-
if (null !== unit && !unit.empty) {
297-
calls += '''->setSymbol('«unit»')'''
298-
}
299-
} else if (currency) {
266+
} else if (NumberRole.MONEY == role) {
300267
// https://symfony.com/bundles/EasyAdminBundle/current/fields/MoneyField.html
301268
if (entity.hasCurrencyFieldsEntity) {
302269
calls += '''->setCurrencyPropertyPath('«entity.getCurrencyFieldsEntity.head.name.formatForCode»')'''
@@ -305,6 +272,19 @@ class ConfigureFields implements ControllerMethodInterface {
305272
}
306273
calls += '''->setNumDecimals(«scale»)'''
307274
// setStoredAsCents()
275+
} else if (NumberRole.PERCENTAGE == role) {
276+
// https://symfony.com/bundles/EasyAdminBundle/current/fields/PercentField.html
277+
calls += '''->setNumDecimals(«scale»)'''
278+
// setRoundingMode(...)
279+
if (NumberFieldType.INTEGER == fieldType) {
280+
calls += '''->setStoredAsFractional(false)'''
281+
}
282+
if (null !== unit && !unit.empty) {
283+
calls += '''->setSymbol('«unit»')'''
284+
}
285+
} else if (NumberFieldType.INTEGER == fieldType) {
286+
// https://symfony.com/bundles/EasyAdminBundle/current/fields/IntegerField.html
287+
// setNumberFormat(...)
308288
} else {
309289
// https://symfony.com/bundles/EasyAdminBundle/current/fields/NumberField.html
310290
// setNumberFormat(...)
@@ -493,25 +473,18 @@ class ConfigureFields implements ControllerMethodInterface {
493473
«IF readonly»
494474
'readonly' => 'readonly',
495475
«ENDIF»
496-
«IF it instanceof IntegerField»
497-
«IF range»
476+
«IF it instanceof NumberField»
477+
«IF NumberRole.RANGE == role»
498478
'min' => «minValue»,
499479
'max' => «maxValue»,
500480
«ELSE»
501-
«IF minValue.compareTo(BigInteger.valueOf(0)) > 0»
481+
«IF minValue > 0»
502482
'min' => «minValue»,
503483
«ENDIF»
504-
«IF maxValue.compareTo(BigInteger.valueOf(0)) > 0»
484+
«IF maxValue > 0»
505485
'max' => «maxValue»,
506486
«ENDIF»
507487
«ENDIF»
508-
«ELSEIF it instanceof NumberField»
509-
«IF minValue > 0»
510-
'min' => «minValue»,
511-
«ENDIF»
512-
«IF maxValue > 0»
513-
'max' => «maxValue»,
514-
«ENDIF»
515488
«ENDIF»
516489
'title' => '«titleAttribute»',
517490
«additionalAttributes»
@@ -546,27 +519,22 @@ class ConfigureFields implements ControllerMethodInterface {
546519
def private dispatch titleAttribute(BooleanField it) '''«name.formatForDisplay» ?'''
547520
def private dispatch additionalAttributes(BooleanField it) ''''''
548521

549-
def private dispatch customFormType(IntegerField it) '''«IF range»Range«ENDIF»'''
550-
def private dispatch titleAttribute(IntegerField it) '''Enter the «name.formatForDisplay» of the «entity.name.formatForDisplay». Only digits are allowed.'''
551-
def private dispatch additionalAttributes(IntegerField it) '''
552-
'maxlength' => «length»,
553-
'''
554-
def private dispatch additionalOptions(IntegerField it) '''
555-
«IF percentage»
556-
'type' => 'integer',
557-
«ENDIF»
558-
«IF unit != ''»
559-
'input_group' => ['right' => t('«unit»')],
560-
«ENDIF»
561-
'''
562-
563-
def private dispatch customFormType(NumberField it) '''«IF #['latitude', 'longitude'].contains(name)»Geo«ENDIF»'''
522+
def private dispatch customFormType(NumberField it) '''«IF NumberRole.RANGE == role»Range«ELSEIF #['latitude', 'longitude'].contains(name)»Geo«ENDIF»'''
564523

565524
def private dispatch additionalAttributes(NumberField it) '''
566-
'maxlength' => «(length+3+scale)»,
525+
«IF NumberFieldType.INTEGER == numberType»
526+
'maxlength' => «length»,
527+
«ELSE»
528+
'maxlength' => «(length+3+scale)»,
529+
«ENDIF»
567530
'''
568531
def private dispatch additionalOptions(NumberField it) '''
569-
'scale' => «scale»,
532+
«IF NumberRole.PERCENTAGE == role»
533+
'type' => 'integer',
534+
«ENDIF»
535+
«IF NumberFieldType.INTEGER != numberType»
536+
'scale' => «scale»,
537+
«ENDIF»
570538
«IF unit != ''»
571539
'input_group' => ['right' => t('«unit»')],
572540
«ENDIF»

bundles/org.zikula.modulestudio.generator/src/org/zikula/modulestudio/generator/cartridges/symfony/controller/di/Configuration.xtend

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package org.zikula.modulestudio.generator.cartridges.symfony.controller.di
22

3-
import de.guite.modulestudio.metamodel.AbstractIntegerField
43
import de.guite.modulestudio.metamodel.Application
54
import de.guite.modulestudio.metamodel.ArrayField
65
import de.guite.modulestudio.metamodel.BooleanField
76
import de.guite.modulestudio.metamodel.Field
8-
import de.guite.modulestudio.metamodel.IntegerField
97
import de.guite.modulestudio.metamodel.ListField
108
import de.guite.modulestudio.metamodel.ListFieldItem
119
import de.guite.modulestudio.metamodel.NumberField
10+
import de.guite.modulestudio.metamodel.NumberFieldType
11+
import de.guite.modulestudio.metamodel.NumberRole
1212
import de.guite.modulestudio.metamodel.UserField
1313
import de.guite.modulestudio.metamodel.Variables
14-
import java.math.BigInteger
1514
import org.zikula.modulestudio.generator.application.IMostFileSystemAccess
1615
import org.zikula.modulestudio.generator.cartridges.symfony.models.entity.Property
1716
import org.zikula.modulestudio.generator.extensions.ControllerExtensions
@@ -100,7 +99,7 @@ class Configuration {
10099
def private additionalInfo(Field it) {
101100
if (it instanceof UserField) {
102101
return 'Needs to be a user ID.'
103-
} else if (it instanceof IntegerField && (it as IntegerField).isUserGroupSelector) {
102+
} else if (it instanceof NumberField && (it as NumberField).isUserGroupSelector) {
104103
return 'Needs to be a group ID.';
105104
}
106105
null
@@ -109,7 +108,7 @@ class Configuration {
109108
def private nodeType(Field it) {
110109
switch (it) {
111110
BooleanField: 'boolean'
112-
AbstractIntegerField: 'integer'
111+
NumberField case NumberFieldType.INTEGER === numberType: 'integer'
113112
NumberField/* case NumberFieldType.FLOAT === numberType*/: 'float'
114113
ListField: 'enum'
115114
ArrayField: 'array'
@@ -122,25 +121,18 @@ class Configuration {
122121
}
123122
124123
def private validation(Field it) '''
125-
«IF it instanceof IntegerField»
126-
«IF range»
124+
«IF it instanceof NumberField»
125+
«IF NumberRole.RANGE == role»
127126
->min(«minValue»)
128127
->max(«maxValue»)
129128
«ELSE»
130-
«IF minValue.compareTo(BigInteger.valueOf(0)) > 0»
129+
«IF minValue > 0»
131130
->min(«minValue»)
132131
«ENDIF»
133-
«IF maxValue.compareTo(BigInteger.valueOf(0)) > 0»
132+
«IF maxValue > 0»
134133
->max(«maxValue»)
135134
«ENDIF»
136135
«ENDIF»
137-
«ELSEIF it instanceof NumberField»
138-
«IF minValue > 0»
139-
->min(«minValue»)
140-
«ENDIF»
141-
«IF maxValue > 0»
142-
->max(«maxValue»)
143-
«ENDIF»
144136
«ELSEIF it instanceof ListField»
145137
->values([«FOR item : items SEPARATOR ', '»'«item.listEntry»'«ENDFOR»])
146138
«ENDIF»
@@ -153,7 +145,7 @@ class Configuration {
153145
«ELSE»
154146
«IF mandatory»
155147
->isRequired()
156-
«IF !(it instanceof BooleanField || it instanceof AbstractIntegerField || it instanceof NumberField
148+
«IF !(it instanceof BooleanField || it instanceof NumberField
157149
->cannotBeEmpty()
158150
«ENDIF»
159151
«ENDIF»

bundles/org.zikula.modulestudio.generator/src/org/zikula/modulestudio/generator/cartridges/symfony/controller/helper/EntityDisplayHelper.xtend

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import de.guite.modulestudio.metamodel.Entity
77
import de.guite.modulestudio.metamodel.Field
88
import de.guite.modulestudio.metamodel.ListField
99
import de.guite.modulestudio.metamodel.NumberField
10+
import de.guite.modulestudio.metamodel.NumberRole
1011
import de.guite.modulestudio.metamodel.StringField
1112
import de.guite.modulestudio.metamodel.StringRole
1213
import de.guite.modulestudio.metamodel.TextField
@@ -291,7 +292,7 @@ class EntityDisplayHelper {
291292

292293
def private formatFieldValue(Field it, CharSequence value) {
293294
switch it {
294-
NumberField: '''$this->«IF currency»currencyFormatter->formatCurrency(«value», 'EUR')«ELSE»numberFormatter->format(«value»)«ENDIF»'''
295+
NumberField: '''$this->«IF NumberRole.MONEY == role»currencyFormatter->formatCurrency(«value», 'EUR')«ELSE»numberFormatter->format(«value»)«ENDIF»'''
295296
UserField: '''(«value» ? «value»->getUname() : '')'''
296297
ListField: '''«IF null !== entity»$this->listEntriesHelper->resolve(«value», '«entity.name.formatForCode»', '«name.formatForCode»')«ELSE»«value»«ENDIF»'''
297298
DatetimeField: '''$this->dateFormatter->formatObject(«value», [«IF isDateTimeField»IntlDateFormatter::SHORT, IntlDateFormatter::SHORT«ELSEIF isDateField»IntlDateFormatter::SHORT, IntlDateFormatter::NONE«ELSEIF isTimeField»IntlDateFormatter::NONE, IntlDateFormatter::SHORT«ENDIF»])'''

bundles/org.zikula.modulestudio.generator/src/org/zikula/modulestudio/generator/cartridges/symfony/models/business/ValidationConstraints.xtend

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package org.zikula.modulestudio.generator.cartridges.symfony.models.business
22

3-
import de.guite.modulestudio.metamodel.AbstractIntegerField
43
import de.guite.modulestudio.metamodel.AbstractStringField
54
import de.guite.modulestudio.metamodel.ArrayField
65
import de.guite.modulestudio.metamodel.BooleanField
76
import de.guite.modulestudio.metamodel.DatetimeField
87
import de.guite.modulestudio.metamodel.Entity
98
import de.guite.modulestudio.metamodel.Field
10-
import de.guite.modulestudio.metamodel.IntegerField
119
import de.guite.modulestudio.metamodel.ListField
1210
import de.guite.modulestudio.metamodel.NumberField
11+
import de.guite.modulestudio.metamodel.NumberFieldType
1312
import de.guite.modulestudio.metamodel.StringField
1413
import de.guite.modulestudio.metamodel.StringRole
1514
import de.guite.modulestudio.metamodel.TextField
@@ -59,55 +58,47 @@ class ValidationConstraints {
5958
*/»«ENDIF»
6059
'''
6160

62-
def private fieldAnnotationsInteger(AbstractIntegerField it) '''
61+
def private fieldAnnotationsInteger(NumberField it) '''
6362
«IF mandatory && (!primaryKey || (null !== entity && entity.getVersionField == this))»
6463
#[Assert\NotBlank]
6564
#[Assert\NotEqualTo(value: 0)]
6665
«/*ELSEIF !nullable»
6766
#[Assert\NotNull]
6867
*/»«ENDIF»
6968
'''
70-
def dispatch fieldAnnotations(AbstractIntegerField it) '''
71-
«IF null === entity
72-
|| (
73-
entity.incoming.filter[r|r.targetField == name].empty
74-
&& entity.outgoing.filter[r|r.sourceField == name].empty
75-
76-
«fieldAnnotationsInteger»
77-
«ENDIF»
78-
'''
79-
def dispatch fieldAnnotations(IntegerField it) '''
80-
«IF null === entity
81-
|| (
82-
entity.incoming.filter[r|r.targetField == name].empty
83-
&& entity.outgoing.filter[r|r.sourceField == name].empty
84-
85-
«fieldAnnotationsInteger»
86-
«IF minValue.toString != '0' && maxValue.toString != '0'»
69+
def dispatch fieldAnnotations(NumberField it) '''
70+
«IF NumberFieldType.INTEGER == numberType»
71+
«IF null === entity
72+
|| (
73+
entity.incoming.filter[r|r.targetField == name].empty
74+
&& entity.outgoing.filter[r|r.sourceField == name].empty
75+
76+
«fieldAnnotationsInteger»
77+
«IF minValue.toString != '0' && maxValue.toString != '0'»
78+
#[Assert\Range(min: «minValue», max: «maxValue»)]
79+
«ELSEIF minValue.toString != '0'»
80+
#[Assert\GreaterThanOrEqual(value: «minValue»)]
81+
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
82+
«ELSEIF maxValue.toString != '0'»
83+
#[Assert\LessThanOrEqual(value: «maxValue»)]
84+
«ELSE»
85+
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
86+
«ENDIF»
87+
«ENDIF»
88+
«ELSE»
89+
«fieldAnnotationsNumeric»
90+
«IF minValue.toString != '0.0' && maxValue.toString != '0.0'»
8791
#[Assert\Range(min: «minValue», max: «maxValue»)]
88-
«ELSEIF minValue.toString != '0'»
92+
«ELSEIF minValue.toString != '0.0
8993
#[Assert\GreaterThanOrEqual(value: «minValue»)]
9094
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
91-
«ELSEIF maxValue.toString != '0'»
95+
«ELSEIF maxValue.toString != '0.0
9296
#[Assert\LessThanOrEqual(value: «maxValue»)]
9397
«ELSE»
9498
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
9599
«ENDIF»
96100
«ENDIF»
97101
'''
98-
def dispatch fieldAnnotations(NumberField it) '''
99-
«fieldAnnotationsNumeric»
100-
«IF minValue.toString != '0.0' && maxValue.toString != '0.0'»
101-
#[Assert\Range(min: «minValue», max: «maxValue»)]
102-
«ELSEIF minValue.toString != '0.0'»
103-
#[Assert\GreaterThanOrEqual(value: «minValue»)]
104-
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
105-
«ELSEIF maxValue.toString != '0.0'»
106-
#[Assert\LessThanOrEqual(value: «maxValue»)]
107-
«ELSE»
108-
#[Assert\LessThan(value: «BigInteger.valueOf((10 ** length) as long)»)]
109-
«ENDIF»
110-
'''
111102
def dispatch fieldAnnotations(UserField it) '''
112103
«IF mandatory && !primaryKey»
113104
#[Assert\NotBlank]

0 commit comments

Comments
 (0)