Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

26 changed files:

Changes:

  • models/dto-definition/.mvn/models-dto

  • models/dto-definition/pom.xml
    ... ... @@ -33,6 +33,12 @@
    33 33
         <name>ObServe Models :: Dto definition</name>
    
    34 34
         <description>ObServe Models Dto definition module</description>
    
    35 35
     
    
    36
    +    <properties>
    
    37
    +        <eugene.templates>fr.ird.observe.toolkit.templates.ExtractTagValues</eugene.templates>
    
    38
    +        <eugene.defaultPackage>fr.ird.observe.dto</eugene.defaultPackage>
    
    39
    +        <eugene.useI18n>false</eugene.useI18n>
    
    40
    +    </properties>
    
    41
    +
    
    36 42
         <build>
    
    37 43
     
    
    38 44
             <resources>
    

  • models/dto-definition/src/main/models/Observe-01-referential-common.model
    ... ... @@ -94,7 +94,7 @@ dataEntryOperator + {*:1} boolean
    94 94
     dataSource + {*:1} boolean
    
    95 95
     country {*:0..1} referential.common.CountryReference | notNull
    
    96 96
     
    
    97
    -referential.common.Program > referential.I18nReferential >> WithStartEndDate | references=code,label,uri,gearType,gearTypePrefix,tripCount,startDate,endDate NavigationEntryPoint
    
    97
    +referential.common.Program > referential.I18nReferential >> WithStartEndDate | references=code,label,uri,gearType,gearTypePrefix,tripCount,startDate,endDate navigationEntryPoint
    
    98 98
     nonTargetObservation + {*:1} int
    
    99 99
     targetDiscardsObservation + {*:1} int
    
    100 100
     samplesObservation + {*:1} int
    

  • models/dto-definition/src/main/models/Observe-30-data-ll-observation.model
    ... ... @@ -172,7 +172,7 @@ settingShape {*:1} referential.ll.common.SettingShapeReference
    172 172
     lineType {*:0..1} referential.ll.common.LineTypeReference
    
    173 173
     lightsticksType {*:0..1} referential.ll.common.LightsticksTypeReference
    
    174 174
     lightsticksColor {*:0..1} referential.ll.common.LightsticksColorReference
    
    175
    -otherSets {*} data.ll.observation.SetStub | mainDto=skip
    
    175
    +otherSets {*} data.ll.observation.SetStub
    
    176 176
     
    
    177 177
     data.ll.observation.SetCatch > data.Container >> data.ll.observation.LonglinePositionContainerAware
    
    178 178
     catches {*} data.ll.observation.Catch | ordered
    

  • models/dto-definition/src/main/models/Observe/dto/attribute/mayNotNull.properties
    1
    +data.ll.common.Trip.attribute.captain=true
    
    2
    +data.ll.common.Trip.attribute.departureHarbour=true
    
    3
    +data.ll.common.Trip.attribute.landingHarbour=true
    
    4
    +data.ll.common.Trip.attribute.species=true
    
    5
    +data.ll.common.TripGearUseFeatures.attribute.gearUseFeatures=true
    
    6
    +data.ll.landing.Landing.attribute.processingCompany=true
    
    7
    +data.ll.logbook.Activity.attribute.endTimeStamp=true
    
    8
    +data.ll.logbook.Activity.attribute.fpaZone=true
    
    9
    +data.ll.logbook.Activity.attribute.latitude=true
    
    10
    +data.ll.logbook.Activity.attribute.longitude=true
    
    11
    +data.ll.logbook.Activity.attribute.quadrant=true
    
    12
    +data.ll.logbook.Activity.attribute.relatedObservedActivity=true
    
    13
    +data.ll.logbook.Activity.attribute.seaSurfaceTemperature=true
    
    14
    +data.ll.logbook.Set.attribute.basketsPerSectionCount=true
    
    15
    +data.ll.logbook.Set.attribute.branchlinesPerBasketCount=true
    
    16
    +data.ll.logbook.Set.attribute.haulingBreaks=true
    
    17
    +data.ll.logbook.Set.attribute.lightsticksPerBasketCount=true
    
    18
    +data.ll.observation.Activity.attribute.fpaZone=true
    
    19
    +data.ll.observation.Activity.attribute.seaSurfaceTemperature=true
    
    20
    +data.ll.observation.Branchline.attribute.topType=true
    
    21
    +data.ll.observation.Branchline.attribute.tracelineType=true
    
    22
    +data.ll.observation.Encounter.attribute.count=true
    
    23
    +data.ll.observation.Encounter.attribute.distance=true
    
    24
    +data.ll.observation.Encounter.attribute.species=true
    
    25
    +data.ll.observation.SensorUsed.attribute.sensorSerialNo=true
    
    26
    +data.ll.observation.Set.attribute.haulingBreaks=true
    
    27
    +data.ps.common.Trip.attribute.captain=true
    
    28
    +data.ps.common.Trip.attribute.dataEntryOperator=true
    
    29
    +data.ps.common.Trip.attribute.landingHarbour=true
    
    30
    +data.ps.common.TripGearUseFeatures.attribute.gearUseFeatures=true
    
    31
    +data.ps.observation.Activity.attribute.observedSystemDistance=true
    
    32
    +data.ps.observation.Activity.attribute.seaSurfaceTemperature=true
    
    33
    +data.ps.observation.Activity.attribute.surroundingActivity=true
    
    34
    +data.ps.observation.Activity.attribute.wind=true
    
    35
    +data.ps.observation.NonTargetLength.attribute.speciesFate=true
    
    36
    +data.ps.observation.Set.attribute.currentDirection=true
    
    37
    +data.ps.observation.TransmittingBuoy.attribute.code=true
    
    38
    +referential.Referential.attribute.uri=true
    
    39
    +referential.common.FpaZone.attribute.endDate=true
    
    40
    +referential.common.FpaZone.attribute.startDate=true
    
    41
    +referential.common.Harbour.attribute.latitude=true
    
    42
    +referential.common.Harbour.attribute.locode=true
    
    43
    +referential.common.Harbour.attribute.longitude=true
    
    44
    +referential.common.Harbour.attribute.quadrant=true
    
    45
    +referential.common.LengthFormulaSupport.attribute.endDate=true
    
    46
    +referential.common.LengthFormulaSupport.attribute.startDate=true
    
    47
    +referential.common.Organism.attribute.description=true
    
    48
    +referential.common.Program.attribute.endDate=true
    
    49
    +referential.common.Program.attribute.startDate=true
    
    50
    +referential.common.ShipOwner.attribute.endDate=true
    
    51
    +referential.common.ShipOwner.attribute.startDate=true
    
    52
    +referential.common.Species.attribute.faoCode=true
    
    53
    +referential.common.Species.attribute.ocean=true
    
    54
    +referential.common.Species.attribute.wormsId=true
    
    55
    +referential.common.SpeciesList.attribute.species=true
    
    56
    +referential.common.Vessel.attribute.changeDate=true
    
    57
    +referential.ps.common.ObjectMaterial.attribute.legacyCode=true
    
    58
    +referential.ps.common.ObjectMaterial.attribute.objectMaterialType=true
    
    59
    +referential.ps.common.ObjectMaterial.attribute.parent=true
    
    60
    +referential.ps.common.ObjectMaterial.attribute.standardCode=true

  • models/dto-definition/src/main/models/Observe/dto/attribute/notNull.properties
    1
    +data.ContainerChildWithProportion.attribute.proportion=true
    
    2
    +data.ll.common.GearUseFeatures.attribute.gear=true
    
    3
    +data.ll.common.GearUseFeatures.attribute.number=true
    
    4
    +data.ll.common.Trip.attribute.endDate=true
    
    5
    +data.ll.common.Trip.attribute.ocean=true
    
    6
    +data.ll.common.Trip.attribute.startDate=true
    
    7
    +data.ll.common.Trip.attribute.tripType=true
    
    8
    +data.ll.common.Trip.attribute.vessel=true
    
    9
    +data.ll.landing.Landing.attribute.harbour=true
    
    10
    +data.ll.landing.LandingPart.attribute.species=true
    
    11
    +data.ll.landing.LandingPart.attribute.weight=true
    
    12
    +data.ll.logbook.Activity.attribute.startTimeStamp=true
    
    13
    +data.ll.logbook.Activity.attribute.vesselActivity=true
    
    14
    +data.ll.logbook.ActivitySample.attribute.timeStamp=true
    
    15
    +data.ll.logbook.BaitsComposition.attribute.baitType=true
    
    16
    +data.ll.logbook.BranchlinesComposition.attribute.length=true
    
    17
    +data.ll.logbook.BranchlinesComposition.attribute.topType=true
    
    18
    +data.ll.logbook.BranchlinesComposition.attribute.tracelineType=true
    
    19
    +data.ll.logbook.Catch.attribute.catchFate=true
    
    20
    +data.ll.logbook.Catch.attribute.species=true
    
    21
    +data.ll.logbook.FloatlinesComposition.attribute.length=true
    
    22
    +data.ll.logbook.FloatlinesComposition.attribute.lineType=true
    
    23
    +data.ll.logbook.HooksComposition.attribute.hookType=true
    
    24
    +data.ll.logbook.Sample.attribute.timeStamp=true
    
    25
    +data.ll.logbook.SamplePart.attribute.count=true
    
    26
    +data.ll.logbook.SamplePart.attribute.species=true
    
    27
    +data.ll.logbook.Set.attribute.haulingEndTimeStamp=true
    
    28
    +data.ll.logbook.Set.attribute.haulingStartTimeStamp=true
    
    29
    +data.ll.logbook.Set.attribute.settingEndTimeStamp=true
    
    30
    +data.ll.logbook.Set.attribute.settingStartLatitude=true
    
    31
    +data.ll.logbook.Set.attribute.settingStartLongitude=true
    
    32
    +data.ll.logbook.Set.attribute.settingStartQuadrant=true
    
    33
    +data.ll.logbook.Set.attribute.settingStartTimeStamp=true
    
    34
    +data.ll.logbook.Set.attribute.totalSectionsCount=true
    
    35
    +data.ll.observation.Activity.attribute.latitude=true
    
    36
    +data.ll.observation.Activity.attribute.longitude=true
    
    37
    +data.ll.observation.Activity.attribute.quadrant=true
    
    38
    +data.ll.observation.Activity.attribute.vesselActivity=true
    
    39
    +data.ll.observation.BaitsComposition.attribute.baitType=true
    
    40
    +data.ll.observation.Basket.attribute.settingIdentifier=true
    
    41
    +data.ll.observation.Branchline.attribute.settingIdentifier=true
    
    42
    +data.ll.observation.BranchlinesComposition.attribute.length=true
    
    43
    +data.ll.observation.BranchlinesComposition.attribute.topType=true
    
    44
    +data.ll.observation.BranchlinesComposition.attribute.tracelineType=true
    
    45
    +data.ll.observation.Catch.attribute.catchFate=true
    
    46
    +data.ll.observation.Catch.attribute.species=true
    
    47
    +data.ll.observation.Encounter.attribute.encounterType=true
    
    48
    +data.ll.observation.FloatlinesComposition.attribute.length=true
    
    49
    +data.ll.observation.FloatlinesComposition.attribute.lineType=true
    
    50
    +data.ll.observation.HooksComposition.attribute.hookType=true
    
    51
    +data.ll.observation.Section.attribute.settingIdentifier=true
    
    52
    +data.ll.observation.SensorUsed.attribute.sensorType=true
    
    53
    +data.ll.observation.Set.attribute.basketsPerSectionCount=true
    
    54
    +data.ll.observation.Set.attribute.branchlinesPerBasketCount=true
    
    55
    +data.ll.observation.Set.attribute.haulingDirectionSameAsSetting=true
    
    56
    +data.ll.observation.Set.attribute.haulingEndLatitude=true
    
    57
    +data.ll.observation.Set.attribute.haulingEndLongitude=true
    
    58
    +data.ll.observation.Set.attribute.haulingEndQuadrant=true
    
    59
    +data.ll.observation.Set.attribute.haulingEndTimeStamp=true
    
    60
    +data.ll.observation.Set.attribute.haulingStartLatitude=true
    
    61
    +data.ll.observation.Set.attribute.haulingStartLongitude=true
    
    62
    +data.ll.observation.Set.attribute.haulingStartQuadrant=true
    
    63
    +data.ll.observation.Set.attribute.haulingStartTimeStamp=true
    
    64
    +data.ll.observation.Set.attribute.settingEndLatitude=true
    
    65
    +data.ll.observation.Set.attribute.settingEndLongitude=true
    
    66
    +data.ll.observation.Set.attribute.settingEndQuadrant=true
    
    67
    +data.ll.observation.Set.attribute.settingEndTimeStamp=true
    
    68
    +data.ll.observation.Set.attribute.settingStartLatitude=true
    
    69
    +data.ll.observation.Set.attribute.settingStartLongitude=true
    
    70
    +data.ll.observation.Set.attribute.settingStartQuadrant=true
    
    71
    +data.ll.observation.Set.attribute.settingStartTimeStamp=true
    
    72
    +data.ll.observation.Set.attribute.settingVesselSpeed=true
    
    73
    +data.ll.observation.Set.attribute.totalSectionsCount=true
    
    74
    +data.ps.common.GearUseFeatures.attribute.gear=true
    
    75
    +data.ps.common.GearUseFeatures.attribute.number=true
    
    76
    +data.ps.common.Trip.attribute.departureHarbour=true
    
    77
    +data.ps.common.Trip.attribute.endDate=true
    
    78
    +data.ps.common.Trip.attribute.observer=true
    
    79
    +data.ps.common.Trip.attribute.ocean=true
    
    80
    +data.ps.common.Trip.attribute.startDate=true
    
    81
    +data.ps.common.Trip.attribute.vessel=true
    
    82
    +data.ps.observation.Activity.attribute.latitude=true
    
    83
    +data.ps.observation.Activity.attribute.longitude=true
    
    84
    +data.ps.observation.Activity.attribute.observedSystem=true
    
    85
    +data.ps.observation.Activity.attribute.quadrant=true
    
    86
    +data.ps.observation.Activity.attribute.time=true
    
    87
    +data.ps.observation.Activity.attribute.vesselActivity=true
    
    88
    +data.ps.observation.DiscardedTargetCatch.attribute.catchWeight=true
    
    89
    +data.ps.observation.DiscardedTargetCatch.attribute.species=true
    
    90
    +data.ps.observation.DiscardedTargetCatch.attribute.weightCategory=true
    
    91
    +data.ps.observation.FloatingObject.attribute.objectOperation=true
    
    92
    +data.ps.observation.KeptTargetCatch.attribute.catchWeight=true
    
    93
    +data.ps.observation.KeptTargetCatch.attribute.species=true
    
    94
    +data.ps.observation.KeptTargetCatch.attribute.weightCategory=true
    
    95
    +data.ps.observation.NonTargetCatch.attribute.species=true
    
    96
    +data.ps.observation.NonTargetCatch.attribute.speciesFate=true
    
    97
    +data.ps.observation.NonTargetCatchRelease.attribute.count=true
    
    98
    +data.ps.observation.NonTargetCatchRelease.attribute.sex=true
    
    99
    +data.ps.observation.NonTargetCatchRelease.attribute.species=true
    
    100
    +data.ps.observation.NonTargetCatchRelease.attribute.speciesGroupReleaseMode=true
    
    101
    +data.ps.observation.NonTargetCatchRelease.attribute.status=true
    
    102
    +data.ps.observation.NonTargetLength.attribute.count=true
    
    103
    +data.ps.observation.NonTargetLength.attribute.sex=true
    
    104
    +data.ps.observation.NonTargetLength.attribute.sizeMeasureType=true
    
    105
    +data.ps.observation.NonTargetLength.attribute.species=true
    
    106
    +data.ps.observation.ObjectObservedSpecies.attribute.count=true
    
    107
    +data.ps.observation.ObjectObservedSpecies.attribute.species=true
    
    108
    +data.ps.observation.ObjectObservedSpecies.attribute.speciesStatus=true
    
    109
    +data.ps.observation.ObjectSchoolEstimate.attribute.species=true
    
    110
    +data.ps.observation.ObjectSchoolEstimate.attribute.totalWeight=true
    
    111
    +data.ps.observation.Route.attribute.date=true
    
    112
    +data.ps.observation.SchoolEstimate.attribute.species=true
    
    113
    +data.ps.observation.TargetLength.attribute.count=true
    
    114
    +data.ps.observation.TargetLength.attribute.sizeMeasureType=true
    
    115
    +data.ps.observation.TargetLength.attribute.species=true
    
    116
    +data.ps.observation.TransmittingBuoy.attribute.transmittingBuoyOperation=true
    
    117
    +data.ps.observation.TransmittingBuoy.attribute.transmittingBuoyType=true
    
    118
    +referential.I18nReferential.attribute.label1=true
    
    119
    +referential.I18nReferential.attribute.label2=true
    
    120
    +referential.I18nReferential.attribute.label3=true
    
    121
    +referential.common.Country.attribute.iso2Code=true
    
    122
    +referential.common.Country.attribute.iso3Code=true
    
    123
    +referential.common.Harbour.attribute.country=true
    
    124
    +referential.common.LengthFormulaSupport.attribute.coefficients=true
    
    125
    +referential.common.LengthFormulaSupport.attribute.ocean=true
    
    126
    +referential.common.LengthFormulaSupport.attribute.sex=true
    
    127
    +referential.common.LengthFormulaSupport.attribute.species=true
    
    128
    +referential.common.LengthLengthParameter.attribute.inputOutputFormula=true
    
    129
    +referential.common.LengthLengthParameter.attribute.inputSizeMeasureType=true
    
    130
    +referential.common.LengthLengthParameter.attribute.outputInputFormula=true
    
    131
    +referential.common.LengthLengthParameter.attribute.outputSizeMeasureType=true
    
    132
    +referential.common.LengthWeightParameter.attribute.lengthWeightFormula=true
    
    133
    +referential.common.LengthWeightParameter.attribute.sizeMeasureType=true
    
    134
    +referential.common.LengthWeightParameter.attribute.weightLengthFormula=true
    
    135
    +referential.common.Organism.attribute.country=true
    
    136
    +referential.common.Person.attribute.country=true
    
    137
    +referential.common.Person.attribute.firstName=true
    
    138
    +referential.common.Person.attribute.lastName=true
    
    139
    +referential.common.Program.attribute.gearType=true
    
    140
    +referential.common.Program.attribute.organism=true
    
    141
    +referential.common.ShipOwner.attribute.label=true
    
    142
    +referential.common.Species.attribute.scientificLabel=true
    
    143
    +referential.common.Species.attribute.speciesGroup=true
    
    144
    +referential.common.Vessel.attribute.flagCountry=true
    
    145
    +referential.common.Vessel.attribute.fleetCountry=true
    
    146
    +referential.common.Vessel.attribute.vesselSizeCategory=true
    
    147
    +referential.common.Vessel.attribute.vesselType=true
    
    148
    +referential.common.VesselSizeCategory.attribute.capacityLabel=true
    
    149
    +referential.common.VesselSizeCategory.attribute.gaugeLabel=true
    
    150
    +referential.common.Wind.attribute.speedRange=true
    
    151
    +referential.common.Wind.attribute.waveHeight=true
    
    152
    +referential.ll.observation.SensorBrand.attribute.brandName=true
    
    153
    +referential.ps.common.ObjectOperation.attribute.whenArriving=true
    
    154
    +referential.ps.common.ObjectOperation.attribute.whenLeaving=true
    
    155
    +referential.ps.observation.WeightCategory.attribute.species=true

  • models/dto-definition/src/main/models/Observe/dto/attribute/ordered.properties
    1
    +data.TripMap.attribute.points=true
    
    2
    +data.ll.common.GearUseFeatures.attribute.gearUseFeaturesMeasurement=true
    
    3
    +data.ll.common.Trip.attribute.activityObs=true
    
    4
    +data.ll.common.TripGearUseFeatures.attribute.gearUseFeatures=true
    
    5
    +data.ll.logbook.ActivitySample.attribute.samplePart=true
    
    6
    +data.ll.logbook.Sample.attribute.samplePart=true
    
    7
    +data.ll.logbook.SetCatch.attribute.catches=true
    
    8
    +data.ll.observation.Basket.attribute.branchline=true
    
    9
    +data.ll.observation.Section.attribute.basket=true
    
    10
    +data.ll.observation.SetCatch.attribute.catches=true
    
    11
    +data.ll.observation.SetDetailComposition.attribute.section=true
    
    12
    +data.ps.common.GearUseFeatures.attribute.gearUseFeaturesMeasurement=true
    
    13
    +data.ps.common.Trip.attribute.route=true
    
    14
    +data.ps.common.TripGearUseFeatures.attribute.gearUseFeatures=true
    
    15
    +data.ps.observation.DiscardedTargetSample.attribute.targetLength=true
    
    16
    +data.ps.observation.KeptTargetSample.attribute.targetLength=true
    
    17
    +data.ps.observation.NonTargetSample.attribute.nonTargetLength=true
    
    18
    +data.ps.observation.Route.attribute.activity=true
    
    19
    +data.ps.observation.SetDiscardedTargetCatch.attribute.targetCatch=true
    
    20
    +data.ps.observation.SetKeptTargetCatch.attribute.targetCatch=true
    
    21
    +data.ps.observation.SetNonTargetCatch.attribute.nonTargetCatch=true
    
    22
    +data.ps.observation.SetNonTargetCatchRelease.attribute.nonTargetCatchRelease=true
    
    23
    +data.ps.observation.TargetSample.attribute.targetLength=true
    
    24
    +referential.common.Gear.attribute.gearCharacteristic=true
    
    25
    +referential.common.Species.attribute.ocean=true
    
    26
    +referential.common.SpeciesGroup.attribute.speciesGroupReleaseMode=true
    
    27
    +referential.common.SpeciesList.attribute.species=true

  • models/dto-definition/src/main/models/Observe/dto/attribute/positiveNumber.properties
    1
    +data.ContainerChildWithProportion.attribute.proportion=true
    
    2
    +data.ll.common.GearUseFeatures.attribute.number=true
    
    3
    +data.ll.logbook.Activity.attribute.currentDirection=true
    
    4
    +data.ll.logbook.Activity.attribute.currentSpeed=true
    
    5
    +data.ll.logbook.Activity.attribute.windDirection=true
    
    6
    +data.ll.logbook.BaitsComposition.attribute.individualSize=true
    
    7
    +data.ll.logbook.BaitsComposition.attribute.individualWeight=true
    
    8
    +data.ll.logbook.BranchlinesComposition.attribute.length=true
    
    9
    +data.ll.logbook.BranchlinesComposition.attribute.tracelineLength=true
    
    10
    +data.ll.logbook.Catch.attribute.beatDiameter=true
    
    11
    +data.ll.logbook.Catch.attribute.count=true
    
    12
    +data.ll.logbook.Catch.attribute.countDepredated=true
    
    13
    +data.ll.logbook.Catch.attribute.totalWeight=true
    
    14
    +data.ll.logbook.FloatlinesComposition.attribute.length=true
    
    15
    +data.ll.logbook.HooksComposition.attribute.hookOffset=true
    
    16
    +data.ll.logbook.SamplePart.attribute.count=true
    
    17
    +data.ll.logbook.SamplePart.attribute.length=true
    
    18
    +data.ll.logbook.SamplePart.attribute.weight=true
    
    19
    +data.ll.logbook.Set.attribute.basketLineLength=true
    
    20
    +data.ll.logbook.Set.attribute.basketsPerSectionCount=true
    
    21
    +data.ll.logbook.Set.attribute.branchlinesPerBasketCount=true
    
    22
    +data.ll.logbook.Set.attribute.lengthBetweenBranchlines=true
    
    23
    +data.ll.logbook.Set.attribute.lightsticksPerBasketCount=true
    
    24
    +data.ll.logbook.Set.attribute.maxDepthTargeted=true
    
    25
    +data.ll.logbook.Set.attribute.number=true
    
    26
    +data.ll.logbook.Set.attribute.shooterSpeed=true
    
    27
    +data.ll.logbook.Set.attribute.snapWeight=true
    
    28
    +data.ll.logbook.Set.attribute.swivelWeight=true
    
    29
    +data.ll.logbook.Set.attribute.timeBetweenHooks=true
    
    30
    +data.ll.logbook.Set.attribute.totalBasketsCount=true
    
    31
    +data.ll.logbook.Set.attribute.totalHooksCount=true
    
    32
    +data.ll.logbook.Set.attribute.totalLightsticksCount=true
    
    33
    +data.ll.logbook.Set.attribute.totalLineLength=true
    
    34
    +data.ll.logbook.Set.attribute.totalSectionsCount=true
    
    35
    +data.ll.observation.BaitsComposition.attribute.individualSize=true
    
    36
    +data.ll.observation.BaitsComposition.attribute.individualWeight=true
    
    37
    +data.ll.observation.Basket.attribute.floatline1Length=true
    
    38
    +data.ll.observation.Basket.attribute.floatline2Length=true
    
    39
    +data.ll.observation.Basket.attribute.haulingIdentifier=true
    
    40
    +data.ll.observation.Basket.attribute.settingIdentifier=true
    
    41
    +data.ll.observation.Branchline.attribute.branchlineLength=true
    
    42
    +data.ll.observation.Branchline.attribute.haulingIdentifier=true
    
    43
    +data.ll.observation.Branchline.attribute.hookOffset=true
    
    44
    +data.ll.observation.Branchline.attribute.settingIdentifier=true
    
    45
    +data.ll.observation.Branchline.attribute.snapWeight=true
    
    46
    +data.ll.observation.Branchline.attribute.swivelWeight=true
    
    47
    +data.ll.observation.Branchline.attribute.timeSinceContact=true
    
    48
    +data.ll.observation.Branchline.attribute.tracelineLength=true
    
    49
    +data.ll.observation.BranchlinesComposition.attribute.length=true
    
    50
    +data.ll.observation.BranchlinesComposition.attribute.tracelineLength=true
    
    51
    +data.ll.observation.Catch.attribute.beatDiameter=true
    
    52
    +data.ll.observation.Catch.attribute.count=true
    
    53
    +data.ll.observation.Catch.attribute.gonadeWeight=true
    
    54
    +data.ll.observation.Catch.attribute.totalWeight=true
    
    55
    +data.ll.observation.Encounter.attribute.count=true
    
    56
    +data.ll.observation.Encounter.attribute.distance=true
    
    57
    +data.ll.observation.FloatlinesComposition.attribute.length=true
    
    58
    +data.ll.observation.HooksComposition.attribute.hookOffset=true
    
    59
    +data.ll.observation.Section.attribute.haulingIdentifier=true
    
    60
    +data.ll.observation.Section.attribute.settingIdentifier=true
    
    61
    +data.ll.observation.Set.attribute.branchlinesPerBasketCount=true
    
    62
    +data.ll.observation.Set.attribute.haulingBreaks=true
    
    63
    +data.ll.observation.Set.attribute.maxDepthTargeted=true
    
    64
    +data.ll.observation.Set.attribute.number=true
    
    65
    +data.ll.observation.Set.attribute.shooterSpeed=true
    
    66
    +data.ll.observation.Set.attribute.snapWeight=true
    
    67
    +data.ll.observation.Set.attribute.swivelWeight=true
    
    68
    +data.ll.observation.Set.attribute.timeBetweenHooks=true
    
    69
    +data.ll.observation.Set.attribute.totalBasketsCount=true
    
    70
    +data.ll.observation.Set.attribute.totalHooksCount=true
    
    71
    +data.ll.observation.Set.attribute.totalSectionsCount=true
    
    72
    +data.ll.observation.SetDetailComposition.attribute.basketsPerSectionCount=true
    
    73
    +data.ll.observation.SetDetailComposition.attribute.branchlinesPerBasketCount=true
    
    74
    +data.ll.observation.SetDetailComposition.attribute.totalSectionsCount=true
    
    75
    +data.ll.observation.SizeMeasure.attribute.size=true
    
    76
    +data.ll.observation.Tdr.attribute.fishingEndDepth=true
    
    77
    +data.ll.observation.Tdr.attribute.fishingStartDepth=true
    
    78
    +data.ll.observation.Tdr.attribute.floatline1Length=true
    
    79
    +data.ll.observation.Tdr.attribute.floatline2Length=true
    
    80
    +data.ll.observation.Tdr.attribute.maxFishingDepth=true
    
    81
    +data.ll.observation.Tdr.attribute.meanDeploymentDepth=true
    
    82
    +data.ll.observation.Tdr.attribute.meanFishingDepth=true
    
    83
    +data.ll.observation.Tdr.attribute.medianDeploymentDepth=true
    
    84
    +data.ll.observation.Tdr.attribute.medianFishingDepth=true
    
    85
    +data.ll.observation.Tdr.attribute.minFishingDepth=true
    
    86
    +data.ll.observation.WeightMeasure.attribute.weight=true
    
    87
    +data.ps.common.GearUseFeatures.attribute.number=true
    
    88
    +data.ps.observation.Activity.attribute.observedSystemDistance=true
    
    89
    +data.ps.observation.Activity.attribute.vesselSpeed=true
    
    90
    +data.ps.observation.DiscardedTargetCatch.attribute.catchWeight=true
    
    91
    +data.ps.observation.KeptTargetCatch.attribute.catchWeight=true
    
    92
    +data.ps.observation.NonTargetCatch.attribute.catchWeight=true
    
    93
    +data.ps.observation.NonTargetCatch.attribute.meanLength=true
    
    94
    +data.ps.observation.NonTargetCatch.attribute.meanWeight=true
    
    95
    +data.ps.observation.NonTargetCatch.attribute.totalCount=true
    
    96
    +data.ps.observation.NonTargetCatchRelease.attribute.length=true
    
    97
    +data.ps.observation.NonTargetLength.attribute.count=true
    
    98
    +data.ps.observation.NonTargetLength.attribute.length=true
    
    99
    +data.ps.observation.NonTargetLength.attribute.weight=true
    
    100
    +data.ps.observation.ObjectObservedSpecies.attribute.count=true
    
    101
    +data.ps.observation.ObjectSchoolEstimate.attribute.totalWeight=true
    
    102
    +data.ps.observation.Route.attribute.endLogValue=true
    
    103
    +data.ps.observation.Route.attribute.startLogValue=true
    
    104
    +data.ps.observation.SchoolEstimate.attribute.meanWeight=true
    
    105
    +data.ps.observation.SchoolEstimate.attribute.totalWeight=true
    
    106
    +data.ps.observation.Set.attribute.currentDirection=true
    
    107
    +data.ps.observation.Set.attribute.currentMeasureDepth=true
    
    108
    +data.ps.observation.Set.attribute.currentSpeed=true
    
    109
    +data.ps.observation.Set.attribute.maxGearDepth=true
    
    110
    +data.ps.observation.Set.attribute.schoolMeanDepth=true
    
    111
    +data.ps.observation.Set.attribute.schoolThickness=true
    
    112
    +data.ps.observation.Set.attribute.schoolTopDepth=true
    
    113
    +data.ps.observation.TargetLength.attribute.count=true
    
    114
    +data.ps.observation.TargetLength.attribute.length=true
    
    115
    +data.ps.observation.TargetLength.attribute.weight=true
    
    116
    +referential.common.Species.attribute.minLength=true
    
    117
    +referential.common.Species.attribute.minWeight=true
    
    118
    +referential.common.Vessel.attribute.yearService=true

  • models/dto-definition/src/main/models/Observe/dto/attribute/strictlyPositiveNumber.properties
    1
    +data.ll.logbook.Activity.attribute.seaSurfaceTemperature=true
    
    2
    +data.ll.logbook.Catch.attribute.depredatedProportion=true
    
    3
    +data.ll.observation.Activity.attribute.seaSurfaceTemperature=true
    
    4
    +data.ll.observation.Set.attribute.basketsPerSectionCount=true
    
    5
    +data.ps.observation.Activity.attribute.seaSurfaceTemperature=true
    
    6
    +data.ps.observation.NonTargetCatchRelease.attribute.count=true
    
    7
    +referential.common.LengthWeightParameter.attribute.meanLength=true
    
    8
    +referential.common.LengthWeightParameter.attribute.meanWeight=true
    
    9
    +referential.common.Species.attribute.maxLength=true
    
    10
    +referential.common.Species.attribute.maxWeight=true
    
    11
    +referential.common.Vessel.attribute.capacity=true
    
    12
    +referential.common.Vessel.attribute.keelCode=true
    
    13
    +referential.common.Vessel.attribute.length=true
    
    14
    +referential.common.Vessel.attribute.power=true
    
    15
    +referential.common.Vessel.attribute.searchMaximum=true

  • models/dto-definition/src/main/models/Observe/dto/attribute/unique.properties
    1
    +data.TripMap.attribute.points=true
    
    2
    +data.ll.common.Trip.attribute.activityObs=true
    
    3
    +data.ll.logbook.Activity.attribute.catchSpeciesIds=true
    
    4
    +data.ll.logbook.SetStub.attribute.activity=true
    
    5
    +data.ll.observation.Basket.attribute.branchline=true
    
    6
    +data.ll.observation.Section.attribute.basket=true
    
    7
    +data.ll.observation.SetDetailComposition.attribute.section=true
    
    8
    +data.ll.observation.SetStub.attribute.activity=true
    
    9
    +data.ps.common.Trip.attribute.route=true
    
    10
    +data.ps.observation.Activity.attribute.nonTargetCatchSpecies=true
    
    11
    +data.ps.observation.DiscardedTargetSample.attribute.availableSpeciesIds=true
    
    12
    +data.ps.observation.KeptTargetSample.attribute.availableSpeciesIds=true
    
    13
    +data.ps.observation.NonTargetSample.attribute.availableSpeciesFateIds=true
    
    14
    +data.ps.observation.NonTargetSample.attribute.availableSpeciesIds=true
    
    15
    +data.ps.observation.Route.attribute.activity=true
    
    16
    +data.ps.observation.SetNonTargetCatchRelease.attribute.availableSpeciesIds=true
    
    17
    +data.ps.observation.TargetSample.attribute.availableSpeciesIds=true
    
    18
    +referential.Referential.attribute.code=true
    
    19
    +referential.Referential.attribute.homeId=true
    
    20
    +referential.Referential.attribute.uri=true
    
    21
    +referential.common.Country.attribute.iso2Code=true
    
    22
    +referential.common.Country.attribute.iso3Code=true
    
    23
    +referential.common.Species.attribute.faoCode=true
    
    24
    +referential.common.Species.attribute.scientificLabel=true
    
    25
    +referential.common.Species.attribute.wormsId=true

  • models/dto-definition/src/main/models/Observe/dto/class/comparator.properties
    1
    +data.ll.common.Trip.class=startDate
    
    2
    +data.ll.landing.Landing.class=startDate
    
    3
    +data.ll.logbook.Activity.class=startTimeStamp
    
    4
    +data.ll.logbook.ActivitySample.class=timeStamp
    
    5
    +data.ll.logbook.Sample.class=timeStamp
    
    6
    +data.ll.observation.Activity.class=timeStamp
    
    7
    +data.ps.common.Trip.class=startDate
    
    8
    +data.ps.observation.Activity.class=time
    
    9
    +data.ps.observation.Route.class=date

  • models/dto-definition/src/main/models/Observe/dto/class/constants.properties
    1
    +data.ps.observation.Set.class=targetSampleCapture,endSetDate,endPursingDate,endSetTime,endPursingTime
    
    2
    +data.ps.observation.TargetLength.class=totalWeight

  • models/dto-definition/src/main/models/Observe/dto/class/form.properties
    1
    +data.ps.observation.DiscardedTargetSample.class=TargetLength
    
    2
    +data.ps.observation.KeptTargetSample.class=TargetLength
    
    3
    +data.ps.observation.NonTargetSample.class=NonTargetLength
    
    4
    +data.ps.observation.TargetSample.class=TargetLength

  • models/dto-definition/src/main/models/Observe/dto/class/mainDto.properties
    1
    +data.ll.logbook.ActivitySample.class=Sample
    
    2
    +data.ll.logbook.ActivityStub.class=Activity
    
    3
    +data.ll.logbook.SetGlobalComposition.class=Set
    
    4
    +data.ll.logbook.SetStub.class=Set
    
    5
    +data.ll.observation.ActivityStub.class=Activity
    
    6
    +data.ll.observation.SetDetailComposition.class=Set
    
    7
    +data.ll.observation.SetGlobalComposition.class=Set
    
    8
    +data.ll.observation.SetStub.class=Set
    
    9
    +data.ll.observation.TripActivityStub.class=Activity
    
    10
    +data.ps.observation.ActivityStub.class=Activity
    
    11
    +data.ps.observation.DiscardedTargetCatch.class=TargetCatch
    
    12
    +data.ps.observation.DiscardedTargetSample.class=TargetSample
    
    13
    +data.ps.observation.KeptTargetCatch.class=TargetCatch
    
    14
    +data.ps.observation.KeptTargetSample.class=TargetSample
    
    15
    +data.ps.observation.RouteStub.class=Route

  • models/dto-definition/src/main/models/Observe/dto/class/navigationEntryPoint.properties
    1
    +referential.common.Program.class=true

  • models/dto-definition/src/main/models/Observe/dto/class/navigationParent.properties
    1
    +data.ll.common.Trip.class=referential.common.Program
    
    2
    +data.ll.landing.Landing.class=data.ll.common.Trip
    
    3
    +data.ll.logbook.Activity.class=data.ll.common.Trip
    
    4
    +data.ll.logbook.ActivitySample.class=data.ll.logbook.Activity
    
    5
    +data.ll.logbook.Sample.class=data.ll.common.Trip
    
    6
    +data.ll.logbook.Set.class=data.ll.logbook.Activity
    
    7
    +data.ll.observation.Activity.class=data.ll.common.Trip
    
    8
    +data.ll.observation.Set.class=data.ll.observation.Activity
    
    9
    +data.ps.common.Trip.class=referential.common.Program
    
    10
    +data.ps.observation.Activity.class=data.ps.observation.Route
    
    11
    +data.ps.observation.FloatingObject.class=data.ps.observation.Activity
    
    12
    +data.ps.observation.Route.class=data.ps.common.Trip
    
    13
    +data.ps.observation.Set.class=data.ps.observation.Activity

  • models/dto-definition/src/main/models/Observe/dto/class/references.properties
    1
    +data.ll.common.GearUseFeatures.class=gearLabel,number,usedInTrip
    
    2
    +data.ll.common.GearUseFeaturesMeasurement.class=measurementValue,gearCharacteristicLabel
    
    3
    +data.ll.common.Trip.class=startDate,endDate,program,tripTypeId,observationsActivityCount,logbookActivityCount,landingSize,sampleSize,vessel,observerLabel,observationsAvailability,logbookAvailability
    
    4
    +data.ll.landing.Landing.class=startDate,harbourLabel,vesselLabel
    
    5
    +data.ll.landing.LandingPart.class=speciesLabel,categoryMin,categoryMax,weight
    
    6
    +data.ll.logbook.Activity.class=startTimeStamp,endTimeStamp,latitude,longitude,vesselActivity,set,activitySample,relatedObservedActivity
    
    7
    +data.ll.logbook.ActivitySample.class=timeStamp,latitude,longitude
    
    8
    +data.ll.logbook.BaitsComposition.class=proportion,baitTypeLabel,baitSettingStatusLabel,individualSize,individualWeight
    
    9
    +data.ll.logbook.BranchlinesComposition.class=proportion,topTypeLabel,tracelineTypeLabel,length
    
    10
    +data.ll.logbook.Catch.class=homeId
    
    11
    +data.ll.logbook.FloatlinesComposition.class=proportion,lineTypeLabel,length
    
    12
    +data.ll.logbook.HooksComposition.class=proportion,hookTypeLabel,hookSizeLabel,hookOffset
    
    13
    +data.ll.logbook.Sample.class=timeStamp,latitude,longitude
    
    14
    +data.ll.logbook.SamplePart.class=speciesLabel,length,weight
    
    15
    +data.ll.logbook.Set.class=homeId
    
    16
    +data.ll.observation.Activity.class=timeStamp,latitude,longitude,vesselActivity,set
    
    17
    +data.ll.observation.BaitsComposition.class=proportion,baitTypeLabel,baitSettingStatusLabel,individualSize,individualWeight
    
    18
    +data.ll.observation.Basket.class=settingIdentifier,haulingIdentifier,parentId
    
    19
    +data.ll.observation.Branchline.class=settingIdentifier,haulingIdentifier,parentId
    
    20
    +data.ll.observation.BranchlinesComposition.class=proportion,topTypeLabel,tracelineTypeLabel,length
    
    21
    +data.ll.observation.Catch.class=homeId
    
    22
    +data.ll.observation.Encounter.class=encounterTypeLabel,speciesLabel
    
    23
    +data.ll.observation.FloatlinesComposition.class=proportion,lineTypeLabel,length
    
    24
    +data.ll.observation.HooksComposition.class=proportion,hookTypeLabel,hookSizeLabel,hookOffset
    
    25
    +data.ll.observation.Section.class=settingIdentifier,haulingIdentifier,parentId
    
    26
    +data.ll.observation.SensorUsed.class=sensorTypeLabel
    
    27
    +data.ll.observation.Set.class=homeId
    
    28
    +data.ll.observation.SizeMeasure.class=sizeMeasureTypeLabel,size
    
    29
    +data.ll.observation.Tdr.class=homeId
    
    30
    +data.ll.observation.WeightMeasure.class=weightMeasureTypeLabel,weight
    
    31
    +data.ps.common.GearUseFeatures.class=gearLabel,number,usedInTrip
    
    32
    +data.ps.common.GearUseFeaturesMeasurement.class=measurementValue,gearCharacteristicLabel
    
    33
    +data.ps.common.Trip.class=startDate,endDate,program,routeSize,vessel,observerLabel
    
    34
    +data.ps.observation.Activity.class=time,latitude,longitude,vesselActivity,set
    
    35
    +data.ps.observation.DiscardedTargetCatch.class=speciesLabel,catchWeight
    
    36
    +data.ps.observation.DiscardedTargetSample.class=homeId,nature,discarded
    
    37
    +data.ps.observation.FloatingObject.class=objectOperationLabel
    
    38
    +data.ps.observation.FloatingObjectPart.class=objectMaterialId,objectMaterialLabel,whenArriving,whenLeaving
    
    39
    +data.ps.observation.KeptTargetCatch.class=speciesLabel,well,catchWeight
    
    40
    +data.ps.observation.KeptTargetSample.class=homeId,nature,discarded
    
    41
    +data.ps.observation.NonTargetCatch.class=speciesLabel,speciesFateLabel
    
    42
    +data.ps.observation.NonTargetCatchRelease.class=speciesLabel,speciesGroupReleaseModeLabel,statusLabel,conformityLabel,releasingTimeLabel,length
    
    43
    +data.ps.observation.NonTargetLength.class=speciesLabel,length,sexLabel
    
    44
    +data.ps.observation.NonTargetSample.class=homeId
    
    45
    +data.ps.observation.ObjectObservedSpecies.class=speciesLabel,speciesStatusLabel,count
    
    46
    +data.ps.observation.ObjectSchoolEstimate.class=speciesLabel,totalWeight
    
    47
    +data.ps.observation.Route.class=date,comment,activitySize
    
    48
    +data.ps.observation.SchoolEstimate.class=speciesLabel,meanWeight,totalWeight
    
    49
    +data.ps.observation.Set.class=comment,discardedTargetSampleEnabled,keptTargetSampleEnabled,nonTargetSampleEnabled,setNonTargetCatchReleaseEnabled
    
    50
    +data.ps.observation.TargetCatch.class=well
    
    51
    +data.ps.observation.TargetLength.class=speciesLabel,length,count
    
    52
    +data.ps.observation.TargetSample.class=homeId,nature,discarded
    
    53
    +data.ps.observation.TransmittingBuoy.class=code,comment,transmittingBuoyTypeLabel,transmittingBuoyOperationLabel
    
    54
    +referential.common.Country.class=code,label,uri,iso2Code,iso3Code
    
    55
    +referential.common.FpaZone.class=code,label,uri,startDate,endDate
    
    56
    +referential.common.GearCharacteristic.class=code,label,uri,gearCharacteristicType,unit
    
    57
    +referential.common.Harbour.class=code,label,uri,locode
    
    58
    +referential.common.LengthLengthParameter.class=uri,oceanLabel,sexLabel,species,startDate,endDate,inputSizeMeasureType,outputSizeMeasureType,inputOutputFormula,outputInputFormula
    
    59
    +referential.common.LengthWeightParameter.class=uri,oceanLabel,sexLabel,species,startDate,endDate,lengthWeightFormula,weightLengthFormula,sizeMeasureType
    
    60
    +referential.common.Person.class=firstName,lastName,uri,captain,observer,dataEntryOperator,dataSource
    
    61
    +referential.common.Program.class=code,label,uri,gearType,gearTypePrefix,tripCount,startDate,endDate
    
    62
    +referential.common.ShipOwner.class=code,label,uri,startDate,endDate
    
    63
    +referential.common.Species.class=label,uri,faoCode,scientificLabel,sizeMeasureTypeId,weightMeasureTypeId,speciesGroupId,wormsId,faoCode
    
    64
    +referential.common.Vessel.class=code,label,uri,vesselTypeId
    
    65
    +referential.common.VesselSizeCategory.class=code,uri,gaugeLabel,capacityLabel
    
    66
    +referential.common.Wind.class=code,label,uri,speedRange
    
    67
    +referential.ll.observation.SensorBrand.class=code,uri,brandName
    
    68
    +referential.ps.common.ObjectMaterial.class=code,label,uri,parentId,objectMaterialTypeId,validation,biodegradable,nonEntangling
    
    69
    +referential.ps.common.ObjectOperation.class=code,label,uri,whenArriving,whenLeaving
    
    70
    +referential.ps.common.SpeciesFate.class=code,label,uri,discard
    
    71
    +referential.ps.common.VesselActivity.class=code,label,uri,allowFad
    
    72
    +referential.ps.observation.WeightCategory.class=code,label,uri,speciesId

  • models/dto-definition/src/main/models/Observe/dto/class/skip.properties
    1
    +Id.class=true
    
    2
    +data.Container.class=true
    
    3
    +data.ContainerChild.class=true
    
    4
    +data.ContainerChildWithDataFile.class=true
    
    5
    +data.ContainerChildWithProportion.class=true
    
    6
    +data.Data.class=true
    
    7
    +data.DataFile.class=true
    
    8
    +data.Editable.class=true
    
    9
    +data.Openable.class=true
    
    10
    +data.Simple.class=true
    
    11
    +data.TripMap.class=true
    
    12
    +referential.I18nReferential.class=true
    
    13
    +referential.Referential.class=true
    
    14
    +result.SaveResult.class=true

  • models/dto-definition/src/main/models/Observe/dto/tagValues.list
    1
    +attribute.tagvalue.mayNotNull
    
    2
    +attribute.tagvalue.notNull
    
    3
    +attribute.tagvalue.ordered
    
    4
    +attribute.tagvalue.positiveNumber
    
    5
    +attribute.tagvalue.strictlyPositiveNumber
    
    6
    +attribute.tagvalue.unique
    
    7
    +class.tagvalue.comparator
    
    8
    +class.tagvalue.constants
    
    9
    +class.tagvalue.form
    
    10
    +class.tagvalue.mainDto
    
    11
    +class.tagvalue.navigationEntryPoint
    
    12
    +class.tagvalue.navigationParent
    
    13
    +class.tagvalue.references
    
    14
    +class.tagvalue.skip

  • models/persistence/src/main/models/Observe-25-data-ps-common.model
    1
    -package fr.ird.observe.entities.data.ps.common| entity dbSchema=ps_common
    
    1
    +package fr.ird.observe.entities.data.ps.common | entity dbSchema=ps_common
    
    2 2
     
    
    3 3
     data.ps.common.GearUseFeatures > data.DataEntity | entity
    
    4 4
     comment + {*:1} String |  length=8192
    

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/DtoMetaTransformer.java
    ... ... @@ -24,6 +24,7 @@ package fr.ird.observe.toolkit.templates;
    24 24
     
    
    25 25
     import com.google.common.collect.ImmutableSet;
    
    26 26
     import fr.ird.observe.dto.data.ContainerDto;
    
    27
    +import io.ultreia.java4all.util.SortedProperties;
    
    27 28
     import org.nuiton.eugene.AbstractMetaTransformer;
    
    28 29
     import org.nuiton.eugene.EugeneCoreTagValues;
    
    29 30
     import org.nuiton.eugene.LogProxy;
    
    ... ... @@ -31,6 +32,7 @@ import org.nuiton.eugene.Template;
    31 32
     import org.nuiton.eugene.java.BeanTransformerContext;
    
    32 33
     import org.nuiton.eugene.java.BeanTransformerTagValues;
    
    33 34
     import org.nuiton.eugene.java.EugeneJavaTagValues;
    
    35
    +import org.nuiton.eugene.models.extension.io.ModelExtensionReader;
    
    34 36
     import org.nuiton.eugene.models.object.ObjectModel;
    
    35 37
     import org.nuiton.eugene.models.object.ObjectModelAttribute;
    
    36 38
     import org.nuiton.eugene.models.object.ObjectModelClass;
    
    ... ... @@ -40,14 +42,12 @@ import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
    40 42
     import java.io.BufferedWriter;
    
    41 43
     import java.io.File;
    
    42 44
     import java.io.IOException;
    
    43
    -import java.nio.charset.StandardCharsets;
    
    45
    +import java.nio.file.Files;
    
    44 46
     import java.nio.file.Path;
    
    45 47
     import java.util.Comparator;
    
    46 48
     import java.util.LinkedList;
    
    47 49
     import java.util.List;
    
    48
    -import java.util.Map;
    
    49 50
     import java.util.Objects;
    
    50
    -import java.util.TreeMap;
    
    51 51
     
    
    52 52
     /**
    
    53 53
      * Created on 24/01/2021.
    
    ... ... @@ -67,20 +67,38 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM
    67 67
     
    
    68 68
         @Override
    
    69 69
         protected boolean validateModel(ObjectModel model) {
    
    70
    -
    
    71
    -        // Get all non abstract beans
    
    72
    -        BeanTransformerContext all = new BeanTransformerContext(model, new EugeneCoreTagValues(), new EugeneJavaTagValues(), new BeanTransformerTagValues(), false, false, t -> true, getLog());
    
    70
    +        String packageName = getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
    
    73 71
             BeanTransformerContext allWithAbstract = new BeanTransformerContext(model, new EugeneCoreTagValues(), new EugeneJavaTagValues(), new BeanTransformerTagValues(), true, false, t -> true, getLog());
    
    72
    +        BeanTransformerContext all = new BeanTransformerContext(model, new EugeneCoreTagValues(), new EugeneJavaTagValues(), new BeanTransformerTagValues(), false, false, t -> true, getLog());
    
    74 73
             ObserveTagValues observeTagValues = new ObserveTagValues();
    
    75
    -        String packageName = getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
    
    74
    +        loadTagValues(model, packageName);
    
    75
    +
    
    76 76
             augmentsReferences(allWithAbstract, packageName);
    
    77 77
             augmentsTagValues(model, all, observeTagValues);
    
    78 78
             consolidateModel(model, all, observeTagValues, getLog());
    
    79 79
             augmentsTagValuesFinal(model, all, observeTagValues);
    
    80
    -        extractTagValues(allWithAbstract);
    
    81 80
             return true;
    
    82 81
         }
    
    83 82
     
    
    83
    +    private void loadTagValues(ObjectModel model, String packageName) {
    
    84
    +        try {
    
    85
    +
    
    86
    +            SortedProperties loadedTagValues = new LoadTagValues(model, packageName, getClassLoader()).load("dto");
    
    87
    +            getLog().info(String.format("Load %d tag-value(s) for classifier dto.", loadedTagValues.size()));
    
    88
    +
    
    89
    +            Path outputDirectory = getConfiguration().getProperty(PROP_OUTPUT_DIRECTORY, File.class).toPath().getParent().getParent();
    
    90
    +            Path tmpFile = outputDirectory.resolve("all-dto-tagValues-" + System.nanoTime() + ".properties");
    
    91
    +            try (BufferedWriter writer = Files.newBufferedWriter(tmpFile)) {
    
    92
    +                loadedTagValues.store(writer, String.format("Generated by %s", getClass().getName()));
    
    93
    +            }
    
    94
    +            ModelExtensionReader<ObjectModel> reader = new ModelExtensionReader<>(isVerbose(), true, model);
    
    95
    +            reader.read(tmpFile.toFile());
    
    96
    +
    
    97
    +        } catch (Exception e) {
    
    98
    +            throw new IllegalStateException("Can't load tag-values", e);
    
    99
    +        }
    
    100
    +    }
    
    101
    +
    
    84 102
         protected void augmentsTagValues(ObjectModel model, BeanTransformerContext all, ObserveTagValues observeTagValues) {
    
    85 103
             for (ObjectModelClass aClass : all.selectedClasses) {
    
    86 104
                 ObjectModelPackage aPackage = model.getPackage(aClass.getPackageName());
    
    ... ... @@ -222,27 +240,4 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM
    222 240
             return candidates.get(0);
    
    223 241
         }
    
    224 242
     
    
    225
    -
    
    226
    -    protected void extractTagValues(BeanTransformerContext all) {
    
    227
    -        Map<String, String> p = new TreeMap<>();
    
    228
    -        for (ObjectModelClass aClass : all.selectedClasses) {
    
    229
    -            String tagValuePrefix = aClass.getQualifiedName() + ".attribute.";
    
    230
    -            for (ObjectModelAttribute attribute : aClass.getAttributes()) {
    
    231
    -                String tagValuePrefix2 = tagValuePrefix + attribute.getName() + ".tagValue.";
    
    232
    -                Map<String, String> tagValues1 = attribute.getTagValues();
    
    233
    -                tagValues1.forEach((k, v) -> p.put(tagValuePrefix2 + k, v));
    
    234
    -            }
    
    235
    -        }
    
    236
    -        File outputDir = getConfiguration().getProperty(PROP_OUTPUT_DIRECTORY, File.class);
    
    237
    -        Path path = outputDir.toPath().resolve("extracted-tagValues.properties");
    
    238
    -        getLog().info(String.format("Generated all tag-values in %s", path));
    
    239
    -        try (BufferedWriter writer = java.nio.file.Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
    
    240
    -            for (String k : p.keySet()) {
    
    241
    -                writer.write(String.format("%s=%s", k, p.get(k)));
    
    242
    -                writer.newLine();
    
    243
    -            }
    
    244
    -        } catch (IOException e) {
    
    245
    -            throw new IllegalStateException("Can't write " + path, e);
    
    246
    -        }
    
    247
    -    }
    
    248 243
     }

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ExtractTagValues.java
    1
    +package fr.ird.observe.toolkit.templates;
    
    2
    +
    
    3
    +/*-
    
    4
    + * #%L
    
    5
    + * ObServe Toolkit :: Templates
    
    6
    + * %%
    
    7
    + * Copyright (C) 2008 - 2021 IRD, Code Lutin, Ultreia.io
    
    8
    + * %%
    
    9
    + * This program is free software: you can redistribute it and/or modify
    
    10
    + * it under the terms of the GNU General Public License as
    
    11
    + * published by the Free Software Foundation, either version 3 of the
    
    12
    + * License, or (at your option) any later version.
    
    13
    + *
    
    14
    + * This program is distributed in the hope that it will be useful,
    
    15
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    16
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    17
    + * GNU General Public License for more details.
    
    18
    + *
    
    19
    + * You should have received a copy of the GNU General Public
    
    20
    + * License along with this program.  If not, see
    
    21
    + * <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    22
    + * #L%
    
    23
    + */
    
    24
    +
    
    25
    +import com.google.common.collect.ArrayListMultimap;
    
    26
    +import com.google.common.collect.ImmutableList;
    
    27
    +import io.ultreia.java4all.util.SortedProperties;
    
    28
    +import org.codehaus.plexus.component.annotations.Component;
    
    29
    +import org.nuiton.eugene.Template;
    
    30
    +import org.nuiton.eugene.java.EugeneJavaTagValues;
    
    31
    +import org.nuiton.eugene.models.object.ObjectModel;
    
    32
    +import org.nuiton.eugene.models.object.ObjectModelAttribute;
    
    33
    +import org.nuiton.eugene.models.object.ObjectModelClass;
    
    34
    +import org.nuiton.eugene.models.object.ObjectModelGenerator;
    
    35
    +import org.nuiton.eugene.models.object.ObjectModelType;
    
    36
    +import org.nuiton.topia.templates.TopiaTemplateHelperExtension;
    
    37
    +
    
    38
    +import java.io.BufferedReader;
    
    39
    +import java.io.File;
    
    40
    +import java.io.IOException;
    
    41
    +import java.io.Writer;
    
    42
    +import java.nio.file.Files;
    
    43
    +import java.nio.file.Path;
    
    44
    +import java.util.ArrayList;
    
    45
    +import java.util.List;
    
    46
    +import java.util.Map;
    
    47
    +import java.util.Set;
    
    48
    +import java.util.TreeMap;
    
    49
    +import java.util.function.Predicate;
    
    50
    +
    
    51
    +/**
    
    52
    + * Created on 26/01/2021.
    
    53
    + *
    
    54
    + * @author Tony Chemit - dev@tchemit.fr
    
    55
    + * @since 8.0.5
    
    56
    + */
    
    57
    +@Component(role = Template.class, hint = "fr.ird.observe.toolkit.templates.ExtractTagValues")
    
    58
    +public class ExtractTagValues extends ObjectModelGenerator {
    
    59
    +
    
    60
    +    private String filePrefix;
    
    61
    +    private Path outputFile;
    
    62
    +    private Path resourceDirectory;
    
    63
    +    private Map<String, String> currentTagValues;
    
    64
    +
    
    65
    +    @Override
    
    66
    +    public void applyTemplate(ObjectModel model, File destDir) throws IOException {
    
    67
    +        String packageName = getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
    
    68
    +        EugeneJavaTagValues javaTemplatesTagValues = new EugeneJavaTagValues();
    
    69
    +        resourceDirectory = getConfiguration().getProperty(PROP_RESOURCE_DIRECTORY, File.class).toPath().getParent().resolve("models").resolve(model.getName());
    
    70
    +        Predicate<ObjectModelClass> acceptClass;
    
    71
    +        if (packageName.contains(".dto")) {
    
    72
    +            resourceDirectory = resourceDirectory.resolve("dto");
    
    73
    +            acceptClass = c -> javaTemplatesTagValues.isBean(c, model.getPackage(c));
    
    74
    +        } else if (packageName.contains(".entities")) {
    
    75
    +            resourceDirectory = resourceDirectory.resolve("persistence");
    
    76
    +            TopiaTemplateHelperExtension templateHelper = new TopiaTemplateHelperExtension(model);
    
    77
    +            acceptClass = templateHelper::isEntity;
    
    78
    +        } else {
    
    79
    +            throw new IllegalStateException("Can't manage packageName: " + packageName);
    
    80
    +        }
    
    81
    +        getLog().info(String.format("Will generate tag values at %s", resourceDirectory));
    
    82
    +
    
    83
    +        ImmutableList<ObjectModelClass> classes = model.getClasses().stream().filter(acceptClass).collect(ImmutableList.toImmutableList());
    
    84
    +        getLog().info(String.format("Will extract tag values from %d class(es).", classes.size()));
    
    85
    +        ArrayListMultimap<String, String> tagValueKeysByTagValue = ArrayListMultimap.create();
    
    86
    +        Map<String, String> allTagValues = new TreeMap<>();
    
    87
    +        try {
    
    88
    +            extractTagValues(classes, tagValueKeysByTagValue, allTagValues);
    
    89
    +        } catch (IOException e) {
    
    90
    +            throw new IllegalStateException("Can't extract tag values", e);
    
    91
    +        }
    
    92
    +        Set<String> tagValuesKeys = tagValueKeysByTagValue.keySet();
    
    93
    +        int beginIndex = packageName.length() + 1;
    
    94
    +        List<String> tagValueList = new ArrayList<>(tagValuesKeys.size());
    
    95
    +        for (String tagValuesKey : tagValuesKeys) {
    
    96
    +            filePrefix = tagValuesKey;
    
    97
    +            int keySuffix = filePrefix.substring(filePrefix.indexOf("-")).length();
    
    98
    +
    
    99
    +            currentTagValues = new TreeMap<>();
    
    100
    +            for (String k : tagValueKeysByTagValue.get(filePrefix)) {
    
    101
    +                String value = allTagValues.get(k);
    
    102
    +                String key = k.substring(beginIndex);
    
    103
    +                key = key.substring(0, key.length() - keySuffix);
    
    104
    +                currentTagValues.put(key, value);
    
    105
    +            }
    
    106
    +            String index = tagValuesKey.replace("-tagValue", "").replaceAll("-", ".");
    
    107
    +            tagValueList.add(index);
    
    108
    +            super.applyTemplate(model, destDir);
    
    109
    +        }
    
    110
    +
    
    111
    +        Path indexPath = resourceDirectory.resolve(LoadTagValues.TAG_VALUES_LIST_FILENAME);
    
    112
    +        getLog().info(String.format("Will generate tag values list (%d) at %s", tagValueList.size(), indexPath));
    
    113
    +        tagValueList.sort(String::compareTo);
    
    114
    +        Files.write(indexPath, tagValueList);
    
    115
    +    }
    
    116
    +
    
    117
    +    @Override
    
    118
    +    protected void generateFromElement(Object element, File destDir, String filename, ObjectModelType type) {
    
    119
    +        if (ObjectModelType.OBJECT_MODEL != type) {
    
    120
    +            // only generate on model
    
    121
    +            return;
    
    122
    +        }
    
    123
    +        super.generateFromElement(element, destDir, filename, type);
    
    124
    +    }
    
    125
    +
    
    126
    +    @Override
    
    127
    +    public void generateFromModel(Writer output, ObjectModel input) throws IOException {
    
    128
    +
    
    129
    +        // get existing tag values
    
    130
    +        SortedProperties existingProperties = new SortedProperties();
    
    131
    +        if (Files.exists(outputFile)) {
    
    132
    +            try (BufferedReader reader = Files.newBufferedReader(outputFile)) {
    
    133
    +                existingProperties.load(reader);
    
    134
    +            }
    
    135
    +            getLog().info(String.format("%s - Load existing %d element(s) from %s.", filePrefix, existingProperties.size(), outputFile));
    
    136
    +        }
    
    137
    +        // add new one from model
    
    138
    +        int size = existingProperties.stringPropertyNames().size();
    
    139
    +        currentTagValues.forEach(existingProperties::setProperty);
    
    140
    +
    
    141
    +        getLog().info(String.format("%s - Load from model new %d element(s).", filePrefix, existingProperties.stringPropertyNames().size() - size));
    
    142
    +        getLog().info(String.format("%s - Store %d element(s) to %s.", filePrefix, existingProperties.size(), outputFile));
    
    143
    +        // store all tag values
    
    144
    +        for (String key : existingProperties.stringPropertyNames()) {
    
    145
    +            String value = existingProperties.getProperty(key);
    
    146
    +            output.write(String.format("%s=%s", key, value));
    
    147
    +            output.write('\n');
    
    148
    +        }
    
    149
    +    }
    
    150
    +
    
    151
    +    @Override
    
    152
    +    public String getFilenameForModel(ObjectModel model) {
    
    153
    +        return filePrefix + ".properties";
    
    154
    +    }
    
    155
    +
    
    156
    +    @Override
    
    157
    +    protected File getDestinationFile(File destDir, String filename) {
    
    158
    +        int endIndex = filename.indexOf("-");
    
    159
    +        outputFile = resourceDirectory.resolve(filename.substring(0, endIndex)).resolve(filename.substring(filename.lastIndexOf("-") + 1));
    
    160
    +        return outputFile.toFile();
    
    161
    +    }
    
    162
    +
    
    163
    +    private void extractTagValues(ImmutableList<ObjectModelClass> all, ArrayListMultimap<String, String> tagValueKeysByTagValue, Map<String, String> allTagValues) throws IOException {
    
    164
    +        String classPrefix = "class-tagvalue-";
    
    165
    +        String attributePrefix = "attribute-tagvalue-";
    
    166
    +        for (ObjectModelClass aClass : all) {
    
    167
    +            String classTagValuePrefix = aClass.getQualifiedName() + ".class.tagValue.";
    
    168
    +            aClass.getTagValues().forEach((k, v) -> {
    
    169
    +                String key = classTagValuePrefix + k;
    
    170
    +                allTagValues.put(key, v);
    
    171
    +                tagValueKeysByTagValue.put(classPrefix + k, key);
    
    172
    +            });
    
    173
    +            String attributeTagValuePrefix = aClass.getQualifiedName() + ".attribute.";
    
    174
    +            for (ObjectModelAttribute attribute : aClass.getAttributes()) {
    
    175
    +                String attributeTagValuePrefix2 = attributeTagValuePrefix + attribute.getName() + ".tagValue.";
    
    176
    +                attribute.getTagValues().forEach((k, v) -> {
    
    177
    +                    String key = attributeTagValuePrefix2 + k;
    
    178
    +                    allTagValues.put(key, v);
    
    179
    +                    tagValueKeysByTagValue.put(attributePrefix + k, key);
    
    180
    +                });
    
    181
    +            }
    
    182
    +        }
    
    183
    +    }
    
    184
    +}

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/LoadTagValues.java
    1
    +package fr.ird.observe.toolkit.templates;
    
    2
    +
    
    3
    +import io.ultreia.java4all.util.SortedProperties;
    
    4
    +import org.apache.commons.io.IOUtils;
    
    5
    +import org.nuiton.eugene.models.object.ObjectModel;
    
    6
    +
    
    7
    +import java.io.IOException;
    
    8
    +import java.io.InputStream;
    
    9
    +import java.io.InputStreamReader;
    
    10
    +import java.net.URL;
    
    11
    +import java.util.List;
    
    12
    +import java.util.Map;
    
    13
    +import java.util.Objects;
    
    14
    +import java.util.Properties;
    
    15
    +import java.util.TreeMap;
    
    16
    +
    
    17
    +/**
    
    18
    + * To load tag-values from new layout.
    
    19
    + * <p>
    
    20
    + * Created on 27/01/2021.
    
    21
    + *
    
    22
    + * @author Tony Chemit - dev@tchemit.fr
    
    23
    + * @see ExtractTagValues
    
    24
    + * @since 8.0.5
    
    25
    + */
    
    26
    +public class LoadTagValues {
    
    27
    +
    
    28
    +    public static final String TAG_VALUES_LIST_FILENAME = "tagValues.list";
    
    29
    +    private final ObjectModel model;
    
    30
    +    private final String packageName;
    
    31
    +    private final ClassLoader classLoader;
    
    32
    +
    
    33
    +    public LoadTagValues(ObjectModel model, String packageName, ClassLoader classLoader) {
    
    34
    +        this.model = Objects.requireNonNull(model);
    
    35
    +        this.packageName = Objects.requireNonNull(packageName);
    
    36
    +        this.classLoader = Objects.requireNonNull(classLoader);
    
    37
    +    }
    
    38
    +
    
    39
    +    public SortedProperties load(String classifier) throws IOException {
    
    40
    +        String resourcesPath = "models/" + model.getName() + "/" + Objects.requireNonNull(classifier) + "/";
    
    41
    +
    
    42
    +        List<String> tagValueList = loadTagValuesList(resourcesPath, classLoader);
    
    43
    +        SortedProperties result = new SortedProperties();
    
    44
    +        for (String tagValue : tagValueList) {
    
    45
    +            int i = tagValue.indexOf(".");
    
    46
    +            String type = tagValue.substring(0, i);
    
    47
    +            String suffix = tagValue.substring(i+1);
    
    48
    +            String tagValueName = suffix.replace("tagvalue.", "");
    
    49
    +            String tagValuePath = resourcesPath + type + "/" + tagValueName + ".properties";
    
    50
    +            switch (type) {
    
    51
    +                case "attribute":
    
    52
    +                case "class":
    
    53
    +                    URL tagValueURL = classLoader.getResource(tagValuePath);
    
    54
    +                    Map<String, String> tagValueProperties = loadTagValuesFile(packageName, suffix, Objects.requireNonNull(tagValueURL));
    
    55
    +                    result.putAll(tagValueProperties);
    
    56
    +                    break;
    
    57
    +                default:
    
    58
    +                    throw new IllegalStateException(String.format("Can't manage tag value type: %s", type));
    
    59
    +            }
    
    60
    +        }
    
    61
    +        return result;
    
    62
    +    }
    
    63
    +
    
    64
    +    private List<String> loadTagValuesList(String resourcesPath, ClassLoader classLoader) throws IOException {
    
    65
    +        String tagValuesListPath = resourcesPath + TAG_VALUES_LIST_FILENAME;
    
    66
    +        URL resource = Objects.requireNonNull(classLoader.getResource(tagValuesListPath));
    
    67
    +        try (InputStreamReader reader = new InputStreamReader(resource.openStream())) {
    
    68
    +            return IOUtils.readLines(reader);
    
    69
    +        }
    
    70
    +    }
    
    71
    +
    
    72
    +    private Map<String, String> loadTagValuesFile(String packageName, String suffix, URL resource) throws IOException {
    
    73
    +        Properties incoming = new Properties();
    
    74
    +        try (InputStream inputStream = resource.openStream()) {
    
    75
    +            incoming.load(inputStream);
    
    76
    +        }
    
    77
    +        Map<String, String> result = new TreeMap<>();
    
    78
    +        for (String key : incoming.stringPropertyNames()) {
    
    79
    +            result.put(packageName + "." + key + "."+suffix, incoming.getProperty(key));
    
    80
    +        }
    
    81
    +        return result;
    
    82
    +    }
    
    83
    +}

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ObserveTagValues.java
    ... ... @@ -84,6 +84,21 @@ public class ObserveTagValues extends DefaultTagValueMetadatasProvider {
    84 84
             return tagValue == null ? null : tagValue.trim();
    
    85 85
         }
    
    86 86
     
    
    87
    +    public String getNavigationParentTagValue(ObjectModelClassifier classifier) {
    
    88
    +        String tagValue = TagValueUtil.findTagValue(Store.navigationParent, classifier);
    
    89
    +        return tagValue == null ? null : tagValue.trim();
    
    90
    +    }
    
    91
    +//
    
    92
    +//    public String getNavigationExtraParentTagValue(ObjectModelClassifier classifier) {
    
    93
    +//        String tagValue = TagValueUtil.findTagValue(Store.navigationExtraParent, classifier);
    
    94
    +//        return tagValue == null ? null : tagValue.trim();
    
    95
    +//    }
    
    96
    +
    
    97
    +    public String getNavigationEntryPointTagValue(ObjectModelClassifier classifier) {
    
    98
    +        String tagValue = TagValueUtil.findTagValue(Store.navigationEntryPoint, classifier);
    
    99
    +        return tagValue == null ? null : tagValue.trim();
    
    100
    +    }
    
    101
    +
    
    87 102
         /**
    
    88 103
          * Obtain the value of the {@link Store#comparator} tag value on the given classifier.
    
    89 104
          *
    
    ... ... @@ -203,6 +218,12 @@ public class ObserveTagValues extends DefaultTagValueMetadatasProvider {
    203 218
     
    
    204 219
             mainDto("Pour qualifier le dto principal", String.class, null, ObjectModelClassifier.class),
    
    205 220
     
    
    221
    +        navigationParent("Pour indiquer quelle est le parent dans la navigation", String.class, null, ObjectModelClassifier.class),
    
    222
    +
    
    223
    +//        navigationExtraParent("Pour indiquer quelle est le parent dans la navigation", String.class, null, ObjectModelClassifier.class),
    
    224
    +
    
    225
    +        navigationEntryPoint("Pour indiquer si la classe est un point d'entrée est le parent dans la navigation", String.class, null, ObjectModelClassifier.class),
    
    226
    +
    
    206 227
             comparator("Pour qualifier l'attribut de comparaison", String.class, null, ObjectModelClassifier.class),
    
    207 228
     
    
    208 229
             /**
    

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/dto/BusinessProjectTransformer.java
    ... ... @@ -161,15 +161,15 @@ public class BusinessProjectTransformer extends ObjectModelTransformerToJava imp
    161 161
                     navigationModelHelper.registerEditClassesCandidate(moduleName, subModuleName, input, input.getName());
    
    162 162
                     navigationModelHelper.registerSelectClassesCandidate(moduleName, subModuleName, input, input.getName());
    
    163 163
     
    
    164
    -                String extraParent = input.getTagValue("navigationExtraParent");
    
    165
    -                if (extraParent != null) {
    
    166
    -                    String inputName = GeneratorUtil.getSimpleName(extraParent) + input.getName();
    
    167
    -                    navigationModelHelper.registerSelectClassesCandidate(moduleName, subModuleName, input, inputName);
    
    168
    -                }
    
    164
    +//                String extraParent = observeTagValues.getNavigationExtraParentTagValue(input);
    
    165
    +//                if (extraParent != null) {
    
    166
    +//                    String inputName = GeneratorUtil.getSimpleName(extraParent) + input.getName();
    
    167
    +//                    navigationModelHelper.registerSelectClassesCandidate(moduleName, subModuleName, input, inputName);
    
    168
    +//                }
    
    169 169
                 } else if (superclasses.stream().anyMatch(s -> s.getName().equals("Editable"))) {
    
    170 170
                     navigationModelHelper.registerSelectClassesCandidate(moduleName, subModuleName, input, input.getName());
    
    171 171
                 } else {
    
    172
    -                String navigationEntryPoint = input.getTagValue("NavigationEntryPoint");
    
    172
    +                String navigationEntryPoint = observeTagValues.getNavigationEntryPointTagValue(input);
    
    173 173
                     if (navigationEntryPoint != null) {
    
    174 174
                         navigationModelHelper.registerSelectExtraClassesCandidate(moduleName, subModuleName, input);
    
    175 175
                         navigationModelHelper.registerEditExtraClassesCandidate(moduleName, subModuleName, input);
    

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/dto/NavigationModelHelper.java
    ... ... @@ -26,6 +26,7 @@ import com.google.common.collect.ArrayListMultimap;
    26 26
     import com.google.common.collect.ImmutableMap;
    
    27 27
     import com.google.common.collect.Maps;
    
    28 28
     import fr.ird.observe.spi.ProjectPackagesDefinition;
    
    29
    +import fr.ird.observe.toolkit.templates.ObserveTagValues;
    
    29 30
     import org.apache.commons.lang3.mutable.MutableInt;
    
    30 31
     import org.nuiton.eugene.GeneratorUtil;
    
    31 32
     import org.nuiton.eugene.models.object.ObjectModelClass;
    
    ... ... @@ -123,11 +124,12 @@ public class NavigationModelHelper {
    123 124
          */
    
    124 125
         public void init() {
    
    125 126
     
    
    127
    +        ObserveTagValues tagValues = new ObserveTagValues();
    
    126 128
             Set<ObjectModelClass> editCandidates = new LinkedHashSet<>(editExtraClassesCandidates.keySet());
    
    127 129
             editCandidates.addAll(editClassesCandidates.keySet());
    
    128 130
             ImmutableMap<String, ObjectModelClass> editNameCandidates = Maps.uniqueIndex(editCandidates, ObjectModelClass::getQualifiedName);
    
    129 131
             for (ObjectModelClass candidateClass : editClassesCandidates.keySet()) {
    
    130
    -            String dependencyClass = def.getDtoRootPackage() + "." + candidateClass.getTagValue("navigationParent");
    
    132
    +            String dependencyClass = def.getDtoRootPackage() + "." + tagValues.getNavigationParentTagValue(candidateClass);
    
    131 133
                 ObjectModelClass parentClass = editNameCandidates.get(dependencyClass);
    
    132 134
                 if (parentClass != null) {
    
    133 135
                     String editNodeName = getEditNodeName(candidateClass);
    
    ... ... @@ -140,7 +142,7 @@ public class NavigationModelHelper {
    140 142
             selectCandidates.addAll(selectClassesCandidates.keySet());
    
    141 143
             ImmutableMap<String, ObjectModelClass> selectNameCandidates = Maps.uniqueIndex(selectCandidates, ObjectModelClass::getQualifiedName);
    
    142 144
             for (ObjectModelClass candidateClass : selectClassesCandidates.keySet()) {
    
    143
    -            String dependencyClass = def.getDtoRootPackage() + "." + candidateClass.getTagValue("navigationParent");
    
    145
    +            String dependencyClass = def.getDtoRootPackage() + "." + tagValues.getNavigationParentTagValue(candidateClass);
    
    144 146
                 ObjectModelClass parentClass = selectNameCandidates.get(dependencyClass);
    
    145 147
                 if (parentClass != null) {
    
    146 148
                     String selectNodeName = getSelectNodeName(candidateClass);