Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
96b19535
by Tony Chemit at 2021-01-27T11:54:24+01:00
-
0c798c03
by Tony Chemit at 2021-01-27T11:55:03+01:00
-
26b984f7
by Tony Chemit at 2021-01-27T11:55:28+01:00
-
035bef8f
by Tony Chemit at 2021-01-27T11:56:42+01:00
26 changed files:
- + models/dto-definition/.mvn/models-dto
- models/dto-definition/pom.xml
- models/dto-definition/src/main/models/Observe-01-referential-common.model
- models/dto-definition/src/main/models/Observe-30-data-ll-observation.model
- + models/dto-definition/src/main/models/Observe/dto/attribute/mayNotNull.properties
- + models/dto-definition/src/main/models/Observe/dto/attribute/notNull.properties
- + models/dto-definition/src/main/models/Observe/dto/attribute/ordered.properties
- + models/dto-definition/src/main/models/Observe/dto/attribute/positiveNumber.properties
- + models/dto-definition/src/main/models/Observe/dto/attribute/strictlyPositiveNumber.properties
- + models/dto-definition/src/main/models/Observe/dto/attribute/unique.properties
- + models/dto-definition/src/main/models/Observe/dto/class/comparator.properties
- + models/dto-definition/src/main/models/Observe/dto/class/constants.properties
- + models/dto-definition/src/main/models/Observe/dto/class/form.properties
- + models/dto-definition/src/main/models/Observe/dto/class/mainDto.properties
- + models/dto-definition/src/main/models/Observe/dto/class/navigationEntryPoint.properties
- + models/dto-definition/src/main/models/Observe/dto/class/navigationParent.properties
- + models/dto-definition/src/main/models/Observe/dto/class/references.properties
- + models/dto-definition/src/main/models/Observe/dto/class/skip.properties
- + models/dto-definition/src/main/models/Observe/dto/tagValues.list
- models/persistence/src/main/models/Observe-25-data-ps-common.model
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/DtoMetaTransformer.java
- + toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ExtractTagValues.java
- + toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/LoadTagValues.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ObserveTagValues.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/dto/BusinessProjectTransformer.java
- toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/dto/NavigationModelHelper.java
Changes:
| ... | ... | @@ -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>
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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
|
| 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
|
| 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
|
| 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
|
| 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
|
| 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
|
| 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
|
| 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
|
| 1 |
+data.ps.observation.Set.class=targetSampleCapture,endSetDate,endPursingDate,endSetTime,endPursingTime
|
|
| 2 |
+data.ps.observation.TargetLength.class=totalWeight
|
| 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
|
| 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
|
| 1 |
+referential.common.Program.class=true
|
| 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
|
| 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
|
| 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
|
| 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
|
| 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
|
| ... | ... | @@ -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 |
}
|
| 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 |
+}
|
| 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 |
+}
|
| ... | ... | @@ -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 |
/**
|
| ... | ... | @@ -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);
|
| ... | ... | @@ -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);
|