branch develop updated (571a41e -> af793a4)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See http://git.codelutin.com/observe.git from 571a41e fixes #7011: [ObServePS] Impossible de rajouter des mises en oeuvre de caractéristique à un équipement Merge branch 'feature/7011' into develop new ad69dc5 ajout de la persistence pour les équipements sur modèle LL + ajout d'un ordre sur les équipements d'une marée seine (refs #7013) new f68723b ajout de la validation pour les équipements du modèle LL + correction de clefs i18n (refs #7013) new 5a47fbe ajout de l'écran d'édition des équipements du modèle LL (refs #7013) new 5a6de36 ajout de la méthode de récupération des caractértistiques pour le modèle LL (refs #7013) new af793a4 fixes #7013: [ObServeLL] Ajout de l'écran des équipements Merge branch 'feature/7013' into develop The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit af793a4e63dba947f9c4fcd030795d687c061f68 Merge: 571a41e 5a6de36 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 10:47:14 2015 +0200 fixes #7013: [ObServeLL] Ajout de l'écran des équipements Merge branch 'feature/7013' into develop commit 5a6de36fb3b4206bf5b5598996a197154ee47b9f Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:44:39 2015 +0200 ajout de la méthode de récupération des caractértistiques pour le modèle LL (refs #7013) commit 5a47fbef066236c21a69cd83414d1ad779c6bde9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:44:03 2015 +0200 ajout de l'écran d'édition des équipements du modèle LL (refs #7013) commit f68723b5686de6769776a414b96e222a11428e8b Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:31:05 2015 +0200 ajout de la validation pour les équipements du modèle LL + correction de clefs i18n (refs #7013) commit ad69dc5ff5f2d3a915c622ed355f7e61251504fb Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:21:37 2015 +0200 ajout de la persistence pour les équipements sur modèle LL + ajout d'un ordre sur les équipements d'une marée seine (refs #7013) Summary of changes: .../src/main/java/fr/ird/observe/DataService.java | 51 ++++++++ .../test/resources/db/4.0-RC4/referentiel.sql.gz | Bin 0 -> 138256 bytes .../java/fr/ird/observe/entities/Entities.java | 56 +++++---- .../migration/AbstractDataSourceMigration.java | 4 +- ... => DataSourceMigrationForVersion_4_0_RC4.java} | 48 +++----- .../main/resources/db/4.0-RC4/add-gear-data-H2.sql | 18 +++ .../main/resources/db/4.0-RC4/add-gear-data-PG.sql | 19 +++ .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 10 +- .../src/main/xmi/observe-longline.zargo | Bin 93860 -> 96409 bytes .../src/main/xmi/observe-seine.properties | 4 +- observe-entities/src/main/xmi/observe-seine.zargo | Bin 85905 -> 85905 bytes .../ird/observe/ui/content/ContentUIManager.java | 2 + .../GearUseFeaturesLonglineTableModel.java} | 45 +++---- .../GearUseFeaturesLonglineUI.css} | 24 ++-- .../GearUseFeaturesLonglineUI.jaxx} | 32 ++--- .../GearUseFeaturesLonglineUIHandler.java} | 135 +++++++++++---------- .../longline/GearUseFeaturesLonglineUIModel.java | 125 +++++++++++++++++++ ...UseFeaturesMeasurementLonglinesTableModel.java} | 24 ++-- .../loadors/ProgramLonglineNodeChildLoador.java | 24 ++-- .../resources/i18n/observe-swing_en_GB.properties | 52 +++++--- .../resources/i18n/observe-swing_es_ES.properties | 24 ++++ .../resources/i18n/observe-swing_fr_FR.properties | 24 ++++ ...FeaturesLongline-n1-update-error-validation.xml | 34 ++++++ ...UseFeaturesSeine-n1-update-error-validation.xml | 6 +- .../i18n/observe-validation_en_GB.properties | 6 +- .../i18n/observe-validation_es_ES.properties | 6 +- .../i18n/observe-validation_fr_FR.properties | 6 +- .../validation/BeanValidatorDetectorTest.java | 4 +- 29 files changed, 564 insertions(+), 221 deletions(-) create mode 100644 observe-business/src/test/resources/db/4.0-RC4/referentiel.sql.gz copy observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/{DataSourceMigrationForVersion_3_12.java => DataSourceMigrationForVersion_4_0_RC4.java} (51%) create mode 100644 observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-H2.sql create mode 100644 observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-PG.sql copy observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/{seine/GearUseFeaturesSeineTableModel.java => longline/GearUseFeaturesLonglineTableModel.java} (63%) copy observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/{seine/GearUseFeaturesSeineUI.css => longline/GearUseFeaturesLonglineUI.css} (75%) copy observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/{seine/GearUseFeaturesSeineUI.jaxx => longline/GearUseFeaturesLonglineUI.jaxx} (77%) copy observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/{seine/GearUseFeaturesSeineUIHandler.java => longline/GearUseFeaturesLonglineUIHandler.java} (75%) create mode 100644 observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIModel.java copy observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/{seine/GearUseFeaturesMeasurementSeinesTableModel.java => longline/GearUseFeaturesMeasurementLonglinesTableModel.java} (74%) create mode 100644 observe-validation/src/main/resources/fr/ird/observe/entities/longline/GearUseFeaturesLongline-n1-update-error-validation.xml -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit ad69dc5ff5f2d3a915c622ed355f7e61251504fb Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:21:37 2015 +0200 ajout de la persistence pour les équipements sur modèle LL + ajout d'un ordre sur les équipements d'une marée seine (refs #7013) --- .../test/resources/db/4.0-RC4/referentiel.sql.gz | Bin 0 -> 138256 bytes .../java/fr/ird/observe/entities/Entities.java | 56 ++++++++++++-------- .../migration/AbstractDataSourceMigration.java | 4 +- .../DataSourceMigrationForVersion_4_0_RC4.java | 58 +++++++++++++++++++++ .../main/resources/db/4.0-RC4/add-gear-data-H2.sql | 18 +++++++ .../main/resources/db/4.0-RC4/add-gear-data-PG.sql | 19 +++++++ .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 10 +++- .../src/main/xmi/observe-longline.zargo | Bin 93860 -> 96409 bytes .../src/main/xmi/observe-seine.properties | 4 +- observe-entities/src/main/xmi/observe-seine.zargo | Bin 85905 -> 85905 bytes 11 files changed, 144 insertions(+), 27 deletions(-) diff --git a/observe-business/src/test/resources/db/4.0-RC4/referentiel.sql.gz b/observe-business/src/test/resources/db/4.0-RC4/referentiel.sql.gz new file mode 100644 index 0000000..c85d8e8 Binary files /dev/null and b/observe-business/src/test/resources/db/4.0-RC4/referentiel.sql.gz differ diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java b/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java index e958c12..f69517c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/Entities.java @@ -42,7 +42,8 @@ import java.util.Map; * @since 3.7 */ public class Entities { - public static final ObserveEntityEnum[] REFERENCE_ENTITIES = + + public static final ObserveEntityEnum[] REFERENCE_COMMON_ENTITIES = new ObserveEntityEnum[]{ ObserveEntityEnum.VesselSizeCategory, ObserveEntityEnum.Country, @@ -61,8 +62,11 @@ public class Entities { ObserveEntityEnum.Program, ObserveEntityEnum.GearCaracteristicType, ObserveEntityEnum.GearCaracteristic, - ObserveEntityEnum.Gear, + ObserveEntityEnum.Gear + }; + public static final ObserveEntityEnum[] REFERENCE_SEINE_ENTITIES = + new ObserveEntityEnum[]{ ObserveEntityEnum.VesselActivitySeine, ObserveEntityEnum.SurroundingActivity, ObserveEntityEnum.ReasonForNullSet, @@ -78,8 +82,11 @@ public class Entities { ObserveEntityEnum.ObservedSystem, ObserveEntityEnum.TransmittingBuoyType, ObserveEntityEnum.ObjectType, - ObserveEntityEnum.Wind, + ObserveEntityEnum.Wind + }; + public static final ObserveEntityEnum[] REFERENCE_LONGLINE_ENTITIES = + new ObserveEntityEnum[]{ ObserveEntityEnum.BaitHaulingStatus, ObserveEntityEnum.BaitSettingStatus, ObserveEntityEnum.BaitType, @@ -107,7 +114,16 @@ public class Entities { ObserveEntityEnum.WeightMeasureType }; - public static final ObserveEntityEnum[] REFERENCE_COMMON_ENTITIES = + public static final List<ObserveEntityEnum> REFERENCE_COMMON_ENTITIES_LIST = + Collections.unmodifiableList(Arrays.asList(REFERENCE_COMMON_ENTITIES)); + + public static final List<ObserveEntityEnum> REFERENCE_SEINE_ENTITIES_LIST = + Collections.unmodifiableList(Arrays.asList(REFERENCE_SEINE_ENTITIES)); + + public static final List<ObserveEntityEnum> REFERENCE_LONGLINE_ENTITIES_LIST = + Collections.unmodifiableList(Arrays.asList(REFERENCE_LONGLINE_ENTITIES)); + + public static final ObserveEntityEnum[] REFERENCE_ENTITIES = new ObserveEntityEnum[]{ ObserveEntityEnum.VesselSizeCategory, ObserveEntityEnum.Country, @@ -126,14 +142,8 @@ public class Entities { ObserveEntityEnum.Program, ObserveEntityEnum.GearCaracteristicType, ObserveEntityEnum.GearCaracteristic, - ObserveEntityEnum.Gear - }; - - public static final List<ObserveEntityEnum> REFERENCE_COMMON_ENTITIES_LIST = - Collections.unmodifiableList(Arrays.asList(REFERENCE_COMMON_ENTITIES)); + ObserveEntityEnum.Gear, - public static final ObserveEntityEnum[] REFERENCE_SEINE_ENTITIES = - new ObserveEntityEnum[]{ ObserveEntityEnum.VesselActivitySeine, ObserveEntityEnum.SurroundingActivity, ObserveEntityEnum.ReasonForNullSet, @@ -149,14 +159,8 @@ public class Entities { ObserveEntityEnum.ObservedSystem, ObserveEntityEnum.TransmittingBuoyType, ObserveEntityEnum.ObjectType, - ObserveEntityEnum.Wind - }; - - public static final List<ObserveEntityEnum> REFERENCE_SEINE_ENTITIES_LIST = - Collections.unmodifiableList(Arrays.asList(REFERENCE_SEINE_ENTITIES)); + ObserveEntityEnum.Wind, - public static final ObserveEntityEnum[] REFERENCE_LONGLINE_ENTITIES = - new ObserveEntityEnum[]{ ObserveEntityEnum.BaitHaulingStatus, ObserveEntityEnum.BaitSettingStatus, ObserveEntityEnum.BaitType, @@ -184,8 +188,8 @@ public class Entities { ObserveEntityEnum.WeightMeasureType }; - public static final List<ObserveEntityEnum> REFERENCE_LONGLINE_ENTITIES_LIST = - Collections.unmodifiableList(Arrays.asList(REFERENCE_LONGLINE_ENTITIES)); + public static final List<ObserveEntityEnum> REFERENCE_ENTITIES_LIST = + Collections.unmodifiableList(Arrays.asList(REFERENCE_ENTITIES)); public static final ObserveEntityEnum[] DATA_ENTITIES = new ObserveEntityEnum[]{ @@ -203,6 +207,8 @@ public class Entities { ObserveEntityEnum.FloatingObject, ObserveEntityEnum.ActivitySeine, ObserveEntityEnum.Route, + ObserveEntityEnum.GearUseFeaturesMeasurementSeine, + ObserveEntityEnum.GearUseFeaturesSeine, ObserveEntityEnum.TripSeine, ObserveEntityEnum.HooksComposition, @@ -221,6 +227,8 @@ public class Entities { ObserveEntityEnum.SensorUsed, ObserveEntityEnum.ActivityLongline, ObserveEntityEnum.TdrRecord, + ObserveEntityEnum.GearUseFeaturesMeasurementLongline, + ObserveEntityEnum.GearUseFeaturesLongline, ObserveEntityEnum.TripLongline }; @@ -253,6 +261,8 @@ public class Entities { ObserveEntityEnum.FloatingObject, ObserveEntityEnum.ActivitySeine, ObserveEntityEnum.Route, + ObserveEntityEnum.GearUseFeaturesMeasurementSeine, + ObserveEntityEnum.GearUseFeaturesSeine, ObserveEntityEnum.TripSeine }; @@ -274,6 +284,8 @@ public class Entities { ObserveEntityEnum.SensorUsed, ObserveEntityEnum.ActivityLongline, ObserveEntityEnum.TdrRecord, + ObserveEntityEnum.GearUseFeaturesMeasurementLongline, + ObserveEntityEnum.GearUseFeaturesLongline, ObserveEntityEnum.TripLongline }; @@ -290,7 +302,7 @@ public class Entities { return false; } klass = ObserveDAOHelper.getContractClass((Class<? extends TopiaEntity>) klass); - for (ObserveEntityEnum c : REFERENCE_ENTITIES) { + for (ObserveEntityEnum c : REFERENCE_ENTITIES_LIST) { if (c.getContract().equals(klass)) { return true; } @@ -303,7 +315,7 @@ public class Entities { * @return {@code true} si c'est une classe du référentiel. */ public static boolean isReferentielClass(ObserveEntityEnum constant) { - for (ObserveEntityEnum c : REFERENCE_ENTITIES) { + for (ObserveEntityEnum c : REFERENCE_ENTITIES_LIST) { if (c.equals(constant)) { return true; } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java b/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java index 4cfa18c..da55de9 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java @@ -79,9 +79,11 @@ public abstract class AbstractDataSourceMigration extends TopiaMigrationCallback public static final Version V_4_0_RC3 = Versions.valueOf("4.0-RC3"); + public static final Version V_4_0_RC4 = Versions.valueOf("4.0-RC4"); + /** Les versions de mise à jour disponibles. */ public static final Version[] availableVersions = new Version[]{ - V_3_1, V_3_5, V_3_7, V_3_8, V_3_9, V_3_10, V_3_11, V_3_12, V_3_14, V_3_15, V_3_16, V_4_0_RC2, V_4_0_RC3 + V_3_1, V_3_5, V_3_7, V_3_8, V_3_9, V_3_10, V_3_11, V_3_12, V_3_14, V_3_15, V_3_16, V_4_0_RC2, V_4_0_RC3, V_4_0_RC4 }; private static Supplier<ApplicationConfig> applicationConfigSupplier; diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_RC4.java b/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_RC4.java new file mode 100644 index 0000000..48dcec8 --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_RC4.java @@ -0,0 +1,58 @@ +package fr.ird.observe.entities.migration.versions; + +import fr.ird.observe.entities.migration.AbstractDataSourceMigration; +import fr.ird.observe.entities.migration.AbstractObserveMigrationCallBack; +import fr.ird.observe.entities.migration.H2DataSourceMigration; +import fr.ird.observe.entities.migration.PGDataSourceMigration; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; + +import java.util.List; + +/** + * Created on 4/23/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0-RC4 + */ +public class DataSourceMigrationForVersion_4_0_RC4 extends AbstractObserveMigrationCallBack { + + /** Logger. */ + private static final Log log = LogFactory.getLog(DataSourceMigrationForVersion_4_0_RC3.class); + + public DataSourceMigrationForVersion_4_0_RC4(AbstractDataSourceMigration callBack, String scriptSuffix) { + super(AbstractDataSourceMigration.V_4_0_RC4, callBack, scriptSuffix); + } + + @Override + protected void prepareMigrationScript(TopiaContextImplementor tx, + List<String> queries, + boolean showSql, + boolean showProgression) throws TopiaException { + + + // See https://forge.codelutin.com/issues/7013 + addScript("add-gear-data", queries); + + } + + public static class H2DataSourceMigrationForVersion extends DataSourceMigrationForVersion_4_0_RC4 { + + public H2DataSourceMigrationForVersion(AbstractDataSourceMigration callBack) { + super(callBack, H2DataSourceMigration.TYPE); + } + + } + + public static class PGDataSourceMigrationForVersion extends DataSourceMigrationForVersion_4_0_RC4 { + + public PGDataSourceMigrationForVersion(AbstractDataSourceMigration callBack) { + super(callBack, PGDataSourceMigration.TYPE); + } + + } + + +} \ No newline at end of file diff --git a/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-H2.sql b/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-H2.sql new file mode 100644 index 0000000..04e6a75 --- /dev/null +++ b/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-H2.sql @@ -0,0 +1,18 @@ +-- +-- GearUseFeatures Definition +-- +CREATE TABLE OBSERVE_LONGLINE.GEARUSEFEATURES(topiaid VARCHAR(255) NOT NULL,topiaversion BIGINT NOT NULL, topiacreatedate DATE, trip VARCHAR(255), gear VARCHAR(255) NOT NULL, number INTEGER NOT NULL, comment VARCHAR(1023), usedInTrip BOOLEAN); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT PK_GEARUSEFEATURES PRIMARY KEY(TOPIAID); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT FK_GEARUSEFEATURES_TRIP FOREIGN KEY(trip) REFERENCES OBSERVE_LONGLINE.TRIP(topiaid); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT FK_GEARUSEFEATURES_GEAR FOREIGN KEY(gear) REFERENCES OBSERVE_COMMON.GEAR(topiaid); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURES_TRIP ON OBSERVE_LONGLINE.GEARUSEFEATURES(trip); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURES_GEAR ON OBSERVE_LONGLINE.GEARUSEFEATURES(gear); +-- +-- GearUseFeaturesMeasurement Definition +-- +CREATE TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(topiaid VARCHAR(255) NOT NULL,topiaversion BIGINT NOT NULL, topiacreatedate DATE, gearCaracteristic VARCHAR(255) NOT NULL, gearUseFeatures VARCHAR(255), measurementValue VARCHAR(255) NOT NULL); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT PK_GEARUSEFEATURESMEASUREMENT PRIMARY KEY(TOPIAID); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT FK_GEARUSEFEATURESMEASUREMENT_GEARCARACTERISTIC FOREIGN KEY(gearCaracteristic) REFERENCES OBSERVE_COMMON.GEARCARACTERISTIC(topiaid); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT FK_GEARUSEFEATURESMEASUREMENT_GEARUSEFEATURES FOREIGN KEY(gearUseFeatures) REFERENCES OBSERVE_LONGLINE.GEARUSEFEATURES(topiaid); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURESMEASUREMENT_GEARCARACTERISTIC ON OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(gearCaracteristic); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURESMEASUREMENT_GEARUSEFEATURES ON OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(gearUseFeatures); \ No newline at end of file diff --git a/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-PG.sql b/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-PG.sql new file mode 100644 index 0000000..76aa9a3 --- /dev/null +++ b/observe-entities/src/main/resources/db/4.0-RC4/add-gear-data-PG.sql @@ -0,0 +1,19 @@ +-- +-- GearUseFeatures Definition +-- +CREATE TABLE OBSERVE_LONGLINE.GEARUSEFEATURES(topiaid character varying(255) NOT NULL,topiaversion BIGINT NOT NULL, topiacreatedate DATE, trip character varying(255), gear character varying(255) NOT NULL, number INTEGER NOT NULL, comment VARCHAR(1023), usedInTrip BOOLEAN); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT PK_GEARUSEFEATURES PRIMARY KEY(TOPIAID); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT FK_GEARUSEFEATURES_TRIP FOREIGN KEY(trip) REFERENCES OBSERVE_LONGLINE.TRIP(topiaid); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURES ADD CONSTRAINT FK_GEARUSEFEATURES_GEAR FOREIGN KEY(gear) REFERENCES OBSERVE_COMMON.GEAR(topiaid); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURES_TRIP ON OBSERVE_LONGLINE.GEARUSEFEATURES(trip); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURES_GEAR ON OBSERVE_LONGLINE.GEARUSEFEATURES(gear); +-- +-- GearUseFeaturesMeasurement Definition +-- +CREATE TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(topiaid character varying(255) NOT NULL,topiaversion BIGINT NOT NULL, topiacreatedate DATE, gearCaracteristic character varying(255) NOT NULL, gearUseFeatures character varying(255), measurementValue character varying(255) NOT NULL); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT PK_GEARUSEFEATURESMEASUREMENT PRIMARY KEY(TOPIAID); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT FK_GEARUSEFEATURESMEASUREMENT_GEARCARACTERISTIC FOREIGN KEY(gearCaracteristic) REFERENCES OBSERVE_COMMON.GEARCARACTERISTIC(topiaid); +ALTER TABLE OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT ADD CONSTRAINT FK_GEARUSEFEATURESMEASUREMENT_GEARUSEFEATURES FOREIGN KEY(gearUseFeatures) REFERENCES OBSERVE_LONGLINE.GEARUSEFEATURES(topiaid); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURESMEASUREMENT_GEARCARACTERISTIC ON OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(gearCaracteristic); +CREATE INDEX IDX_OBSERVE_LONGLINE_GEARUSEFEATURESMEASUREMENT_GEARUSEFEATURES ON OBSERVE_LONGLINE.GEARUSEFEATURESMEASUREMENT(gearUseFeatures); + diff --git a/observe-entities/src/main/xmi/observe-common.properties b/observe-entities/src/main/xmi/observe-common.properties index ee471f3..47d09fb 100644 --- a/observe-entities/src/main/xmi/observe-common.properties +++ b/observe-entities/src/main/xmi/observe-common.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=4.0-RC3 +model.tagvalue.version=4.0-RC4 model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateStandaloneEnumForDAOHelper=true diff --git a/observe-entities/src/main/xmi/observe-longline.properties b/observe-entities/src/main/xmi/observe-longline.properties index 526e683..14871b1 100644 --- a/observe-entities/src/main/xmi/observe-longline.properties +++ b/observe-entities/src/main/xmi/observe-longline.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=4.0-RC3 +model.tagvalue.version=4.0-RC4 model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateStandaloneEnumForDAOHelper=true @@ -69,6 +69,12 @@ fr.ird.observe.entities.longline.Section.attribute.setLongline.tagvalue.dbName=s fr.ird.observe.entities.longline.TripLongline.class.tagvalue.dbName=Trip fr.ird.observe.entities.longline.TripLongline.attribute.activityLongline.tagvalue.reverseDbName=trip +fr.ird.observe.entities.longline.TripLongline.attribute.gearUseFeaturesLongline.tagvalue.reverseDbName=trip + +fr.ird.observe.entities.longline.GearUseFeaturesLongline.class.tagvalue.dbName=GearUseFeatures +fr.ird.observe.entities.longline.GearUseFeaturesLongline.attribute.gearUseFeaturesMeasurement.tagvalue.reverseDbName=gearUseFeatures + +fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline.class.tagvalue.dbName=GearUseFeaturesMeasurement ############################################################################### ### Champ Numeric (utilisation du type sql numeric) ########################### @@ -129,6 +135,8 @@ fr.ird.observe.entities.longline.ActivityLongline.attribute.vesselActivityLongli fr.ird.observe.entities.longline.SetLongline.attribute.section.tagvalue.orderBy=settingIdentifier fr.ird.observe.entities.longline.Section.attribute.basket.tagvalue.orderBy=settingIdentifier fr.ird.observe.entities.longline.Basket.attribute.branchline.tagvalue.orderBy=settingIdentifier +fr.ird.observe.entities.longline.TripLongline.attribute.gearUseFeaturesLongline.tagvalue.orderBy=topiaCreateDate +fr.ird.observe.entities.longline.GearUseFeaturesLongline.attribute.gearUseFeaturesMeasurement.tagvalue.orderBy=topiaCreateDate ############################################################################### ### NotNull ################################################################### diff --git a/observe-entities/src/main/xmi/observe-longline.zargo b/observe-entities/src/main/xmi/observe-longline.zargo index 1158f69..114c920 100644 Binary files a/observe-entities/src/main/xmi/observe-longline.zargo and b/observe-entities/src/main/xmi/observe-longline.zargo differ diff --git a/observe-entities/src/main/xmi/observe-seine.properties b/observe-entities/src/main/xmi/observe-seine.properties index 7777689..56c5db0 100644 --- a/observe-entities/src/main/xmi/observe-seine.properties +++ b/observe-entities/src/main/xmi/observe-seine.properties @@ -20,7 +20,7 @@ # #L% ### -model.tagvalue.version=4.0-RC3 +model.tagvalue.version=4.0-RC4 model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateStandaloneEnumForDAOHelper=true @@ -103,7 +103,6 @@ fr.ird.observe.entities.seine.SetSeine.attribute.startTime.tagvalue.type=time fr.ird.observe.entities.seine.NonTargetLength.attribute.sex.tagvalue.lazy=false fr.ird.observe.entities.referentiel.seine.WeightCategory.attribute.species.tagvalue.lazy=false -fr.ird.observe.entities.referentiel.GearCaracteristic.attribute.gearCaracteristicType.tagvalue.lazy=false ############################################################################### ### Natural Ids ############################################################### @@ -128,6 +127,7 @@ fr.ird.observe.entities.seine.SchoolEstimate.attribute.species.tagvalue.naturalI ############################################################################### ### OrderBy ################################################################### ############################################################################### +fr.ird.observe.entities.seine.TripSeine.attribute.gearUseFeaturesSeine.tagvalue.orderBy=topiaCreateDate fr.ird.observe.entities.seine.GearUseFeaturesSeine.attribute.gearUseFeaturesMeasurement.tagvalue.orderBy=topiaCreateDate ############################################################################### diff --git a/observe-entities/src/main/xmi/observe-seine.zargo b/observe-entities/src/main/xmi/observe-seine.zargo index ef9f846..9116a17 100644 Binary files a/observe-entities/src/main/xmi/observe-seine.zargo and b/observe-entities/src/main/xmi/observe-seine.zargo differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit f68723b5686de6769776a414b96e222a11428e8b Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:31:05 2015 +0200 ajout de la validation pour les équipements du modèle LL + correction de clefs i18n (refs #7013) --- ...FeaturesLongline-n1-update-error-validation.xml | 34 ++++++++++++++++++++++ ...UseFeaturesSeine-n1-update-error-validation.xml | 6 ++-- .../i18n/observe-validation_en_GB.properties | 6 ++-- .../i18n/observe-validation_es_ES.properties | 6 ++-- .../i18n/observe-validation_fr_FR.properties | 6 ++-- .../validation/BeanValidatorDetectorTest.java | 4 ++- 6 files changed, 49 insertions(+), 13 deletions(-) diff --git a/observe-validation/src/main/resources/fr/ird/observe/entities/longline/GearUseFeaturesLongline-n1-update-error-validation.xml b/observe-validation/src/main/resources/fr/ird/observe/entities/longline/GearUseFeaturesLongline-n1-update-error-validation.xml new file mode 100644 index 0000000..87bfea2 --- /dev/null +++ b/observe-validation/src/main/resources/fr/ird/observe/entities/longline/GearUseFeaturesLongline-n1-update-error-validation.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="gear"> + + <!-- pas d'équipement selectionnee --> + <field-validator type="required" short-circuit="true"> + <message>validator.gearUseFeature.required.gear</message> + </field-validator> + + <!-- équipement desactive --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ gear.enabled ]]> + </param> + <message>validator.gearUseFeature.desactivated.gear</message> + </field-validator> + + </field> + + <field name="number"> + + <!-- number non saisi --> + <field-validator type="required" short-circuit="true"> + <message>validator.gearUseFeature.required.number</message> + </field-validator> + + </field> + +</validators> diff --git a/observe-validation/src/main/resources/fr/ird/observe/entities/seine/GearUseFeaturesSeine-n1-update-error-validation.xml b/observe-validation/src/main/resources/fr/ird/observe/entities/seine/GearUseFeaturesSeine-n1-update-error-validation.xml index 6187fc9..036af1a 100644 --- a/observe-validation/src/main/resources/fr/ird/observe/entities/seine/GearUseFeaturesSeine-n1-update-error-validation.xml +++ b/observe-validation/src/main/resources/fr/ird/observe/entities/seine/GearUseFeaturesSeine-n1-update-error-validation.xml @@ -30,7 +30,7 @@ <!-- pas d'équipement selectionnee --> <field-validator type="required" short-circuit="true"> - <message>validator.trip.required.gear</message> + <message>validator.gearUseFeature.required.gear</message> </field-validator> <!-- équipement desactive --> @@ -38,7 +38,7 @@ <param name="expression"> <![CDATA[ gear.enabled ]]> </param> - <message>validator.trip.desactivated.gear</message> + <message>validator.gearUseFeature.desactivated.gear</message> </field-validator> </field> @@ -47,7 +47,7 @@ <!-- number non saisi --> <field-validator type="required" short-circuit="true"> - <message>validator.trip.required.number</message> + <message>validator.gearUseFeature.required.number</message> </field-validator> </field> diff --git a/observe-validation/src/main/resources/i18n/observe-validation_en_GB.properties b/observe-validation/src/main/resources/i18n/observe-validation_en_GB.properties index a737387..9464f54 100644 --- a/observe-validation/src/main/resources/i18n/observe-validation_en_GB.properties +++ b/observe-validation/src/main/resources/i18n/observe-validation_en_GB.properties @@ -115,6 +115,9 @@ validator.floatlinesComposition.required.lineType= validator.floatlinesComposition.required.proportion= validator.gearCaracteristic.desactivated.gearCaracteristicType= validator.gearCaracteristic.required.gearCaracteristicType= +validator.gearUseFeature.desactivated.gear= +validator.gearUseFeature.required.gear= +validator.gearUseFeature.required.number= validator.harbour.desactivated.country= validator.harbour.null.latitude= validator.harbour.null.locode= @@ -365,7 +368,6 @@ validator.trip.comment.tobig= validator.trip.desactivated.captain= validator.trip.desactivated.dataEntryOperator= validator.trip.desactivated.departureHarbour= -validator.trip.desactivated.gear= validator.trip.desactivated.landingHarbour= validator.trip.desactivated.observer= validator.trip.desactivated.ocean= @@ -393,8 +395,6 @@ validator.trip.required.comment.for.tripType= validator.trip.required.comment.for.vessel= validator.trip.required.departureHarbour= validator.trip.required.endDate= -validator.trip.required.gear= -validator.trip.required.number= validator.trip.required.observer= validator.trip.required.ocean= validator.trip.required.startDate= diff --git a/observe-validation/src/main/resources/i18n/observe-validation_es_ES.properties b/observe-validation/src/main/resources/i18n/observe-validation_es_ES.properties index 2b4cb91..6d938aa 100644 --- a/observe-validation/src/main/resources/i18n/observe-validation_es_ES.properties +++ b/observe-validation/src/main/resources/i18n/observe-validation_es_ES.properties @@ -115,6 +115,9 @@ validator.floatlinesComposition.required.lineType= validator.floatlinesComposition.required.proportion= validator.gearCaracteristic.desactivated.gearCaracteristicType= validator.gearCaracteristic.required.gearCaracteristicType= +validator.gearUseFeature.desactivated.gear= +validator.gearUseFeature.required.gear= +validator.gearUseFeature.required.number= validator.harbour.desactivated.country= validator.harbour.null.latitude= validator.harbour.null.locode= @@ -365,7 +368,6 @@ validator.trip.comment.tobig=La longitud del campo de comentarios está limitado validator.trip.desactivated.captain= validator.trip.desactivated.dataEntryOperator= validator.trip.desactivated.departureHarbour= -validator.trip.desactivated.gear= validator.trip.desactivated.landingHarbour= validator.trip.desactivated.observer= validator.trip.desactivated.ocean=El oceano seleccionado está desactivado. @@ -393,8 +395,6 @@ validator.trip.required.comment.for.tripType= validator.trip.required.comment.for.vessel= validator.trip.required.departureHarbour= validator.trip.required.endDate=La fecha de fin de marea es obligatoria. -validator.trip.required.gear= -validator.trip.required.number= validator.trip.required.observer= validator.trip.required.ocean=No se ha seleccionado océano. validator.trip.required.startDate=La fecha de comienzo de marea es obligatoria. diff --git a/observe-validation/src/main/resources/i18n/observe-validation_fr_FR.properties b/observe-validation/src/main/resources/i18n/observe-validation_fr_FR.properties index 774af35..c48ba86 100644 --- a/observe-validation/src/main/resources/i18n/observe-validation_fr_FR.properties +++ b/observe-validation/src/main/resources/i18n/observe-validation_fr_FR.properties @@ -115,6 +115,9 @@ validator.floatlinesComposition.required.lineType=La sélection d'un type est ob validator.floatlinesComposition.required.proportion=Proportion non renseignée. validator.gearCaracteristic.desactivated.gearCaracteristicType=Le type sélectionnée est désactivée. validator.gearCaracteristic.required.gearCaracteristicType=Le type sélectionnée est obligatoire. +validator.gearUseFeature.desactivated.gear=L'équipement sélectionné est désactivé. +validator.gearUseFeature.required.gear=L'équipement est obligatoire. +validator.gearUseFeature.required.number=Le nombre est obligatoire. validator.harbour.desactivated.country=Le pays sélectionné est désactivé. validator.harbour.null.latitude=La latitude n'est pas renseignée. validator.harbour.null.locode=Le locode n'est pas renseigné. @@ -365,7 +368,6 @@ validator.trip.comment.tobig=La taille du commentaire est limitée à 1024 carac validator.trip.desactivated.captain=Le capitaine sélectionné est désactivé. validator.trip.desactivated.dataEntryOperator=Le saisisseur sélectionné est désactivé. validator.trip.desactivated.departureHarbour=Le port de départ sélectionné est désactivé. -validator.trip.desactivated.gear=L'équipement sélectionné est désactivé. validator.trip.desactivated.landingHarbour=Le port d'arrivée sélectionné est désactivé. validator.trip.desactivated.observer=L'observateur sélectionné est désactivé. validator.trip.desactivated.ocean=L'ocean sélectionné est désactivé. @@ -393,8 +395,6 @@ validator.trip.required.comment.for.tripType=Un commentaire est requis pour le t validator.trip.required.comment.for.vessel=Un commentaire est requis pour le navire sélectionné. validator.trip.required.departureHarbour=La sélection d'un port de départ est obligatoire. validator.trip.required.endDate=La date de fin de marée est obligatoire. -validator.trip.required.gear=L'équipement est obligatoire. -validator.trip.required.number=Le nombre est obligatoire. validator.trip.required.observer=La sélection d'un observateur est obligatoire. validator.trip.required.ocean=La sélection d'un océan est obligatoire. validator.trip.required.startDate=La date de début est obligatoire. diff --git a/observe-validation/src/test/java/fr/ird/observe/validation/BeanValidatorDetectorTest.java b/observe-validation/src/test/java/fr/ird/observe/validation/BeanValidatorDetectorTest.java index c8c27f7..cc0cee7 100644 --- a/observe-validation/src/test/java/fr/ird/observe/validation/BeanValidatorDetectorTest.java +++ b/observe-validation/src/test/java/fr/ird/observe/validation/BeanValidatorDetectorTest.java @@ -30,6 +30,7 @@ import fr.ird.observe.entities.longline.BranchlinesComposition; import fr.ird.observe.entities.longline.CatchLongline; import fr.ird.observe.entities.longline.Encounter; import fr.ird.observe.entities.longline.FloatlinesComposition; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; import fr.ird.observe.entities.longline.HooksComposition; import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SensorUsed; @@ -155,7 +156,7 @@ public class BeanValidatorDetectorTest extends AbstractValidatorDetectorTest { SortedSet<NuitonValidator<?>> validators = detectValidators(ALL_TYPES); assertFalse(validators.isEmpty()); - assertEquals(174, validators.size()); + assertEquals(175, validators.size()); } @@ -265,6 +266,7 @@ public class BeanValidatorDetectorTest extends AbstractValidatorDetectorTest { Gear.class, GearCaracteristic.class, GearCaracteristicType.class, + GearUseFeaturesLongline.class, GearUseFeaturesSeine.class, Harbour.class, Healthness.class, -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 5a47fbef066236c21a69cd83414d1ad779c6bde9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:44:03 2015 +0200 ajout de l'écran d'édition des équipements du modèle LL (refs #7013) --- .../ird/observe/ui/content/ContentUIManager.java | 2 + .../GearUseFeaturesLonglineTableModel.java | 150 ++++++ .../impl/longline/GearUseFeaturesLonglineUI.css | 97 ++++ .../impl/longline/GearUseFeaturesLonglineUI.jaxx | 154 ++++++ .../longline/GearUseFeaturesLonglineUIHandler.java | 587 +++++++++++++++++++++ .../longline/GearUseFeaturesLonglineUIModel.java | 125 +++++ ...rUseFeaturesMeasurementLonglinesTableModel.java | 124 +++++ .../loadors/ProgramLonglineNodeChildLoador.java | 24 +- .../resources/i18n/observe-swing_en_GB.properties | 52 +- .../resources/i18n/observe-swing_es_ES.properties | 24 + .../resources/i18n/observe-swing_fr_FR.properties | 24 + 11 files changed, 1341 insertions(+), 22 deletions(-) diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java index ce3da0d..74fa1a3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java @@ -55,6 +55,7 @@ import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ReferenceHomeUI; import fr.ird.observe.ui.content.table.impl.longline.CatchLonglineUI; import fr.ird.observe.ui.content.table.impl.longline.EncounterUI; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUI; import fr.ird.observe.ui.content.table.impl.longline.SensorUsedUI; import fr.ird.observe.ui.content.table.impl.longline.TdrUI; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeaturesSeineUI; @@ -148,6 +149,7 @@ public class ContentUIManager { addMapping(DATA, TripLongline.class, TripLonglineUI.class); addMapping(DATA, TripLongline.class, n("observe.tree.tripLongline.unsaved"), TripLonglineUI.class); + addMapping(DATA, TripLongline.class, TripLongline.PROPERTY_GEAR_USE_FEATURES_LONGLINE, GearUseFeaturesLonglineUI.class); addMapping(DATA, TripLongline.class, TripLongline.PROPERTY_ACTIVITY_LONGLINE, ActivityLonglinesUI.class); addMapping(DATA, ActivityLongline.class, ActivityLonglineUI.class); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java new file mode 100644 index 0000000..6cb4dba --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java @@ -0,0 +1,150 @@ +package fr.ird.observe.ui.content.table.impl.longline; + +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.ui.content.table.ContentTableMeta; +import fr.ird.observe.ui.content.table.ContentTableModel; +import fr.ird.observe.ui.content.table.ObserveContentTableUI; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesMeasurementLonglinesTableModel; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUIHandler; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUIModel; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; + +/** + * Created on 4/7/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class GearUseFeaturesLonglineTableModel extends ContentTableModel<TripLongline, GearUseFeaturesLongline> { + + private static final long serialVersionUID = 1L; + + private GearUseFeaturesLonglineUIHandler gearUseFeaturesLonglineUIHandler; + + public GearUseFeaturesLonglineTableModel(ObserveContentTableUI<TripLongline, GearUseFeaturesLongline> context, + List<ContentTableMeta<GearUseFeaturesLongline>> contentTableMetas) { + super(context, contentTableMetas); + } + + public void setGearUseFeaturesLonglineUIHandler(GearUseFeaturesLonglineUIHandler gearUseFeaturesLonglineUIHandler) { + this.gearUseFeaturesLonglineUIHandler = gearUseFeaturesLonglineUIHandler; + } + + @Override + public void addNewEntry() { + + int editingRow = getSelectedRow(); + + if (editingRow > -1) { + + // store sizes and weights for the selected row + // before creating a new one ? + GearUseFeaturesLonglineUIModel model = getModel(); + model.getMeasurementsTableModel().storeInCacheForRow(editingRow); + + } + + super.addNewEntry(); + } + + @Override + public void updateRowFromEditBean() { + + super.updateRowFromEditBean(); + + GearUseFeaturesLonglineUIModel model = getModel(); + + int editingRow = getSelectedRow(); + GearUseFeaturesLongline rowBean = getRowBean(); + GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + + if (rowBean.getTopiaId() == null && CollectionUtils.isEmpty(measurementsTableModel.getCacheForRow(editingRow))) { + + // new gear usage, add default measurements + + Gear gear = rowBean.getGear(); + List<GearUseFeaturesMeasurementLongline> measurements = + gearUseFeaturesLonglineUIHandler.getDefaultGearUseFeaturesMeasurementLongline(gear.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); + } + measurementsTableModel.removeCacheForRow(editingRow); + measurementsTableModel.initCacheForRow(editingRow, measurements); + + measurementsTableModel.setData(measurements); + measurementsTableModel.setModified(false); + + } else { + + // store current measurements for the selected row + measurementsTableModel.storeInCacheForRow(editingRow); + + } + + } + + @Override + protected void removeRow(int row) { + super.removeRow(row); + + // remove sizes and weights for the deleted row + // also update rows to row - 1 (when after the deleted row) + GearUseFeaturesLonglineUIModel model = getModel(); + model.getMeasurementsTableModel().removeCacheForRow(row); + + } + + @Override + public void resetEditBean() { + + int row = getSelectedRow(); + if (log.isInfoEnabled()) { + log.info("Reset edit bean at row: " + row); + } + GearUseFeaturesLonglineUIModel model = getModel(); + model.getMeasurementsTableModel().resetCacheForRow(row); + + super.resetEditBean(); + + } + + @Override + protected void resetRow(int row) { + super.resetRow(row); + + GearUseFeaturesLonglineUIModel model = getModel(); + model.getMeasurementsTableModel().resetCacheForRow(row); + } + + @Override + protected GearUseFeaturesLonglineUIModel getModel() { + return (GearUseFeaturesLonglineUIModel) super.getModel(); + } +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.css b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.css new file mode 100644 index 0000000..6b55ed7 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.css @@ -0,0 +1,97 @@ +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +#model { + valid:{validator.isValid() && validatorTable.isValid() && getMeasurementsTableModel().isValid()}; + canSaveRow:{validatorTable.isChanged() && validatorTable.isValid() && getMeasurementsTableModel().isValid()}; + canResetRow:{validatorTable.isChanged()}; +} + +/* ***************************************************************************** */ +/* GENERAL TAB **************************************************************** */ +/* ***************************************************************************** */ + +#generalTab { + title:{t("observe.gearUseFeaturesLongline.tab.general")}; + icon:{handler.getErrorIconIfFalse(model.isGeneralTabValid())}; +} + +#gearLabel { + text:"observe.gearUseFeaturesLongline.gear"; + labelFor:{gear}; +} + +#gear { + property:{GearUseFeaturesLongline.PROPERTY_GEAR}; + selectedItem:{tableEditBean.getGear()}; +} + +#numberLabel { + text:"observe.gearUseFeaturesLongline.number"; + labelFor:{number}; +} + +#number { + property:{GearUseFeaturesLongline.PROPERTY_NUMBER}; + model:{tableEditBean.getNumber()}; + numberPattern:{fr.ird.observe.ui.UIHelper.INT_6_DIGITS_PATTERN}; +} + +#usedInTripLabel { + text:"observe.gearUseFeaturesLongline.usedInTrip"; + labelFor:{usedInTrip}; +} + +#usedInTrip { + booleanValue:{tableEditBean.getUsedInTrip()}; + _tablePropertyName:{GearUseFeaturesLongline.PROPERTY_USED_IN_TRIP}; +} + +/* ***************************************************************************** */ +/* MEASUREMENTS TAB *********************************************************** */ +/* ***************************************************************************** */ + +#measurementsFormTab { + title:{t("observe.gearUseFeaturesLongline.tab.measurements")}; + icon:{handler.getErrorIconIfFalse(measurementsTableModel.isValid())}; + enabled:{!tableModel.isCreate()}; +} + +#measurementsTable { + model: {measurementsTableModel}; +} + +#comment { + columnHeaderView:{new JLabel(t("observe.gearUseFeaturesLongline.comment"))}; + minimumSize:{new Dimension(10,80)}; +} + +#comment2 { + _tablePropertyName: {GearUseFeaturesLongline.PROPERTY_COMMENT}; + text:{getStringValue(tableEditBean.getComment())}; +} + +#deleteSelectedMeasurement { + text: "observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement"; + toolTipText: "observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip"; + actionIcon: delete; +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.jaxx b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.jaxx new file mode 100644 index 0000000..bcd4a6d --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUI.jaxx @@ -0,0 +1,154 @@ +<!-- + #%L + ObServe :: Swing + %% + Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU 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 General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<fr.ird.observe.ui.content.table.ContentTableUI + superGenericType='TripLongline, GearUseFeaturesLongline' + contentTitle='{n("observe.gearUseFeaturesLongline.title")}' + saveNewEntryText='{n("observe.action.create.gearUseFeaturesLongline")}' + saveNewEntryTip='{n("observe.action.create.gearUseFeaturesLongline.tip")}'> + + <style source="../../CommonTable.css"/> + + <import> + fr.ird.observe.entities.CommentableEntity + fr.ird.observe.entities.longline.TripLongline + fr.ird.observe.entities.longline.GearUseFeaturesLongline + fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline + fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineImpl + fr.ird.observe.entities.referentiel.Gear + fr.ird.observe.ui.content.table.* + fr.ird.observe.ui.util.BooleanEditor + + jaxx.runtime.swing.editor.NumberEditor + jaxx.runtime.swing.editor.bean.BeanComboBox + + java.awt.Dimension + + static fr.ird.observe.ui.UIHelper.getStringValue + static org.nuiton.i18n.I18n.n + </import> + + <!-- handler --> + <GearUseFeaturesLonglineUIHandler id='handler' constructorParams='this'/> + + <!-- model --> + <GearUseFeaturesLonglineUIModel id='model' constructorParams='this'/> + + <GearUseFeaturesMeasurementLonglinesTableModel id='measurementsTableModel' + initializer="getModel().getMeasurementsTableModel()"/> + + <!-- edit bean --> + <TripLongline id='bean'/> + + <!-- table edit bean --> + <GearUseFeaturesLongline id='tableEditBean'/> + + <!-- table model --> + <ContentTableModel id='tableModel'/> + + <!-- le validateur de l'écran --> + <BeanValidator id='validator' + beanClass='fr.ird.observe.entities.longline.TripLongline' + errorTableModel='{getErrorTableModel()}' + context='n1-update-gearUseFeatures'/> + + <!-- le validateur d'une entrée de tableau --> + <BeanValidator id='validatorTable' + autoField='true' + beanClass='fr.ird.observe.entities.longline.GearUseFeaturesLongline' + errorTableModel='{getErrorTableModel()}' + context='n1-update'/> + + <JPopupMenu id='measurementsTablePopup'> + <JMenuItem id='deleteSelectedMeasurement' onActionPerformed='getHandler().deleteSelectedMeasurement()'/> + </JPopupMenu> + + <Table id='editorPanel' fill='both' insets='0' weighty="1"> + <row> + <cell weightx="1" weighty="0.9"> + + <JTabbedPane id='gearUseFeaturesTabPane'> + + <tab id='generalTab'> + + <JPanel layout='{new BorderLayout()}'> + + <Table id='editForm' fill='both' insets='1' constraints="BorderLayout.NORTH"> + + <!-- gear --> + <row> + <cell> + <JLabel id='gearLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <BeanComboBox id='gear' constructorParams='this' genericType='Gear'/> + </cell> + </row> + + <!-- number --> + <row> + <cell> + <JLabel id='numberLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <NumberEditor id='number' constructorParams='this'/> + </cell> + </row> + + <!-- usedInTrip --> + <row> + <cell> + <JLabel id='usedInTripLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <BooleanEditor id='usedInTrip'/> + </cell> + </row> + + </Table> + + </JPanel> + + + </tab> + + <tab id='measurementsFormTab'> + + <JScrollPane id='measurementsScrollPane'> + <JTable id='measurementsTable'/> + </JScrollPane> + + </tab> + </JTabbedPane> + + </cell> + </row> + <row> + <cell weighty='0.1'> + <JScrollPane id='comment' onFocusGained='comment2.requestFocus()'> + <JTextArea id='comment2'/> + </JScrollPane> + </cell> + </row> + </Table> + +</fr.ird.observe.ui.content.table.ContentTableUI> diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java new file mode 100644 index 0000000..5380406 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -0,0 +1,587 @@ +package fr.ird.observe.ui.content.table.impl.longline; + +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.DataService; +import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.ObserveTechnicalException; +import fr.ird.observe.db.DataContext; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.db.constants.DataContextType; +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineDAO; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.content.ContentMode; +import fr.ird.observe.ui.content.ContentUIInitializer; +import fr.ird.observe.ui.content.table.ContentTableUIHandler; +import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellEditor; +import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellRenderer; +import fr.ird.observe.ui.util.table.AutotSelectRowAndShowPopupActionSupport; +import fr.ird.observe.ui.util.table.EditableTableModelSupport; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidatorMessage; +import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.validator.NuitonValidatorScope; + +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.DefaultTableCellRenderer; +import java.awt.GridBagConstraints; +import java.awt.Insets; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<TripLongline, GearUseFeaturesLongline> { + + /** Logger */ + static private Log log = LogFactory.getLog(GearUseFeaturesLonglineUIHandler.class); + + // Compute valid state of tab from the error table + protected final TableModelListener computeTabValidStateListener = new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + + SwingValidatorMessageTableModel source = (SwingValidatorMessageTableModel) e.getSource(); + computeTabValidState(source); + + } + }; + + private final PropertyChangeListener measurementsTableModelModified = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + onMeasurementsTableModelModified((Boolean) evt.getNewValue()); + } + }; + + public GearUseFeaturesLonglineUIHandler(GearUseFeaturesLonglineUI ui) { + super(ui, DataContextType.TripLongline); + } + + @Override + public GearUseFeaturesLonglineUI getUi() { + return (GearUseFeaturesLonglineUI) super.getUi(); + } + + @Override + public GearUseFeaturesLonglineUIModel getModel() { + return (GearUseFeaturesLonglineUIModel) super.getModel(); + } + + @Override + protected void onSelectedRowChanged(int editingRow, GearUseFeaturesLongline bean, boolean create) { + + if (log.isInfoEnabled()) { + log.info("Selected row changed: " + editingRow + ", create? " + create); + } + + GearUseFeaturesLonglineUI ui = getUi(); + + UIHelper.stopEditing(ui.getMeasurementsTable()); + + GearUseFeaturesLonglineTableModel tableModel = getTableModel(); + GearUseFeaturesLonglineUIModel model = getModel(); + + boolean emptySelection = editingRow == -1; + + // load size measures + + GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + List<GearUseFeaturesMeasurementLongline> measurements = emptySelection ? Collections.<GearUseFeaturesMeasurementLongline>emptyList() : measurementsTableModel.getCacheForRow(editingRow); + if (measurements == null) { + + if (log.isInfoEnabled()) { + log.info("init measurements for row " + editingRow); + } + + // first time coming on this row + + if (tableModel.isCreate()) { + + // create mode: just init with empty list + measurements = Collections.emptyList(); + + if (log.isInfoEnabled()) { + log.info("create mode, use an empty list"); + } + + } else { + + // updating mode: loading from db + try { + + measurements = getDataService().getGearUseFeaturesMeasurementLongline(getDataSource(), bean, measurementsTableModel.getLoader()); + if (log.isInfoEnabled()) { + log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); + } + + } catch (DataSourceException e) { + throw new ObserveTechnicalException("Could not load measurements", e); + } + } + + // init measurements + measurementsTableModel.initCacheForRow(editingRow, measurements); + + } else { + + if (log.isInfoEnabled()) { + log.info("Using existing measurements for row " + editingRow + " : " + measurements.size()); + } + } + + measurementsTableModel.setData(measurements); + + measurementsTableModel.setModified(false); + measurementsTableModel.setEditable(tableModel.isEditable()); + + if (!tableModel.isEditable()) { + return; + } + + JComponent requestFocus; + + if (tableModel.isCreate()) { + + // go back to first pane + ui.getGearUseFeaturesTabPane().setSelectedIndex(0); + + requestFocus = ui.getGear(); + + } else { + + requestFocus = ui.getGear(); + + } + + requestFocus.requestFocus(); + + } + + @Override + protected void initTableUI(DefaultTableCellRenderer renderer) { + + { + JTable table = getUi().getTable(); + + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.gearUseFeaturesLongline.table.gear"), + n("observe.gearUseFeaturesLongline.table.gear.tip"), + n("observe.gearUseFeaturesLongline.table.number"), + n("observe.gearUseFeaturesLongline.table.number.tip"), + n("observe.gearUseFeaturesLongline.table.usedInTrip"), + n("observe.gearUseFeaturesLongline.table.usedInTrip.tip"), + n("observe.gearUseFeaturesLongline.table.comment"), + n("observe.gearUseFeaturesLongline.table.comment.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, Gear.class)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newStringTableCellRenderer(renderer, 10, true)); + } + + { + // init measurements table + JTable table = getUi().getMeasurementsTable(); + + UIHelper.setI18nTableHeaderRenderer(table, + n("observe.gearUseFeaturesLongline.table.gearCaracteristic"), + n("observe.gearUseFeaturesLongline.table.gearCaracteristic.tip"), + n("observe.gearUseFeaturesLongline.table.value"), + n("observe.gearUseFeaturesLongline.table.value.tip")); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, GearCaracteristic.class)); + UIHelper.setTableColumnRenderer(table, 1, new GearUseFeatureMeasurementCellRenderer(0, renderer)); + + table.getTableHeader().setReorderingAllowed(false); + + Decorator<GearCaracteristic> decorator = ObserveContext.get().getDecorator(GearCaracteristic.class); + + List<GearCaracteristic> list; + try { + list = getDataService().getList(getDataSource(), GearCaracteristic.class); + } catch (DataSourceException e) { + throw new ObserveTechnicalException("Could not get gear caracteristics", e); + } + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); + UIHelper.setTableColumnEditor(table, 1, new GearUseFeatureMeasurementCellEditor(0)); + + GearUseFeaturesMeasurementLonglinesTableModel tableModel = getModel().getMeasurementsTableModel(); + tableModel.installTableKeyListener(getUi().getMeasurementsTable()); + tableModel.addPropertyChangeListener(GearUseFeaturesMeasurementLonglinesTableModel.MODIFIED_PROPERTY, measurementsTableModelModified); + + ListSelectionModel selectionModel = table.getSelectionModel(); + selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + tableModel.installSelectionListener(table); + + new SectionTemplatesAutotSelectRowAndShowPopupAction(getUi(), getUi().getMeasurementsScrollPane(), table, getUi().getMeasurementsTablePopup()); + + } + + // Adapt layout to let more place for the editor + + getUi().getShowForm().remove(1); + getUi().getShowForm().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditor()), new GridBagConstraints(0, 1, 1, 1, 1.0, 0.3, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 1); + getUi().getEditor().remove(0); + getUi().getEditor().add(SwingUtil.boxComponentWithJxLayer(getUi().getEditorPanel()), new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, 10, 1, new Insets(0, 0, 0, 0), 0, 0), 0); + + + } + + @Override + protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) { + return dataContext.getSelectedTripLonglineId(); + } + + @Override + public void initUI() throws Exception { + + super.initUI(); + + getModel().addPropertyChangeListener(GearUseFeaturesLonglineUIModel.PROPERTY_EDITABLE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean newValue = (Boolean) evt.getNewValue(); + setTableModelEditable(newValue); + } + }); + + setTableModelEditable(getModel().isEditable()); + + getTableModel().setGearUseFeaturesLonglineUIHandler(this); + + } + + @Override + protected TripLongline loadEditBean(ContentMode mode, DataContext dataContext, DataService dataService, DataSource dataSource) throws DataSourceException { + + TripLongline tripLongline = super.loadEditBean(mode, dataContext, dataService, dataSource); + + // reset measurements + getModel().getMeasurementsTableModel().clear(); + + return tripLongline; + + } + + @Override + public void openUI() throws Exception { + + if (log.isInfoEnabled()) { + log.info("OpenUI: " + getModel()); + } + + super.openUI(); + + // To be sure always remove listener (could prevent some leaks) + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + // listen messages to see if required to add + getUi().getErrorTableModel().addTableModelListener(computeTabValidStateListener); + + SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); + computeTabValidState(errorTableModel); + + } + + @Override + protected void closeSafeUI() { + + if (log.isInfoEnabled()) { + log.info("CloseUI: " + getModel()); + } + super.closeSafeUI(); + + // remove listener + getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener); + + } + + @Override + public void startEditUI(String... binding) { + + getModel().getMeasurementsTableModel().setEditable(true); + + super.startEditUI(binding); + + } + + public void deleteSelectedMeasurement() { + + GearUseFeaturesMeasurementLonglinesTableModel tableModel = getUi().getMeasurementsTableModel(); + + boolean selectionEmpty = tableModel.isSelectionEmpty(); + + if (!selectionEmpty) { + + GearUseFeaturesMeasurementLongline data = tableModel.getSelectedRow(); + + if (log.isInfoEnabled()) { + log.info("Delete: " + data); + } + + ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + int response = UIHelper.askUser(mainUI, + t("observe.title.delete"), + t("observe.measurement.delete.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + + if (response != 0) { + + // user cancel + return; + } + + tableModel.removeSelectedRow(); + + } + + } + + @Override + protected TripLongline onCreate(TopiaContext tx, Object parentBean, TripLongline editBean) throws TopiaException { + return super.onCreate(tx, parentBean, editBean); + } + + @Override + protected void onUpdateFinalize(TopiaContext tx, TripLongline bean, Collection<GearUseFeaturesLongline> oldChilds) throws TopiaException { + + List<GearUseFeaturesLongline> gearUseFeatures = bean.getGearUseFeaturesLongline(); + + GearUseFeaturesLonglineUIModel model = getModel(); + { + + // save measurments + + GearUseFeaturesMeasurementLonglineDAO measureDao = ObserveDAOHelper.getGearUseFeaturesMeasurementLonglineDAO(tx); + + GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + Set<Integer> rowsChanged = measurementsTableModel.getCacheRowsChanged(); + + TopiaEntityBinder<GearUseFeaturesMeasurementLongline> loader = measurementsTableModel.getLoader(); + for (Integer row : rowsChanged) { + + GearUseFeaturesLongline gearUseFeaturesLongline = gearUseFeatures.get(row); + + List<GearUseFeaturesMeasurementLongline> measurements = measurementsTableModel.getCacheForRow(row); + List<GearUseFeaturesMeasurementLongline> measurementsToSave = new ArrayList<GearUseFeaturesMeasurementLongline>(measurements.size()); + + for (GearUseFeaturesMeasurementLongline measure : measurements) { + + if (measurementsTableModel.isRowNotEmpty(measure)) { + + GearUseFeaturesMeasurementLongline measureToSave; + + if (measure.getTopiaId() == null) { + measureToSave = measureDao.create(measure); + loader.load(measureToSave, measure, true); + } else { + measureToSave = gearUseFeaturesLongline.getGearUseFeaturesMeasurementByTopiaId(measure.getTopiaId()); + loader.load(measure, measureToSave, true); + } + + measurementsToSave.add(measureToSave); + + } + + } + + gearUseFeaturesLongline.clearGearUseFeaturesMeasurement(); + gearUseFeaturesLongline.addAllGearUseFeaturesMeasurement(measurementsToSave); + + } + + } + + } + + @Override + protected void resetEditBean() { + + UIHelper.stopEditing(getUi().getMeasurementsTable()); + + super.resetEditBean(); + + } + + @Override + protected ContentMode getContentMode(DataContext dataContext) { + + // par defaut, on suppose qu'on peut afficher les données + getModel().setShowData(true); + + String selectedTripId = dataContext.getSelectedTripId(); + + if (selectedTripId.equals(dataContext.getOpenTripId())) { + + // mode mise a jour + return ContentMode.UPDATE; + } + + // mode lecture + + if (dataContext.isSelectedTripLongline()) { + + addInfoMessage(t("observe.tripLongline.message.not.open")); + + } else { + + addInfoMessage(t("observe.tripLongline.message.not.open")); + + } + + return ContentMode.READ; + } + + @Override + protected GearUseFeaturesLonglineTableModel getTableModel() { + return (GearUseFeaturesLonglineTableModel) super.getTableModel(); + } + + protected void setTableModelEditable(Boolean newValue) { + + getModel().getMeasurementsTableModel().setEditable(newValue); + + } + + protected void onMeasurementsTableModelModified(Boolean newValue) { + + if (newValue) { + + // modify the validator, since this is the best way to prevent table edit form actions + // that something was modified on the form + getUi().getValidatorTable().setChanged(true); + + } + + // recompute table model valid state + getModel().getMeasurementsTableModel().validate(); + + } + + + protected void computeTabValidState(SwingValidatorMessageTableModel errorTableModel) { + + Set<String> errorProperties = new HashSet<String>(); + int rowCount = errorTableModel.getRowCount(); + for (int i = 0; i < rowCount; i++) { + + SwingValidatorMessage row = errorTableModel.getRow(i); + if (NuitonValidatorScope.ERROR.equals(row.getScope())) { + errorProperties.add(row.getField()); + } + } + + boolean generalTabValid = !errorProperties.removeAll(GearUseFeaturesLonglineUIModel.GENERAL_TAB_PROPERTIES); + + GearUseFeaturesLonglineUIModel model = getModel(); + + model.setGeneralTabValid(generalTabValid); + + } + + public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(String gearId) { + + try { + List<GearUseFeaturesMeasurementLongline> measurements = getDataService().getDefaultGearUseFeaturesMeasurementLongline(getDataSource(), gearId); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); + } + return measurements; + } catch (DataSourceException e) { + throw new ObserveTechnicalException("Could not create default measurements", e); + } + + } + + static class SectionTemplatesAutotSelectRowAndShowPopupAction extends AutotSelectRowAndShowPopupActionSupport { + + private final GearUseFeaturesLonglineUI ui; + + public SectionTemplatesAutotSelectRowAndShowPopupAction(GearUseFeaturesLonglineUI ui, + JScrollPane pane, + JTable table, + JPopupMenu popup) { + super(pane, table, popup); + this.ui = ui; + } + + @Override + protected void beforeOpenPopup(int modelRowIndex, int modelColumnIndex) { + + EditableTableModelSupport model = (EditableTableModelSupport) getTable().getModel(); + + boolean canDelete = !model.isSelectionEmpty(); + + if (canDelete) { + + // check also that the row is not empty + Serializable selectedData = model.getSelectedRow(); + canDelete = model.isRowNotEmpty(selectedData); + + } + + ui.getDeleteSelectedMeasurement().setEnabled(canDelete); + + } + + } +} \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIModel.java new file mode 100644 index 0000000..44f98ab --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIModel.java @@ -0,0 +1,125 @@ +package fr.ird.observe.ui.content.table.impl.longline; + +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import fr.ird.observe.BinderService; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.ui.content.table.ContentTableMeta; +import fr.ird.observe.ui.content.table.ContentTableModel; +import fr.ird.observe.ui.content.table.ContentTableUIModel; +import fr.ird.observe.ui.content.table.ObserveContentTableUI; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesMeasurementLonglinesTableModel; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineTableModel; +import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUI; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.List; +import java.util.Set; + +/** + * Created on 3/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class GearUseFeaturesLonglineUIModel extends ContentTableUIModel<TripLongline, GearUseFeaturesLongline> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_GENERAL_TAB_VALID = "generalTabValid"; + + public static final Set<String> GENERAL_TAB_PROPERTIES = + ImmutableSet.<String>builder().add(GearUseFeaturesLongline.PROPERTY_GEAR, + GearUseFeaturesLongline.PROPERTY_NUMBER, + GearUseFeaturesLongline.PROPERTY_USED_IN_TRIP, + GearUseFeaturesLongline.PROPERTY_COMMENT).build(); + + protected boolean generalTabValid; + + private final GearUseFeaturesMeasurementLonglinesTableModel measurementsTableModel; + + public GearUseFeaturesLonglineUIModel(GearUseFeaturesLonglineUI ui) { + + super(TripLongline.class, + GearUseFeaturesLongline.class, + new String[]{TripLongline.PROPERTY_GEAR_USE_FEATURES_LONGLINE}, + new String[]{ + GearUseFeaturesLongline.PROPERTY_COMMENT, + GearUseFeaturesLongline.PROPERTY_GEAR, + GearUseFeaturesLongline.PROPERTY_NUMBER, + GearUseFeaturesLongline.PROPERTY_USED_IN_TRIP}); + + BinderService binderService = ObserveServiceHelper.get().getBinderService(); + + String binderName = getClass().getName() + "-open"; + + TopiaEntityBinder<GearUseFeaturesMeasurementLongline> binder = binderService.getTopiaBinder(GearUseFeaturesMeasurementLongline.class, binderName); + + if (binder == null) { + + BinderModelBuilder<GearUseFeaturesMeasurementLongline, GearUseFeaturesMeasurementLongline> builder = + binderService.newBinderBuilder(GearUseFeaturesMeasurementLongline.class, + GearUseFeaturesMeasurementLongline.PROPERTY_GEAR_CARACTERISTIC, + GearUseFeaturesMeasurementLongline.PROPERTY_MEASUREMENT_VALUE); + + binder = binderService.registerTopiaBinder(GearUseFeaturesMeasurementLongline.class, builder, binderName); + + } + + this.measurementsTableModel = new GearUseFeaturesMeasurementLonglinesTableModel(binder); + + List<ContentTableMeta<GearUseFeaturesLongline>> metas = Lists.newArrayList( + ContentTableModel.newTableMeta(GearUseFeaturesLongline.class, GearUseFeaturesLongline.PROPERTY_GEAR, false), + ContentTableModel.newTableMeta(GearUseFeaturesLongline.class, GearUseFeaturesLongline.PROPERTY_NUMBER, false), + ContentTableModel.newTableMeta(GearUseFeaturesLongline.class, GearUseFeaturesLongline.PROPERTY_USED_IN_TRIP, false), + ContentTableModel.newTableMeta(GearUseFeaturesLongline.class, GearUseFeaturesLongline.PROPERTY_COMMENT, false)); + + initModel(ui, metas); + + } + + @Override + protected GearUseFeaturesLonglineTableModel createTableModel(ObserveContentTableUI<TripLongline, GearUseFeaturesLongline> ui, List<ContentTableMeta<GearUseFeaturesLongline>> contentTableMetas) { + return new GearUseFeaturesLonglineTableModel(ui, contentTableMetas); + } + + public GearUseFeaturesMeasurementLonglinesTableModel getMeasurementsTableModel() { + return measurementsTableModel; + } + + public boolean isGeneralTabValid() { + return generalTabValid; + } + + public void setGeneralTabValid(boolean generalTabValid) { + this.generalTabValid = generalTabValid; + firePropertyChange(PROPERTY_GENERAL_TAB_VALID, null, isGeneralTabValid()); + } + +} \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesMeasurementLonglinesTableModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesMeasurementLonglinesTableModel.java new file mode 100644 index 0000000..6525057 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesMeasurementLonglinesTableModel.java @@ -0,0 +1,124 @@ +package fr.ird.observe.ui.content.table.impl.longline; + +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineImpl; +import fr.ird.observe.ui.util.table.EditableTableWithCacheTableModelSupport; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +/** + * Created on 4/7/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class GearUseFeaturesMeasurementLonglinesTableModel extends EditableTableWithCacheTableModelSupport<GearUseFeaturesMeasurementLongline> { + + private static final long serialVersionUID = 1L; + + public GearUseFeaturesMeasurementLonglinesTableModel(TopiaEntityBinder<GearUseFeaturesMeasurementLongline> topiaBinder) { + super(topiaBinder); + } + + @Override + public boolean isRowNotEmpty(GearUseFeaturesMeasurementLongline valid) { + return !(valid.getGearCaracteristic() == null && valid.getMeasurementValue() == null); + } + + @Override + protected boolean isRowValid(GearUseFeaturesMeasurementLongline valid) { + String size = valid.getMeasurementValue(); + return !(valid.getGearCaracteristic() == null || size == null) && !size.isEmpty(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + + GearUseFeaturesMeasurementLongline measure = data.get(rowIndex); + Object result; + switch (columnIndex) { + case 0: + result = measure.getGearCaracteristic(); + break; + case 1: + result = measure.getMeasurementValue(); + break; + default: + throw new IllegalStateException("Can't come here"); + } + return result; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + + boolean result; + switch (columnIndex) { + case 0: + result = true; + break; + case 1: + GearUseFeaturesMeasurementLongline measure = data.get(rowIndex); + result = measure != null && measure.getGearCaracteristic() != null; + break; + default: + throw new IllegalStateException("Can't come here"); + } + return result; + + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + GearUseFeaturesMeasurementLongline measure = data.get(rowIndex); + switch (columnIndex) { + case 0: + + measure.setGearCaracteristic((GearCaracteristic) aValue); + break; + case 1: + + measure.setMeasurementValue(aValue == null ? null : String.valueOf(aValue)); + break; + + default: + throw new IllegalStateException("Can't come here"); + } + + setModified(true); + + } + + @Override + protected GearUseFeaturesMeasurementLongline createNewRow() { + return new GearUseFeaturesMeasurementLonglineImpl(); + } +} \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index a887b05..5c30a30 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -49,6 +49,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip private static final long serialVersionUID = 1L; static { + n("observe.tree.gearUseFeaturesLongline"); n("observe.tree.activityLongline"); } @@ -56,7 +57,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip super(TripLongline.class); } - protected boolean addActivities; + protected boolean addChilds; @Override public void loadChilds(NavTreeBridge<ObserveNode> model, @@ -64,12 +65,12 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip NavDataProvider dataProvider) throws Exception { DataSelectionModel selectionModel = getSelectionModel(dataProvider); - addActivities = selectionModel == null; + addChilds = selectionModel == null; try { super.loadChilds(model, parentNode, dataProvider); } finally { - addActivities = true; + addChilds = true; } } @@ -114,11 +115,20 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip ObserveNode result = new TripLonglineNode(data); - if (addActivities) { + if (addChilds) { - ObserveNode child = ObserveTreeHelper.createStringNode( - TripLongline.PROPERTY_ACTIVITY_LONGLINE, ActivityLonglinesNodeChildLoador.class); - result.add(child); + { + // Add gears + ObserveNode child = ObserveTreeHelper.createStringNode(TripLongline.PROPERTY_GEAR_USE_FEATURES_LONGLINE); + result.add(child); + } + + { + // Add activities + ObserveNode child = ObserveTreeHelper.createStringNode( + TripLongline.PROPERTY_ACTIVITY_LONGLINE, ActivityLonglinesNodeChildLoador.class); + result.add(child); + } } diff --git a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties index 8f762c2..f82a763 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties @@ -94,12 +94,14 @@ observe.action.country.modify.tip= observe.action.country.save.tip= observe.action.create=Create observe.action.create.activity=Create a new activity -observe.action.create.activity.tip= +observe.action.create.activity.tip=Create a new activity observe.action.create.entry.tip= -observe.action.create.gearUseFeaturesSeine= -observe.action.create.gearUseFeaturesSeine.tip= +observe.action.create.gearUseFeaturesLongline=Create a new gear use feature +observe.action.create.gearUseFeaturesLongline.tip=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine.tip=Create a new gear use feature observe.action.create.maree=Create a new maree -observe.action.create.maree.tip= +observe.action.create.maree.tip=Create a new maree observe.action.create.nonTargetCatch= observe.action.create.nonTargetCatch.tip= observe.action.create.nonTargetSample= @@ -1042,28 +1044,47 @@ observe.gear.selectedGearCaracteristic=Selected caracteristics observe.gear.tab.gearCaracteristic=Caracteristics of the gear observe.gear.tab.general=General caracteristics observe.gear.unit=Unit -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Delete selected measurement +observe.gearUseFeaturesLongline.comment=Comment +observe.gearUseFeaturesLongline.gear=Gear +observe.gearUseFeaturesLongline.number=Number +observe.gearUseFeaturesLongline.tab.general=General +observe.gearUseFeaturesLongline.tab.measurements=Measurements +observe.gearUseFeaturesLongline.table.comment=Comment +observe.gearUseFeaturesLongline.table.comment.tip=Comment +observe.gearUseFeaturesLongline.table.gear=Gear +observe.gearUseFeaturesLongline.table.gear.tip=Gear +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Gear caracteristic +observe.gearUseFeaturesLongline.table.number=Number +observe.gearUseFeaturesLongline.table.number.tip=Number +observe.gearUseFeaturesLongline.table.usedInTrip=Used +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Used in trip +observe.gearUseFeaturesLongline.table.value=Value +observe.gearUseFeaturesLongline.table.value.tip=Caracteristic value +observe.gearUseFeaturesLongline.title=Gears +observe.gearUseFeaturesLongline.usedInTrip=Used in trip +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Delete selected measurement observe.gearUseFeaturesSeine.comment=Comment observe.gearUseFeaturesSeine.gear=Gear observe.gearUseFeaturesSeine.number=Number -observe.gearUseFeaturesSeine.tab.general= -observe.gearUseFeaturesSeine.tab.measurements= +observe.gearUseFeaturesSeine.tab.general=General +observe.gearUseFeaturesSeine.tab.measurements=Measurements observe.gearUseFeaturesSeine.table.comment=Comment observe.gearUseFeaturesSeine.table.comment.tip=Comment observe.gearUseFeaturesSeine.table.gear=Gear observe.gearUseFeaturesSeine.table.gear.tip=Gear -observe.gearUseFeaturesSeine.table.gearCaracteristic= -observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= +observe.gearUseFeaturesSeine.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesSeine.table.gearCaracteristic.tip=Gear caracteristic observe.gearUseFeaturesSeine.table.number=Number observe.gearUseFeaturesSeine.table.number.tip=Number -observe.gearUseFeaturesSeine.table.size= -observe.gearUseFeaturesSeine.table.size.tip= observe.gearUseFeaturesSeine.table.usedInTrip=Used observe.gearUseFeaturesSeine.table.usedInTrip.tip=Used in trip -observe.gearUseFeaturesSeine.table.value= -observe.gearUseFeaturesSeine.table.value.tip= -observe.gearUseFeaturesSeine.title= +observe.gearUseFeaturesSeine.table.value=Value +observe.gearUseFeaturesSeine.table.value.tip=Caracteristic value +observe.gearUseFeaturesSeine.title=Gears observe.gearUseFeaturesSeine.usedInTrip=Used in trip observe.harbour.coordinates= observe.harbour.locode= @@ -1981,6 +2002,7 @@ observe.tree.fpaZone=Fpa zone observe.tree.gear=Gear observe.tree.gearCaracteristic=Gear caracteristic observe.tree.gearCaracteristicType=Gear caracteristic type +observe.tree.gearUseFeaturesLongline= observe.tree.gearUseFeaturesSeine=GearUseFeaturesSeine observe.tree.harbour=Harbour observe.tree.healthness=Healthness diff --git a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties index 8d47d26..815c31a 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties @@ -96,6 +96,8 @@ observe.action.create=Crear observe.action.create.activity=Crear una nueva actividad observe.action.create.activity.tip=Crear una nueva actividad para la ruta actual observe.action.create.entry.tip=Crear una nueva entrada +observe.action.create.gearUseFeaturesLongline= +observe.action.create.gearUseFeaturesLongline.tip= observe.action.create.gearUseFeaturesSeine= observe.action.create.gearUseFeaturesSeine.tip= observe.action.create.maree=Crear nueva marea @@ -1042,6 +1044,27 @@ observe.gear.selectedGearCaracteristic= observe.gear.tab.gearCaracteristic= observe.gear.tab.general= observe.gear.unit= +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement= +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip= +observe.gearUseFeaturesLongline.comment= +observe.gearUseFeaturesLongline.gear= +observe.gearUseFeaturesLongline.number= +observe.gearUseFeaturesLongline.tab.general= +observe.gearUseFeaturesLongline.tab.measurements= +observe.gearUseFeaturesLongline.table.comment= +observe.gearUseFeaturesLongline.table.comment.tip= +observe.gearUseFeaturesLongline.table.gear= +observe.gearUseFeaturesLongline.table.gear.tip= +observe.gearUseFeaturesLongline.table.gearCaracteristic= +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip= +observe.gearUseFeaturesLongline.table.number= +observe.gearUseFeaturesLongline.table.number.tip= +observe.gearUseFeaturesLongline.table.usedInTrip= +observe.gearUseFeaturesLongline.table.usedInTrip.tip= +observe.gearUseFeaturesLongline.table.value= +observe.gearUseFeaturesLongline.table.value.tip= +observe.gearUseFeaturesLongline.title= +observe.gearUseFeaturesLongline.usedInTrip= observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= observe.gearUseFeaturesSeine.comment= @@ -1981,6 +2004,7 @@ observe.tree.fpaZone= observe.tree.gear= observe.tree.gearCaracteristic= observe.tree.gearCaracteristicType= +observe.tree.gearUseFeaturesLongline= observe.tree.gearUseFeaturesSeine= observe.tree.harbour=Puerto observe.tree.healthness= diff --git a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties index 80a126d..bcbde51 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties @@ -96,6 +96,8 @@ observe.action.create=Créer observe.action.create.activity=Créer une nouvelle activité observe.action.create.activity.tip=Créer une nouvelle activité pour la route courante observe.action.create.entry.tip=Créer une nouvelle entrée +observe.action.create.gearUseFeaturesLongline=Créer un équipement +observe.action.create.gearUseFeaturesLongline.tip=Créer un nouvel équipement observe.action.create.gearUseFeaturesSeine=Créer un équipement observe.action.create.gearUseFeaturesSeine.tip=Créer un nouvel équipement observe.action.create.maree=Créer une nouvelle marée @@ -1042,6 +1044,27 @@ observe.gear.selectedGearCaracteristic=Caractéristiques utilisées observe.gear.tab.gearCaracteristic=Caractéristiques de l'équipement observe.gear.tab.general=Caractéristiques générales observe.gear.unit=Unité +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Supprimer +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique +observe.gearUseFeaturesLongline.comment=Commentaire +observe.gearUseFeaturesLongline.gear=Équipement +observe.gearUseFeaturesLongline.number=Nombre +observe.gearUseFeaturesLongline.tab.general=Définition +observe.gearUseFeaturesLongline.tab.measurements=Caractéristiques +observe.gearUseFeaturesLongline.table.comment=Commentaire +observe.gearUseFeaturesLongline.table.comment.tip=Commentaire +observe.gearUseFeaturesLongline.table.gear=Équipement +observe.gearUseFeaturesLongline.table.gear.tip=Équipement +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caractéristique +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Caractéristique +observe.gearUseFeaturesLongline.table.number=Nombre +observe.gearUseFeaturesLongline.table.number.tip=Nombre +observe.gearUseFeaturesLongline.table.usedInTrip=Utilisé +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Utilisé dans la marée +observe.gearUseFeaturesLongline.table.value=Valeur +observe.gearUseFeaturesLongline.table.value.tip=Valeur +observe.gearUseFeaturesLongline.title=Équipements +observe.gearUseFeaturesLongline.usedInTrip=Utilisé dans la marée observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Supprimer observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique observe.gearUseFeaturesSeine.comment=Commentaire @@ -1979,6 +2002,7 @@ observe.tree.fpaZone=Zone FPA observe.tree.gear=Équipement observe.tree.gearCaracteristic=Caractéristique d'un équipement observe.tree.gearCaracteristicType=Type de caractéristique d'équipement +observe.tree.gearUseFeaturesLongline=Équipements observe.tree.gearUseFeaturesSeine=Équipements observe.tree.harbour=Port observe.tree.healthness=Status de la capture -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 5a6de36fb3b4206bf5b5598996a197154ee47b9f Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 09:44:39 2015 +0200 ajout de la méthode de récupération des caractértistiques pour le modèle LL (refs #7013) --- .../src/main/java/fr/ird/observe/DataService.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/observe-business/src/main/java/fr/ird/observe/DataService.java b/observe-business/src/main/java/fr/ird/observe/DataService.java index 9a0df89..af7bcbf 100644 --- a/observe-business/src/main/java/fr/ird/observe/DataService.java +++ b/observe-business/src/main/java/fr/ird/observe/DataService.java @@ -44,6 +44,9 @@ import fr.ird.observe.entities.longline.ActivityLonglines; import fr.ird.observe.entities.longline.Basket; import fr.ird.observe.entities.longline.Branchline; import fr.ird.observe.entities.longline.CatchLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineImpl; import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SensorUsed; import fr.ird.observe.entities.longline.SizeMeasure; @@ -1642,6 +1645,54 @@ public class DataService { } } + public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(DataSource source, String gearId) throws DataSourceException { + + String txName = "getDefaultGearUseFeaturesMeasurementLongline : " + gearId; + TopiaContext tx = beginTransaction(source, txName); + try { + + TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); + Gear gear = gearDao.findByTopiaId(gearId); + + Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); + List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); + for (GearCaracteristic caracteristic : gearCaracteristic) { + GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); + target.setGearCaracteristic(caracteristic); + result.add(target); + } + + return result; + + } catch (TopiaException e) { + throw new DataSourceException(e, txName); + } finally { + closeTransaction(source, tx, txName); + } + } + + public List<GearUseFeaturesMeasurementLongline> getGearUseFeaturesMeasurementLongline(DataSource source, GearUseFeaturesLongline bean, final TopiaEntityBinder<GearUseFeaturesMeasurementLongline> binder) throws DataSourceException { + + String txName = "getGearUseFeaturesMeasurementLongline : " + bean.getTopiaId(); + TopiaContext tx = beginTransaction(source, txName); + try { + TopiaDAO<GearUseFeaturesLongline> dao = source.getDAO(tx, GearUseFeaturesLongline.class); + GearUseFeaturesLongline gearUseFeaturesLongline = dao.findByTopiaId(bean.getTopiaId()); + List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); + for (GearUseFeaturesMeasurementLongline measurementSource : gearUseFeaturesLongline.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); + measurementSource.getGearCaracteristic().getGearCaracteristicType(); + binder.load(measurementSource, target, true); + result.add(target); + } + return result; + + } catch (TopiaException e) { + throw new DataSourceException(e, txName); + } finally { + closeTransaction(source, tx, txName); + } + } public <E extends TopiaEntity> List<String> getEntityIds(DataSource source, Class<E> refClass) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit af793a4e63dba947f9c4fcd030795d687c061f68 Merge: 571a41e 5a6de36 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 23 10:47:14 2015 +0200 fixes #7013: [ObServeLL] Ajout de l'écran des équipements Merge branch 'feature/7013' into develop .../src/main/java/fr/ird/observe/DataService.java | 51 ++ .../test/resources/db/4.0-RC4/referentiel.sql.gz | Bin 0 -> 138256 bytes .../java/fr/ird/observe/entities/Entities.java | 56 +- .../migration/AbstractDataSourceMigration.java | 4 +- .../DataSourceMigrationForVersion_4_0_RC4.java | 58 ++ .../main/resources/db/4.0-RC4/add-gear-data-H2.sql | 18 + .../main/resources/db/4.0-RC4/add-gear-data-PG.sql | 19 + .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 10 +- .../src/main/xmi/observe-longline.zargo | Bin 93860 -> 96409 bytes .../src/main/xmi/observe-seine.properties | 4 +- observe-entities/src/main/xmi/observe-seine.zargo | Bin 85905 -> 85905 bytes .../ird/observe/ui/content/ContentUIManager.java | 2 + .../GearUseFeaturesLonglineTableModel.java | 150 ++++++ .../impl/longline/GearUseFeaturesLonglineUI.css | 97 ++++ .../impl/longline/GearUseFeaturesLonglineUI.jaxx | 154 ++++++ .../longline/GearUseFeaturesLonglineUIHandler.java | 587 +++++++++++++++++++++ .../longline/GearUseFeaturesLonglineUIModel.java | 125 +++++ ...rUseFeaturesMeasurementLonglinesTableModel.java | 124 +++++ .../loadors/ProgramLonglineNodeChildLoador.java | 24 +- .../resources/i18n/observe-swing_en_GB.properties | 52 +- .../resources/i18n/observe-swing_es_ES.properties | 24 + .../resources/i18n/observe-swing_fr_FR.properties | 24 + ...FeaturesLongline-n1-update-error-validation.xml | 34 ++ ...UseFeaturesSeine-n1-update-error-validation.xml | 6 +- .../i18n/observe-validation_en_GB.properties | 6 +- .../i18n/observe-validation_es_ES.properties | 6 +- .../i18n/observe-validation_fr_FR.properties | 6 +- .../validation/BeanValidatorDetectorTest.java | 4 +- 29 files changed, 1585 insertions(+), 62 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm