Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 4130 discussions
Author: tchemit
Date: 2013-01-04 10:12:58 +0100 (Fri, 04 Jan 2013)
New Revision: 151
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/151
Log:
[maven-release-plugin] copy for tag tutti-0.2.5
Added:
tags/tutti-0.2.5/
1
0
r150 - in trunk: . tutti-persistence tutti-persistence-dev tutti-service tutti-ui-swing
by tchemit@users.forge.codelutin.com 04 Jan '13
by tchemit@users.forge.codelutin.com 04 Jan '13
04 Jan '13
Author: tchemit
Date: 2013-01-04 10:12:50 +0100 (Fri, 04 Jan 2013)
New Revision: 150
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/150
Log:
[maven-release-plugin] prepare release tutti-0.2.5
Modified:
trunk/pom.xml
trunk/tutti-persistence-dev/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
+++ trunk/pom.xml 2013-01-04 09:12:50 UTC (rev 150)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.3-SNAPSHOT</version>
+ <version>0.2.5</version>
<modules>
<module>tutti-persistence</module>
@@ -80,12 +80,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2.5</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2.5
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2.5
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
+++ trunk/tutti-persistence/pom.xml 2013-01-04 09:12:50 UTC (rev 150)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.3-SNAPSHOT</version>
+ <version>0.2.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-persistence-dev/pom.xml
===================================================================
--- trunk/tutti-persistence-dev/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
+++ trunk/tutti-persistence-dev/pom.xml 2013-01-04 09:12:50 UTC (rev 150)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.3-SNAPSHOT</version>
+ <version>0.2.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
+++ trunk/tutti-service/pom.xml 2013-01-04 09:12:50 UTC (rev 150)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.3-SNAPSHOT</version>
+ <version>0.2.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
+++ trunk/tutti-ui-swing/pom.xml 2013-01-04 09:12:50 UTC (rev 150)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.3-SNAPSHOT</version>
+ <version>0.2.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: tchemit
Date: 2013-01-04 09:58:06 +0100 (Fri, 04 Jan 2013)
New Revision: 149
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/149
Log:
use jaxx last stable version
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-03 17:52:22 UTC (rev 148)
+++ trunk/pom.xml 2013-01-04 08:58:06 UTC (rev 149)
@@ -113,7 +113,7 @@
<h2Version>1.3.168</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <jaxxVersion>2.5.9-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.5.9</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
1
0
r148 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: . config
by tchemit@users.forge.codelutin.com 03 Jan '13
by tchemit@users.forge.codelutin.com 03 Jan '13
03 Jan '13
Author: tchemit
Date: 2013-01-03 18:52:22 +0100 (Thu, 03 Jan 2013)
New Revision: 148
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/148
Log:
fix save of ids in user configuration
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-03 17:01:03 UTC (rev 147)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-03 17:52:22 UTC (rev 148)
@@ -205,7 +205,7 @@
this.programId = programId;
// always propagate the change
- firePropertyChange(PROPERTY_PROGRAM_ID, null, programId);
+ firePropertyChange(PROPERTY_PROGRAM_ID, -1, programId);
firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
oldValue, isCruiseContextFilled());
}
@@ -216,7 +216,7 @@
this.cruiseId = cruiseId;
// always propagate the change
- firePropertyChange(PROPERTY_CRUISE_ID, null, cruiseId);
+ firePropertyChange(PROPERTY_CRUISE_ID, -1, cruiseId);
firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
oldValue, isCruiseContextFilled());
}
@@ -226,7 +226,7 @@
this.protocolId = protocolId;
// always propagate the change
- firePropertyChange(PROPERTY_PROTOCOL_ID, null, protocolId);
+ firePropertyChange(PROPERTY_PROTOCOL_ID, -1, protocolId);
firePropertyChange(PROPERTY_PROTOCOL_FILLED,
oldValue, isProtocolFilled());
}
@@ -300,17 +300,16 @@
// test cruiseId
if (cruiseId != null) {
- Cruise campaign =
- persistenceService.getCruise(cruiseId);
+ Cruise cruise = persistenceService.getCruise(cruiseId);
- if (campaign != null &&
- !campaign.getProgram().getId().equals(programId)) {
+ if (cruise != null &&
+ !cruise.getProgram().getId().equals(programId)) {
// not matchin program, reset cruise id
- campaign = null;
+ cruise = null;
}
- if (campaign == null) {
+ if (cruise == null) {
// not found in this db
@@ -372,7 +371,7 @@
protected void saveContextToConfig() {
if (log.isInfoEnabled()) {
log.info("Save config (programId: " + programId + ", cruiseId: " +
- cruiseId + ", protocolId: " + protocolId + ")");
+ cruiseId + ", protocolId: " + protocolId + ')');
}
config.setProgramId(programId);
config.setCruiseId(cruiseId);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-03 17:01:03 UTC (rev 147)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-03 17:52:22 UTC (rev 148)
@@ -27,6 +27,7 @@
import com.google.common.base.Throwables;
import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,7 +40,6 @@
import java.io.File;
import java.io.IOException;
import java.net.URL;
-import java.util.Properties;
/**
* Tutti application config.
@@ -123,15 +123,18 @@
}
public String getProgramId() {
- return applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey());
+ String result = applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey());
+ return StringUtils.isBlank(result) ? null : result;
}
public String getCruiseId() {
- return applicationConfig.getOption(TuttiConfigOption.CRUISE_ID.getKey());
+ String result = applicationConfig.getOption(TuttiConfigOption.CRUISE_ID.getKey());
+ return StringUtils.isBlank(result) ? null : result;
}
public String getProtocolId() {
- return applicationConfig.getOption(TuttiConfigOption.PROTOCOL_ID.getKey());
+ String result = applicationConfig.getOption(TuttiConfigOption.PROTOCOL_ID.getKey());
+ return StringUtils.isBlank(result) ? null : result;
}
public Color getColorRowInvalid() {
@@ -178,33 +181,22 @@
public void setProgramId(String programId) {
if (programId == null) {
-
- Properties options = applicationConfig.getOptions();
- options.remove(TuttiConfigOption.PROGRAM_ID.getKey());
- applicationConfig.setOptions(options);
- } else {
-
- applicationConfig.setOption(TuttiConfigOption.PROGRAM_ID.getKey(), programId);
+ programId = "";
}
+ applicationConfig.setOption(TuttiConfigOption.PROGRAM_ID.getKey(), programId);
}
public void setCruiseId(String cruiseId) {
if (cruiseId == null) {
- Properties options = applicationConfig.getOptions();
- options.remove(TuttiConfigOption.CRUISE_ID.getKey());
- applicationConfig.setOptions(options);
- } else {
- applicationConfig.setOption(TuttiConfigOption.CRUISE_ID.getKey(), cruiseId);
+ cruiseId = "";
}
+ applicationConfig.setOption(TuttiConfigOption.CRUISE_ID.getKey(), cruiseId);
}
public void setProtocolId(String protocolId) {
if (protocolId == null) {
- Properties options = applicationConfig.getOptions();
- options.remove(TuttiConfigOption.PROTOCOL_ID.getKey());
- applicationConfig.setOptions(options);
- } else {
- applicationConfig.setOption(TuttiConfigOption.PROTOCOL_ID.getKey(), protocolId);
+ protocolId = "";
}
+ applicationConfig.setOption(TuttiConfigOption.PROTOCOL_ID.getKey(), protocolId);
}
}
1
0
03 Jan '13
Author: tchemit
Date: 2013-01-03 18:01:03 +0100 (Thu, 03 Jan 2013)
New Revision: 147
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/147
Log:
fixes #1805: [Onglet Poisson] Assistance ?\195?\160 la saisie des lots de poissons
Modified:
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -168,12 +168,14 @@
SpeciesBatch getSpeciesBatch(String id);
- SpeciesBatch createSpeciesBatch(SpeciesBatch bean);
+ SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId);
SpeciesBatch saveSpeciesBatch(SpeciesBatch bean);
void deleteSpeciesBatch(String id);
+ void deleteSpeciesSubBatch(String id);
+
List<SpeciesBatchFrequency> getAllSpeciesBatchFrequency(
String speciesBatchId);
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -32,6 +32,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceDevConfig;
import fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity;
import fr.ifremer.tutti.persistence.entities.IdAware;
@@ -72,6 +73,7 @@
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
+import java.util.Set;
import java.util.UUID;
/**
@@ -473,8 +475,30 @@
}
@Override
- public SpeciesBatch createSpeciesBatch(SpeciesBatch bean) {
- SpeciesBatch result = create(SpeciesBatch.class, bean);
+ public SpeciesBatch createSpeciesBatch(SpeciesBatch bean,
+ String parentBatchId) {
+
+ boolean withParent = parentBatchId != null;
+
+ SpeciesBatch result = create(SpeciesBatch.class, bean, !withParent);
+
+ if (withParent) {
+
+ // link to parent
+ SpeciesBatch parentBatch = getSpeciesBatch(parentBatchId);
+ result.setParentBatch(parentBatch);
+
+ // add to parent childs
+ List<SpeciesBatch> childBatchs = parentBatch.getChildBatchs();
+ if (childBatchs == null) {
+ childBatchs = Lists.newArrayList();
+ parentBatch.setChildBatchs(childBatchs);
+ }
+ childBatchs.add(result);
+
+ // now persist species batches
+ persistToFile(SpeciesBatch.class);
+ }
return result;
}
@@ -490,6 +514,31 @@
}
@Override
+ public void deleteSpeciesSubBatch(String id) {
+ Preconditions.checkNotNull(id, "Can't save a bean with null id");
+ SpeciesBatch bean = getBean(SpeciesBatch.class, id);
+ Preconditions.checkNotNull(
+ bean, "SpeciesBatch with id: " + id + " does not exist");
+
+ Set<SpeciesBatch> collected = Sets.newHashSet();
+ collectChilds(bean, collected);
+ for (SpeciesBatch toDelete : collected) {
+ cache.remove(SpeciesBatch.class, toDelete);
+ }
+ bean.setChildBatchs(null);
+ persistToFile(SpeciesBatch.class);
+ }
+
+ protected void collectChilds(SpeciesBatch bean, Set<SpeciesBatch> collected) {
+ if (!bean.isChildBatchsEmpty()) {
+ for (SpeciesBatch batch : bean.getChildBatchs()) {
+ collected.add(batch);
+ collectChilds(batch, collected);
+ }
+ }
+ }
+
+ @Override
public List<SpeciesBatchFrequency> getAllSpeciesBatchFrequency(final String speciesBatchId) {
List<SpeciesBatchFrequency> result = Lists.newArrayList(Iterables.filter(getData(SpeciesBatchFrequency.class), new Predicate<SpeciesBatchFrequency>() {
@Override
@@ -883,9 +932,15 @@
}
protected <B extends IdAware> B create(Class<B> type, B bean) {
+ return create(type, bean, true);
+ }
+
+ protected <B extends IdAware> B create(Class<B> type,
+ B bean,
+ boolean sychronize) {
Preconditions.checkNotNull(bean, "Can't persist a null bean");
B result = TuttiEntities.newEntity(bean);
- persist(type, bean, result, true);
+ persist(type, bean, result, sychronize);
return result;
}
@@ -894,6 +949,8 @@
String id = bean.getId();
Preconditions.checkNotNull(id, "Can't save a bean with null id");
B result = getBean(type, id);
+ Preconditions.checkNotNull(
+ result, "Can't save a not persisted bean with id: " + id);
persist(type, bean, result, true);
return result;
}
Modified: trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java
===================================================================
--- trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -153,7 +153,7 @@
persistence.open(config.getConfig());
- SpeciesBatch batch = persistence.createSpeciesBatch(new SpeciesBatch());
+ SpeciesBatch batch = persistence.createSpeciesBatch(new SpeciesBatch(), null);
String batchId = batch.getId();
SpeciesBatchFrequency f;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -387,9 +387,10 @@
}
@Override
- public SpeciesBatch createSpeciesBatch(SpeciesBatch bean) {
+ public SpeciesBatch createSpeciesBatch(SpeciesBatch bean,
+ String parentBatchId) {
checkDriverExists();
- return driver.createSpeciesBatch(bean);
+ return driver.createSpeciesBatch(bean, parentBatchId);
}
@Override
@@ -405,6 +406,12 @@
}
@Override
+ public void deleteSpeciesSubBatch(String id) {
+ checkDriverExists();
+ driver.deleteSpeciesSubBatch(id);
+ }
+
+ @Override
public List<SpeciesBatchFrequency> getAllSpeciesBatchFrequency(String speciesBatchId) {
checkDriverExists();
return driver.getAllSpeciesBatchFrequency(speciesBatchId);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.IdAware;
import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
import org.jdesktop.beans.AbstractSerializableBean;
import org.nuiton.util.beans.Binder;
@@ -34,7 +35,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean {
+public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean implements IdAware {
private static final long serialVersionUID = 1L;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -24,6 +24,9 @@
* #L%
*/
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
import java.io.Serializable;
/**
@@ -93,4 +96,19 @@
public boolean isValid() {
return categoryValue != null && categoryWeight != null;
}
+
+ public boolean isEmpty() {
+ return categoryValue == null && categoryWeight == null;
+ }
+
+ public boolean isEmptyOrValid() {
+ return isEmpty() || isValid();
+ }
+
+ @Override
+ public String toString() {
+ return new ReflectionToStringBuilder(this).
+ appendSuper(super.toString()).
+ toString();
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -52,40 +52,40 @@
public static final String PROPERTY_SPECIES_TO_CONFIRM = "speciesToConfirm";
- public static final String PROPERTY_SPECIES_SAMPLE_CATEGORY = "speciesSampleCategory";
-
public static final String PROPERTY_SPECIES_CATEGORY = "speciesCategory";
+ public static final String PROPERTY_SPECIES_CATEGORY_VALUE = "speciesCategoryValue";
+
public static final String PROPERTY_SPECIES_CATEGORY_WEIGHT = "speciesCategoryWeight";
- public static final String PROPERTY_SORTED_UNSORTED_SAMPLE_CATEGORY = "sortedUnsortedSampleCategory";
-
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY = "sortedUnsortedCategory";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_VALUE = "sortedUnsortedCategoryValue";
+
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryWeight";
- public static final String PROPERTY_SIZE_SAMPLE_CATEGORY = "sizeSampleCategory";
-
public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory";
+ public static final String PROPERTY_SIZE_CATEGORY_VALUE = "sizeCategoryValue";
+
public static final String PROPERTY_SIZE_CATEGORY_WEIGHT = "sizeCategoryWeight";
- public static final String PROPERTY_SEX_SAMPLE_CATEGORY = "sexSampleCategory";
-
public static final String PROPERTY_SEX_CATEGORY = "sexCategory";
+ public static final String PROPERTY_SEX_CATEGORY_VALUE = "sexCategoryValue";
+
public static final String PROPERTY_SEX_CATEGORY_WEIGHT = "sexCategoryWeight";
- public static final String PROPERTY_MATURITY_SAMPLE_CATEGORY = "maturitySampleCategory";
-
public static final String PROPERTY_MATURITY_CATEGORY = "maturityCategory";
+ public static final String PROPERTY_MATURITY_CATEGORY_VALUE = "maturityCategoryValue";
+
public static final String PROPERTY_MATURITY_CATEGORY_WEIGHT = "maturityCategoryWeight";
- public static final String PROPERTY_AGE_SAMPLE_CATEGORY = "ageSampleCategory";
-
public static final String PROPERTY_AGE_CATEGORY = "ageCategory";
+ public static final String PROPERTY_AGE_CATEGORY_VALUE = "ageCategoryValue";
+
public static final String PROPERTY_AGE_CATEGORY_WEIGHT = "ageCategoryWeight";
public static final String PROPERTY_WEIGHT = "weight";
@@ -117,42 +117,42 @@
*
* @since 0.2
*/
- protected final SampleCategory<Species> speciesSampleCategory;
+ protected SampleCategory<Species> speciesCategory;
/**
* Is catch is vrac or horsVrac?.
*
* @since 0.2
*/
- protected final SampleCategory<CaracteristicQualitativeValue> sortedUnsortedSampleCategory;
+ protected SampleCategory<CaracteristicQualitativeValue> sortedUnsortedCategory;
/**
* Weight category (can be null).
*
* @since 0.2
*/
- protected final SampleCategory<CaracteristicQualitativeValue> sizeSampleCategory;
+ protected SampleCategory<CaracteristicQualitativeValue> sizeCategory;
/**
* Sex (can be null).
*
* @since 0.2
*/
- protected final SampleCategory<CaracteristicQualitativeValue> sexSampleCategory;
+ protected SampleCategory<CaracteristicQualitativeValue> sexCategory;
/**
* Maturity (can be null).
*
* @since 0.2
*/
- protected final SampleCategory<CaracteristicQualitativeValue> maturitySampleCategory;
+ protected SampleCategory<CaracteristicQualitativeValue> maturityCategory;
/**
* Age (can be null).
*
* @since 0.2
*/
- protected final SampleCategory<Float> ageSampleCategory;
+ protected SampleCategory<Float> ageCategory;
/**
* Sample category of this batch.
@@ -165,13 +165,6 @@
private SampleCategory<?> sampleCategory;
/**
- * Species observed.
- *
- * @since 0.2
- */
- protected Species species;
-
- /**
* Is the species need to be confirmed?.
*
* @since 0.2
@@ -254,12 +247,12 @@
public SpeciesBatchRowModel() {
super(SpeciesBatch.class, fromBeanBinder, toBeanBinder);
frequency = Lists.newArrayList();
- speciesSampleCategory = SampleCategory.newSample(SampleCategoryType.species);
- sortedUnsortedSampleCategory = SampleCategory.newSample(SampleCategoryType.sortedUnsorted);
- sizeSampleCategory = SampleCategory.newSample(SampleCategoryType.size);
- sexSampleCategory = SampleCategory.newSample(SampleCategoryType.sex);
- maturitySampleCategory = SampleCategory.newSample(SampleCategoryType.maturity);
- ageSampleCategory = SampleCategory.newSample(SampleCategoryType.age);
+ speciesCategory = SampleCategory.newSample(SampleCategoryType.species);
+ sortedUnsortedCategory = SampleCategory.newSample(SampleCategoryType.sortedUnsorted);
+ sizeCategory = SampleCategory.newSample(SampleCategoryType.size);
+ sexCategory = SampleCategory.newSample(SampleCategoryType.sex);
+ maturityCategory = SampleCategory.newSample(SampleCategoryType.maturity);
+ ageCategory = SampleCategory.newSample(SampleCategoryType.age);
}
public SpeciesBatchRowModel(SpeciesBatch aBatch,
@@ -290,22 +283,22 @@
switch (sampleCategoryEnum) {
case species:
- sampleCategory = getSpeciesSampleCategory();
+ sampleCategory = getSpeciesCategory();
break;
case sortedUnsorted:
- sampleCategory = getSortedUnsortedSampleCategory();
+ sampleCategory = getSortedUnsortedCategory();
break;
case size:
- sampleCategory = getSizeSampleCategory();
+ sampleCategory = getSizeCategory();
break;
case sex:
- sampleCategory = getSexSampleCategory();
+ sampleCategory = getSexCategory();
break;
case maturity:
- sampleCategory = getMaturitySampleCategory();
+ sampleCategory = getMaturityCategory();
break;
case age:
- sampleCategory = getAgeSampleCategory();
+ sampleCategory = getAgeCategory();
break;
default:
}
@@ -316,27 +309,31 @@
//-- Species category --//
//------------------------------------------------------------------------//
- public SampleCategory<Species> getSpeciesSampleCategory() {
- return speciesSampleCategory;
+ public SampleCategory<Species> getSpeciesCategory() {
+ return speciesCategory;
}
- public Species getSpeciesCategory() {
- return speciesSampleCategory.getCategoryValue();
+ public void setSpeciesCategory(SampleCategory<Species> speciesCategory) {
+ Object oldCategory = getSpeciesCategory();
+ Object oldValue = getSpeciesCategoryValue();
+ Object oldWeight = getSpeciesCategoryWeight();
+ this.speciesCategory = speciesCategory;
+ firePropertyChange(PROPERTY_SPECIES_CATEGORY, oldCategory, speciesCategory);
+ firePropertyChange(PROPERTY_SPECIES_CATEGORY_VALUE, oldValue, getSpeciesCategoryValue());
+ firePropertyChange(PROPERTY_SPECIES_CATEGORY_WEIGHT, oldWeight, getSpeciesCategoryWeight());
}
- public void setSpeciesCategory(Species speciesCategory) {
- Object oldValue = getSpeciesCategory();
- speciesSampleCategory.setCategoryValue(speciesCategory);
- firePropertyChange(PROPERTY_SPECIES_CATEGORY, oldValue, speciesCategory);
+ public Species getSpeciesCategoryValue() {
+ return speciesCategory.getCategoryValue();
}
public Float getSpeciesCategoryWeight() {
- return speciesSampleCategory.getCategoryWeight();
+ return speciesCategory.getCategoryWeight();
}
public void setSpeciesCategoryWeight(Float speciesCategoryWeight) {
Object oldValue = getSpeciesCategoryWeight();
- speciesSampleCategory.setCategoryWeight(speciesCategoryWeight);
+ speciesCategory.setCategoryWeight(speciesCategoryWeight);
firePropertyChange(PROPERTY_SPECIES_CATEGORY_WEIGHT, oldValue, speciesCategoryWeight);
}
@@ -344,27 +341,31 @@
//-- SortedUnsorted category --//
//------------------------------------------------------------------------//
- public SampleCategory<CaracteristicQualitativeValue> getSortedUnsortedSampleCategory() {
- return sortedUnsortedSampleCategory;
+ public SampleCategory<CaracteristicQualitativeValue> getSortedUnsortedCategory() {
+ return sortedUnsortedCategory;
}
- public CaracteristicQualitativeValue getSortedUnsortedCategory() {
- return sortedUnsortedSampleCategory.getCategoryValue();
+ public void setSortedUnsortedCategory(SampleCategory<CaracteristicQualitativeValue> sortedUnsortedCategory) {
+ Object oldCategory = getSortedUnsortedCategory();
+ Object oldValue = getSortedUnsortedCategoryValue();
+ Object oldWeight = getSortedUnsortedCategoryWeight();
+ this.sortedUnsortedCategory = sortedUnsortedCategory;
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldCategory, sortedUnsortedCategory);
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_VALUE, oldValue, getSortedUnsortedCategoryValue());
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT, oldWeight, getSortedUnsortedCategoryWeight());
}
- public void setSortedUnsortedCategory(CaracteristicQualitativeValue sortedUnsortedCategory) {
- Object oldValue = getSortedUnsortedCategory();
- sortedUnsortedSampleCategory.setCategoryValue(sortedUnsortedCategory);
- firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldValue, sortedUnsortedCategory);
+ public CaracteristicQualitativeValue getSortedUnsortedCategoryValue() {
+ return sortedUnsortedCategory.getCategoryValue();
}
public Float getSortedUnsortedCategoryWeight() {
- return sortedUnsortedSampleCategory.getCategoryWeight();
+ return sortedUnsortedCategory.getCategoryWeight();
}
public void setSortedUnsortedCategoryWeight(Float sortedUnsortedCategoryWeight) {
Object oldValue = getSortedUnsortedCategoryWeight();
- sortedUnsortedSampleCategory.setCategoryWeight(sortedUnsortedCategoryWeight);
+ sortedUnsortedCategory.setCategoryWeight(sortedUnsortedCategoryWeight);
firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT, oldValue, sortedUnsortedCategoryWeight);
}
@@ -372,27 +373,31 @@
//-- Size category --//
//------------------------------------------------------------------------//
- public SampleCategory<CaracteristicQualitativeValue> getSizeSampleCategory() {
- return sizeSampleCategory;
+ public SampleCategory<CaracteristicQualitativeValue> getSizeCategory() {
+ return sizeCategory;
}
- public CaracteristicQualitativeValue getSizeCategory() {
- return sizeSampleCategory.getCategoryValue();
+ public void setSizeCategory(SampleCategory<CaracteristicQualitativeValue> sizeCategory) {
+ Object oldCategory = getSizeCategory();
+ Object oldValue = getSizeCategoryValue();
+ Object oldWeight = getSizeCategoryWeight();
+ this.sizeCategory = sizeCategory;
+ firePropertyChange(PROPERTY_SIZE_CATEGORY, oldCategory, sizeCategory);
+ firePropertyChange(PROPERTY_SIZE_CATEGORY_VALUE, oldValue, getSizeCategoryValue());
+ firePropertyChange(PROPERTY_SIZE_CATEGORY_WEIGHT, oldWeight, getSizeCategoryWeight());
}
- public void setSizeCategory(CaracteristicQualitativeValue sizeCategory) {
- Object oldValue = getSizeCategory();
- this.sizeSampleCategory.setCategoryValue(sizeCategory);
- firePropertyChange(PROPERTY_SIZE_CATEGORY, oldValue, sizeCategory);
+ public CaracteristicQualitativeValue getSizeCategoryValue() {
+ return sizeCategory.getCategoryValue();
}
public Float getSizeCategoryWeight() {
- return sizeSampleCategory.getCategoryWeight();
+ return sizeCategory.getCategoryWeight();
}
public void setSizeCategoryWeight(Float sizeCategoryWeight) {
Object oldValue = getSizeCategoryWeight();
- this.sizeSampleCategory.setCategoryWeight(sizeCategoryWeight);
+ this.sizeCategory.setCategoryWeight(sizeCategoryWeight);
firePropertyChange(PROPERTY_SIZE_CATEGORY_WEIGHT, oldValue, sizeCategoryWeight);
}
@@ -400,27 +405,31 @@
//-- Sex category --//
//------------------------------------------------------------------------//
- public SampleCategory<CaracteristicQualitativeValue> getSexSampleCategory() {
- return sexSampleCategory;
+ public SampleCategory<CaracteristicQualitativeValue> getSexCategory() {
+ return sexCategory;
}
- public CaracteristicQualitativeValue getSexCategory() {
- return sexSampleCategory.getCategoryValue();
+ public void setSexCategory(SampleCategory<CaracteristicQualitativeValue> sexCategory) {
+ Object oldCategory = getSexCategory();
+ Object oldValue = getSexCategoryValue();
+ Object oldWeight = getSexCategoryWeight();
+ this.sexCategory = sexCategory;
+ firePropertyChange(PROPERTY_SEX_CATEGORY, oldCategory, sexCategory);
+ firePropertyChange(PROPERTY_SEX_CATEGORY_VALUE, oldValue, getSexCategoryValue());
+ firePropertyChange(PROPERTY_SEX_CATEGORY_WEIGHT, oldWeight, getSexCategoryWeight());
}
- public void setSexCategory(CaracteristicQualitativeValue sexCategory) {
- Object oldValue = getSexCategory();
- this.sexSampleCategory.setCategoryValue(sexCategory);
- firePropertyChange(PROPERTY_SEX_CATEGORY, oldValue, sexCategory);
+ public CaracteristicQualitativeValue getSexCategoryValue() {
+ return sexCategory.getCategoryValue();
}
public Float getSexCategoryWeight() {
- return sexSampleCategory.getCategoryWeight();
+ return sexCategory.getCategoryWeight();
}
public void setSexCategoryWeight(Float sexCategoryWeight) {
Object oldValue = getSexCategoryWeight();
- this.sexSampleCategory.setCategoryWeight(sexCategoryWeight);
+ this.sexCategory.setCategoryWeight(sexCategoryWeight);
firePropertyChange(PROPERTY_SEX_CATEGORY_WEIGHT, oldValue, sexCategoryWeight);
}
@@ -428,27 +437,31 @@
//-- Maturity category --//
//------------------------------------------------------------------------//
- public SampleCategory<CaracteristicQualitativeValue> getMaturitySampleCategory() {
- return maturitySampleCategory;
+ public SampleCategory<CaracteristicQualitativeValue> getMaturityCategory() {
+ return maturityCategory;
}
- public CaracteristicQualitativeValue getMaturityCategory() {
- return maturitySampleCategory.getCategoryValue();
+ public void setMaturityCategory(SampleCategory<CaracteristicQualitativeValue> maturityCategory) {
+ Object oldCategory = getMaturityCategory();
+ Object oldValue = getMaturityCategoryValue();
+ Object oldWeight = getMaturityCategoryWeight();
+ this.maturityCategory = maturityCategory;
+ firePropertyChange(PROPERTY_MATURITY_CATEGORY, oldCategory, maturityCategory);
+ firePropertyChange(PROPERTY_MATURITY_CATEGORY_VALUE, oldValue, getMaturityCategoryValue());
+ firePropertyChange(PROPERTY_MATURITY_CATEGORY_WEIGHT, oldWeight, getMaturityCategoryWeight());
}
- public void setMaturityCategory(CaracteristicQualitativeValue maturityCategory) {
- Object oldValue = getMaturityCategory();
- this.maturitySampleCategory.setCategoryValue(maturityCategory);
- firePropertyChange(PROPERTY_MATURITY_CATEGORY, oldValue, maturityCategory);
+ public CaracteristicQualitativeValue getMaturityCategoryValue() {
+ return maturityCategory.getCategoryValue();
}
public Float getMaturityCategoryWeight() {
- return maturitySampleCategory.getCategoryWeight();
+ return maturityCategory.getCategoryWeight();
}
public void setMaturityCategoryWeight(Float maturityCategoryWeight) {
Object oldValue = getMaturityCategoryWeight();
- this.maturitySampleCategory.setCategoryWeight(maturityCategoryWeight);
+ this.maturityCategory.setCategoryWeight(maturityCategoryWeight);
firePropertyChange(PROPERTY_MATURITY_CATEGORY_WEIGHT, oldValue, maturityCategoryWeight);
}
@@ -456,27 +469,32 @@
//-- Age category --//
//------------------------------------------------------------------------//
- public SampleCategory<Float> getAgeSampleCategory() {
- return ageSampleCategory;
+ public SampleCategory<Float> getAgeCategory() {
+ return ageCategory;
}
- public Float getAgeCategory() {
- return ageSampleCategory.getCategoryValue();
+ public void setAgeCategory(SampleCategory<Float> ageCategory) {
+ Object oldCategory = getAgeCategory();
+ Object oldValue = getAgeCategoryValue();
+ Object oldWeight = getAgeCategoryWeight();
+ this.ageCategory = ageCategory;
+
+ firePropertyChange(PROPERTY_AGE_CATEGORY, oldCategory, ageCategory);
+ firePropertyChange(PROPERTY_AGE_CATEGORY_VALUE, oldValue, getAgeCategoryValue());
+ firePropertyChange(PROPERTY_AGE_CATEGORY_WEIGHT, oldWeight, getAgeCategoryWeight());
}
- public void setAgeCategory(Float ageCategory) {
- Object oldValue = getAgeCategory();
- ageSampleCategory.setCategoryValue(ageCategory);
- firePropertyChange(PROPERTY_AGE_CATEGORY, oldValue, ageCategory);
+ public Float getAgeCategoryValue() {
+ return ageCategory.getCategoryValue();
}
public Float getAgeCategoryWeight() {
- return ageSampleCategory.getCategoryWeight();
+ return ageCategory.getCategoryWeight();
}
public void setAgeCategoryWeight(Float ageCategoryWeight) {
Object oldValue = getAgeCategoryWeight();
- ageSampleCategory.setCategoryWeight(ageCategoryWeight);
+ ageCategory.setCategoryWeight(ageCategoryWeight);
firePropertyChange(PROPERTY_AGE_CATEGORY_WEIGHT, oldValue, ageCategoryWeight);
}
@@ -499,7 +517,7 @@
return batchChild;
}
- public void setChilds(List<SpeciesBatchRowModel> batchChild) {
+ public void setBatchChilds(List<SpeciesBatchRowModel> batchChild) {
this.batchChild = batchChild;
// force to propagate child changes
firePropertyChange(PROPERTY_BATCH_CHILD, null, batchChild);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -85,42 +85,42 @@
}
public static final ColumnIdentifier<SpeciesBatchRowModel> SPECIES_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_SPECIES_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY_WEIGHT,
SampleCategoryType.species,
n_("tutti.table.species.batch.header.speciesCategory"),
n_("tutti.table.species.batch.header.speciesCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SORTED_UNSORTED_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT,
SampleCategoryType.sortedUnsorted,
n_("tutti.table.species.batch.header.sortedUnsortedCategory"),
n_("tutti.table.species.batch.header.sortedUnsortedCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SIZE_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_SIZE_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY_WEIGHT,
SampleCategoryType.size,
n_("tutti.table.species.batch.header.sizeCategory"),
n_("tutti.table.species.batch.header.sizeCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SEX_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_SEX_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY_WEIGHT,
SampleCategoryType.sex,
n_("tutti.table.species.batch.header.sexCategory"),
n_("tutti.table.species.batch.header.sexCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> MATURITY_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_MATURITY_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY,
SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY_WEIGHT,
SampleCategoryType.maturity,
n_("tutti.table.species.batch.header.maturityCategory"),
n_("tutti.table.species.batch.header.maturityCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> AGE_CATEGORY = SampleColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_AGE_SAMPLE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY_WEIGHT,
SampleCategoryType.age,
n_("tutti.table.species.batch.header.ageCategory"),
@@ -266,7 +266,7 @@
SpeciesBatchRowModel entry = getEntry(rowIndex);
// check from protocol what is possible ?
- Species species = entry.getSpeciesCategory();
+ Species species = entry.getSpeciesCategoryValue();
if (species == null) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-03 17:01:03 UTC (rev 147)
@@ -117,6 +117,7 @@
value: "all";
selected: {model.isTableViewModeAll()};
buttonGroup: "filterSpeciesBatchMode";
+ enabled: false;
}
#filterSpeciesBatchLeafButton {
@@ -125,6 +126,7 @@
value: "leaf";
selected: {model.isTableViewModeLeaf()};
buttonGroup: "filterSpeciesBatchMode";
+ enabled: false;
}
#filterSpeciesBatchRootButton {
@@ -133,4 +135,5 @@
value: "root";
selected: {model.isTableViewModeRoot()};
buttonGroup: "filterSpeciesBatchMode";
+ enabled: false;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -55,6 +55,7 @@
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
@@ -82,10 +83,6 @@
private static final Log log =
LogFactory.getLog(SpeciesBatchUIHandler.class);
- public static final Set<String> RECOMPUTE_TOTAL_WEIGHT = Sets.newHashSet(
- SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
- SpeciesBatchRowModel.PROPERTY_WEIGHT);
-
public static final Set<String> SAMPLING_PROPERTIES = Sets.newHashSet(
SpeciesBatchRowModel.PROPERTY_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY,
@@ -182,7 +179,7 @@
SpeciesBatchRowModel rootRow =
loadSpeciesBatch(aBatch, null, rows);
- speciesUsed.add(rootRow.getSpeciesCategory());
+ speciesUsed.add(rootRow.getSpeciesCategoryValue());
}
availableSpecies.removeAll(speciesUsed);
}
@@ -209,12 +206,17 @@
@Override
protected boolean isRowValid(SpeciesBatchRowModel row) {
- boolean result = row.getSpeciesSampleCategory().isValid() ||
- row.getSortedUnsortedSampleCategory().isValid() ||
- row.getSizeSampleCategory().isValid() ||
- row.getSexSampleCategory().isValid() ||
- row.getMaturitySampleCategory().isValid() ||
- row.getAgeSampleCategory().isValid();
+
+ // a row is valid if species category is not empty and valid
+ // then if any of none empty category is valid
+ boolean result = !row.getSpeciesCategory().isEmpty() &&
+ row.getSpeciesCategory().isValid();
+
+ result &= row.getSortedUnsortedCategory().isEmptyOrValid();
+ result &= row.getSizeCategory().isEmptyOrValid();
+ result &= row.getSexCategory().isEmptyOrValid();
+ result &= row.getMaturityCategory().isEmptyOrValid();
+ result &= row.getAgeCategory().isEmptyOrValid();
return result;
}
@@ -225,22 +227,14 @@
Object oldValue,
Object newValue) {
- if (RECOMPUTE_TOTAL_WEIGHT.contains(propertyName)) {
+ if (SAMPLING_PROPERTIES.contains(propertyName) ||
+ SpeciesBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
- // Need to recompute totalHorsVracWeight
- recomputeTotalHorsVrac();
- }
-
- if (SAMPLING_PROPERTIES.contains(propertyName)) {
-
// species has changed, recompute valid property
recomputeRowValidState(row);
- }
- if (SpeciesBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
-
- // weight has changed, recompute valid property
- recomputeRowValidState(row);
+ // recompute the totalUnsorted weight
+ recomputeTotalUnsortedWeight();
}
// when row valid state has changed, recompute action enabled states
@@ -263,7 +257,7 @@
showInformationMessage(
"[ Captures - Espèces ] " +
- "Sauvegarde des modifications de " + row + ".");
+ "Sauvegarde des modifications de " + row + '.');
saveRow(row);
@@ -272,15 +266,21 @@
}
} else {
- // row is not valid can not save it
+ //FIXME See how to delete rows ? Or moreover how to save tehem...
+ if (log.isWarnEnabled()) {
+ log.warn("Will not remove not valid speciesBatch: " + row.getId());
+ }
- SpeciesBatch catchBean = row.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deleteSpeciesBatch(catchBean.getId());
- }
+// // row is not valid can not save it
+//
+// SpeciesBatch catchBean = row.toBean();
+//
+// if (!TuttiEntities.isNew(catchBean)) {
+//
+// // remove this
+// persistenceService.deleteSpeciesBatch(catchBean.getId());
+// row.setId(null);
+// }
}
}
@@ -383,7 +383,7 @@
Species species = persistenceService.getSpecies(
protocolSpecy.getSpeciesId());
allSpecies.add(species);
- speciesSampleCategories.put(species,SampleCategoryType.species);
+ speciesSampleCategories.put(species, SampleCategoryType.species);
if (protocolSpecy.isSortedUnsortedEnabled()) {
speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
@@ -417,7 +417,7 @@
// each species can use any category
for (Species species : allSpecies) {
- speciesSampleCategories.put(species,SampleCategoryType.species);
+ speciesSampleCategories.put(species, SampleCategoryType.species);
speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
speciesSampleCategories.put(species, SampleCategoryType.size);
speciesSampleCategories.put(species, SampleCategoryType.sex);
@@ -597,9 +597,11 @@
SpeciesBatchTableModel tableModel = getTableModel();
SpeciesBatchRowModel newRow = tableModel.createNewRow();
- newRow.setSpeciesCategory(createModel.getSpecies());
- newRow.setSpeciesCategoryWeight(createModel.getBatchWeight());
- newRow.setSampleCategory(newRow.getSpeciesSampleCategory());
+ SampleCategory<Species> speciesCategory = newRow.getSpeciesCategory();
+ Species species = createModel.getSpecies();
+ speciesCategory.setCategoryValue(species);
+ speciesCategory.setCategoryWeight(createModel.getBatchWeight());
+ newRow.setSampleCategory(speciesCategory);
recomputeRowValidState(newRow);
@@ -608,7 +610,7 @@
saveRow(newRow);
// update available species list
- getModel().getAvailableSpecies().remove(newRow.getSpeciesCategory());
+ getModel().getAvailableSpecies().remove(species);
}
@@ -655,7 +657,6 @@
SampleCategoryType selectedCategory = splitModel.getSelectedCategory();
SampleCategoryEnum sampleCategoryEnum = selectedCategory.getType();
-
// Create rows in batch table model
List<SpeciesBatchRowModel> newBatches = Lists.newArrayList();
@@ -671,16 +672,15 @@
row.getCategoryValue(),
row.getWeight());
+ recomputeRowValidState(newBatch);
+ newBatches.add(newBatch);
+
tableModel.addNewRow(++insertRow, newBatch);
- boolean rowValid = isRowValid(newBatch);
- newBatch.setValid(rowValid);
- newBatch.setBatchParent(parentBatch);
- newBatches.add(newBatch);
}
}
// add new batches to his parent
- parentBatch.setChilds(newBatches);
+ parentBatch.setBatchChilds(newBatches);
//TODO Should only save parentBatch (will persist all his childs)
//saveRow(parentBatch);
@@ -700,30 +700,44 @@
}
public void removeSpeciesSubBatch() {
- //TODO
- int rowIndex = getTable().getSelectedRow();
+ JXTable table = getTable();
+
+ int rowIndex = table.getSelectedRow();
+
Preconditions.checkState(rowIndex != -1,
"Cant remove sub batch if no batch selected");
SpeciesBatchRowModel parentBatch = getTableModel().getEntry(rowIndex);
+ Preconditions.checkState(!TuttiEntities.isNew(parentBatch),
+ "Can't remove sub batch if batch is not persisted");
+
// collect of rows to remove from model
Set<SpeciesBatchRowModel> rowToRemove = Sets.newHashSet();
+
collectChilds(parentBatch, rowToRemove);
// remove all rows from the model
getModel().getRows().removeAll(rowToRemove);
// remove childs from parent batch
- parentBatch.setChilds(null);
+ parentBatch.setBatchChilds(null);
// save parent batch (will destroy all his childs from db)
- saveRow(parentBatch);
+ persistenceService.deleteSpeciesSubBatch(parentBatch.getId());
// refresh table from parent batch row index to the end
- getTableModel().fireTableRowsUpdated(rowIndex,
- getTableModel().getRowCount() - 1);
+ getTableModel().fireTableDataChanged();
+
+ // select parent batch row
+ AbstractSelectTableAction.doSelectCell(table, rowIndex, 0);
+
+ if (table.isEditing()) {
+
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
+ }
}
public SplitSpeciesBatchUI getSplitSpeciesBatchEditor() {
@@ -786,21 +800,43 @@
protected void saveRow(SpeciesBatchRowModel row) {
- SpeciesBatch catchBean = row.toBean();
-
FishingOperation fishingOperation = getModel().getFishingOperation();
Preconditions.checkNotNull(fishingOperation);
+ SampleCategory<?> sampleCategory = row.getSampleCategory();
+ Preconditions.checkNotNull(sampleCategory);
+ Preconditions.checkNotNull(sampleCategory.getCategoryType());
+ Preconditions.checkNotNull(sampleCategory.getCategoryValue());
+ Preconditions.checkNotNull(sampleCategory.getCategoryWeight());
+
+ SpeciesBatch catchBean = row.toBean();
catchBean.setFishingOperation(fishingOperation);
- if (log.isInfoEnabled()) {
- log.info("Selected fishingOperation: " + fishingOperation.getId());
- }
+ // apply sample category
+ catchBean.setSampleCategoryType(sampleCategory.getCategoryType().getType());
+ catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue());
+ catchBean.setSampleCategoryWeight(sampleCategory.getCategoryWeight());
+
if (TuttiEntities.isNew(catchBean)) {
- catchBean = persistenceService.createSpeciesBatch(catchBean);
+ SpeciesBatchRowModel batchParent = row.getBatchParent();
+ String parentBatchId = null;
+
+ if (batchParent != null) {
+ parentBatchId = batchParent.getId();
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Persist new species batch with parentId: " +
+ parentBatchId);
+ }
+ catchBean = persistenceService.createSpeciesBatch(catchBean,
+ parentBatchId);
row.setId(catchBean.getId());
} else {
+ if (log.isInfoEnabled()) {
+ log.info("Persist existing species batch: " + catchBean.getId());
+ }
persistenceService.saveSpeciesBatch(catchBean);
}
@@ -820,7 +856,7 @@
row.setFrequency(frequencyRows);
}
- protected void recomputeTotalHorsVrac() {
+ protected void recomputeTotalUnsortedWeight() {
// recompute total hors vrac
Float totalHorsVrac = 0f;
@@ -828,7 +864,7 @@
for (SpeciesBatchRowModel batch : getModel().getRows()) {
CaracteristicQualitativeValue vracHorsVrac =
- batch.getSortedUnsortedCategory();
+ batch.getSortedUnsortedCategoryValue();
if (vracHorsVrac == null) {
@@ -917,16 +953,6 @@
}
}
- protected <C extends Serializable> void addSampleCategoryColumnToModel(TableColumnModel columnModel,
- ColumnIdentifier<SpeciesBatchRowModel> columnIdentifier,
- Decorator<C> decorator,
- TableCellRenderer defaultRenderer) {
- addColumnToModel(columnModel,
- SampleCategoryComponent.newEditor(decorator),
- SampleCategoryComponent.newRender(defaultRenderer, decorator),
- columnIdentifier);
- }
-
protected SpeciesBatchRowModel loadSpeciesBatch(SpeciesBatch aBatch,
SpeciesBatchRowModel parentRow,
List<SpeciesBatchRowModel> rows) {
@@ -944,54 +970,26 @@
sampleCategoryEnum,
"Can't have a batch with no sample category, but was: " + aBatch);
- loadBatchRow(parentRow, newRow,
+ loadBatchRow(parentRow,
+ newRow,
sampleCategoryEnum,
aBatch.getSampleCategoryValue(),
aBatch.getSampleCategoryWeight());
-// SampleCategory sampleCategory =
-// newRow.getSampleCategory(sampleCategoryEnum);
-//
-// // set sample category data from batch
-// sampleCategory.setCategoryValue(aBatch.getSampleCategoryValue());
-// sampleCategory.setCategoryWeight(aBatch.getSampleCategoryWeight());
-// newRow.setSampleCategory(sampleCategory);
-//
-// if (parentRow != null) {
-//
-// // copy back parent data (mainly other sample categories
-//
-// newRow.setBatchParent(parentRow);
-// if (sampleCategoryEnum != SampleCategoryEnum.species) {
-// newRow.setSpeciesCategory(parentRow.getSpeciesCategory());
-// }
-// if (sampleCategoryEnum != SampleCategoryEnum.sortedUnsorted) {
-// newRow.setSortedUnsortedCategory(parentRow.getSortedUnsortedCategory());
-// }
-// if (sampleCategoryEnum != SampleCategoryEnum.size) {
-// newRow.setSizeCategory(parentRow.getSizeCategory());
-// }
-// if (sampleCategoryEnum != SampleCategoryEnum.sex) {
-// newRow.setSexCategory(parentRow.getSexCategory());
-// }
-// if (sampleCategoryEnum != SampleCategoryEnum.maturity) {
-// newRow.setMaturityCategory(parentRow.getMaturityCategory());
-// }
-// if (sampleCategoryEnum != SampleCategoryEnum.age) {
-// newRow.setAgeCategory(parentRow.getAgeCategory());
-// }
-// }
-
rows.add(newRow);
if (!aBatch.isChildBatchsEmpty()) {
// create batch childs rows
+ List<SpeciesBatchRowModel> batchChilds = Lists.
+ newArrayListWithCapacity(aBatch.sizeChildBatchs());
+
for (SpeciesBatch childBatch : aBatch.getChildBatchs()) {
SpeciesBatchRowModel childRow = loadSpeciesBatch(childBatch, newRow, rows);
- childRow.setBatchParent(newRow);
+ batchChilds.add(childRow);
}
+ newRow.setBatchChilds(batchChilds);
}
return newRow;
@@ -1019,8 +1017,8 @@
// copy back parent data (mainly other sample categories)
newRow.setSpeciesToConfirm(parentRow.getSpeciesToConfirm());
+ newRow.setBatchParent(parentRow);
- newRow.setBatchParent(parentRow);
if (sampleCategoryEnum != SampleCategoryEnum.species) {
newRow.setSpeciesCategory(parentRow.getSpeciesCategory());
}
@@ -1040,8 +1038,16 @@
newRow.setAgeCategory(parentRow.getAgeCategory());
}
}
+ }
-
+ protected <C extends Serializable> void addSampleCategoryColumnToModel(TableColumnModel columnModel,
+ ColumnIdentifier<SpeciesBatchRowModel> columnIdentifier,
+ Decorator<C> decorator,
+ TableCellRenderer defaultRenderer) {
+ addColumnToModel(columnModel,
+ SampleCategoryComponent.newEditor(decorator),
+ SampleCategoryComponent.newRender(defaultRenderer, decorator),
+ columnIdentifier);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -260,23 +260,23 @@
lastCategory,
"Can't split a species batch with no sample category.");
- if (batch.getSortedUnsortedSampleCategory().isValid()) {
+ if (batch.getSortedUnsortedCategory().isValid()) {
categories.remove(SampleCategoryType.sortedUnsorted);
}
- if (batch.getSizeSampleCategory().isValid()) {
+ if (batch.getSizeCategory().isValid()) {
categories.remove(SampleCategoryType.size);
}
- if (batch.getSexSampleCategory().isValid()) {
+ if (batch.getSexCategory().isValid()) {
categories.remove(SampleCategoryType.sex);
}
- if (batch.getMaturitySampleCategory().isValid()) {
+ if (batch.getMaturityCategory().isValid()) {
categories.remove(SampleCategoryType.maturity);
}
- if (batch.getAgeSampleCategory().isValid()) {
+ if (batch.getAgeCategory().isValid()) {
categories.remove(SampleCategoryType.age);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -107,7 +107,7 @@
}
public Species getSpecies() {
- return batch == null ? null : batch.getSpeciesCategory();
+ return batch == null ? null : batch.getSpeciesCategoryValue();
}
public List<SampleCategoryType> getCategory() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-03 17:01:03 UTC (rev 147)
@@ -52,8 +52,10 @@
import org.nuiton.util.decorator.Decorator;
import javax.swing.JComboBox;
+import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -72,8 +74,6 @@
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
import static org.nuiton.i18n.I18n._;
@@ -618,11 +618,11 @@
// apply it to row
row.setValid(valid);
}
-
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
-
+
public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) {
boolean rightClick = SwingUtilities.isRightMouseButton(e);
@@ -641,17 +641,34 @@
log.debug("At point [" + p + "] found Row " + rowIndex);
}
- // select row (could empty selection)
- if (rowIndex == -1) {
- source.clearSelection();
- } else {
- source.setRowSelectionInterval(rowIndex, rowIndex);
+ boolean canContinue = true;
+
+ if (source.isEditing()) {
+
+ // stop editing
+ boolean stopEdit = source.getCellEditor().stopCellEditing();
+ if (!stopEdit) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not stop edit cell...");
+ }
+ canContinue = false;
+ }
}
- if (rightClick) {
+ if (canContinue) {
- // on right click show popup
- popup.show(source, e.getX(), e.getY());
+ // select row (could empty selection)
+ if (rowIndex == -1) {
+ source.clearSelection();
+ } else {
+ source.setRowSelectionInterval(rowIndex, rowIndex);
+ }
+
+ if (rightClick) {
+
+ // on right click show popup
+ popup.show(source, e.getX(), e.getY());
+ }
}
}
}
1
0
r146 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology java/fr/ifremer/tutti/ui/swing/content/protocol resources/i18n
by kmorin@users.forge.codelutin.com 02 Jan '13
by kmorin@users.forge.codelutin.com 02 Jan '13
02 Jan '13
Author: kmorin
Date: 2013-01-02 19:51:13 +0100 (Wed, 02 Jan 2013)
New Revision: 146
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/146
Log:
refs #1810: [PROTOCOLE] Ecrarefs #1812: [Ecran Trait] Tableaux de pmfm
- am?\195?\169lioration du code (mod?\195?\168le g?\195?\169r?\195?\169 seulement dans les rows)
- possibilit?\195?\169 de supprimer des lignes
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -25,7 +25,6 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
@@ -103,10 +102,7 @@
EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_VALID,
EditFishingOperationUIModel.PROPERTY_LOCATION,
EditFishingOperationUIModel.PROPERTY_COMMENT,
- EditFishingOperationUIModel.PROPERTY_SAISISSEUR,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_CARACTERISTICS,
- EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_CARACTERISTICS,
- EditFishingOperationUIModel.PROPERTY_HYDROLOGY_CARACTERISTICS);
+ EditFishingOperationUIModel.PROPERTY_SAISISSEUR);
}
@Override
@@ -239,50 +235,15 @@
GearShootingTabUIModel gearShootingModel =
ui.getGearShootingTabContent().getModel();
gearShootingModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationGearCaracteristic());
- gearShootingModel.addPropertyChangeListener(
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_CARACTERISTICS,
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- model.setGearShootingCaracteristics((CaracteristicMap) evt.getNewValue());
- }
- }
- );
- CaracteristicMap gearShootingCaracteristics = model.getGearShootingCaracteristics();
- getModel().setGearShootingCaracteristics(gearShootingCaracteristics);
- gearShootingModel.setGearShootingCaracteristics(gearShootingCaracteristics);
-
//init environment
EnvironmentTabUIModel environmentModel =
ui.getEnvironmentTabContent().getModel();
environmentModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationEnvironmentCaracteristic());
- environmentModel.addPropertyChangeListener(
- EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_CARACTERISTICS,
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- model.setEnvironmentCaracteristics((CaracteristicMap) evt.getNewValue());
- }
- }
- );
- CaracteristicMap environmentCaracteristics = model.getEnvironmentCaracteristics();
- getModel().setEnvironmentCaracteristics(environmentCaracteristics);
- environmentModel.setEnvironmentCaracteristics(environmentCaracteristics);
-
//init hydrology
HydrologyTabUIModel hydrologyModel = ui.getHydrologyTabContent().getModel();
hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic());
- hydrologyModel.addPropertyChangeListener(
- EditFishingOperationUIModel.PROPERTY_HYDROLOGY_CARACTERISTICS,
- new PropertyChangeListener() {
-
- public void propertyChange(PropertyChangeEvent evt) {
- model.setHydrologyCaracteristics((CaracteristicMap) evt.getNewValue());
- }
- }
- );
- CaracteristicMap hydrologyCaracteristics = model.getHydrologyCaracteristics();
- hydrologyModel.setHydrologyCaracteristics(hydrologyCaracteristics);
}
@Override
@@ -303,7 +264,7 @@
}
public void selectFishingOperation(FishingOperation bean) {
-
+
if (fishingOperationMonitor.wasModified()) {
// previous fishingOperation was modified, let's save it
@@ -387,18 +348,15 @@
//reset gear shooting
GearShootingTabUI gearShootingTab = ui.getGearShootingTabContent();
- gearShootingTab.getModel().setGearShootingCaracteristics(model.getGearShootingCaracteristics());
- gearShootingTab.getHandler().reset();
+ gearShootingTab.getHandler().reset(bean);
//reset environment
EnvironmentTabUI environmentTab = ui.getEnvironmentTabContent();
- environmentTab.getModel().setEnvironmentCaracteristics(model.getEnvironmentCaracteristics());
- environmentTab.getHandler().reset();
+ environmentTab.getHandler().reset(bean);
//reset hydrology
HydrologyTabUI hydrologyTab = ui.getHydrologyTabContent();
- hydrologyTab.getModel().setHydrologyCaracteristics(model.getHydrologyCaracteristics());
- hydrologyTab.getHandler().reset();
+ hydrologyTab.getHandler().reset(bean);
fishingOperationMonitor.clearModified();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -88,12 +88,6 @@
public static final String PROPERTY_SAISISSEUR = "saisisseur";
- public static final String PROPERTY_GEAR_SHOOTING_CARACTERISTICS = "gearShootingCaracteristics";
-
- public static final String PROPERTY_ENVIRONMENT_CARACTERISTICS = "environmentCaracteristics";
-
- public static final String PROPERTY_HYDROLOGY_CARACTERISTICS = "hydrologyCaracteristics";
-
/**
* Flag when there is no fishing operation selected.
*
@@ -153,12 +147,6 @@
protected List<Person> saisisseur;
- protected CaracteristicMap gearShootingCaracteristics;
-
- protected CaracteristicMap environmentCaracteristics;
-
- protected CaracteristicMap hydrologyCaracteristics;
-
protected FishingOperation fishingOperation;
protected static Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder =
@@ -386,34 +374,4 @@
protected FishingOperation newEntity() {
return fishingOperation;
}
-
- public CaracteristicMap getGearShootingCaracteristics() {
- return gearShootingCaracteristics;
- }
-
- public void setGearShootingCaracteristics(CaracteristicMap gearShootingParameters) {
- Object oldValue = getGearShootingCaracteristics();
- this.gearShootingCaracteristics = gearShootingParameters;
- firePropertyChange(PROPERTY_GEAR_SHOOTING_CARACTERISTICS, oldValue, gearShootingParameters);
- }
-
- public CaracteristicMap getEnvironmentCaracteristics() {
- return environmentCaracteristics;
- }
-
- public void setEnvironmentCaracteristics(CaracteristicMap environmentParameters) {
- Object oldValue = getEnvironmentCaracteristics();
- this.environmentCaracteristics = environmentParameters;
- firePropertyChange(PROPERTY_ENVIRONMENT_CARACTERISTICS, oldValue, environmentParameters);
- }
-
- public CaracteristicMap getHydrologyCaracteristics() {
- return hydrologyCaracteristics;
- }
-
- public void setHydrologyCaracteristics(CaracteristicMap hydrologyParameters) {
- Object oldValue = getHydrologyCaracteristics();
- this.hydrologyCaracteristics = hydrologyParameters;
- firePropertyChange(PROPERTY_HYDROLOGY_CARACTERISTICS, oldValue, hydrologyParameters);
- }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css 2013-01-02 18:51:13 UTC (rev 146)
@@ -42,4 +42,15 @@
selectionBackground: {null};
selectionForeground: {Color.BLACK};
sortable: false;
+}
+
+#tablePopup {
+ label: "tutti.title.batchActions";
+}
+
+#removeCaracteristicMenu {
+ text: "tutti.action.removeCaracteristic";
+ mnemonic: R;
+ actionIcon: batch-delete;
+ enabled: {model.isRemoveCaracteristicEnabled()};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2013-01-02 18:51:13 UTC (rev 146)
@@ -26,7 +26,7 @@
<import>
fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI
- fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow
+ fr.ifremer.tutti.persistence.entities.referential.Caracteristic
jaxx.runtime.swing.editor.bean.BeanComboBox
@@ -42,10 +42,15 @@
<EnvironmentTabUIModel id='model'
initializer='getContextValue(EnvironmentTabUIModel.class)'/>
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeCaracteristicMenu'
+ onActionPerformed='handler.removeCaracteristic()'/>
+ </JPopupMenu>
+
<row fill='both'>
<cell fill='both' weightx='1'>
<BeanComboBox id='newRowKey' constructorParams='this'
- genericType='CaracteristicRow'/>
+ genericType='Caracteristic'/>
</cell>
<cell fill='both'>
<JButton id='addRow' onActionPerformed='handler.addRow()'/>
@@ -54,7 +59,8 @@
<row fill='both' weighty='1'>
<cell fill='both' columns='2'>
<JScrollPane>
- <JXTable id='environmentTable'/>
+ <JXTable id='environmentTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -24,8 +24,11 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
@@ -33,15 +36,14 @@
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow;
+import java.util.Collection;
+import java.util.List;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import java.util.Collection;
-import java.util.List;
-
/**
* @author kmorin
* @since 0.3
@@ -97,7 +99,26 @@
@Override
protected void saveSelectedRowIfRequired(TuttiBeanMonitor<EnvironmentRowModel> rowMonitor,
EnvironmentRowModel row) {
-// getModel().setCaracteristic(row.getKey(), row.getValue());
+ if (row.isValid()) {
+ // there is a valid bean attached to the monitor
+
+ if (rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ showInformationMessage(
+ "[ Trait - Environnement ] " +
+ "Sauvegarde des modifications de " + row + ".");
+
+ saveRow(row);
+
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ }
}
//------------------------------------------------------------------------//
@@ -120,7 +141,7 @@
initUI(ui);
initBeanComboBox(ui.getNewRowKey(),
- Lists.<CaracteristicRow>newArrayList(), null);
+ Lists.<Caracteristic>newArrayList(), null);
JXTable table = getTable();
@@ -158,6 +179,16 @@
log.info("closing: " + ui);
}
}
+
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ EnvironmentRowModel oldRow,
+ int newRowIndex,
+ EnvironmentRowModel newRow) {
+
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ getModel().setRemoveCaracteristicEnabled(newRow != null);
+ }
//------------------------------------------------------------------------//
//-- Public methods --//
@@ -165,32 +196,36 @@
/** Adds a row with the parameter selected in the combo box */
public void addRow() {
- BeanComboBox<CaracteristicRow> keyCombo = ui.getNewRowKey();
- CaracteristicRow selectedItem = (CaracteristicRow) keyCombo.getSelectedItem();
- Caracteristic caracteristic = selectedItem.getCaracteristics()[0];
+ BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey();
+ Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem();
+
EnvironmentRowModel row = getTableModel().createNewRow();
- row.setKey(caracteristic);
+ row.setKey(selectedItem);
getTableModel().addNewRow(row);
-// getModel().setCaracteristic(caracteristic, null);
+
+ EnvironmentTableModel tableModel = getTableModel();
+ int rowIndex = tableModel.getRowCount() - 1;
+ tableModel.fireTableRowsInserted(rowIndex, rowIndex);
keyCombo.removeItem(selectedItem);
selectFirstInCombo(keyCombo);
}
/** Resets the table with the data from the database */
- public void reset() {
+ public void reset(FishingOperation fishingOperation) {
EnvironmentTableModel tableModel = getTableModel();
-
EnvironmentTabUIModel model = getModel();
+ model.setFishingOperation(fishingOperation);
- CaracteristicMap environmentCaracteristics = model.getEnvironmentCaracteristics();
+ CaracteristicMap environmentCaracteristics = fishingOperation.getEnvironmentCaracteristics();
if (environmentCaracteristics == null) {
environmentCaracteristics = new CaracteristicMap();
}
List<EnvironmentRowModel> rows = Lists.newArrayList();
Collection<Caracteristic> caracteristics = environmentCaracteristics.keySet();
- for (Caracteristic key : environmentCaracteristics.keySet()) {
+
+ for (Caracteristic key : caracteristics) {
EnvironmentRowModel newRow = tableModel.createNewRow();
newRow.setKey(key);
newRow.setValue(environmentCaracteristics.get(key));
@@ -199,16 +234,70 @@
model.setRows(rows);
- List<CaracteristicRow> caracteristicList = Lists.newArrayList();
+ List<Caracteristic> caracteristicList = Lists.newArrayList();
for (Caracteristic caracteristic : model.getAvailableCaracteristics()) {
if (!caracteristics.contains(caracteristic)) {
- CaracteristicRow row = new CaracteristicRow(caracteristic.getName(), caracteristic);
- caracteristicList.add(row);
+ caracteristicList.add(caracteristic);
}
}
ui.getNewRowKey().setData(caracteristicList);
selectFirstInCombo(ui.getNewRowKey());
}
+
+ public void removeCaracteristic() {
+ int rowIndex = getTable().getSelectedRow();
+
+ Preconditions.checkState(rowIndex != -1,
+ "Cant remove caracteristic if no caracteristic selected");
+
+ EnvironmentRowModel row = getTableModel().getEntry(rowIndex);
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ fishingOperation.getEnvironmentCaracteristics().remove(row.getKey());
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+
+ //add the row in the combo
+ BeanComboBox keyCombo = ui.getNewRowKey();
+ keyCombo.addItem(row.getKey());
+ selectFirstInCombo(keyCombo);
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Protected methods --//
+ //------------------------------------------------------------------------//
+
+ protected void saveRow(EnvironmentRowModel row) {
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ if (fishingOperation.getEnvironmentCaracteristics() == null) {
+ fishingOperation.setEnvironmentCaracteristics(new CaracteristicMap());
+ }
+ fishingOperation.getEnvironmentCaracteristics().put(row.getKey(), row.getValue());
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -42,10 +42,24 @@
public class EnvironmentTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, EnvironmentRowModel, EnvironmentTabUIModel> {
private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_REMOVE_CARACTERISTIC_ENABLED = "removeCaracteristicEnabled";
- protected CaracteristicMap environmentCaracteristics = new CaracteristicMap();
-
protected List<Caracteristic> availableCaracteristics;
+
+ /**
+ * Fishing operation associated with the caracteristics
+ *
+ * @since 0.3
+ */
+ protected FishingOperation fishingOperation;
+
+ /**
+ * Can user remove a selected caracteristic?
+ *
+ * @since 0.3
+ */
+ protected boolean removeCaracteristicEnabled;
protected static final Binder<FishingOperation, EnvironmentTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, EnvironmentTabUIModel.class)
.toBinder();
@@ -57,28 +71,29 @@
super(FishingOperation.class, fromBeanBinder, toBeanBinder);
}
- public CaracteristicMap getEnvironmentCaracteristics() {
- return environmentCaracteristics;
+ public List<Caracteristic> getAvailableCaracteristics() {
+ return availableCaracteristics;
}
- public void setEnvironmentCaracteristics(CaracteristicMap environmentCaracteristics) {
- if (environmentCaracteristics == null) {
- environmentCaracteristics = new CaracteristicMap();
- }
- this.environmentCaracteristics = environmentCaracteristics;
+ public void setAvailableCaracteristics(List<Caracteristic> caracteristics) {
+ availableCaracteristics = caracteristics;
}
- public void setCaracteristic(Caracteristic caracteristic, Serializable value) {
- Object oldValue = environmentCaracteristics.clone();
- environmentCaracteristics.put(caracteristic, value);
- firePropertyChange(EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_CARACTERISTICS, oldValue, environmentCaracteristics);
+ public FishingOperation getFishingOperation() {
+ return fishingOperation;
}
- public List<Caracteristic> getAvailableCaracteristics() {
- return availableCaracteristics;
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
}
+
+ public boolean isRemoveCaracteristicEnabled() {
+ return removeCaracteristicEnabled;
+ }
- public void setAvailableCaracteristics(List<Caracteristic> caracteristics) {
- availableCaracteristics = caracteristics;
+ public void setRemoveCaracteristicEnabled(boolean removeCaracteristicEnabled) {
+ Object oldValue = isRemoveCaracteristicEnabled();
+ this.removeCaracteristicEnabled = removeCaracteristicEnabled;
+ firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -27,11 +27,10 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow;
+import java.io.Serializable;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
-import java.io.Serializable;
-
/**
* @author kmorin
* @since 0.3
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css 2013-01-02 18:51:13 UTC (rev 146)
@@ -42,4 +42,15 @@
selectionBackground: {null};
selectionForeground: {Color.BLACK};
sortable: false;
+}
+
+#tablePopup {
+ label: "tutti.title.batchActions";
+}
+
+#removeCaracteristicMenu {
+ text: "tutti.action.removeCaracteristic";
+ mnemonic: R;
+ actionIcon: batch-delete;
+ enabled: {model.isRemoveCaracteristicEnabled()};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2013-01-02 18:51:13 UTC (rev 146)
@@ -26,7 +26,7 @@
<import>
fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI
- fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow
+ fr.ifremer.tutti.persistence.entities.referential.Caracteristic
jaxx.runtime.swing.editor.bean.BeanComboBox
org.jdesktop.swingx.JXTable
@@ -40,10 +40,15 @@
<GearShootingTabUIModel id='model'
initializer='getContextValue(GearShootingTabUIModel.class)'/>
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeCaracteristicMenu'
+ onActionPerformed='handler.removeCaracteristic()'/>
+ </JPopupMenu>
+
<row fill='both'>
<cell fill='both' weightx='1'>
<BeanComboBox id='newRowKey' constructorParams='this'
- genericType='CaracteristicRow'/>
+ genericType='Caracteristic'/>
</cell>
<cell fill='both'>
<JButton id='addRow' actionIcon='add'
@@ -53,7 +58,8 @@
<row fill='both' weighty='1'>
<cell fill='both' columns='2'>
<JScrollPane>
- <JXTable id='gearShootingTable'/>
+ <JXTable id='gearShootingTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -24,10 +24,18 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentRowModel;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
@@ -40,6 +48,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
/**
@@ -98,8 +107,26 @@
protected void saveSelectedRowIfRequired(TuttiBeanMonitor<GearShootingRowModel> rowMonitor,
GearShootingRowModel row) {
- //TODO Check row was modified and is valid ?
- getModel().setCaracteristic(row.getKey(), row.getValue());
+ if (row.isValid()) {
+ // there is a valid bean attached to the monitor
+
+ if (rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ showInformationMessage(
+ "[ Trait - Engin ] " +
+ "Sauvegarde des modifications de " + row + ".");
+
+ saveRow(row);
+
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ }
}
//------------------------------------------------------------------------//
@@ -122,7 +149,7 @@
initUI(ui);
initBeanComboBox(ui.getNewRowKey(),
- Lists.<CaracteristicRow>newArrayList(), null);
+ Lists.<Caracteristic>newArrayList(), null);
JXTable table = getTable();
@@ -162,6 +189,16 @@
log.info("closing: " + ui);
}
}
+
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ GearShootingRowModel oldRow,
+ int newRowIndex,
+ GearShootingRowModel newRow) {
+
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ getModel().setRemoveCaracteristicEnabled(newRow != null);
+ }
//------------------------------------------------------------------------//
//-- Public methods --//
@@ -169,50 +206,108 @@
/** Adds a row with the parameter selected in the combo box */
public void addRow() {
- BeanComboBox<CaracteristicRow> keyCombo = ui.getNewRowKey();
- CaracteristicRow selectedItem = (CaracteristicRow) keyCombo.getSelectedItem();
- Caracteristic caracteristic = selectedItem.getCaracteristics()[0];
+ BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey();
+ Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem();
+
GearShootingRowModel row = getTableModel().createNewRow();
- row.setKey(caracteristic);
- getTableModel().addNewRow(row);
- getModel().setCaracteristic(caracteristic, null);
+ row.setKey(selectedItem);
+ getModel().getRows().add(row);
+
+ GearShootingTableModel tableModel = getTableModel();
+ int rowIndex = tableModel.getRowCount() - 1;
+ tableModel.fireTableRowsInserted(rowIndex, rowIndex);
keyCombo.removeItem(selectedItem);
selectFirstInCombo(keyCombo);
}
/** Resets the table with the data from the database */
- public void reset() {
+ public void reset(FishingOperation fishingOperation) {
GearShootingTableModel tableModel = getTableModel();
GearShootingTabUIModel model = getModel();
+ model.setFishingOperation(fishingOperation);
- CaracteristicMap gearShootingCaracteristics = model.getGearShootingCaracteristics();
+ CaracteristicMap gearShootingCaracteristics = fishingOperation.getGearShootingCaracteristics();
if (gearShootingCaracteristics == null) {
gearShootingCaracteristics = new CaracteristicMap();
}
-
+
List<GearShootingRowModel> rows = Lists.newArrayList();
Collection<Caracteristic> caracteristics = gearShootingCaracteristics.keySet();
- for (Caracteristic key : gearShootingCaracteristics.keySet()) {
+
+ for (Caracteristic key : caracteristics) {
GearShootingRowModel newRow = tableModel.createNewRow();
newRow.setKey(key);
newRow.setValue(gearShootingCaracteristics.get(key));
rows.add(newRow);
}
-
model.setRows(rows);
- List<CaracteristicRow> caracteristicList = Lists.newArrayList();
+ List<Caracteristic> caracteristicList = Lists.newArrayList();
for (Caracteristic caracteristic : model.getAvailableCaracteristics()) {
if (!caracteristics.contains(caracteristic)) {
- CaracteristicRow row = new CaracteristicRow(caracteristic.getName(), caracteristic);
- caracteristicList.add(row);
+ caracteristicList.add(caracteristic);
}
}
ui.getNewRowKey().setData(caracteristicList);
selectFirstInCombo(ui.getNewRowKey());
}
+
+ public void removeCaracteristic() {
+ int rowIndex = getTable().getSelectedRow();
+ Preconditions.checkState(rowIndex != -1,
+ "Cant remove caracteristic if no caracteristic selected");
+
+ GearShootingRowModel row = getTableModel().getEntry(rowIndex);
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ fishingOperation.getGearShootingCaracteristics().remove(row.getKey());
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+
+ //add the row in the combo
+ BeanComboBox keyCombo = ui.getNewRowKey();
+ keyCombo.addItem(row.getKey());
+ selectFirstInCombo(keyCombo);
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Protected methods --//
+ //------------------------------------------------------------------------//
+
+ protected void saveRow(GearShootingRowModel row) {
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ if (fishingOperation.getGearShootingCaracteristics() == null) {
+ fishingOperation.setGearShootingCaracteristics(new CaracteristicMap());
+ }
+ fishingOperation.getGearShootingCaracteristics().put(row.getKey(), row.getValue());
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -35,6 +35,8 @@
import java.io.Serializable;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
@@ -44,10 +46,26 @@
public class GearShootingTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, GearShootingRowModel, GearShootingTabUIModel> {
private static final long serialVersionUID = 1L;
-
- protected CaracteristicMap gearShootingCaracteristics = new CaracteristicMap();
-
+
+ private static final Log log = LogFactory.getLog(GearShootingTabUIModel.class);
+
+ public static final String PROPERTY_REMOVE_CARACTERISTIC_ENABLED = "removeCaracteristicEnabled";
+
protected List<Caracteristic> availableCaracteristics;
+
+ /**
+ * Fishing operation associated with the caracteristics
+ *
+ * @since 0.3
+ */
+ protected FishingOperation fishingOperation;
+
+ /**
+ * Can user remove a selected caracteristic?
+ *
+ * @since 0.3
+ */
+ protected boolean removeCaracteristicEnabled;
protected static final Binder<FishingOperation, GearShootingTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, GearShootingTabUIModel.class)
.toBinder();
@@ -59,28 +77,30 @@
super(FishingOperation.class, fromBeanBinder, toBeanBinder);
}
- public CaracteristicMap getGearShootingCaracteristics() {
- return gearShootingCaracteristics;
+ public List<Caracteristic> getAvailableCaracteristics() {
+ return availableCaracteristics;
}
- public void setGearShootingCaracteristics(CaracteristicMap gearShootingCaracteristics) {
- if (gearShootingCaracteristics == null) {
- gearShootingCaracteristics = new CaracteristicMap();
- }
- this.gearShootingCaracteristics = gearShootingCaracteristics;
+ public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) {
+ this.availableCaracteristics = availableCaracteristics;
}
-
- public void setCaracteristic(Caracteristic caracteristic, Serializable value) {
- Object oldValue = Maps.newLinkedHashMap(gearShootingCaracteristics);
- gearShootingCaracteristics.put(caracteristic, value);
- firePropertyChange(EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_CARACTERISTICS, oldValue, gearShootingCaracteristics);
+
+ public FishingOperation getFishingOperation() {
+ return fishingOperation;
}
- public List<Caracteristic> getAvailableCaracteristics() {
- return availableCaracteristics;
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
}
+
+ public boolean isRemoveCaracteristicEnabled() {
+ return removeCaracteristicEnabled;
+ }
- public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) {
- this.availableCaracteristics = availableCaracteristics;
+ public void setRemoveCaracteristicEnabled(boolean removeCaracteristicEnabled) {
+ Object oldValue = isRemoveCaracteristicEnabled();
+ this.removeCaracteristicEnabled = removeCaracteristicEnabled;
+ firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
}
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css 2013-01-02 18:51:13 UTC (rev 146)
@@ -42,4 +42,15 @@
selectionBackground: {null};
selectionForeground: {Color.BLACK};
sortable: false;
+}
+
+#tablePopup {
+ label: "tutti.title.batchActions";
+}
+
+#removeCaracteristicMenu {
+ text: "tutti.action.removeCaracteristic";
+ mnemonic: R;
+ actionIcon: batch-delete;
+ enabled: {model.isRemoveCaracteristicEnabled()};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2013-01-02 18:51:13 UTC (rev 146)
@@ -42,7 +42,11 @@
<HydrologyTabUIModel id='model'
initializer='getContextValue(HydrologyTabUIModel.class)'/>
-
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeCaracteristicMenu'
+ onActionPerformed='handler.removeCaracteristic()'/>
+ </JPopupMenu>
+
<row fill='both'>
<cell fill='both' weightx='1'>
<BeanComboBox id='newRowKey' constructorParams='this'
@@ -55,7 +59,8 @@
<row fill='both' weighty='1'>
<cell fill='both' columns='2'>
<JScrollPane>
- <JXTable id='hydrologyTable'/>
+ <JXTable id='hydrologyTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -24,18 +24,23 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingRowModel;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil.Type;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
+import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -114,24 +119,26 @@
protected void saveSelectedRowIfRequired(TuttiBeanMonitor<HydrologyRowModel> rowMonitor,
HydrologyRowModel row) {
- Map<Type, Caracteristic> caracteristics =
- availableCaracteristics.get(row.getKey());
- CaracteristicMap map = new CaracteristicMap();
- for (Type type : caracteristics.keySet()) {
- Serializable value = null;
- switch (type) {
- case START:
- value = row.getGearShootingStartValue();
- break;
- case END:
- value = row.getGearShootingEndValue();
- break;
- case AVERAGE:
- value = row.getAverageValue();
+ if (row.isValid()) {
+ // there is a valid bean attached to the monitor
+
+ if (rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ showInformationMessage(
+ "[ Trait - Hydro ] " +
+ "Sauvegarde des modifications de " + row + ".");
+
+ saveRow(row);
+
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
}
- map.put(caracteristics.get(type), value);
}
- getModel().addCaracteristics(map);
}
//------------------------------------------------------------------------//
@@ -231,6 +238,16 @@
}
}
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ HydrologyRowModel oldRow,
+ int newRowIndex,
+ HydrologyRowModel newRow) {
+
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ getModel().setRemoveCaracteristicEnabled(newRow != null);
+ }
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
@@ -238,32 +255,33 @@
/** Adds a row with the parameter selected in the combo box */
public void addRow() {
BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey();
- Caracteristic key = (Caracteristic) keyCombo.getSelectedItem();
+ Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem();
+
HydrologyRowModel row = getTableModel().createNewRow();
- row.setKey(key);
- getTableModel().addNewRow(row);
+ row.setKey(selectedItem);
+ getModel().getRows().add(row);
+
+ HydrologyTableModel tableModel = getTableModel();
+ int rowIndex = tableModel.getRowCount() - 1;
+ tableModel.fireTableRowsInserted(rowIndex, rowIndex);
- Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(key);
- CaracteristicMap map = new CaracteristicMap();
- for (Caracteristic caracteristic : caracteristics.values()) {
- map.put(caracteristic, null);
- }
- getModel().addCaracteristics(map);
-
- keyCombo.removeItem(key);
+ keyCombo.removeItem(selectedItem);
selectFirstInCombo(keyCombo);
}
/** Resets the table with the data from the database */
- public void reset() {
-
+ public void reset(FishingOperation fishingOperation) {
HydrologyTableModel tableModel = getTableModel();
-
- CaracteristicMap hydrologyCaracteristics = getModel().getHydrologyCaracteristics();
-
+ HydrologyTabUIModel model = getModel();
+ model.setFishingOperation(fishingOperation);
+
+ CaracteristicMap hydrologyCaracteristics = fishingOperation.getHydrologyCaracteristics();
+ if (hydrologyCaracteristics == null) {
+ hydrologyCaracteristics = new CaracteristicMap();
+ }
+
List<HydrologyRowModel> rows = Lists.newArrayList();
List<Caracteristic> caracteristicList = Lists.newArrayList();
-
Collection<Caracteristic> selectedCaracteristics = hydrologyCaracteristics.keySet();
Set<Caracteristic> globalCaracteristics = availableCaracteristics.keySet();
@@ -289,10 +307,85 @@
}
}
- getModel().setRows(rows);
+ model.setRows(rows);
ui.getNewRowKey().setData(caracteristicList);
selectFirstInCombo(ui.getNewRowKey());
}
+
+ public void removeCaracteristic() {
+ int rowIndex = getTable().getSelectedRow();
+ Preconditions.checkState(rowIndex != -1,
+ "Cant remove caracteristic if no caracteristic selected");
+
+ HydrologyRowModel row = getTableModel().getEntry(rowIndex);
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(row.getKey());
+ for (Type type : caracteristics.keySet()) {
+ Caracteristic caracteristic = caracteristics.get(type);
+ fishingOperation.getHydrologyCaracteristics().remove(caracteristic);
+ }
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+
+ //add the row in the combo
+ BeanComboBox keyCombo = ui.getNewRowKey();
+ keyCombo.addItem(row.getKey());
+ selectFirstInCombo(keyCombo);
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Protected methods --//
+ //------------------------------------------------------------------------//
+
+ protected void saveRow(HydrologyRowModel row) {
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+
+ if (fishingOperation.getHydrologyCaracteristics() == null) {
+ fishingOperation.setHydrologyCaracteristics(new CaracteristicMap());
+ }
+ Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(row.getKey());
+ CaracteristicMap map = new CaracteristicMap();
+ for (Type type : caracteristics.keySet()) {
+ Serializable value = null;
+ switch (type) {
+ case START:
+ value = row.getGearShootingStartValue();
+ break;
+ case END:
+ value = row.getGearShootingEndValue();
+ break;
+ case AVERAGE:
+ value = row.getAverageValue();
+ }
+ map.put(caracteristics.get(type), value);
+ }
+ fishingOperation.getHydrologyCaracteristics().putAll(map);
+
+ if (TuttiEntities.isNew(fishingOperation)) {
+
+ fishingOperation = persistenceService.createFishingOperation(fishingOperation);
+ } else {
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -44,12 +44,26 @@
private static final long serialVersionUID = 1L;
+ public static final String PROPERTY_REMOVE_CARACTERISTIC_ENABLED = "removeCaracteristicEnabled";
+
public static final String PROPERTY_AVAILABLE_CARACTERISTICS = "availableCaracteristics";
- protected CaracteristicMap hydrologyCaracteristics = new CaracteristicMap();
-
protected List<Caracteristic> availableCaracteristics;
-
+
+ /**
+ * Fishing operation associated with the caracteristics
+ *
+ * @since 0.3
+ */
+ protected FishingOperation fishingOperation;
+
+ /**
+ * Can user remove a selected caracteristic?
+ *
+ * @since 0.3
+ */
+ protected boolean removeCaracteristicEnabled;
+
protected static final Binder<FishingOperation, HydrologyTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, HydrologyTabUIModel.class)
.toBinder();
@@ -60,23 +74,6 @@
super(FishingOperation.class, fromBeanBinder, toBeanBinder);
}
- public CaracteristicMap getHydrologyCaracteristics() {
- return hydrologyCaracteristics;
- }
-
- public void setHydrologyCaracteristics(CaracteristicMap hydrologyCaracteristics) {
- if (hydrologyCaracteristics == null) {
- hydrologyCaracteristics = new CaracteristicMap();
- }
- this.hydrologyCaracteristics = hydrologyCaracteristics;
- }
-
- public void addCaracteristics(CaracteristicMap caracteristics) {
- Object oldValue = Maps.newLinkedHashMap(hydrologyCaracteristics);
- hydrologyCaracteristics.putAll(caracteristics);
- firePropertyChange(EditFishingOperationUIModel.PROPERTY_HYDROLOGY_CARACTERISTICS, oldValue, hydrologyCaracteristics);
- }
-
public List<Caracteristic> getAvailableCaracteristics() {
return availableCaracteristics;
}
@@ -86,4 +83,22 @@
this.availableCaracteristics = availableCaracteristics;
firePropertyChange(PROPERTY_AVAILABLE_CARACTERISTICS, oldValue, availableCaracteristics);
}
+
+ public FishingOperation getFishingOperation() {
+ return fishingOperation;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public boolean isRemoveCaracteristicEnabled() {
+ return removeCaracteristicEnabled;
+ }
+
+ public void setRemoveCaracteristicEnabled(boolean removeCaracteristicEnabled) {
+ Object oldValue = isRemoveCaracteristicEnabled();
+ this.removeCaracteristicEnabled = removeCaracteristicEnabled;
+ firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 18:51:13 UTC (rev 146)
@@ -436,12 +436,12 @@
// getModel().setModify(true);
}
+ /** Removes a species */
public void removeSpecies() {
- //TODO
int rowIndex = getTable().getSelectedRow();
Preconditions.checkState(rowIndex != -1,
- "Cant remove sub batch if no batch selected");
+ "Cant remove species if no species selected");
// remove the row from the model
getModel().getRows().remove(rowIndex);
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 18:17:45 UTC (rev 145)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 18:51:13 UTC (rev 146)
@@ -23,6 +23,7 @@
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
tutti.action.reload.ui=Recharger l'interface graphique
+tutti.action.removeCaracteristic=Supprimer la caractéristique
tutti.action.removeSpecies=Supprimer l'espèce
tutti.action.removeSpeciesSubBatch=Supprimer les lots
tutti.action.reset.fishingOperationValidState=Réinitialiser
@@ -184,6 +185,7 @@
tutti.table.benthos.batch.header.speciesByGenusCode=Espèce
tutti.table.benthos.batch.header.toConfirm=A Confirmer
tutti.table.benthos.batch.header.weight=Poids
+tutti.table.fishing.caracteristic.header.key=
tutti.table.fishing.environment.header.key=Clé
tutti.table.fishing.environment.header.value=Valeur
tutti.table.fishing.gearShooting.header.key=Clé
1
0
r145 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/xmi tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence tutti-service/src/main/java/fr/ifremer/tutti/service tutti-ui-swing tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split
by tchemit@users.forge.codelutin.com 02 Jan '13
by tchemit@users.forge.codelutin.com 02 Jan '13
02 Jan '13
Author: tchemit
Date: 2013-01-02 19:17:45 +0100 (Wed, 02 Jan 2013)
New Revision: 145
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/145
Log:
refs #1805: [Onglet Poisson] Assistance ?\195?\160 la saisie des lots de poissons (presque fini at last\!)
Modified:
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -162,6 +162,8 @@
//-- Species Batch methods --//
//------------------------------------------------------------------------//
+ List<SpeciesBatch> getAllRootSpeciesBatch(String fishingOperationId);
+
List<SpeciesBatch> getAllSpeciesBatch(String fishingOperationId);
SpeciesBatch getSpeciesBatch(String id);
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
===================================================================
--- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-01-02 18:17:45 UTC (rev 145)
@@ -35,6 +35,7 @@
fr.ifremer.tutti.persistence.entities.data.FishingOperation.attribute.saisisseur.stereotype=ordered
fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch.attribute.macroWasteCategory.stereotype=ordered
+fr.ifremer.tutti.persistence.entities.data.SpeciesBatch.attribute.childBatchs.stereotype=ordered
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.gearPmfmId.stereotype=ordered
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.environmentPmfmId.stereotype=ordered
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -27,6 +27,7 @@
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -446,9 +447,22 @@
//------------------------------------------------------------------------//
@Override
+ public List<SpeciesBatch> getAllRootSpeciesBatch(String fishingOperationId) {
+ List<SpeciesBatch> result = getAllTraitFilterBatches(
+ SpeciesBatch.class, fishingOperationId, new Predicate<SpeciesBatch>() {
+
+ @Override
+ public boolean apply(SpeciesBatch input) {
+ return input.getParentBatch() == null;
+ }
+ });
+ return result;
+ }
+
+ @Override
public List<SpeciesBatch> getAllSpeciesBatch(final String fishingOperationId) {
List<SpeciesBatch> result = getAllTraitFilterBatches(
- SpeciesBatch.class, fishingOperationId);
+ SpeciesBatch.class, fishingOperationId, null);
return result;
}
@@ -508,7 +522,7 @@
@Override
public List<BenthosBatch> getAllBenthosBatch(String fishingOperationId) {
List<BenthosBatch> result = getAllTraitFilterBatches(
- BenthosBatch.class, fishingOperationId);
+ BenthosBatch.class, fishingOperationId, null);
return result;
}
@@ -542,7 +556,7 @@
@Override
public List<PlanktonBatch> getAllPlanktonBatch(String fishingOperationId) {
List<PlanktonBatch> result = getAllTraitFilterBatches(
- PlanktonBatch.class, fishingOperationId);
+ PlanktonBatch.class, fishingOperationId, null);
return result;
}
@@ -576,7 +590,7 @@
@Override
public List<MacroWasteBatch> getAllMacroWasteBatch(String fishingOperationId) {
List<MacroWasteBatch> result = getAllTraitFilterBatches(
- MacroWasteBatch.class, fishingOperationId);
+ MacroWasteBatch.class, fishingOperationId, null);
return result;
}
@@ -610,7 +624,7 @@
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
List<AccidentalBatch> result = getAllTraitFilterBatches(
- AccidentalBatch.class, fishingOperationId);
+ AccidentalBatch.class, fishingOperationId, null);
return result;
}
@@ -837,8 +851,14 @@
return Lists.newArrayList(result);
}
- protected <B extends FishingOperationAware> List<B> getAllTraitFilterBatches(Class<B> beanType, String traitId) {
+ protected <B extends FishingOperationAware> List<B> getAllTraitFilterBatches(
+ Class<B> beanType,
+ String traitId,
+ Predicate<B> extraPredicate) {
Predicate<B> predicate = TuttiEntities.newTraitIdPredicate(traitId);
+ if (extraPredicate != null) {
+ predicate = Predicates.and(predicate, extraPredicate);
+ }
List<B> result = Lists.newArrayList(Iterables.filter(getData(beanType), predicate));
return result;
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -367,7 +367,14 @@
//-- Species Batch methods --//
//------------------------------------------------------------------------//
+
@Override
+ public List<SpeciesBatch> getAllRootSpeciesBatch(String fishingOperationId) {
+ checkDriverExists();
+ return driver.getAllRootSpeciesBatch(fishingOperationId);
+ }
+
+ @Override
public List<SpeciesBatch> getAllSpeciesBatch(String fishingOperationId) {
checkDriverExists();
return driver.getAllSpeciesBatch(fishingOperationId);
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/pom.xml 2013-01-02 18:17:45 UTC (rev 145)
@@ -52,7 +52,7 @@
<!--<jaxx.helpBrokerFQN>fr.ird.observe.ui.ObserveHelpBroker</jaxx.helpBrokerFQN>-->
<!-- jaxx help configuration -->
- <jaxx.helpsetName>sammoa</jaxx.helpsetName>
+ <jaxx.helpsetName>tutti</jaxx.helpsetName>
<jaxx.locales>fr</jaxx.locales>
<!--<jaxx.helpTarget>src/main/help</jaxx.helpTarget>-->
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryComponent.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryComponent.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -213,14 +213,18 @@
String text = null;
if (sampleCategory != null) {
C categoryValue = sampleCategory.getCategoryValue();
- Float number = sampleCategory.getCategoryWeight();
+ if (categoryValue == null) {
+ text = "";
+ } else {
+ Float number = sampleCategory.getCategoryWeight();
- text = categoryDecorator.toString(categoryValue) + " / ";
+ text = categoryDecorator.toString(categoryValue) + " / ";
- if (number == null) {
- text = "-";
- } else {
- text += number;
+ if (number == null) {
+ text += "-";
+ } else {
+ text += number;
+ }
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -24,10 +24,12 @@
* #L%
*/
+import com.google.common.collect.Maps;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.service.DecoratorService;
-import org.apache.commons.lang3.ObjectUtils;
+import java.util.EnumMap;
+
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
@@ -40,7 +42,7 @@
public enum SampleCategoryType implements DecoratorService.LabelAware {
species(
n_("tutti.sampleCategoryType.species"),
- null),
+ SampleCategoryEnum.species),
sortedUnsorted(
n_("tutti.sampleCategoryType.sortedUnsorted"),
SampleCategoryEnum.sortedUnsorted),
@@ -76,13 +78,20 @@
}
public static SampleCategoryType valueOf(SampleCategoryEnum type) {
- SampleCategoryType result = null;
- for (SampleCategoryType sampleCategoryType : values()) {
- if (ObjectUtils.equals(type, sampleCategoryType.type)) {
- result = sampleCategoryType;
- break;
- }
- }
+ SampleCategoryType result = enumToType.get(type);
return result;
}
+
+ public static final EnumMap<SampleCategoryEnum, SampleCategoryType> enumToType;
+
+ static {
+ enumToType = Maps.newEnumMap(SampleCategoryEnum.class);
+ enumToType.put(SampleCategoryEnum.species, species);
+ enumToType.put(SampleCategoryEnum.sortedUnsorted, sortedUnsorted);
+ enumToType.put(SampleCategoryEnum.size, size);
+ enumToType.put(SampleCategoryEnum.sex, sex);
+ enumToType.put(SampleCategoryEnum.maturity, maturity);
+ enumToType.put(SampleCategoryEnum.age, age);
+
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -26,6 +26,7 @@
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
@@ -35,7 +36,6 @@
import org.apache.commons.collections.CollectionUtils;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
-import org.nuiton.util.beans.BinderModelBuilder;
import java.util.Collections;
import java.util.List;
@@ -110,6 +110,8 @@
public static final String PROPERTY_BATCH_ROOT = "batchRoot";
+ public static final String PROPERTY_SAMPLE_CATEGORY = "sampleCategory";
+
/**
* Species category.
*
@@ -153,6 +155,16 @@
protected final SampleCategory<Float> ageSampleCategory;
/**
+ * Sample category of this batch.
+ * <p/>
+ * This is one of the sample category befined above, used to know if the
+ * table row which sample category affects this row exactly.
+ *
+ * @since 0.3
+ */
+ private SampleCategory<?> sampleCategory;
+
+ /**
* Species observed.
*
* @since 0.2
@@ -232,10 +244,8 @@
protected List<SpeciesBatchRowModel> batchChild;
protected static final Binder<SpeciesBatch, SpeciesBatchRowModel> fromBeanBinder =
- BinderModelBuilder.
- newDefaultBuilder(SpeciesBatch.class,SpeciesBatchRowModel.class).
- addProperty(SpeciesBatch.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY).
- addProperty(SpeciesBatch.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY).toBinder();
+ BinderFactory.newBinder(SpeciesBatch.class,
+ SpeciesBatchRowModel.class);
protected static final Binder<SpeciesBatchRowModel, SpeciesBatch> toBeanBinder =
BinderFactory.newBinder(SpeciesBatchRowModel.class,
@@ -256,7 +266,6 @@
List<SpeciesBatchFrequency> frequencies) {
this();
fromBean(aBatch);
- setSpeciesCategory(aBatch.getSpecies());
List<SpeciesFrequencyRowModel> frequencyRows =
SpeciesFrequencyRowModel.fromBeans(frequencies);
frequency.addAll(frequencyRows);
@@ -264,6 +273,46 @@
}
//------------------------------------------------------------------------//
+ //-- Sample category --//
+ //------------------------------------------------------------------------//
+
+ public SampleCategory<?> getSampleCategory() {
+ return sampleCategory;
+ }
+
+ public void setSampleCategory(SampleCategory<?> sampleCategory) {
+ Object oldValue = getSampleCategory();
+ this.sampleCategory = sampleCategory;
+ firePropertyChange(PROPERTY_SAMPLE_CATEGORY, oldValue, sampleCategory);
+ }
+
+ public SampleCategory<?> getSampleCategory(SampleCategoryEnum sampleCategoryEnum) {
+ switch (sampleCategoryEnum) {
+
+ case species:
+ sampleCategory = getSpeciesSampleCategory();
+ break;
+ case sortedUnsorted:
+ sampleCategory = getSortedUnsortedSampleCategory();
+ break;
+ case size:
+ sampleCategory = getSizeSampleCategory();
+ break;
+ case sex:
+ sampleCategory = getSexSampleCategory();
+ break;
+ case maturity:
+ sampleCategory = getMaturitySampleCategory();
+ break;
+ case age:
+ sampleCategory = getAgeSampleCategory();
+ break;
+ default:
+ }
+ return sampleCategory;
+ }
+
+ //------------------------------------------------------------------------//
//-- Species category --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -24,7 +24,9 @@
* #L%
*/
+import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
@@ -48,63 +50,79 @@
public static <R> SampleColumnIdentifier<R> newId(String propertyName,
String weightPropertyName,
+ SampleCategoryType sampleCategoryType,
String headerI18nKey,
String headerTipI18nKey) {
return new SampleColumnIdentifier<R>(propertyName,
weightPropertyName,
+ sampleCategoryType,
headerI18nKey,
headerTipI18nKey);
}
+ private final SampleCategoryType sampleCategoryType;
+
private final String weightPropertyName;
protected SampleColumnIdentifier(String propertyName,
String weightPropertyName,
+ SampleCategoryType sampleCategoryType,
String headerI18nKey,
String headerTipI18nKey
) {
super(propertyName, headerI18nKey, headerTipI18nKey);
this.weightPropertyName = weightPropertyName;
+ this.sampleCategoryType = sampleCategoryType;
}
public void setWeightValue(R entry, Object value) {
TuttiUIUtil.setProperty(entry, weightPropertyName, value);
}
+
+ public SampleCategoryType getSampleCategoryType() {
+ return sampleCategoryType;
+ }
}
public static final ColumnIdentifier<SpeciesBatchRowModel> SPECIES_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_SPECIES_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY_WEIGHT,
+ SampleCategoryType.species,
n_("tutti.table.species.batch.header.speciesCategory"),
n_("tutti.table.species.batch.header.speciesCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SORTED_UNSORTED_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT,
+ SampleCategoryType.sortedUnsorted,
n_("tutti.table.species.batch.header.sortedUnsortedCategory"),
n_("tutti.table.species.batch.header.sortedUnsortedCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SIZE_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_SIZE_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY_WEIGHT,
+ SampleCategoryType.size,
n_("tutti.table.species.batch.header.sizeCategory"),
n_("tutti.table.species.batch.header.sizeCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> SEX_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_SEX_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY_WEIGHT,
+ SampleCategoryType.sex,
n_("tutti.table.species.batch.header.sexCategory"),
n_("tutti.table.species.batch.header.sexCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> MATURITY_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_MATURITY_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY_WEIGHT,
+ SampleCategoryType.maturity,
n_("tutti.table.species.batch.header.maturityCategory"),
n_("tutti.table.species.batch.header.maturityCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> AGE_CATEGORY = SampleColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_AGE_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY_WEIGHT,
+ SampleCategoryType.age,
n_("tutti.table.species.batch.header.ageCategory"),
n_("tutti.table.species.batch.header.ageCategory"));
@@ -143,18 +161,36 @@
n_("tutti.table.species.batch.header.toConfirm"),
n_("tutti.table.species.batch.header.toConfirm"));
- protected final Set<ColumnIdentifier<SpeciesBatchRowModel>> noneEditableColIfNoSpecies;
+ /**
+ * Columns for the frequency edition.
+ *
+ * @since 0.2
+ */
+ protected final Set<ColumnIdentifier<SpeciesBatchRowModel>> frequencyCols;
+ /**
+ * Columns implies in the sample category definition.
+ *
+ * @since 0.2
+ */
protected final Set<ColumnIdentifier<SpeciesBatchRowModel>> sampleCols;
- public SpeciesBatchTableModel(TableColumnModel columnModel) {
+ /**
+ * Mapping for each species of authroized sample category.
+ *
+ * @since 0.3
+ */
+ protected final Multimap<Species, SampleCategoryType> speciesSampleCategories;
+
+ public SpeciesBatchTableModel(TableColumnModel columnModel,
+ Multimap<Species, SampleCategoryType> speciesSampleCategories) {
super(columnModel, false, false);
-
+ this.speciesSampleCategories = speciesSampleCategories;
setNoneEditableCols();
- noneEditableColIfNoSpecies = Sets.newHashSet();
- noneEditableColIfNoSpecies.add(COMPUTED_NUMBER);
- noneEditableColIfNoSpecies.add(COMPUTED_WEIGHT);
+ frequencyCols = Sets.newHashSet();
+ frequencyCols.add(COMPUTED_NUMBER);
+ frequencyCols.add(COMPUTED_WEIGHT);
sampleCols = Sets.newHashSet();
sampleCols.add(SPECIES_CATEGORY);
@@ -216,17 +252,45 @@
propertyName);
if (result) {
- if (noneEditableColIfNoSpecies.contains(propertyName)) {
+ if (frequencyCols.contains(propertyName)) {
// must have filled a species to edit this column
SpeciesBatchRowModel entry = getEntry(rowIndex);
result = entry.isValid() && entry.isBatchLeaf();
+
} else if (sampleCols.contains(propertyName)) {
+ SampleColumnIdentifier<SpeciesBatchRowModel> samplePropertyName = (SampleColumnIdentifier<SpeciesBatchRowModel>) propertyName;
+
// can only edit if a category value is setted
SpeciesBatchRowModel entry = getEntry(rowIndex);
- SampleCategory<?> value = (SampleCategory<?>) propertyName.getValue(entry);
- result = value.getCategoryValue() != null;
+
+ // check from protocol what is possible ?
+ Species species = entry.getSpeciesCategory();
+
+ if (species == null) {
+
+ // no species, can not edit
+ result = false;
+ } else {
+
+ // Is protocol authorize it ?
+
+ result = speciesSampleCategories.containsEntry(
+ species,
+ samplePropertyName.getSampleCategoryType());
+
+ if (result) {
+
+ // protocol authorize it
+
+ // final test: can edit only if sample category is setted
+ SampleCategory<?> value =
+ (SampleCategory<?>) propertyName.getValue(entry);
+
+ result = value.getCategoryValue() != null;
+ }
+ }
}
}
return result;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -25,7 +25,9 @@
*/
import com.google.common.base.Preconditions;
+import com.google.common.collect.HashMultimap;
import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -85,12 +87,19 @@
SpeciesBatchRowModel.PROPERTY_WEIGHT);
public static final Set<String> SAMPLING_PROPERTIES = Sets.newHashSet(
+ SpeciesBatchRowModel.PROPERTY_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY,
SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY,
- SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY);
+ SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY_WEIGHT,
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT,
+ SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY_WEIGHT,
+ SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY_WEIGHT,
+ SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY_WEIGHT,
+ SpeciesBatchRowModel.PROPERTY_AGE_CATEGORY_WEIGHT);
/**
* UI.
@@ -159,15 +168,21 @@
Set<Species> speciesUsed = Sets.newHashSet();
+ // get all batch species root (says the one with only a species sample category)
List<SpeciesBatch> catches =
- persistenceService.getAllSpeciesBatch(bean.getId());
+ persistenceService.getAllRootSpeciesBatch(bean.getId());
+
for (SpeciesBatch aBatch : catches) {
- List<SpeciesBatchFrequency> frequencies =
- persistenceService.getAllSpeciesBatchFrequency(aBatch.getId());
- SpeciesBatchRowModel entry =
- new SpeciesBatchRowModel(aBatch, frequencies);
- rows.add(entry);
- speciesUsed.add(entry.getSpeciesCategory());
+
+ // root batch sample categroy is species
+ Preconditions.checkState(
+ aBatch.getSampleCategoryType() == SampleCategoryEnum.species,
+ "Root species batch must be a species sample " +
+ "category but was:" + aBatch.getSampleCategoryType());
+
+ SpeciesBatchRowModel rootRow =
+ loadSpeciesBatch(aBatch, null, rows);
+ speciesUsed.add(rootRow.getSpeciesCategory());
}
availableSpecies.removeAll(speciesUsed);
}
@@ -343,7 +358,11 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
+ Multimap<Species, SampleCategoryType> speciesSampleCategories =
+ HashMultimap.create();
+
if (protocol != null) {
+
// fill sampling order from protocol
List<SampleCategoryEnum> sampleCategoryOrder =
@@ -364,6 +383,23 @@
Species species = persistenceService.getSpecies(
protocolSpecy.getSpeciesId());
allSpecies.add(species);
+ speciesSampleCategories.put(species,SampleCategoryType.species);
+
+ if (protocolSpecy.isSortedUnsortedEnabled()) {
+ speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
+ }
+ if (protocolSpecy.isSizeEnabled()) {
+ speciesSampleCategories.put(species, SampleCategoryType.size);
+ }
+ if (protocolSpecy.isSexEnabled()) {
+ speciesSampleCategories.put(species, SampleCategoryType.sex);
+ }
+ if (protocolSpecy.isMaturityEnabled()) {
+ speciesSampleCategories.put(species, SampleCategoryType.maturity);
+ }
+ if (protocolSpecy.isAgeEnabled()) {
+ speciesSampleCategories.put(species, SampleCategoryType.age);
+ }
}
} else {
@@ -378,6 +414,16 @@
allSpecies = Lists.newArrayList(
persistenceService.getAllSpecies());
+
+ // each species can use any category
+ for (Species species : allSpecies) {
+ speciesSampleCategories.put(species,SampleCategoryType.species);
+ speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
+ speciesSampleCategories.put(species, SampleCategoryType.size);
+ speciesSampleCategories.put(species, SampleCategoryType.sex);
+ speciesSampleCategories.put(species, SampleCategoryType.maturity);
+ speciesSampleCategories.put(species, SampleCategoryType.age);
+ }
}
if (log.isInfoEnabled()) {
@@ -498,7 +544,7 @@
// create table model
SpeciesBatchTableModel tableModel =
- new SpeciesBatchTableModel(columnModel);
+ new SpeciesBatchTableModel(columnModel, speciesSampleCategories);
table.setModel(tableModel);
table.setColumnModel(columnModel);
@@ -553,6 +599,7 @@
SpeciesBatchRowModel newRow = tableModel.createNewRow();
newRow.setSpeciesCategory(createModel.getSpecies());
newRow.setSpeciesCategoryWeight(createModel.getBatchWeight());
+ newRow.setSampleCategory(newRow.getSpeciesSampleCategory());
recomputeRowValidState(newRow);
@@ -586,7 +633,7 @@
SpeciesBatchRowModel parentBatch = tableModel.getEntry(rowIndex);
if (log.isInfoEnabled()) {
- log.info("Open split batch ui for row [" + rowIndex + "]");
+ log.info("Open split batch ui for row [" + rowIndex + ']');
}
SplitSpeciesBatchUI splitBatchEditor = getSplitSpeciesBatchEditor();
splitBatchEditor.getHandler().editBatch(parentBatch);
@@ -606,7 +653,9 @@
int insertRow = rowIndex;
SampleCategoryType selectedCategory = splitModel.getSelectedCategory();
+ SampleCategoryEnum sampleCategoryEnum = selectedCategory.getType();
+
// Create rows in batch table model
List<SpeciesBatchRowModel> newBatches = Lists.newArrayList();
@@ -615,43 +664,13 @@
// can keep this row
SpeciesBatchRowModel newBatch = tableModel.createNewRow();
- newBatch.setSpeciesCategory(parentBatch.getSpeciesCategory());
- newBatch.setSpeciesToConfirm(parentBatch.getSpeciesToConfirm());
- if (selectedCategory == SampleCategoryType.sortedUnsorted) {
- newBatch.setSortedUnsortedCategory((CaracteristicQualitativeValue) row.getCategoryValue());
- newBatch.setSortedUnsortedCategoryWeight(row.getWeight());
- } else {
- newBatch.setSortedUnsortedCategory(parentBatch.getSortedUnsortedCategory());
- newBatch.setSortedUnsortedCategoryWeight(parentBatch.getSortedUnsortedCategoryWeight());
- }
- if (selectedCategory == SampleCategoryType.size) {
- newBatch.setSizeCategory((CaracteristicQualitativeValue) row.getCategoryValue());
- newBatch.setSizeCategoryWeight(row.getWeight());
- } else {
- newBatch.setSizeCategory(parentBatch.getSizeCategory());
- newBatch.setSizeCategoryWeight(parentBatch.getSizeCategoryWeight());
- }
- if (selectedCategory == SampleCategoryType.sex) {
- newBatch.setSexCategory((CaracteristicQualitativeValue) row.getCategoryValue());
- newBatch.setSexCategoryWeight(row.getWeight());
- } else {
- newBatch.setSexCategory(parentBatch.getSexCategory());
- newBatch.setSexCategoryWeight(parentBatch.getSexCategoryWeight());
- }
- if (selectedCategory == SampleCategoryType.maturity) {
- newBatch.setMaturityCategory((CaracteristicQualitativeValue) row.getCategoryValue());
- newBatch.setMaturityCategoryWeight(row.getWeight());
- } else {
- newBatch.setMaturityCategory(parentBatch.getMaturityCategory());
- newBatch.setMaturityCategoryWeight(parentBatch.getMaturityCategoryWeight());
- }
- if (selectedCategory == SampleCategoryType.age) {
- newBatch.setAgeCategory((Float) row.getCategoryValue());
- newBatch.setAgeCategoryWeight(row.getWeight());
- } else {
- newBatch.setAgeCategory(parentBatch.getAgeCategory());
- newBatch.setAgeCategoryWeight(parentBatch.getAgeCategoryWeight());
- }
+
+ loadBatchRow(parentBatch,
+ newBatch,
+ sampleCategoryEnum,
+ row.getCategoryValue(),
+ row.getWeight());
+
tableModel.addNewRow(++insertRow, newBatch);
boolean rowValid = isRowValid(newBatch);
newBatch.setValid(rowValid);
@@ -659,6 +678,7 @@
newBatches.add(newBatch);
}
}
+
// add new batches to his parent
parentBatch.setChilds(newBatches);
@@ -907,47 +927,121 @@
columnIdentifier);
}
- // protected void recomputeSuperSamplingRatio(SpeciesBatchTreeModel samplingTreeModel,
-// SpeciesBatchTreeNode node) {
+ protected SpeciesBatchRowModel loadSpeciesBatch(SpeciesBatch aBatch,
+ SpeciesBatchRowModel parentRow,
+ List<SpeciesBatchRowModel> rows) {
+
+ List<SpeciesBatchFrequency> frequencies =
+ persistenceService.getAllSpeciesBatchFrequency(aBatch.getId());
+
+ SpeciesBatchRowModel newRow =
+ new SpeciesBatchRowModel(aBatch, frequencies);
+
+ SampleCategoryEnum sampleCategoryEnum =
+ aBatch.getSampleCategoryType();
+
+ Preconditions.checkNotNull(
+ sampleCategoryEnum,
+ "Can't have a batch with no sample category, but was: " + aBatch);
+
+ loadBatchRow(parentRow, newRow,
+ sampleCategoryEnum,
+ aBatch.getSampleCategoryValue(),
+ aBatch.getSampleCategoryWeight());
+
+// SampleCategory sampleCategory =
+// newRow.getSampleCategory(sampleCategoryEnum);
//
-// SpeciesBatchTreeNode superSamplingNode = node.getParent();
+// // set sample category data from batch
+// sampleCategory.setCategoryValue(aBatch.getSampleCategoryValue());
+// sampleCategory.setCategoryWeight(aBatch.getSampleCategoryWeight());
+// newRow.setSampleCategory(sampleCategory);
//
-// Preconditions.checkNotNull(superSamplingNode,
-// "Super sampling node can't be null");
+// if (parentRow != null) {
//
-// SpeciesBatchTreeModel.SamplingContext samplingContext =
-// samplingTreeModel.createSamplingContext(superSamplingNode);
+// // copy back parent data (mainly other sample categories
//
-// float samplingTotalWeight = samplingContext.getTotalWeight();
-// Float superSamplingTotalWeight;
-// SpeciesBatchRowModel superSamplingRow =
-// samplingContext.getSuperSamplingRow();
-// if (superSamplingRow == null) {
-//
-// // Use directly the batch total weight (means no super-sampling)
-//
-// superSamplingTotalWeight = getModel().getSpeciesTotalWeight();
-// } else {
-// superSamplingTotalWeight = superSamplingRow.getWeight();
+// newRow.setBatchParent(parentRow);
+// if (sampleCategoryEnum != SampleCategoryEnum.species) {
+// newRow.setSpeciesCategory(parentRow.getSpeciesCategory());
+// }
+// if (sampleCategoryEnum != SampleCategoryEnum.sortedUnsorted) {
+// newRow.setSortedUnsortedCategory(parentRow.getSortedUnsortedCategory());
+// }
+// if (sampleCategoryEnum != SampleCategoryEnum.size) {
+// newRow.setSizeCategory(parentRow.getSizeCategory());
+// }
+// if (sampleCategoryEnum != SampleCategoryEnum.sex) {
+// newRow.setSexCategory(parentRow.getSexCategory());
+// }
+// if (sampleCategoryEnum != SampleCategoryEnum.maturity) {
+// newRow.setMaturityCategory(parentRow.getMaturityCategory());
+// }
+// if (sampleCategoryEnum != SampleCategoryEnum.age) {
+// newRow.setAgeCategory(parentRow.getAgeCategory());
+// }
// }
-//
-// if (log.isInfoEnabled()) {
-// log.info("Super sampling total weight: " +
-// superSamplingTotalWeight);
-// }
-//
-// Float samplingRatio = null;
-// if (superSamplingTotalWeight != null) {
-// samplingRatio = samplingTotalWeight / superSamplingTotalWeight;
-// }
-//
-// if (log.isInfoEnabled()) {
-// log.info("Sampling ratio: " + samplingRatio);
-// }
-//
-// samplingContext.applyNewSampleValues(samplingTotalWeight,
-// samplingRatio);
-//
-// getTableModel().updateSamplingRatio(samplingContext.getSamplingRows());
-// }
+
+ rows.add(newRow);
+
+ if (!aBatch.isChildBatchsEmpty()) {
+
+ // create batch childs rows
+
+ for (SpeciesBatch childBatch : aBatch.getChildBatchs()) {
+ SpeciesBatchRowModel childRow = loadSpeciesBatch(childBatch, newRow, rows);
+ childRow.setBatchParent(newRow);
+ }
+ }
+
+ return newRow;
+ }
+
+ protected void loadBatchRow(SpeciesBatchRowModel parentRow,
+ SpeciesBatchRowModel newRow,
+ SampleCategoryEnum sampleCategoryEnum,
+ Serializable categoryValue,
+ Float categoryWeight) {
+
+ // get sample category from his type
+ SampleCategory sampleCategory =
+ newRow.getSampleCategory(sampleCategoryEnum);
+
+ // fill it
+ sampleCategory.setCategoryValue(categoryValue);
+ sampleCategory.setCategoryWeight(categoryWeight);
+
+ // push it back to row as his *main* sample category
+ newRow.setSampleCategory(sampleCategory);
+
+ if (parentRow != null) {
+
+ // copy back parent data (mainly other sample categories)
+
+ newRow.setSpeciesToConfirm(parentRow.getSpeciesToConfirm());
+
+ newRow.setBatchParent(parentRow);
+ if (sampleCategoryEnum != SampleCategoryEnum.species) {
+ newRow.setSpeciesCategory(parentRow.getSpeciesCategory());
+ }
+ if (sampleCategoryEnum != SampleCategoryEnum.sortedUnsorted) {
+ newRow.setSortedUnsortedCategory(parentRow.getSortedUnsortedCategory());
+ }
+ if (sampleCategoryEnum != SampleCategoryEnum.size) {
+ newRow.setSizeCategory(parentRow.getSizeCategory());
+ }
+ if (sampleCategoryEnum != SampleCategoryEnum.sex) {
+ newRow.setSexCategory(parentRow.getSexCategory());
+ }
+ if (sampleCategoryEnum != SampleCategoryEnum.maturity) {
+ newRow.setMaturityCategory(parentRow.getMaturityCategory());
+ }
+ if (sampleCategoryEnum != SampleCategoryEnum.age) {
+ newRow.setAgeCategory(parentRow.getAgeCategory());
+ }
+ }
+
+
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -100,20 +100,12 @@
*/
protected boolean removeSpeciesSubBatchEnabled;
- /**
- * Tree of sampling for batch rows.
- *
- * @since 0.2
- */
- protected final SpeciesBatchTreeModel samplingTreeModel;
-
public SpeciesBatchUIModel(EditCatchesUIModel catchesUIModel) {
super(catchesUIModel,
EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_WEIGHT,
EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT,
EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT,
EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT);
- this.samplingTreeModel = new SpeciesBatchTreeModel();
}
public Float getSpeciesTotalWeight() {
@@ -148,10 +140,6 @@
catchesUIModel.setSpeciesTotalUnsortedWeight(speciesTotalUnsortedWeight);
}
- public SpeciesBatchTreeModel getSamplingTreeModel() {
- return samplingTreeModel;
- }
-
public List<SampleCategoryType> getSamplingOrder() {
return samplingOrder;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.ezware.oxbow.swingbits.util.Preconditions;
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
@@ -158,7 +159,6 @@
SplitSpeciesBatchUIModel model = getModel();
- //TODO Use protocol to have lengthStepCaracteristic to use (if any protocol)
initBeanComboBox(ui.getCategoryComboBox(),
Lists.<SampleCategoryType>newArrayList(),
model.getSelectedCategory());
@@ -249,51 +249,36 @@
List<SampleCategoryType> categories =
Lists.newArrayList(SampleCategoryType.values());
- Float batchWeight = null;
-
if (batch != null) {
- //TODO Use the samplingOrder
+ //TODO Use the samplingOrder (+ the one from the table model)
List<SampleCategoryType> samplingOrder =
parentUi.getModel().getSamplingOrder();
- SampleCategory<?> lastCategory = null;
+ SampleCategory<?> lastCategory = batch.getSampleCategory();
+ Preconditions.checkNotNull(
+ lastCategory,
+ "Can't split a species batch with no sample category.");
+
if (batch.getSortedUnsortedSampleCategory().isValid()) {
categories.remove(SampleCategoryType.sortedUnsorted);
- lastCategory = batch.getSortedUnsortedSampleCategory();
}
if (batch.getSizeSampleCategory().isValid()) {
categories.remove(SampleCategoryType.size);
- lastCategory = batch.getSizeSampleCategory();
}
if (batch.getSexSampleCategory().isValid()) {
categories.remove(SampleCategoryType.sex);
- lastCategory = batch.getSexSampleCategory();
}
if (batch.getMaturitySampleCategory().isValid()) {
categories.remove(SampleCategoryType.maturity);
- lastCategory = batch.getMaturitySampleCategory();
}
if (batch.getAgeSampleCategory().isValid()) {
categories.remove(SampleCategoryType.age);
- lastCategory = batch.getAgeSampleCategory();
}
-
-
- if (lastCategory == null) {
-
- // no category, then must only come from the weight
- batchWeight = batch.getWeight();
-
- } else {
-
- // use last category weight
- batchWeight = lastCategory.getCategoryWeight();
- }
}
SplitSpeciesBatchUIModel model = getModel();
@@ -303,7 +288,6 @@
model.setSampleWeight(null);
model.setCategory(categories);
- model.setBatchWeight(batchWeight);
// keep batch (will be used to push back editing entry)
model.setBatch(batch);
@@ -433,7 +417,7 @@
if (log.isDebugEnabled()) {
log.debug("Will add " + rows.size() + " rows in table model " +
- "(can add a first empty row? " + editableCategoryValue + ").");
+ "(can add a first empty row? " + editableCategoryValue + ").");
}
getModel().setRows(rows);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-01-02 14:22:01 UTC (rev 144)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-01-02 18:17:45 UTC (rev 145)
@@ -83,13 +83,6 @@
protected boolean sample;
/**
- * Incoming batch weight to split.
- *
- * @since 0.3
- */
- protected Float batchWeight;
-
- /**
* Sample weight of split batches.
*
* @since 0.3
@@ -106,8 +99,11 @@
public void setBatch(SpeciesBatchRowModel batch) {
Object oldSpecies = getSpecies();
+ Object oldWeight = getBatchWeight();
+
this.batch = batch;
firePropertyChange(PROPERTY_SPECIES, oldSpecies, getSpecies());
+ firePropertyChange(PROPERTY_BATCH_WEIGHT, oldWeight, getBatchWeight());
}
public Species getSpecies() {
@@ -145,15 +141,9 @@
}
public Float getBatchWeight() {
- return batchWeight;
+ return batch == null ? null : batch.getSampleCategory().getCategoryWeight();
}
- public void setBatchWeight(Float batchWeight) {
- Object oldValue = getBatchWeight();
- this.batchWeight = batchWeight;
- firePropertyChange(PROPERTY_BATCH_WEIGHT, oldValue, batchWeight);
- }
-
public Float getSampleWeight() {
return sampleWeight;
}
1
0
r144 - in trunk: . tutti-persistence tutti-persistence-dev tutti-service tutti-service/src/main/resources/i18n tutti-ui-swing tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species tutti-ui-swing/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 02 Jan '13
by tchemit@users.forge.codelutin.com 02 Jan '13
02 Jan '13
Author: tchemit
Date: 2013-01-02 15:22:01 +0100 (Wed, 02 Jan 2013)
New Revision: 144
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/144
Log:
put protocol in jaxx context + add license on pom + optimize i18n
Modified:
trunk/pom.xml
trunk/tutti-persistence-dev/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
@@ -1,4 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ 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%
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -460,6 +482,41 @@
<profiles>
<profile>
+ <id>license-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+
+ <build>
+ <defaultGoal>generate-resources</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>license-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>update-file-header-on-pom</id>
+ <goals>
+ <goal>update-file-header</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <roots><root>${project.basedir}</root></roots>
+ <includes><include>pom.xml</include></includes>
+ <addSvnKeyWords>false</addSvnKeyWords>
+ <verbose>false</verbose>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
<id>reporting</id>
<activation>
<property>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-persistence/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
@@ -1,4 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: Persistence API
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ 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%
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
Modified: trunk/tutti-persistence-dev/pom.xml
===================================================================
--- trunk/tutti-persistence-dev/pom.xml 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-persistence-dev/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
@@ -1,4 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: Persistence Dev (impl)
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ 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%
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-service/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
@@ -1,4 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: Service
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ 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%
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-01-02 14:22:01 UTC (rev 144)
@@ -4,7 +4,6 @@
tutti.config.license.organizationName=Nom de l'organisation dans la licence
tutti.config.tmp.directory=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application)
tutti.property.attachment=Pièce jointe
-tutti.property.beaufortScale=Vent beaufort
tutti.property.codeMemo=Code Memo
tutti.property.country=Pays
tutti.property.cruise=Campagne
@@ -18,7 +17,6 @@
tutti.property.name=Nom
tutti.property.program=Série de campagne
tutti.property.protocol=Protocol de saisie
-tutti.property.seaState=État de la mer
tutti.property.sortedUnsortedCategory=Vrac / Hors Vrac
tutti.property.species=Espèce
tutti.property.stationNumber=Numéro de station
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-ui-swing/pom.xml 2013-01-02 14:22:01 UTC (rev 144)
@@ -1,4 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: UI
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ 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%
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -129,8 +151,7 @@
<configuration>
<licenseMerges>
<licenseMerge>
- The Apache Software License, Version 2.0|Apache License,
- Version 2.0
+ The Apache Software License, Version 2.0|Apache License, Version 2.0
</licenseMerge>
<licenseMerge>BSD License|BSD</licenseMerge>
</licenseMerges>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-02 14:22:01 UTC (rev 144)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
@@ -82,6 +83,23 @@
Cruise cruise = persistenceService.getCruise(cruiseId);
model.setCruise(cruise);
+ if (getContext().isProtocolFilled()) {
+
+ // load existing protocol
+
+ TuttiProtocol protocol =
+ persistenceService.getProtocol(getContext().getProtocolId());
+
+ if (log.isInfoEnabled()) {
+ log.info("Loading existing protocol: " + protocol);
+ }
+ ui.setContextValue(protocol);
+ } else {
+
+ // remove any previous existing protocol
+ ui.removeContextValue(TuttiProtocol.class);
+ }
+
List<FishingOperation> fishingOperations =
persistenceService.getAllFishingOperation(cruiseId);
model.setFishingOperation(fishingOperations);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-01-02 14:22:01 UTC (rev 144)
@@ -35,6 +35,7 @@
import org.apache.commons.collections.CollectionUtils;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import org.nuiton.util.beans.BinderModelBuilder;
import java.util.Collections;
import java.util.List;
@@ -231,8 +232,10 @@
protected List<SpeciesBatchRowModel> batchChild;
protected static final Binder<SpeciesBatch, SpeciesBatchRowModel> fromBeanBinder =
- BinderFactory.newBinder(SpeciesBatch.class,
- SpeciesBatchRowModel.class);
+ BinderModelBuilder.
+ newDefaultBuilder(SpeciesBatch.class,SpeciesBatchRowModel.class).
+ addProperty(SpeciesBatch.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY).
+ addProperty(SpeciesBatch.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SPECIES_CATEGORY).toBinder();
protected static final Binder<SpeciesBatchRowModel, SpeciesBatch> toBeanBinder =
BinderFactory.newBinder(SpeciesBatchRowModel.class,
@@ -253,6 +256,7 @@
List<SpeciesBatchFrequency> frequencies) {
this();
fromBean(aBatch);
+ setSpeciesCategory(aBatch.getSpecies());
List<SpeciesFrequencyRowModel> frequencyRows =
SpeciesFrequencyRowModel.fromBeans(frequencies);
frequency.addAll(frequencyRows);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 14:22:01 UTC (rev 144)
@@ -61,11 +61,8 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
-import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
-import java.awt.Point;
-import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
@@ -344,13 +341,9 @@
List<Species> allSpecies;
- if (getContext().isProtocolFilled()) {
+ TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
- // there is a protocol
-
- TuttiProtocol protocol =
- persistenceService.getProtocol(getContext().getProtocolId());
-
+ if (protocol != null) {
// fill sampling order from protocol
List<SampleCategoryEnum> sampleCategoryOrder =
@@ -372,8 +365,8 @@
protocolSpecy.getSpeciesId());
allSpecies.add(species);
}
-
} else {
+
// no protocol, use default values
samplingOrder = Lists.newArrayList(
@@ -409,11 +402,9 @@
{ // SpeciesCategory column
- Decorator<Species> decorator = getDecorator(Species.class, null);
-
addSampleCategoryColumnToModel(columnModel,
SpeciesBatchTableModel.SPECIES_CATEGORY,
- caracteristicDecorator,
+ getDecorator(Species.class, null),
defaultRenderer);
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 13:44:15 UTC (rev 143)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 14:22:01 UTC (rev 144)
@@ -22,7 +22,6 @@
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
-tutti.action.reload.home=Reload home screen
tutti.action.reload.ui=Recharger l'interface graphique
tutti.action.removeSpecies=Supprimer l'espèce
tutti.action.removeSpeciesSubBatch=Supprimer les lots
@@ -39,8 +38,6 @@
tutti.config.category.applications.description=Application
tutti.config.category.colors=Couleurs
tutti.config.category.colors.description=Couleurs utilisées dans les interfaces graphiques
-tutti.config.category.other=Autres
-tutti.config.category.other.description=Autres options
tutti.config.category.shortcuts=Raccourcis
tutti.config.category.shortcuts.description=Liste des raccourcis clavier
tutti.config.cruiseId=Identifiant de la dernière campagne utilisée
@@ -215,7 +212,6 @@
tutti.table.protocol.species.header.size=Catégorie Tri
tutti.table.protocol.species.header.sortedUnsorted=Vrac / Hors Vrac
tutti.table.protocol.species.header.speciesId=Espèce
-tutti.table.species.batch.header.age=Age
tutti.table.species.batch.header.ageCategory=Age
tutti.table.species.batch.header.comment=Commentaire
tutti.table.species.batch.header.computedNumber=Nombre calculé
@@ -224,11 +220,9 @@
tutti.table.species.batch.header.maturityCategory=Maturité
tutti.table.species.batch.header.number=Nombre
tutti.table.species.batch.header.sexCategory=Sexe
-tutti.table.species.batch.header.sizeCategory=Catégorie Taille
-tutti.table.species.batch.header.sortedUnsortedCategory=Vrac / Hors Vrac
-tutti.table.species.batch.header.speciesByCode=Espèce
-tutti.table.species.batch.header.speciesByGenusCode=Espèce
-tutti.table.species.batch.header.speciesCategory=
+tutti.table.species.batch.header.sizeCategory=Class. Tri
+tutti.table.species.batch.header.sortedUnsortedCategory=V/HV
+tutti.table.species.batch.header.speciesCategory=Espèce
tutti.table.species.batch.header.toConfirm=A Confirmer
tutti.table.species.batch.header.weight=Poids
tutti.table.species.frequency.header.computedWeight=Poids calculé
@@ -239,7 +233,6 @@
tutti.table.species.sampleCategory.header.weight=Poids
tutti.timeeditor.H=H
tutti.title.about=À propos de Tutti
-tutti.title.batchActions=Actions possibles
tutti.title.create.cruise=Créer une nouvelle campagne
tutti.title.create.program=Créer une nouvelle série de campagne
tutti.title.create.protocol=Créer un nouveau protocol de saisie
1
0
r143 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches/species java/fr/ifremer/tutti/ui/swing/content/protocol java/fr/ifremer/tutti/ui/swing/util/table resources/i18n
by kmorin@users.forge.codelutin.com 02 Jan '13
by kmorin@users.forge.codelutin.com 02 Jan '13
02 Jan '13
Author: kmorin
Date: 2013-01-02 14:44:15 +0100 (Wed, 02 Jan 2013)
New Revision: 143
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/143
Log:
refs #1810: [PROTOCOLE] Ecran de saisie
possibilit?\195?\169 de supprimer des lignes dans la table d'especes
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-02 13:44:15 UTC (rev 143)
@@ -145,7 +145,7 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'
- onMouseClicked='handler.autoSelectRowInTable(event)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:44:15 UTC (rev 143)
@@ -541,39 +541,6 @@
//-- Public methods --//
//------------------------------------------------------------------------//
- public void autoSelectRowInTable(MouseEvent e) {
-
- boolean rightClick = SwingUtilities.isRightMouseButton(e);
-
- if (rightClick || SwingUtilities.isLeftMouseButton(e)) {
-
- // get the coordinates of the mouse click
- Point p = e.getPoint();
-
- JXTable source = (JXTable) e.getSource();
-
- // get the row index at this point
- int rowIndex = source.rowAtPoint(p);
-
- if (log.isDebugEnabled()) {
- log.debug("At point [" + p + "] found Row " + rowIndex);
- }
-
- // select row (could empty selection)
- if (rowIndex == -1) {
- source.clearSelection();
- } else {
- source.setRowSelectionInterval(rowIndex, rowIndex);
- }
-
- if (rightClick) {
-
- // on right click show popup
- ui.getTablePopup().show(source, e.getX(), e.getY());
- }
- }
- }
-
public void createSpeciesBatch() {
CreateSpeciesBatchUI createBatchEditor =
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-02 13:44:15 UTC (rev 143)
@@ -95,6 +95,17 @@
enabled: {speciesComboBox.getSelectedItem() != null};
}
+#tablePopup {
+ label: "tutti.title.batchActions";
+}
+
+#removeSpeciesMenu {
+ text: "tutti.action.removeSpecies";
+ mnemonic: R;
+ actionIcon: batch-delete;
+ enabled: {model.isRemoveSpeciesEnabled()};
+}
+
#speciesTable {
selectionMode: {ListSelectionModel.SINGLE_SELECTION};
selectionBackground: {null};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-02 13:44:15 UTC (rev 143)
@@ -73,6 +73,11 @@
<field name='comment' component='commentField'/>
</BeanValidator>
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeSpeciesMenu'
+ onActionPerformed='handler.removeSpecies()'/>
+ </JPopupMenu>
+
<JSplitPane id='splitPane' constraints='BorderLayout.CENTER'>
<JPanel layout='{new BorderLayout()}'>
@@ -118,7 +123,7 @@
<row fill='both' weighty='1'>
<cell fill='both' columns='2'>
<JScrollPane>
- <JXTable id='speciesTable'/>
+ <JXTable id='speciesTable' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 13:44:15 UTC (rev 143)
@@ -24,11 +24,13 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
@@ -44,6 +46,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableColumnModelEvent;
@@ -351,6 +354,16 @@
log.info("closing: " + ui);
}
}
+
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ EditProtocolSpeciesRowModel oldRow,
+ int newRowIndex,
+ EditProtocolSpeciesRowModel newRow) {
+
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ getModel().setRemoveSpeciesEnabled(newRow != null);
+ }
//------------------------------------------------------------------------//
//-- Public methods --//
@@ -422,7 +435,21 @@
selectFirstInCombo(ui.getSpeciesComboBox());
// getModel().setModify(true);
}
+
+ public void removeSpecies() {
+ //TODO
+ int rowIndex = getTable().getSelectedRow();
+ Preconditions.checkState(rowIndex != -1,
+ "Cant remove sub batch if no batch selected");
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-02 13:44:15 UTC (rev 143)
@@ -56,6 +56,8 @@
public static final String PROPERTY_SPECIES = "species";
public static final String PROPERTY_SAMPLE_CATEGORY_ORDER = "sampleCategoryOrder";
+
+ public static final String PROPERTY_REMOVE_SPECIES_ENABLED = "removeSpeciesEnabled";
protected String name;
@@ -75,6 +77,13 @@
SampleCategoryEnum.sex,
SampleCategoryEnum.maturity,
SampleCategoryEnum.age);
+
+ /**
+ * Can user remove a selected species?
+ *
+ * @since 0.3
+ */
+ protected boolean removeSpeciesEnabled;
protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder =
BinderFactory.newBinder(EditProtocolUIModel.class,
@@ -161,16 +170,6 @@
setHydrologyPmfmId(ids);
}
-// public List<SpeciesProtocol> getSpecies() {
-// return species;
-// }
-//
-// public void setSpecies(List<SpeciesProtocol> species) {
-// Object oldValue = getSpecies();
-// this.species = species;
-// firePropertyChange(PROPERTY_SPECIES, oldValue, species);
-// }
-
public List<SampleCategoryEnum> getSampleCategoryOrder() {
return sampleCategoryOrder;
}
@@ -180,4 +179,14 @@
this.sampleCategoryOrder = sampleCategoryOrder;
firePropertyChange(PROPERTY_SAMPLE_CATEGORY_ORDER, oldValue, sampleCategoryOrder);
}
+
+ public boolean isRemoveSpeciesEnabled() {
+ return removeSpeciesEnabled;
+ }
+
+ public void setRemoveSpeciesEnabled(boolean removeSpeciesEnabled) {
+ Object oldValue = isRemoveSpeciesEnabled();
+ this.removeSpeciesEnabled = removeSpeciesEnabled;
+ firePropertyChange(PROPERTY_REMOVE_SPECIES_ENABLED, oldValue, removeSpeciesEnabled);
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-02 13:44:15 UTC (rev 143)
@@ -63,13 +63,17 @@
import javax.swing.table.TableColumnModel;
import java.awt.Color;
import java.awt.Component;
+import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
import static org.nuiton.i18n.I18n._;
@@ -614,4 +618,41 @@
// apply it to row
row.setValid(valid);
}
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) {
+
+ boolean rightClick = SwingUtilities.isRightMouseButton(e);
+
+ if (rightClick || SwingUtilities.isLeftMouseButton(e)) {
+
+ // get the coordinates of the mouse click
+ Point p = e.getPoint();
+
+ JXTable source = (JXTable) e.getSource();
+
+ // get the row index at this point
+ int rowIndex = source.rowAtPoint(p);
+
+ if (log.isDebugEnabled()) {
+ log.debug("At point [" + p + "] found Row " + rowIndex);
+ }
+
+ // select row (could empty selection)
+ if (rowIndex == -1) {
+ source.clearSelection();
+ } else {
+ source.setRowSelectionInterval(rowIndex, rowIndex);
+ }
+
+ if (rightClick) {
+
+ // on right click show popup
+ popup.show(source, e.getX(), e.getY());
+ }
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 13:35:50 UTC (rev 142)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 13:44:15 UTC (rev 143)
@@ -24,6 +24,7 @@
tutti.action.reload.application=Recharger l'application
tutti.action.reload.home=Reload home screen
tutti.action.reload.ui=Recharger l'interface graphique
+tutti.action.removeSpecies=Supprimer l'espèce
tutti.action.removeSpeciesSubBatch=Supprimer les lots
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
1
0
r142 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species
by tchemit@users.forge.codelutin.com 02 Jan '13
by tchemit@users.forge.codelutin.com 02 Jan '13
02 Jan '13
Author: tchemit
Date: 2013-01-02 14:35:50 +0100 (Wed, 02 Jan 2013)
New Revision: 142
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/142
Log:
fix species category
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 10:58:52 UTC (rev 141)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:35:50 UTC (rev 142)
@@ -38,7 +38,6 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
@@ -595,7 +594,7 @@
SpeciesBatchRowModel newRow = tableModel.createNewRow();
newRow.setSpeciesCategory(createModel.getSpecies());
- newRow.setSexCategoryWeight(createModel.getBatchWeight());
+ newRow.setSpeciesCategoryWeight(createModel.getBatchWeight());
recomputeRowValidState(newRow);
1
0