r155 - in trunk/echobase-entities/src/main: java/fr/ifremer/echobase/entities/meta resources/i18n xmi
Author: tchemit Date: 2011-12-08 06:24:55 +0100 (Thu, 08 Dec 2011) New Revision: 155 Url: http://forge.codelutin.com/repositories/revision/echobase/155 Log: - Update model (clean some properties) - Improve metas and introduce MetaFilenameAware to unify TableMeta and AssociationMeta usage Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/MetaFilenameAware.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/AssociationMeta.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties trunk/echobase-entities/src/main/xmi/echobase.zargo Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/AssociationMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/AssociationMeta.java 2011-12-08 05:23:01 UTC (rev 154) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/AssociationMeta.java 2011-12-08 05:24:55 UTC (rev 155) @@ -38,10 +38,11 @@ * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class AssociationMeta implements Serializable { +public class AssociationMeta implements Serializable, MetaFilenameAware { private static final long serialVersionUID = 1L; + /** Association source entity type. */ protected EchoBaseEntityEnum source; @@ -68,18 +69,25 @@ this.name = name; } + @Override public EchoBaseEntityEnum getSource() { return source; } + @Override + public String getName() { + return name; + } + + @Override + public String getFilename() { + return source.name() + "_" + name + CSV_EXTENSION; + } + public EchoBaseEntityEnum getTarget() { return target; } - public String getName() { - return name; - } - public TopiaEntity newEntity() { return ObjectUtil.newInstance(source.getImplementation()); } @@ -107,4 +115,9 @@ return operator; } + + @Override + public String toString() { + return "<" + source + ":" + name + " " + target + ">"; + } } Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java 2011-12-08 05:23:01 UTC (rev 154) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java 2011-12-08 05:24:55 UTC (rev 155) @@ -74,7 +74,7 @@ Preconditions.checkNotNull(tableName); TableMeta result = null; for (TableMeta tableMeta : getTables()) { - if (tableName.equals(tableMeta.getEntityEnum())) { + if (tableName.equals(tableMeta.getSource())) { result = tableMeta; break; } Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/MetaFilenameAware.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/MetaFilenameAware.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/MetaFilenameAware.java 2011-12-08 05:24:55 UTC (rev 155) @@ -0,0 +1,43 @@ +/* + * #%L + * EchoBase :: Entities + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.entities.meta; + +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; + +/** + * Contract for exportable some Meta. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public interface MetaFilenameAware { + + String CSV_EXTENSION = ".csv"; + + EchoBaseEntityEnum getSource(); + + String getName(); + + String getFilename(); +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/MetaFilenameAware.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-12-08 05:23:01 UTC (rev 154) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-12-08 05:24:55 UTC (rev 155) @@ -25,6 +25,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ifremer.echobase.entities.EchoBaseDAOHelper; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import org.nuiton.topia.persistence.TopiaEntity; @@ -36,6 +37,7 @@ import java.io.Serializable; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * Define metas of a given db table. @@ -43,7 +45,7 @@ * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public class TableMeta implements Serializable, Iterable<ColumnMeta> { +public class TableMeta implements Serializable, Iterable<ColumnMeta>, MetaFilenameAware { private static final long serialVersionUID = 1L; @@ -52,27 +54,42 @@ } /** Type of the entity. */ - protected final EchoBaseEntityEnum entityEnum; + protected final EchoBaseEntityEnum source; /** List of columns of the entity. */ protected List<ColumnMeta> columns; + /** List of dependencies (says all property with a topiaentity type) */ + protected final EchoBaseEntityEnum[] dependencies; + /** List of associations of the entity. */ protected List<AssociationMeta> associations; /** Binder used to copy entities (lazy loaded). */ protected Binder<TopiaEntity, TopiaEntity> binder; + @Override + public EchoBaseEntityEnum getSource() { + return source; + } + + @Override public String getName() { - return entityEnum.name(); + return source.name(); } - public EchoBaseEntityEnum getEntityEnum() { - return entityEnum; + @Override + public String getFilename() { + return source.name()+".csv"; } + @Override + public String toString() { + return "<" + source + ">"; + } + public Class<? extends TopiaEntity> getEntityType() { - return entityEnum.getContract(); + return source.getContract(); } public ColumnMeta getColumns(String columnName) { @@ -108,6 +125,10 @@ return associations; } + public EchoBaseEntityEnum[] getDependencies() { + return dependencies; + } + public AssociationMeta getAssociations(String name) { AssociationMeta result = null; for (AssociationMeta meta : getAssociations()) { @@ -129,7 +150,7 @@ } public TopiaEntity newEntity() { - return ObjectUtil.newInstance(entityEnum.getImplementation()); + return ObjectUtil.newInstance(source.getImplementation()); } protected static <E extends TopiaEntity> Binder<E, E> newbinder(TableMeta meta) { @@ -151,30 +172,31 @@ return binder; } - protected TableMeta(EchoBaseEntityEnum entityEnum) { - Preconditions.checkNotNull(entityEnum); - this.entityEnum = entityEnum; + protected TableMeta(EchoBaseEntityEnum source) { + Preconditions.checkNotNull(source); + this.source = source; - Class<? extends TopiaEntity> contract = entityEnum.getContract(); + Class<? extends TopiaEntity> contract = source.getContract(); EntityOperator<? extends TopiaEntity> operator = EchoBaseDAOHelper.getOperator(contract); associations = Lists.newArrayList(); columns = Lists.newLinkedList(); + Set<EchoBaseEntityEnum> deps = Sets.newHashSet(); // fill associations List<String> associationProperties = operator.getAssociationProperties(); for (String property : associationProperties) { - Class<?> propertyType = operator.getPropertyType(property); + Class<?> propertyType = operator.getAssociationPropertyType(property); if (TopiaEntity.class.isAssignableFrom(propertyType)) { // only use it for entity EchoBaseEntityEnum targetEnum = EchoBaseEntityEnum.valueOf(propertyType); - AssociationMeta meta = AssociationMeta.newMeta(entityEnum, - targetEnum, - property + AssociationMeta meta = AssociationMeta.newMeta(source, + targetEnum, + property ); associations.add(meta); } @@ -186,9 +208,15 @@ for (String property : properties) { Class<?> propertyType = operator.getPropertyType(property); ColumnMeta meta = ColumnMeta.newMeta(property, - propertyType); + propertyType); columns.add(meta); + if (meta.isFK()) { + EchoBaseEntityEnum dependency = + EchoBaseEntityEnum.valueOf(propertyType); + deps.add(dependency); + } } + dependencies = deps.toArray(new EchoBaseEntityEnum[deps.size()]); } Modified: trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties =================================================================== --- trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-12-08 05:23:01 UTC (rev 154) +++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-12-08 05:24:55 UTC (rev 155) @@ -1,21 +1,15 @@ echobase.common.TSParameters= +echobase.common.accuracyEstimate= echobase.common.acknowledgement= echobase.common.acousticDensityUnit= echobase.common.acousticInstrument= -echobase.common.acousticInstrumentId= echobase.common.acquisitionSoftwareVersion= echobase.common.addOffset= echobase.common.admin=Administrateur -echobase.common.age=Age echobase.common.ageCategory= -echobase.common.aggregationHierarchy= -echobase.common.aggregationLevel= -echobase.common.aggregationLevelName= -echobase.common.aggregationLevelObservedWeight= -echobase.common.aggregationLevelSampledWeight= echobase.common.altCallsign= +echobase.common.aquisitionMethod= echobase.common.areaOfOperation=areaOfOperation -echobase.common.areaOfOperationName= echobase.common.author=Auteur echobase.common.authorEmail=Courriel de l'auteur echobase.common.authorReference= @@ -28,11 +22,6 @@ echobase.common.binUnitsPingAxis= echobase.common.calendar= echobase.common.calibration=calibration -echobase.common.calibrationAccuracyEstimate= -echobase.common.calibrationAquisitionMethod= -echobase.common.calibrationDate= -echobase.common.calibrationProcessingMethod= -echobase.common.calibrationReport= echobase.common.callsign= echobase.common.category= echobase.common.categoryMeaning= @@ -41,14 +30,13 @@ echobase.common.categoryValue= echobase.common.cell=cell echobase.common.cellMethod= -echobase.common.cellName= echobase.common.cellType= echobase.common.childs= echobase.common.citation= echobase.common.classCode= +echobase.common.code= echobase.common.codeMemo= echobase.common.comment= -echobase.common.commonName= echobase.common.data=data echobase.common.dataAcquisition=dataAcquisition echobase.common.dataCentre=Centre de données @@ -61,15 +49,11 @@ echobase.common.dataQuality=dataQuality echobase.common.dataType= echobase.common.dataValue= +echobase.common.date= echobase.common.dateCreated= echobase.common.datum=datum echobase.common.datumType= -echobase.common.defaultAggregationLevel= echobase.common.depthStratum=depthStratum -echobase.common.depthStratumId= -echobase.common.depthStratumMeaning= -echobase.common.depthStratumType= -echobase.common.depthStratumTypeName= echobase.common.description=Description echobase.common.digitThreshold= echobase.common.distributionStatement= @@ -79,15 +63,14 @@ echobase.common.echosounderSoundSpeed= echobase.common.echotype= echobase.common.echotypeCategory= -echobase.common.echotypeCategoryName= -echobase.common.echotypeLengthCategory= -echobase.common.echotypeMeaning= -echobase.common.echotypeName= -echobase.common.elevationRatio= echobase.common.email=Courriel echobase.common.endDate= +echobase.common.endLocality= +echobase.common.endPort= +echobase.common.endTime= echobase.common.endTimeFillageEngin= echobase.common.endValidityDate= +echobase.common.enginePower= echobase.common.entityId=Identifiant de l'entité echobase.common.entityModificationLog=Journal des modifications echobase.common.entityModificationLogDTO= @@ -99,17 +82,13 @@ echobase.common.frequency= echobase.common.gear= echobase.common.gearCaracteristic= -echobase.common.gearCaracteristicName= echobase.common.gearMetadata= -echobase.common.gearMetadataName= echobase.common.gearMetadataValue= -echobase.common.gearName= echobase.common.gearShootingEndLatitude= echobase.common.gearShootingEndLongitude= echobase.common.gearShootingStartLatitude= echobase.common.gearShootingStartLongitude= echobase.common.gearType= -echobase.common.gearTypeName= echobase.common.genusSpecies= echobase.common.geospatialLatMax= echobase.common.geospatialLatMin= @@ -122,65 +101,51 @@ echobase.common.id=Identifiant echobase.common.imo= echobase.common.impacte= -echobase.common.individual= -echobase.common.individualId= -echobase.common.individualValue= echobase.common.institution=Institution echobase.common.keywords=Môts clefs echobase.common.label= echobase.common.lastModifiedDate=Date de dernière modification echobase.common.lastModifiedUser=Utilisateur de dernière modification echobase.common.length= -echobase.common.lengthCategory= echobase.common.level= echobase.common.licence= echobase.common.linestring= echobase.common.litteratureReference= echobase.common.litteratureReferences=Références echobase.common.localisation= -echobase.common.locationMaxLatitude= -echobase.common.locationMaxLongitude= -echobase.common.locationMinLatitude= -echobase.common.locationMinLongitude= echobase.common.loggedDataDatatype= echobase.common.loggedDataFormat= echobase.common.longName= echobase.common.m= +echobase.common.maxLatitude= +echobase.common.maxLongitude= echobase.common.meaning= echobase.common.measureType= echobase.common.measurementBinSize= echobase.common.measurementMetadata= -echobase.common.measurementMetadataName= -echobase.common.measurementTypeName= echobase.common.measurementUnit= echobase.common.metadata=metadata +echobase.common.minLatitude= +echobase.common.minLongitude= echobase.common.mission=mission echobase.common.missionAbstract=Résumé de la mission -echobase.common.missionName=Nom de la mission echobase.common.modificationDate=Date de modification echobase.common.modificationText=Modification echobase.common.modificationUser=Utilisateur echobase.common.moment= echobase.common.mz= echobase.common.name=Nom -echobase.common.newAttr= +echobase.common.noiseDesign= echobase.common.notes= -echobase.common.number= -echobase.common.numberAtAge= -echobase.common.numberAtLength= echobase.common.numberSampled= echobase.common.operation= echobase.common.operationGearMetadataValue= -echobase.common.operationMeasurementMetadataValue= echobase.common.operationMetadata= -echobase.common.operationMetadataName= echobase.common.operationMetadataValue= echobase.common.operationType= -echobase.common.operationTypeName= echobase.common.operator= echobase.common.organisationLevelAcknowledgements= echobase.common.organisationReferences= -echobase.common.parentCell= echobase.common.password=Mot de passe echobase.common.pingDutyCycle= echobase.common.platform= @@ -188,35 +153,26 @@ echobase.common.principalInvestigator=Chercheur echobase.common.principalInvestigatorEmail=Courriel du chercheur echobase.common.processingDescription= +echobase.common.processingMethod= echobase.common.processingSoftwareVersion= echobase.common.processingTemplate= echobase.common.project=Projet echobase.common.qualityDataFlagValues= -echobase.common.ratio= echobase.common.referenceDatum=referenceDatum -echobase.common.referenceDatumId= echobase.common.referenceDatumType= -echobase.common.referenceDatumTypeName= -echobase.common.referenceMeaning= echobase.common.referencingMethod= echobase.common.relatedActivity= +echobase.common.report= echobase.common.result= echobase.common.resultvalue= echobase.common.sample= -echobase.common.sampleAge= -echobase.common.sampleAggregation= echobase.common.sampleData= echobase.common.sampleDataType= -echobase.common.sampleLength= -echobase.common.sampleMetadata= -echobase.common.sampleRatioType= -echobase.common.sampleTag= echobase.common.sampleType= echobase.common.sampleWeight= echobase.common.scaleFactor= echobase.common.seafloorSubstrate= echobase.common.sexeCategory= -echobase.common.size= echobase.common.sizeCategory= echobase.common.soundSpeedCalculations= echobase.common.sounderConstant= @@ -226,12 +182,14 @@ echobase.common.sqlQuery=requête SQL echobase.common.standardName= echobase.common.startDate= +echobase.common.startLatitude= +echobase.common.startLocality= +echobase.common.startLongitude= +echobase.common.startPort= +echobase.common.startTime= echobase.common.startTimeFillageEngin= echobase.common.startValidityDate= echobase.common.station=station -echobase.common.stationStartLatitude= -echobase.common.stationStartLongitude= -echobase.common.string= echobase.common.taxonCode= echobase.common.taxonFatherMemocode= echobase.common.taxonSystematicLevel= @@ -239,6 +197,7 @@ echobase.common.timeCoverageEnd= echobase.common.timeCoverageStart= echobase.common.title= +echobase.common.tonnage= echobase.common.transceiverAcquisitionAbsorption= echobase.common.transceiverAcquisitionAbsorptionDescription= echobase.common.transceiverAcquisitionGain= @@ -270,35 +229,12 @@ echobase.common.transducerSerial= echobase.common.transect=transect echobase.common.transectAbstract= -echobase.common.transectAcousticInstrument= echobase.common.transit=transit -echobase.common.transitDescription= -echobase.common.transitEndLocatlity= -echobase.common.transitEndTime= -echobase.common.transitStartLocality= -echobase.common.transitStartTime= -echobase.common.transitVessel= echobase.common.type= echobase.common.units= echobase.common.validMax= echobase.common.validMin= -echobase.common.value= echobase.common.vessel=Navire -echobase.common.vesselCode= -echobase.common.vesselEnginePower= -echobase.common.vesselLength= -echobase.common.vesselName= -echobase.common.vesselNoiseDesign= -echobase.common.vesselTonnage= echobase.common.vesselType= -echobase.common.vesselTypeName= echobase.common.voyage=Campagne -echobase.common.voyageDescription=Description de campagne -echobase.common.voyageEndDate=Date de fin de campagne -echobase.common.voyageEndHarbour=Port de fin de campagne -echobase.common.voyageEndPort= -echobase.common.voyageName=Nom de la campagne -echobase.common.voyageStartDate=Date de début de campagne -echobase.common.voyageStartHarbour=Port de début de campagne -echobase.common.voyageStartPort= echobase.config.data.directory.description=Chemin de l'application Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo =================================================================== (Binary files differ)
participants (1)
-
tchemit@users.forge.codelutin.com