Echobase-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
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
September 2012
- 3 participants
- 127 discussions
r685 - in trunk/echobase-services/src/main/java/fr/ifremer/echobase/services: importdata removedata
by tchemit@users.forge.codelutin.com 22 Sep '12
by tchemit@users.forge.codelutin.com 22 Sep '12
22 Sep '12
Author: tchemit
Date: 2012-09-22 14:28:11 +0200 (Sat, 22 Sep 2012)
New Revision: 685
Url: http://forge.codelutin.com/repositories/revision/echobase/685
Log:
improve remove import logs
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-09-22 12:27:48 UTC (rev 684)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-09-22 12:28:11 UTC (rev 685)
@@ -190,15 +190,8 @@
String importType = getImportLabel(configuration);
- StringBuilder buffer = new StringBuilder();
+ String result = importLog.getImportText();
- buffer.append(importType);
- buffer.append('\n').append(importLog.getImportText());
-
- String result = buffer.toString();
-
- importLog.setImportText(result);
-
create(getDAO(EntityModificationLog.class),
EntityModificationLog.PROPERTY_ENTITY_TYPE, "Import",
EntityModificationLog.PROPERTY_ENTITY_ID, importType,
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-22 12:27:48 UTC (rev 684)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-22 12:28:11 UTC (rev 685)
@@ -280,7 +280,7 @@
}
create(getDAO(EntityModificationLog.class),
EntityModificationLog.PROPERTY_ENTITY_TYPE, "Removed Import",
- EntityModificationLog.PROPERTY_ENTITY_ID, decorator.toString(importLog),
+ EntityModificationLog.PROPERTY_ENTITY_ID, importLog.getTopiaId(),
EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
EntityModificationLog.PROPERTY_MODIFICATION_TEXT, result
1
0
r684 - in trunk/echobase-ui/src/main/webapp: WEB-INF/jsp/removeData WEB-INF/jsp/workingDb css images
by tchemit@users.forge.codelutin.com 22 Sep '12
by tchemit@users.forge.codelutin.com 22 Sep '12
22 Sep '12
Author: tchemit
Date: 2012-09-22 14:27:48 +0200 (Sat, 22 Sep 2012)
New Revision: 684
Url: http://forge.codelutin.com/repositories/revision/echobase/684
Log:
- add icon for remove imports
- do not display import to delete
Added:
trunk/echobase-ui/src/main/webapp/images/menu2.jpg
Modified:
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
trunk/echobase-ui/src/main/webapp/css/screen.css
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-22 11:20:01 UTC (rev 683)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-22 12:27:48 UTC (rev 684)
@@ -29,7 +29,7 @@
<fieldset>
<legend>
- <s:text name="echobase.confirm.delete.selected.importData"/>
+ <s:text name="echobase.confirm.delete.selected.importData"/>
</legend>
<ul class="">
@@ -40,21 +40,22 @@
</s:iterator>
</ul>
- <s:form namespace="/removeData">
-
- <s:iterator value="model.importLogIds" var="id">
- <s:hidden name="model.importLogIds" value="%{#id}"/>
- </s:iterator>
- <br/>
- <ul class="toolbar floatRight">
- <li>
+ <br/>
+ <ul class="toolbar floatRight">
+ <li>
+ <s:form namespace="/removeData">
<s:submit action="importLogs" theme="simple"
key="echobase.action.cancel"/>
- </li>
- <li>
+ </s:form>
+ </li>
+ <li>
+ <s:form namespace="/removeData">
+ <s:iterator value="model.importLogIds" var="id">
+ <s:hidden name="model.importLogIds" value="%{#id}"/>
+ </s:iterator>
<s:submit action="confirmDelete" theme="simple"
key="echobase.action.delete"/>
- </li>
- </ul>
- </s:form>
+ </s:form>
+ </li>
+ </ul>
</fieldset>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-22 11:20:01 UTC (rev 683)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-22 12:27:48 UTC (rev 684)
@@ -35,47 +35,12 @@
return false;
}
- function loadImportLogDetail(importLogId) {
- $.ajax(
- {
- url:'<s:url action="getDashboardImportLog" namespace="/workingDb"/>',
- data:{importLogId:importLogId},
- async:false,
- dataType:"json",
- success:function (data, textStatus) {
-
- $('#noImportLogDetail').hide();
- $('#importLogDetail').show();
- var json = data.data;
-
- if ($('#noVoyageDetail').is(":visible")) {
-
- // need to load voyage
- loadVoyageDetail(json['voyageId']);
- }
-
- $('#importLogVoyage').html(json['voyageId_lbl']);
- $('#importLogText').html(json['importText']);
- $('#importLogUser').html(json['importUser']);
- $('#importLogDate').html(json['importDate']);
- $('#importLogImportType').html(json['importType']);
- }
- });
- return false;
- }
-
jQuery(document).ready(function () {
$('[name="voyageId"]').change(function (event) {
reloadPage({'voyageId':this.value});
});
- $.addRowSelectTopic('importLogs', function (event) {
-
- var id = event.originalEvent.id;
- loadImportLogDetail(id);
- });
-
$.addClearSelectTopic('importLogs', function (event) {
$(':checkbox[name^="jqg"]').each(function () {
@@ -85,8 +50,6 @@
elem.attr("name", "model.importLogIds");
elem.attr("value", newId);
});
- $('#noImportLogDetail').show();
- $('#importLogDetail').hide();
});
$.addEvenAndOddClasses('importLogs');
});
@@ -123,7 +86,6 @@
navigatorDelete="false"
navigatorAdd="false" rowList="10,15,20,50,100,250,500" rowNum="10"
multiselect="true"
- onSelectRowTopics='importLogs-rowSelect'
onCompleteTopics="importLogs-clearSelect,importLogs-CompleteTopics">
<sjg:gridColumn name="id" title="id" hidden="true"/>
@@ -139,38 +101,6 @@
title="%{getText('echobase.common.importUser')}"/>
</sjg:grid>
<br/>
- <fieldset>
- <legend><s:text name="echobase.title.importLog.detail"/></legend>
- <div id="noImportLogDetail">
- <pre>
- <s:text name="echobase.message.noImportLogSelected"/>
- </pre>
- </div>
- <div id="importLogDetail">
-
- <s:label key='echobase.common.importType' value=''/>
- <pre id='importLogImportType' style="font-weight: bold;"></pre>
- <br/>
-
- <s:label key='echobase.common.voyage' value=''/>
- <pre id='importLogVoyage' style="font-weight: bold;"></pre>
- <br/>
-
- <s:label key='echobase.common.importDate' value=''/>
- <pre id='importLogDate' style="font-weight: bold;"></pre>
- <br/>
-
- <s:label key='echobase.common.importText' value=''/>
-
- <pre id='importLogText' style="font-weight: bold;" class="floatLeft"></pre>
- <br/>
-
- <s:label key='echobase.common.importUser' value=''/>
- <pre id='importLogUser' style="font-weight: bold;" class="floatLeft"></pre>
- </div>
- </fieldset>
-
- <br/>
<s:submit id='confirmDelete' action="confirmDelete" method="input"
onclick="return checkOneRowSelected();"
key="echobase.action.delete.selectedImport"/>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp 2012-09-22 11:20:01 UTC (rev 683)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp 2012-09-22 12:27:48 UTC (rev 684)
@@ -134,7 +134,7 @@
navigatorAdd="false" rowList="10,15,20,50,100,250,500" rowNum="10"
onSelectRowTopics="voyages-rowSelect"
onCellSelectTopics="voyages-rowSelect"
- onCompleteTopics="voyages-clearSelect">
+ onCompleteTopics="voyages-clearSelect,voyages-CompleteTopics">
<sjg:gridColumn name="id" title="id" hidden="true"/>
<sjg:gridColumn name="id_lbl" sortable="true"
Modified: trunk/echobase-ui/src/main/webapp/css/screen.css
===================================================================
--- trunk/echobase-ui/src/main/webapp/css/screen.css 2012-09-22 11:20:01 UTC (rev 683)
+++ trunk/echobase-ui/src/main/webapp/css/screen.css 2012-09-22 12:27:48 UTC (rev 684)
@@ -592,7 +592,7 @@
transition: 0.25s;
}
.menu a{
- background:url(../images/menu.jpg) no-repeat;
+ background:url(../images/menu2.jpg) no-repeat;
height:48px;
width:48px;
@@ -633,11 +633,11 @@
background-position:-144px -48px;
}
.menu .delDonnee{
- background-position:-144px 0;
+ background-position:-432px 0;
}
.menu .delDonnee:hover{
- background-position:-144px -48px;
+ background-position:-432px -48px;
}
.menu .modif{
Added: trunk/echobase-ui/src/main/webapp/images/menu2.jpg
===================================================================
(Binary files differ)
Property changes on: trunk/echobase-ui/src/main/webapp/images/menu2.jpg
___________________________________________________________________
Added: svn:mime-type
+ image/jpeg
1
0
r683 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/csv echobase-services/src/main/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 22 Sep '12
by tchemit@users.forge.codelutin.com 22 Sep '12
22 Sep '12
Author: tchemit
Date: 2012-09-22 13:20:01 +0200 (Sat, 22 Sep 2012)
New Revision: 683
Url: http://forge.codelutin.com/repositories/revision/echobase/683
Log:
fixes #1520: Probl?\195?\168me lors de la sauvegarde d'une entit?\195?\169 (can accept more date formats)
Added:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java (rev 0)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java 2012-09-22 11:20:01 UTC (rev 683)
@@ -0,0 +1,54 @@
+package fr.ifremer.echobase.csv;
+
+import com.google.common.collect.Lists;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.ValueParser;
+
+import java.text.ParseException;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * To chain some {@link ValueParser} (different format supported).
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ChainValueParser<E> implements ValueParser<E> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ChainValueParser.class);
+
+ final List<ValueParser<E>> parsers = Lists.newArrayList();
+
+ public ChainValueParser<E> addParser(ValueParser<E> parser) {
+ this.parsers.add(parser);
+ return this;
+ }
+
+ @Override
+ public E parse(String value) throws ParseException {
+ E result = null;
+ Iterator<ValueParser<E>> iterator = parsers.iterator();
+ while (iterator.hasNext()) {
+ ValueParser<E> parser = iterator.next();
+ try {
+ result = parser.parse(value);
+ break;
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not parse value " + value, e);
+ }
+ }
+ }
+
+ if (result == null && !iterator.hasNext()) {
+
+ // all parsers were used and no one gives a good result
+ throw new ParseException(
+ "Could not parse value " + value + " with any parsers", 0);
+ }
+ return result;
+ }
+}
Property changes on: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java 2012-09-22 10:35:40 UTC (rev 682)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java 2012-09-22 11:20:01 UTC (rev 683)
@@ -82,6 +82,12 @@
};
+ public static final ValueParser<Date> DATE_TIME_VALUE_PARSER = new ChainValueParser<Date>().
+ addParser(TopiaCsvCommons.DAY_TIME_SECOND_WITH_TIMESTAMP).
+ addParser(TopiaCsvCommons.DAY_TIME_SECOND).
+ addParser(TopiaCsvCommons.DAY_TIME).
+ addParser(TopiaCsvCommons.DAY);
+
public static final String CELL_NAME = "name";
public static final String OPERATION_ID = "operationId";
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-22 10:35:40 UTC (rev 682)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-22 11:20:01 UTC (rev 683)
@@ -27,6 +27,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.csv.EchoBaseCsvUtil;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.EntityModificationLog;
@@ -56,6 +57,7 @@
import org.nuiton.util.decorator.JXPathDecorator;
import java.util.Collection;
+import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -522,6 +524,10 @@
// translate foreign key to his id
model.addForeignKeyForImport(propertyName, entityType, universe);
+ } else if (Date.class.equals(type)) {
+ model.newMandatoryColumn(
+ propertyName,
+ EchoBaseCsvUtil.DATE_TIME_VALUE_PARSER);
} else {
model.addDefaultColumn(propertyName, type);
}
1
0
r682 - trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor
by tchemit@users.forge.codelutin.com 22 Sep '12
by tchemit@users.forge.codelutin.com 22 Sep '12
22 Sep '12
Author: tchemit
Date: 2012-09-22 12:35:40 +0200 (Sat, 22 Sep 2012)
New Revision: 682
Url: http://forge.codelutin.com/repositories/revision/echobase/682
Log:
fix import
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-21 19:49:10 UTC (rev 681)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-22 10:35:40 UTC (rev 682)
@@ -35,7 +35,7 @@
import fr.ifremer.echobase.services.DbEditorService;
import fr.ifremer.echobase.services.DecoratorService;
import fr.ifremer.echobase.ui.actions.AbstractJSONPaginedAction;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.pager.FilterRule;
1
0
r681 - trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor
by tchemit@users.forge.codelutin.com 21 Sep '12
by tchemit@users.forge.codelutin.com 21 Sep '12
21 Sep '12
Author: tchemit
Date: 2012-09-21 21:49:10 +0200 (Fri, 21 Sep 2012)
New Revision: 681
Url: http://forge.codelutin.com/repositories/revision/echobase/681
Log:
fixes #1520: Probl?\195?\168me lors de la sauvegarde d'une entit?\195?\169
Modified:
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2012-09-21 19:33:41 UTC (rev 680)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2012-09-21 19:49:10 UTC (rev 681)
@@ -132,7 +132,7 @@
switch (type) {
case 'boolean':
case 'Boolean':
- editor.attr('checked', value == "Y" ? true : false);
+ editor.attr('checked', !!(value == "Y"));
break;
case 'Date':
@@ -187,12 +187,11 @@
// FIXME sletellier 20111122 : currently, one month more are displayed....
var month = parseInt(dateSplited[1]) - 1;
var year = parseInt(dateSplited[2]);
- var hour = parseInt(hourSplited[0]);
- var minute = parseInt(hourSplited[1]);
- var second = parseInt(hourSplited[2]);
+ var hour = parseInt(!!hourSplited[0]?hourSplited[0]:0);
+ var minute = parseInt(!!hourSplited[1]?hourSplited[1]:0);
+ var second = parseInt(hourSplited[2]?hourSplited[2]:0);
// update date
- // TODO sletellier 20111122 : edit milliseconds ?
return new Date(year, month, day, hour, minute, second, 0);
}
</script>
@@ -330,9 +329,9 @@
<s:hidden key="entityType" label=''/>
- <s:hidden id="topiaId" name='topiaId' label=''/>
+ <%--<s:hidden id="topiaId" name='topiaId' label=''/>--%>
- <s:textfield id="entityId" name='topiaId' readonly="true"
+ <s:textfield id="topiaId" name='topiaId' readonly="true"
label='%{getText("echobase.common.id")}' size="250"/>
<s:iterator value="columnMetas" var="meta" status="status">
1
0
r680 - in trunk/echobase-ui/src/main: resources/i18n webapp/WEB-INF/includes webapp/WEB-INF/jsp webapp/WEB-INF/jsp/removeData webapp/WEB-INF/jsp/workingDb webapp/css
by tchemit@users.forge.codelutin.com 21 Sep '12
by tchemit@users.forge.codelutin.com 21 Sep '12
21 Sep '12
Author: tchemit
Date: 2012-09-21 21:33:41 +0200 (Fri, 21 Sep 2012)
New Revision: 680
Url: http://forge.codelutin.com/repositories/revision/echobase/680
Log:
refs #1439: Tableau de bord (ajout menu dashboard)
Modified:
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp
trunk/echobase-ui/src/main/webapp/css/screen.css
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-09-21 19:33:41 UTC (rev 680)
@@ -10,7 +10,6 @@
echobase.action.createNewMission=Create a new mission
echobase.action.createSqlQuery=Save
echobase.action.createWorkingDbConfiguration=Save
-echobase.action.dashboard=Voyages dashboard
echobase.action.delete=Delete
echobase.action.delete.selectedImport=Delete selected imports
echobase.action.downloadEmbeddedApplicationFile=Download the portable database
@@ -20,7 +19,6 @@
echobase.action.exportTable=Export
echobase.action.generateSqlQuery=Generate query
echobase.action.import=Import
-echobase.action.importLogDelete=Delete
echobase.action.importTable=Import
echobase.action.login=Connect
echobase.action.logout=Disconnect
@@ -148,7 +146,6 @@
echobase.common.voyage=Cruise
echobase.common.voyageDescription=Description
echobase.common.voyageFile=
-echobase.confirm.delete.importData=Delete import
echobase.confirm.delete.query=Delete query
echobase.confirm.delete.selected.importData=Delete selected imports
echobase.confirm.delete.workingDbConfiguration=Delete working database configuration
@@ -252,7 +249,7 @@
echobase.info.no.workingDbConfiguration.saved=No working database configuration saved
echobase.info.no.workingDbConfiguration.selected=Select a working database configuration and then connect
echobase.info.removeData.failed=Import removal failed
-echobase.info.removeData.succeded=Successful data import removal in %s
+echobase.info.removeData.succeded=Successful data import removal
echobase.info.reportBug=Bug report
echobase.info.sqlQuery.not.modifiable=You have not sufficient rights to update the selected query
echobase.info.update.user.password=Keep empty password field to not modify it.
@@ -318,6 +315,7 @@
echobase.legend.workingDbConfiguration.use=Working datbase configuration
echobase.menu.connectToDbInformations=Database connection information
echobase.menu.createEmbeddedApplication=Create a portable database
+echobase.menu.dashboard=Dashboard
echobase.menu.editData=Modify data
echobase.menu.export=Export data
echobase.menu.exportDb=Database export
@@ -347,9 +345,9 @@
echobase.title.connectToDbInformations=Database connection information
echobase.title.createEmbeddedApplication=Create a portable database
echobase.title.createMission=Create a mission
+echobase.title.dashboard=Dashboard
echobase.title.dbEditor=Modify data
echobase.title.dbEditor.read=Data display
-echobase.title.delete.importLog=Delete a import
echobase.title.embeddedApplicationProgress=Creating the portable database
echobase.title.embeddedApplicationResult=Results of the portable database creation
echobase.title.entityModificationLogs=Change log
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-09-21 19:33:41 UTC (rev 680)
@@ -10,7 +10,6 @@
echobase.action.createNewMission=Créer une nouvelle mission
echobase.action.createSqlQuery=Enregistrer
echobase.action.createWorkingDbConfiguration=Enregistrer
-echobase.action.dashboard=Tableau de bord des campagnes
echobase.action.delete=Suppression
echobase.action.delete.selectedImport=Supprimer les imports sélectionnés
echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée
@@ -20,7 +19,6 @@
echobase.action.exportTable=Exporter
echobase.action.generateSqlQuery=Générer la requête
echobase.action.import=Importer
-echobase.action.importLogDelete=Supprimer
echobase.action.importTable=Importer
echobase.action.login=Connexion
echobase.action.logout=Déconnexion
@@ -148,7 +146,6 @@
echobase.common.voyage=Campagne
echobase.common.voyageDescription=Description
echobase.common.voyageFile=
-echobase.confirm.delete.importData=Confirmer la suppression de l'import
echobase.confirm.delete.query=Confirmer la suppression de la requête
echobase.confirm.delete.selected.importData=Confirmer la suppression des imports sélectionnés
echobase.confirm.delete.workingDbConfiguration=Confirmer la suppression de la configuration suivante
@@ -252,7 +249,7 @@
echobase.info.no.workingDbConfiguration.saved=Aucune configuration de base de travail enregistrée
echobase.info.no.workingDbConfiguration.selected=Sélectionner une configuration pour ensuite vous y connecter
echobase.info.removeData.failed=La suppresion de l'import a échoué
-echobase.info.removeData.succeded=La suppresion de l'import a réussi en %s
+echobase.info.removeData.succeded=La suppresion de l'import a réussi
echobase.info.reportBug=Rapport de bug
echobase.info.sqlQuery.not.modifiable=Vous ne disposez pas des droits nécessaires pour modifier la requête sélectionnée
echobase.info.update.user.password=Pour ne pas modifier le mot de passe laisser ce champs vide.
@@ -318,6 +315,7 @@
echobase.legend.workingDbConfiguration.use=Configuration de base de travail
echobase.menu.connectToDbInformations=Informations de connexion à la base de données
echobase.menu.createEmbeddedApplication=Créer une application embarquée
+echobase.menu.dashboard=Tableau de bord
echobase.menu.editData=Modifier les données
echobase.menu.export=Exporter des données
echobase.menu.exportDb=Exporter une base
@@ -347,9 +345,9 @@
echobase.title.connectToDbInformations=Informations de connexion à la base de données
echobase.title.createEmbeddedApplication=Création de l'application embarquée
echobase.title.createMission=Créer une mission
+echobase.title.dashboard=Tableau de bord
echobase.title.dbEditor=Modification des données
echobase.title.dbEditor.read=Visualisation des données
-echobase.title.delete.importLog=Confirmer la suppression d'un import
echobase.title.embeddedApplicationProgress=Création de l'application embarquée en cours
echobase.title.embeddedApplicationResult=Résultat de la création de l'application embarquée
echobase.title.entityModificationLogs=Journal des modifications
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/header.jsp 2012-09-21 19:33:41 UTC (rev 680)
@@ -53,8 +53,8 @@
<s:if test="workingDbSelected">
<li>
<s:a action="disconnect" namespace="/workingDb" id='disconnect'
- title='%{getText("echobase.tooltip.disconnectWorkingDb")}'
- alt='%{getText("echobase.tooltip.disconnectWorkingDb")}'>
+ title='%{getText("echobase.tooltip.disconnectWorkingDb")}'
+ alt='%{getText("echobase.tooltip.disconnectWorkingDb")}'>
<s:text name="echobase.action.workingDbconfiguration.disconnect"/>
</s:a>
</li>
@@ -123,6 +123,11 @@
</s:a>
</li>
<li>
+ <s:a action="dashboard" namespace="/workingDb" cssClass="dashboard">
+ <span><s:text name="echobase.menu.dashboard"/></span>
+ </s:a>
+ </li>
+ <li>
<s:a action="information" namespace="/workingDb" cssClass="info">
<span>
<s:text name="echobase.menu.connectToDbInformations"/>
@@ -169,6 +174,11 @@
</span>
</s:a>
</li>
+ <li>
+ <s:a action="dashboard" namespace="/workingDb" cssClass="dashboard">
+ <span><s:text name="echobase.menu.dashboard"/></span>
+ </s:a>
+ </li>
</s:if>
</s:else>
</ul>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2012-09-21 19:33:41 UTC (rev 680)
@@ -49,15 +49,4 @@
</li>
</ul>
</fieldset>
-</div>
-<br/>
-<s:if test="%{workingDbSelected}">
- <s:form namespace="/workingDb" action="dashboard">
- <ul class="toolbar floatLeft">
- <li>
- <s:submit theme="simple" action="dashboard"
- key="echobase.action.dashboard"/>
- </li>
- </ul>
- </s:form>
-</s:if>
+</div>
\ No newline at end of file
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-21 19:33:41 UTC (rev 680)
@@ -161,11 +161,12 @@
<br/>
<s:label key='echobase.common.importText' value=''/>
- <pre id='importLogText' style="font-weight: bold;"></pre>
+
+ <pre id='importLogText' style="font-weight: bold;" class="floatLeft"></pre>
<br/>
<s:label key='echobase.common.importUser' value=''/>
- <pre id='importLogUser' style="font-weight: bold;"></pre>
+ <pre id='importLogUser' style="font-weight: bold;" class="floatLeft"></pre>
</div>
</fieldset>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp 2012-09-21 19:33:41 UTC (rev 680)
@@ -122,7 +122,7 @@
</script>
-<title><s:text name="echobase.title.importLogs"/></title>
+<title><s:text name="echobase.title.dashboard"/></title>
<s:url id="loadUrl" action="getDashboardImportLogs" namespace="/workingDb"
escapeAmp="false"/>
@@ -213,9 +213,12 @@
<br/>
<s:label key='echobase.common.importText' value=''/>
+ <div class="floatLeft">
<pre id='importLogText' style="font-weight: bold;"></pre>
+ </div>
<br/>
+ <div class="clearBoth"/>
<s:label key='echobase.common.importUser' value=''/>
<pre id='importLogUser' style="font-weight: bold;"></pre>
</div>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp 2012-09-21 19:33:41 UTC (rev 680)
@@ -37,15 +37,15 @@
el.select();
} else if (!!window.getSelection) { // FF, Safari, Chrome, Opera
var sel = window.getSelection();
- var range = document.createRange();
- range.selectNodeContents(el);
+ var range1 = document.createRange();
+ range1.selectNodeContents(el);
sel.removeAllRanges();
- sel.addRange(range);
+ sel.addRange(range1);
} else if (!!document.selection) { // IE
document.selection.empty();
- var range = document.body.createTextRange();
- range.moveToElementText(el);
- range.select();
+ var range2 = document.body.createTextRange();
+ range2.moveToElementText(el);
+ range2.select();
}
});
@@ -68,6 +68,7 @@
<s:label key="pilotVersion"
label='%{getText("echobase.common.pilotVersion")}'/>
<br/>
+
<div class="cleanBoth help">
<label>
(*) <s:text name="echobase.info.click.to.select"/>
@@ -87,10 +88,6 @@
<s:submit theme="simple" action="disconnect"
key="echobase.action.workingDbconfiguration.disconnect"/>
</li>
- <li>
- <s:submit theme="simple" action="dashboard"
- key="echobase.action.dashboard"/>
- </li>
</ul>
</s:form>
Modified: trunk/echobase-ui/src/main/webapp/css/screen.css
===================================================================
--- trunk/echobase-ui/src/main/webapp/css/screen.css 2012-09-21 19:25:39 UTC (rev 679)
+++ trunk/echobase-ui/src/main/webapp/css/screen.css 2012-09-21 19:33:41 UTC (rev 680)
@@ -670,6 +670,13 @@
.menu .info:hover{
background-position:-384px -48px;
}
+
+.menu .dashboard{
+ background-position:-336px 0;
+}
+.menu .dashboard:hover{
+ background-position:-336px -48px;
+}
/*connexion*/
#headerRight{
font-size:140%;
1
0
r679 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services/importdata main/java/fr/ifremer/echobase/services/removedata main/java/fr/ifremer/echobase/services/removedata/strategy test/java/fr/ifremer/echobase/ui/actions/removedata
by tchemit@users.forge.codelutin.com 21 Sep '12
by tchemit@users.forge.codelutin.com 21 Sep '12
21 Sep '12
Author: tchemit
Date: 2012-09-21 21:25:39 +0200 (Fri, 21 Sep 2012)
New Revision: 679
Url: http://forge.codelutin.com/repositories/revision/echobase/679
Log:
refs #1437: Suppression des imports (amelioration de la progression)
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataConfiguration.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CatchesRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/OperationRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultEsduRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultMapRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultRegionRemoveDataStrategy.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultVoyageRemoveDataStrategy.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CatchesRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonAllRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/OperationRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultEsduRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultMapRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java
trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultVoyageRemoveDataServiceTest.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -134,44 +134,18 @@
EchoBaseUser user) {
Date importDate = newDate();
String importUser = user.getEmail();
- ImportLog importLog = create(getDAO(ImportLog.class),
- ImportLog.PROPERTY_VOYAGE_ID, configuration.getVoyageId(),
- ImportLog.PROPERTY_IMPORT_TYPE, configuration.getImportType(),
- ImportLog.PROPERTY_IMPORT_USER, importUser,
- ImportLog.PROPERTY_IMPORT_DATE, importDate,
- ImportLog.PROPERTY_IMPORT_TEXT, configuration.getImportNotes());
- return importLog;
- }
-
- protected String computeResultAndLogBookEntry(M configuration,
- EchoBaseUser user) {
-
- Date importDate = newDate();
- String importUser = user.getEmail();
-
- ImportLog importLog = computeImportLogEntry(configuration, user);
-//
-// ImportLog importLog = create(getDAO(ImportLog.class),
-// ImportLog.PROPERTY_VOYAGE_ID, configuration.getVoyageId(),
-// ImportLog.PROPERTY_IMPORT_TYPE, configuration.getImportType(),
-// ImportLog.PROPERTY_IMPORT_USER, importUser,
-// ImportLog.PROPERTY_IMPORT_DATE, importDate,
-// ImportLog.PROPERTY_IMPORT_TEXT, configuration.getImportNotes());
-//
-
- String importType = getImportLabel(configuration);
-
StringBuilder buffer = new StringBuilder();
- buffer.append(importType);
if (StringUtils.isNotEmpty(configuration.getImportNotes())) {
- buffer.append("\nNotes :").append(configuration.getImportNotes());
+ buffer.append("Notes :").append(configuration.getImportNotes());
}
+ List<String> importIds = Lists.newArrayList();
+
for (EchoBaseCsvFileImportResult importResult : configuration.getImportResults()) {
- importLog.addAllImportId(importResult.getIds());
+ importIds.addAll(importResult.getIds());
StringBuilder description = new StringBuilder();
description.append("Depuis Fichier ").append(importResult.getImportFileName());
@@ -193,9 +167,38 @@
}
buffer.append('\n').append(description.toString());
}
+ String importText = buffer.toString();
+ ImportLog importLog = create(getDAO(ImportLog.class),
+ ImportLog.PROPERTY_VOYAGE_ID, configuration.getVoyageId(),
+ ImportLog.PROPERTY_IMPORT_TYPE, configuration.getImportType(),
+ ImportLog.PROPERTY_IMPORT_USER, importUser,
+ ImportLog.PROPERTY_IMPORT_DATE, importDate,
+ ImportLog.PROPERTY_IMPORT_TEXT, importText,
+ ImportLog.PROPERTY_IMPORT_ID, importIds
+ );
+ return importLog;
+ }
+
+ protected String computeResultAndLogBookEntry(M configuration,
+ EchoBaseUser user) {
+
+ Date importDate = newDate();
+ String importUser = user.getEmail();
+
+ ImportLog importLog = computeImportLogEntry(configuration, user);
+
+ String importType = getImportLabel(configuration);
+
+ StringBuilder buffer = new StringBuilder();
+
+ buffer.append(importType);
+ buffer.append('\n').append(importLog.getImportText());
+
String result = buffer.toString();
+ importLog.setImportText(result);
+
create(getDAO(EntityModificationLog.class),
EntityModificationLog.PROPERTY_ENTITY_TYPE, "Import",
EntityModificationLog.PROPERTY_ENTITY_ID, importType,
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -25,6 +25,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.EchoBasePredicates;
import fr.ifremer.echobase.csv.EchoBaseCsvUtil;
@@ -62,6 +63,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
import static org.nuiton.i18n.I18n.l_;
@@ -178,6 +180,7 @@
Locale locale = getLocale();
String dataProcessingId = null;
try {
+
Import<AcousticImportRow> importer = Import.newImport(csvModel,
reader);
DataAcquisition dataAcquisition = null;
@@ -187,6 +190,9 @@
int rowNumber = 0;
configuration.incrementsProgress();
+
+ Set<String> createdDataAcquisitions = Sets.newHashSet();
+
for (AcousticImportRow row : importer) {
doFlushTransaction(++rowNumber, inputFile, configuration);
@@ -230,8 +236,6 @@
boolean isME70 =
EchoBasePredicates.IS_ACOUSTIC_INSTRUMENT_ME70.apply(instrument);
- boolean collectCellIds = true;
-
if (dataAcquisition == null ||
!instrument.equals(dataAcquisition.getAcousticInstrument())) {
@@ -283,11 +287,9 @@
// collect id of the import
importResult.addId(EchoBaseEntityEnum.DataAcquisition,
dataAcquisition);
+ createdDataAcquisitions.add(
+ dataAcquisition.getTopiaId());
- // as the dataAcquisition is collected, then no need
- // to collect cells ids
- collectCellIds = false;
-
// add dataAcquisition to transect
transect.addDataAcquisition(dataAcquisition);
@@ -337,6 +339,11 @@
DataQuality dataQuality = row.getDataQuality();
+
+ // collect Esdu cellIds only if dataAcquisitions was not created here
+ boolean collectCellIds = !createdDataAcquisitions.contains(
+ dataAcquisition.getTopiaId());
+
if (cellType == 4) {
if (log.isDebugEnabled()) {
@@ -360,7 +367,6 @@
// clear elementary cells
elementaryCells.clear();
-
if (collectCellIds) {
// collect ids (dataProcessing already exists)
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,7 +24,6 @@
package fr.ifremer.echobase.services.importdata;
import fr.ifremer.echobase.io.InputFile;
-import org.nuiton.util.csv.ImportRuntimeException;
import java.util.Locale;
@@ -48,7 +47,7 @@
super(message, cause);
}
- public ImportException(Locale locale, InputFile inputfile, ImportRuntimeException importError) {
+ public ImportException(Locale locale, InputFile inputfile, Exception importError) {
this(l_(locale, "echobase.importError.fromFile",
inputfile.getFile().getName(),
importError.getMessage()), importError);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataConfiguration.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataConfiguration.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataConfiguration.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -25,8 +25,6 @@
import fr.ifremer.echobase.services.AbstractEchobaseActionConfiguration;
-import java.util.List;
-
/**
* Configuration for a remve data action.
*
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -31,6 +31,7 @@
import fr.ifremer.echobase.entities.EntityModificationLog;
import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
+import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.services.DecoratorService;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import fr.ifremer.echobase.services.removedata.strategy.AbstractRemoveDataStrategy;
@@ -48,14 +49,12 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.util.StringUtil;
import org.nuiton.util.TimeLog;
import org.nuiton.util.decorator.Decorator;
-import java.util.Collections;
import java.util.Comparator;
-import java.util.EnumMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -69,102 +68,120 @@
/** Logger. */
private static final Log log = LogFactory.getLog(RemoveDataService.class);
-
public static final TimeLog TIME_LOG = new TimeLog(RemoveDataService.class);
- protected static EnumMap<ImportType, Class<? extends AbstractRemoveDataStrategy>> strategies;
+ protected static Map<ImportType, Class<? extends AbstractRemoveDataStrategy>> strategies;
- public static Class<? extends AbstractRemoveDataStrategy> getStrategy(ImportType importType) {
- if (strategies == null) {
- strategies = Maps.newEnumMap(ImportType.class);
- strategies.put(ImportType.VOYAGE, LegacyVoyageRemoveDataStrategy.class);
- strategies.put(ImportType.COMMON_ALL, CommonAllRemoveDataStrategy.class);
- strategies.put(ImportType.COMMON_TRANSECT, CommonTransectRemoveDataStrategy.class);
- strategies.put(ImportType.OPERATION, OperationRemoveDataStrategy.class);
- strategies.put(ImportType.CATCHES, CatchesRemoveDataStrategy.class);
- strategies.put(ImportType.ACOUSTIC, AcousticRemoveDataStrategy.class);
- strategies.put(ImportType.RESULT_VOYAGE, ResultVoyageRemoveDataStrategy.class);
- strategies.put(ImportType.RESULT_ESDU, ResultEsduRemoveDataStrategy.class);
- strategies.put(ImportType.RESULT_MAP, ResultMapRemoveDataStrategy.class);
- strategies.put(ImportType.RESULT_REGION, ResultRegionRemoveDataStrategy.class);
- Preconditions.checkState(
- ImportType.values().length == strategies.size(),
- "It miss some remove data strategies...");
+ public static final Comparator<ImportLog> IMPORT_LOG_COMPARATOR = new Comparator<ImportLog>() {
+ @Override
+ public int compare(ImportLog o1, ImportLog o2) {
+ int result = o1.getVoyageId().compareTo(o2.getVoyageId());
+ if (result == 0) {
+ result = o1.getImportType().ordinal() -
+ o2.getImportType().ordinal();
+ }
+ return result;
}
- return strategies.get(importType);
+ };
+
+ protected static class ImportContext {
+
+ final String importLogId;
+
+ final long nbSteps;
+
+ final AbstractRemoveDataStrategy strategy;
+
+ final Voyage voyage;
+
+ public ImportContext(String importLogId,
+ long nbSteps,
+ AbstractRemoveDataStrategy strategy,
+ Voyage voyage) {
+ this.importLogId = importLogId;
+ this.nbSteps = nbSteps;
+ this.strategy = strategy;
+ this.voyage = voyage;
+ }
}
public String removeImport(RemoveDataConfiguration model, EchoBaseUser user) {
- // compute nb steps
+ // build map of strategy to apply
+ // and compute nb steps
int nbSteps = 0;
- List<ImportLog> importsToTreat = Lists.newArrayList();
+
+ Map<ImportLog, ImportContext> toTreat =
+ Maps.newTreeMap(IMPORT_LOG_COMPARATOR);
+
for (String id : model.getImportLogIds()) {
ImportLog importLog = getEntityById(ImportLog.class, id);
- nbSteps += importLog.getImportId().size() + 3;
- importsToTreat.add(importLog);
+
+ Class<? extends AbstractRemoveDataStrategy> strategyType =
+ getStrategy(importLog);
+ AbstractRemoveDataStrategy strategy = getService(strategyType);
+ strategy.setProgressModel(model);
+ Voyage voyage = getEntityById(Voyage.class, importLog.getVoyageId());
+ long l = strategy.computeNbSteps(voyage, importLog);
+ ImportContext importContext = new ImportContext(id, l + 3, strategy, voyage);
+ toTreat.put(importLog, importContext);
+ if (log.isInfoEnabled()) {
+ log.info("Nb steps for importLog " + id + ": " + l);
+ }
+ nbSteps += importContext.nbSteps;
}
model.setNbSteps(nbSteps);
- // sort import logs from importType
- Collections.sort(importsToTreat, new Comparator<ImportLog>() {
- @Override
- public int compare(ImportLog o1, ImportLog o2) {
- return o1.getImportType().ordinal() - o2.getImportType().ordinal();
- }
- });
StringBuilder result = new StringBuilder();
- for (String id : model.getImportLogIds()) {
- String importResult = removeImport(model, id, user);
+ for (Map.Entry<ImportLog, ImportContext> entry : toTreat.entrySet()) {
+ String importResult = removeImport(model, entry.getValue(), user);
result.append(importResult).append('\n');
}
return result.toString().trim();
}
public String removeImport(RemoveDataConfiguration model,
- String importLogId, EchoBaseUser user) {
+ ImportContext importContext,
+ EchoBaseUser user) {
- ImportLog importLog = getEntityById(ImportLog.class, importLogId);
+ // check that importLog still exists
+ ImportLog importLog = getEntityById(ImportLog.class,
+ importContext.importLogId);
+ AbstractRemoveDataStrategy strategy = importContext.strategy;
+
if (importLog == null) {
// import was already removed (from a previously remove I guess)
+ long nbStreps = importContext.nbSteps;
+ for (long i = 0; i < nbStreps; i++) {
+ strategy.incrementOp(
+ "Skip steps (importLog was already removed)");
+ }
return "\n";
}
- ImportType importType = importLog.getImportType();
-
- Class<? extends AbstractRemoveDataStrategy> strategyType =
- getStrategy(importType);
-
long s0 = TimeLog.getTime();
- AbstractRemoveDataStrategy strategy = getService(strategyType);
try {
- strategy.doRemove(model, importLog);
+ strategy.doRemove(importContext.voyage, importLog);
} catch (TopiaException e) {
throw new EchoBaseTechnicalException("Could not remove data", e);
}
s0 = TIME_LOG.log(s0, "removeData");
- List<ImportLog> removedImportLog = removeObsoleteImportLogs(strategy,
- importLog);
-
- model.incrementsProgress();
+ List<ImportLog> removed = removeObsoleteImportLogs(strategy, importLog);
+ strategy.incrementOp("Remove import Log " + importLog.getTopiaId());
s0 = TIME_LOG.log(s0, "removeObsoleteImportLogs");
// add result in log book and compute resume to show in result
- String result = computeLogBookEntry(importLog,
- removedImportLog,
- user,
- TimeLog.getTime() - s0);
+ String result = computeLogBookEntry(importLog, removed, user);
+ strategy.incrementOp("Log book entry for " + importLog.getTopiaId());
- model.incrementsProgress();
// do commit
- commitTransaction("Could not remove import " +
- strategy.getImportLabel());
-
- model.incrementsProgress();
+ commitTransaction("Could not remove import " + strategy.getImportLabel());
+ strategy.incrementOp("Commit importLog " + importLog.getTopiaId());
+ TIME_LOG.log(s0, "Commit importLog " + importLog.getTopiaId());
return result;
}
@@ -219,10 +236,30 @@
return result;
}
+ protected Class<? extends AbstractRemoveDataStrategy> getStrategy(ImportLog importLog) {
+
+ if (strategies == null) {
+ strategies = Maps.newEnumMap(ImportType.class);
+ strategies.put(ImportType.VOYAGE, LegacyVoyageRemoveDataStrategy.class);
+ strategies.put(ImportType.COMMON_ALL, CommonAllRemoveDataStrategy.class);
+ strategies.put(ImportType.COMMON_TRANSECT, CommonTransectRemoveDataStrategy.class);
+ strategies.put(ImportType.OPERATION, OperationRemoveDataStrategy.class);
+ strategies.put(ImportType.CATCHES, CatchesRemoveDataStrategy.class);
+ strategies.put(ImportType.ACOUSTIC, AcousticRemoveDataStrategy.class);
+ strategies.put(ImportType.RESULT_VOYAGE, ResultVoyageRemoveDataStrategy.class);
+ strategies.put(ImportType.RESULT_ESDU, ResultEsduRemoveDataStrategy.class);
+ strategies.put(ImportType.RESULT_MAP, ResultMapRemoveDataStrategy.class);
+ strategies.put(ImportType.RESULT_REGION, ResultRegionRemoveDataStrategy.class);
+ Preconditions.checkState(
+ ImportType.values().length == strategies.size(),
+ "It miss some remove data strategies...");
+ }
+ return strategies.get(importLog.getImportType());
+ }
+
protected String computeLogBookEntry(ImportLog importLog,
List<ImportLog> obsoleteImportLogs,
- EchoBaseUser user,
- long time) {
+ EchoBaseUser user) {
Decorator<ImportLog> decorator = getService(DecoratorService.class).
getDecorator(getLocale(), ImportLog.class, null);
@@ -230,9 +267,6 @@
StringBuilder buffer = new StringBuilder();
buffer.append("Suppression import ");
buffer.append(decorator.toString(importLog));
- buffer.append("\nOpération réalisée en ");
- buffer.append(StringUtil.convertTime(time));
-
for (ImportLog obsoleteImportLog : obsoleteImportLogs) {
buffer.append("\n- Suppression en cascade de l'import ");
@@ -245,7 +279,7 @@
log.debug("Log text: " + result);
}
create(getDAO(EntityModificationLog.class),
- EntityModificationLog.PROPERTY_ENTITY_TYPE, "Remove Import",
+ EntityModificationLog.PROPERTY_ENTITY_TYPE, "Removed Import",
EntityModificationLog.PROPERTY_ENTITY_ID, decorator.toString(importLog),
EntityModificationLog.PROPERTY_MODIFICATION_USER, user.getEmail(),
EntityModificationLog.PROPERTY_MODIFICATION_DATE, newDate(),
@@ -255,9 +289,7 @@
}
protected boolean isIdExists(String id) {
-
try {
-
boolean result = getDAOFromId(id).existByTopiaId(id);
return result;
} catch (TopiaException e) {
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -45,13 +45,13 @@
import fr.ifremer.echobase.entities.data.VoyageDAO;
import fr.ifremer.echobase.services.EchoBaseServiceContext;
import fr.ifremer.echobase.services.EchoBaseServiceSupport;
-import fr.ifremer.echobase.services.removedata.RemoveDataConfiguration;
+import fr.ifremer.echobase.services.ProgressModel;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
import org.nuiton.topia.framework.TopiaSQLQuery;
-import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.topia.persistence.TopiaEntity;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -70,8 +70,14 @@
*/
public abstract class AbstractRemoveDataStrategy extends EchoBaseServiceSupport {
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AbstractRemoveDataStrategy.class);
+
protected String importLabel;
+ protected ProgressModel progressModel;
+
public String getImportLabel() {
return importLabel;
}
@@ -95,7 +101,6 @@
@Override
public void setServiceContext(EchoBaseServiceContext serviceContext) {
super.setServiceContext(serviceContext);
-
dataProcessingDAO = getDAO(DataProcessing.class, DataProcessingDAO.class);
cellDAO = getDAO(Cell.class, CellDAO.class);
echotypeDAO = getDAO(Echotype.class, EchotypeDAO.class);
@@ -106,42 +111,44 @@
resultDAO = getDAO(Result.class, ResultDAO.class);
}
+ public void setProgressModel(ProgressModel progressModel) {
+ this.progressModel = progressModel;
+ }
+
+ public abstract long computeNbSteps(Voyage voyage, ImportLog importLog);
+
protected abstract void removeImportData(Voyage voyage,
String id) throws TopiaException;
public abstract Set<ImportType> getPossibleSubImportType();
- public void doRemove(RemoveDataConfiguration model, ImportLog importLog) throws TopiaException {
+ public void doRemove(Voyage voyage, ImportLog importLog) throws TopiaException {
- Voyage voyage = voyageDao.findByTopiaId(importLog.getVoyageId());
-
removePreDataInVoyage(voyage);
- int currentIndex = 0;
+ flushTransaction("Could not flush transaction");
+
for (String importId : importLog.getImportId()) {
- currentIndex++;
- if (currentIndex % 1000 == 0) {
- flushTransaction("Could not flush transaction");
- }
- model.incrementsProgress();
-
try {
removeImportData(voyage, importId);
} catch (TopiaException e) {
throw new EchoBaseTechnicalException(e);
}
+
+ incrementOp("ImportLog " + importId + "Removed");
}
flushTransaction("Could not flush transaction");
removePostDataInVoyage(voyage);
-
flushTransaction("Could not flush transaction");
}
+ long opIndex;
+
protected void removePreDataInVoyage(Voyage voyage) throws TopiaException {
// by default nothing to remove
}
@@ -150,18 +157,6 @@
// by default nothing to remove
}
- protected <E extends TopiaEntity> E removeEntity(TopiaDAO<E> dao,
- String id) throws TopiaException {
-
- // get entity to delete
- E entity = dao.findByTopiaId(id);
-
- // delete it
- delete(dao, entity);
-
- return entity;
- }
-
protected void canNotDealWithId(String id) {
throw new IllegalStateException(
"Can not deal with this type of id " + id +
@@ -178,10 +173,12 @@
// remove it from the voyage
entity.removeLengthWeightKey(lengthWeightKey);
}
+ incrementOp("Remove lengthWeightKey " + lengthWeightKey.getTopiaId());
}
protected void removeLengthAgeKey(Voyage entity,
LengthAgeKey lengthAgeKey) throws TopiaException {
+
lengthAgeKeyDAO.delete(lengthAgeKey);
if (entity != null) {
@@ -189,8 +186,10 @@
// remove it from the voyage
entity.removeLengthAgeKey(lengthAgeKey);
}
+ incrementOp("Remove lengthAgeKey " + lengthAgeKey.getTopiaId());
}
+
protected void removeEchotype(Voyage entity,
Echotype echotype) throws TopiaException {
@@ -201,11 +200,11 @@
// delete echotype
echotypeDAO.delete(echotype);
+ incrementOp("Remove echotype " + echotype.getTopiaId());
}
protected void removePostCell(Voyage entity,
Cell cell) throws TopiaException {
-
if (entity != null) {
// remove it from the voyage
@@ -214,6 +213,8 @@
// delete postcell
cellDAO.delete(cell);
+
+ incrementOp("Remove postCell " + cell.getTopiaId());
}
protected void removeVoyage(Voyage entity) throws TopiaException {
@@ -245,9 +246,6 @@
// clean this data
entity.clearPostCell();
-
- flushTransaction(
- "Could not flush transaction after removing postCells");
}
}
@@ -285,6 +283,7 @@
for (String cellId : cellIds) {
Cell cell = cellDAO.findByTopiaId(cellId);
+
if (cell != null && !cell.isResultEmpty()) {
Collection<Result> cellResult = cell.getResult();
// for (Result result : cellResult) {
@@ -293,9 +292,43 @@
resultDAO.deleteAll(cellResult);
cell.clearResult();
}
+ incrementOp("Remove cell " + cellId + " results");
}
}
+ protected long countVoyageCellResults(final Voyage voyage) {
+ TopiaSQLQuery<Long> query = new TopiaSQLQuery<Long>() {
+ @Override
+ protected PreparedStatement prepareQuery(Connection connection) throws SQLException {
+ String hql = "SELECT count(c.topiaid) FROM Transit ta, " +
+ " Transect te, " +
+ " DataAcquisition da, " +
+ " DataProcessing dp, " +
+ " Cell c " +
+ "WHERE ta.voyage = ? " +
+ "AND ta.topiaId = te.transit " +
+ "AND te.topiaId = da.transect " +
+ "AND da.topiaId = dp.dataacquisition " +
+ "AND dp.topiaId = c.dataprocessing";
+ PreparedStatement result = connection.prepareStatement(hql);
+ result.setString(1, voyage.getTopiaId());
+ return result;
+ }
+
+ @Override
+ protected Long prepareResult(ResultSet set) throws SQLException {
+ return set.getLong(1);
+ }
+ };
+ try {
+ Long result = query.findSingleResult(
+ (TopiaContextImplementor) getTransaction());
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException(e);
+ }
+ }
+
protected void removeVoyageOrphanCells() throws TopiaException {
// Get all cells of the voyage
TopiaSQLQuery<String> query = new TopiaSQLQuery<String>() {
@@ -316,8 +349,59 @@
List<String> cellIds = query.findMultipleResult(
(TopiaContextImplementor) getTransaction());
for (String cellId : cellIds) {
+
Cell cell = cellDAO.findByTopiaId(cellId);
cellDAO.delete(cell);
+ incrementOp("Remove orphan cell " + cellId);
}
}
+
+ protected long countVoyageOrphanCells(final Voyage voyage) {
+ TopiaSQLQuery<Long> query = new TopiaSQLQuery<Long>() {
+ @Override
+ protected PreparedStatement prepareQuery(Connection connection) throws SQLException {
+ String hql = "SELECT count(c2.topiaid) FROM Transit ta, " +
+ " Transect te, " +
+ " DataAcquisition da, " +
+ " DataProcessing dp, " +
+ " Cell c, Cell c2 " +
+ "WHERE ta.voyage = ? " +
+ "AND ta.topiaId = te.transit " +
+ "AND te.topiaId = da.transect " +
+ "AND da.topiaId = dp.dataacquisition " +
+ "AND dp.topiaId = c.dataprocessing " +
+ "AND c.topiaId = c2.cell";
+ PreparedStatement result = connection.prepareStatement(hql);
+ result.setString(1, voyage.getTopiaId());
+ return result;
+ }
+
+ @Override
+ protected Long prepareResult(ResultSet set) throws SQLException {
+ return set.getLong(1);
+ }
+ };
+ try {
+ Long result = query.findSingleResult(
+ (TopiaContextImplementor) getTransaction());
+ return result;
+ } catch (TopiaException e) {
+ throw new EchoBaseTechnicalException(e);
+ }
+ }
+
+ public void incrementOp(String message) {
+ opIndex++;
+ if (opIndex % 1000 == 0) {
+ flushTransaction("Could not flush transaction");
+ }
+ progressModel.incrementsProgress();
+
+ if (opIndex % 100 == 0) {
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "[%1$4f] %2$s", progressModel.getProgress(), message));
+ }
+ }
+ }
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Cell;
import fr.ifremer.echobase.entities.data.DataAcquisition;
@@ -53,7 +54,6 @@
private static final Log log =
LogFactory.getLog(AcousticRemoveDataStrategy.class);
-
protected DataAcquisitionDAO dataAcquisitionDAO;
protected TransectDAO transectDAO;
@@ -67,14 +67,34 @@
}
@Override
- protected void removePostDataInVoyage(Voyage voyage) throws TopiaException {
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+ long result = importLog.sizeImportId();
+
+ // add all cell results
+ result += countVoyageCellResults(voyage);
+
+ // add all postCell
+ result += voyage.sizePostCell();
+
+ // add all orphan cells
+ result += countVoyageOrphanCells(voyage);
+ return result;
+ }
+
+ @Override
+ protected void removePreDataInVoyage(Voyage voyage) throws TopiaException {
+
// remove all cell results
removeVoyageCellResults(voyage);
// remove post cell from top voyage
removeVoyagePostCell(voyage);
+ }
+ @Override
+ protected void removePostDataInVoyage(Voyage voyage) throws TopiaException {
+
// remove orphans cells
removeVoyageOrphanCells();
}
@@ -93,22 +113,25 @@
// remove dataAcquisition
delete(dataAcquisitionDAO, dataAcquisition);
- if (log.isInfoEnabled()) {
- log.info("DataAcquisition " + dataAcquisition.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(dataAcquisition.getTopiaId() + " was removed");
}
} else if (id.startsWith(Cell.class.getName())) {
// get cell
Cell cell = cellDAO.findByTopiaId(id);
+ if (cell == null) {
+ throw new IllegalStateException("Could not find cell " + id);
+ }
// remove it from the dataAcquisition
DataProcessing dataProcessing = dataProcessingDAO.findContainsCell(cell);
dataProcessing.removeCell(cell);
// remove cell
delete(cellDAO, cell);
- if (log.isInfoEnabled()) {
- log.info("Cell " + cell.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(cell.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CatchesRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CatchesRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CatchesRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -23,6 +23,7 @@
* #L%
*/
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Operation;
import fr.ifremer.echobase.entities.data.OperationDAO;
@@ -63,6 +64,12 @@
}
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+ long result = importLog.sizeImportId();
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Sample.class.getName())) {
@@ -76,8 +83,8 @@
// remove sample
delete(sampleDAO, sample);
- if (log.isInfoEnabled()) {
- log.info("Sample " + sample.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(sample.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Voyage;
import org.apache.commons.logging.Log;
@@ -54,6 +55,19 @@
}
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+
+ // add all echotype
+ result += voyage.sizeEchotype();
+
+ // add all orphan cells
+ result += countVoyageOrphanCells(voyage);
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Voyage.class.getName())) {
@@ -64,8 +78,8 @@
// delete it
removeVoyage(entity);
- if (log.isInfoEnabled()) {
- log.info("Voyage " + entity.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(entity.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Transect;
import fr.ifremer.echobase.entities.data.TransectDAO;
@@ -64,8 +65,27 @@
}
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+
+ // add all cell results
+ result += countVoyageCellResults(voyage);
+
+ // add all postCell
+ result += voyage.sizePostCell();
+
+ // add all orphan cells
+ result += countVoyageOrphanCells(voyage);
+ return result;
+ }
+
+ @Override
protected void removePreDataInVoyage(Voyage voyage) throws TopiaException {
+ // remove all cell results
+ removeVoyageCellResults(voyage);
+
// remove postCell from voyage
removeVoyagePostCell(voyage);
}
@@ -92,8 +112,8 @@
// delete it
delete(transectDAO, transect);
- if (log.isInfoEnabled()) {
- log.info("Transect " + transect.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(transect.getTopiaId() + " was removed");
}
} else {
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Voyage;
import org.apache.commons.logging.Log;
@@ -54,6 +55,22 @@
}
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+
+ // add all cell results
+ result += countVoyageCellResults(voyage);
+
+ // add all postCell
+ result += voyage.sizePostCell();
+
+ // add all orphan cells
+ result += countVoyageOrphanCells(voyage);
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Voyage.class.getName())) {
@@ -64,8 +81,8 @@
// delete it
removeVoyage(entity);
- if (log.isInfoEnabled()) {
- log.info("Voyage " + entity.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(entity.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/OperationRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/OperationRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/OperationRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Operation;
import fr.ifremer.echobase.entities.data.OperationDAO;
@@ -61,7 +62,13 @@
operationDAO = getDAO(Operation.class, OperationDAO.class);
transectDAO = getDAO(Transect.class, TransectDAO.class);
+ }
+ @Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+ return result;
}
@Override
@@ -78,8 +85,8 @@
// remove it
delete(operationDAO, operation);
- if (log.isInfoEnabled()) {
- log.info("Operation " + operation.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(operation.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultEsduRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultEsduRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultEsduRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -23,6 +23,7 @@
* #L%
*/
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Cell;
import fr.ifremer.echobase.entities.data.Result;
@@ -49,6 +50,13 @@
LogFactory.getLog(ResultEsduRemoveDataStrategy.class);
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Result.class.getName())) {
@@ -63,7 +71,7 @@
// remove result
delete(resultDAO, result);
if (log.isDebugEnabled()) {
- log.debug("Result " + result.getTopiaId() + " was removed");
+ log.debug(result.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultMapRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultMapRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultMapRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -23,6 +23,7 @@
* #L%
*/
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Cell;
import fr.ifremer.echobase.entities.data.Voyage;
@@ -48,6 +49,13 @@
LogFactory.getLog(ResultMapRemoveDataStrategy.class);
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Cell.class.getName())) {
@@ -63,8 +71,8 @@
// remove cell
delete(cellDAO, cell);
- if (log.isInfoEnabled()) {
- log.info("Map Cell " + cell.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(cell.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultRegionRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultRegionRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultRegionRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -23,6 +23,7 @@
* #L%
*/
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Cell;
import fr.ifremer.echobase.entities.data.Voyage;
@@ -48,6 +49,13 @@
LogFactory.getLog(ResultRegionRemoveDataStrategy.class);
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+ return result;
+ }
+
+ @Override
protected void removeImportData(Voyage voyage, String id) throws TopiaException {
if (id.startsWith(Cell.class.getName())) {
@@ -63,8 +71,8 @@
// remove cell
delete(cellDAO, cell);
- if (log.isInfoEnabled()) {
- log.info("Region Cell " + cell.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(cell.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultVoyageRemoveDataStrategy.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultVoyageRemoveDataStrategy.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/ResultVoyageRemoveDataStrategy.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -24,6 +24,7 @@
*/
import com.google.common.collect.Sets;
+import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Echotype;
import fr.ifremer.echobase.entities.data.LengthAgeKey;
@@ -51,14 +52,27 @@
LogFactory.getLog(ResultVoyageRemoveDataStrategy.class);
@Override
+ public long computeNbSteps(Voyage voyage, ImportLog importLog) {
+
+ long result = importLog.sizeImportId();
+
+ // add all cell results
+ result += countVoyageCellResults(voyage);
+
+ // add all postCell
+ result += voyage.sizePostCell();
+
+ // add all orphan cells
+ result += countVoyageOrphanCells(voyage);
+ return result;
+ }
+
+ @Override
protected void removePreDataInVoyage(final Voyage voyage) throws TopiaException {
- removeVoyagePostCell(voyage);
-
removeVoyageCellResults(voyage);
- flushTransaction(
- "Could not flush transaction after deleting data from voyage");
+ removeVoyagePostCell(voyage);
}
@Override
@@ -71,8 +85,8 @@
removeEchotype(voyage, entity);
- if (log.isInfoEnabled()) {
- log.info("Echotype " + entity.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(entity.getTopiaId() + " was removed");
}
} else if (id.startsWith(LengthAgeKey.class.getName())) {
@@ -81,8 +95,8 @@
removeLengthAgeKey(voyage, entity);
- if (log.isInfoEnabled()) {
- log.info("LengthAgeKey " + entity.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(entity.getTopiaId() + " was removed");
}
} else if (id.startsWith(LengthWeightKey.class.getName())) {
@@ -91,8 +105,8 @@
removeLengthWeightKey(voyage, entity);
- if (log.isInfoEnabled()) {
- log.info("LengthWeightKey " + entity.getTopiaId() + " was removed");
+ if (log.isDebugEnabled()) {
+ log.debug(entity.getTopiaId() + " was removed");
}
} else {
canNotDealWithId(id);
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -23,6 +23,7 @@
* #L%
*/
+import com.google.common.collect.Lists;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
@@ -271,7 +272,31 @@
// createResultMapImportv2();
}
- protected void removeImport(String importId) {
+ protected void removeImport(String importId, String... shoudDeleteIds) throws TopiaException {
+
+ List<String> existingId = Lists.newArrayList(
+ importCommonAll1Id,
+ importCommonTransect1Id,
+ importOperation1Id,
+ importCatches1Id,
+ importAcoustic1Id,
+ importResultVoyage1Id,
+ importResultEsdu1Id,
+ importResultRegion1Id,
+ importResultMap1Id,
+ importCommonAll2Id,
+ importCommonTransect2Id,
+
+ voyage1Id, transect1Id, transect1_2Id, operation1Id,
+ totalSample1Id, subSample1Id, biometrySample1Id,
+ cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
+ cellRegion1Id, resultRegion1Id,
+ cellMap1Id, resultMap1Id,
+ echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id,
+ voyage2Id, transect2Id, transect2_2Id
+ );
+ List<String> deletedId = Lists.newArrayList();
+
RemoveDataConfiguration conf = new RemoveDataConfiguration();
conf.setImportLogIds(new String[]{importId});
@@ -280,13 +305,15 @@
EchoBaseUser fakeUser = createFakeUser();
service.removeImport(conf, fakeUser);
- }
+ for (String id : shoudDeleteIds) {
+ existingId.remove(id);
+ deletedId.add(id);
+ }
- protected <E extends TopiaEntity> void assertEntityDeleted(String... entityIds) throws TopiaException {
- for (String entityId : entityIds) {
+ for (String entityId : deletedId) {
if (entityId == null) continue;
- E entity = getEntity(entityId);
+ TopiaEntity entity = getEntity(entityId);
if (entity instanceof ImportLog) {
Assert.assertNull("ImporTLog with id " + entityId + " (" + ((ImportLog) entity).getImportType() + ") should have been deleted, but is still in db :(", entity);
@@ -294,12 +321,10 @@
Assert.assertNull("Entity with id " + entityId + " should have been deleted, but is still in db :(", entity);
}
}
- }
- protected <E extends TopiaEntity> void assertEntityExists(String... entityIds) throws TopiaException {
- for (String entityId : entityIds) {
+ for (String entityId : existingId) {
if (entityId == null) continue;
- E entity = getEntity(entityId);
+ TopiaEntity entity = getEntity(entityId);
Assert.assertNotNull("Entity with id " + entityId + " should NOT have been deleted, but is deleted in db :(", entity);
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -26,7 +26,6 @@
import fr.ifremer.echobase.services.removedata.RemoveDataService;
import fr.ifremer.echobase.services.removedata.strategy.AcousticRemoveDataStrategy;
import org.junit.Test;
-import org.nuiton.topia.TopiaException;
/**
* Test{@link RemoveDataService} with {@link AcousticRemoveDataStrategy}.
@@ -37,30 +36,20 @@
public class AcousticRemoveDataServiceTest extends AbstractRemoveDataServiceTest {
@Test
- public void removeImport() throws TopiaException {
+ public void removeImport() throws Exception {
- removeImport(importAcoustic1Id);
+ removeImport(// import to remove
+ importAcoustic1Id,
+ // data that should be removed
+ dataAcquisition1Id, cellEsdu1Id, cellElementary1Id,
+ cellRegion1Id, cellMap1Id,
+ resultEsdu1Id, resultRegion1Id, resultMap1Id,
+ // importLog that should be removed
+ importAcoustic1Id,
+ importResultEsdu1Id,
+ importResultRegion1Id,
+ importResultMap1Id
+ );
- // dataAquisition 1 is deleted
- assertEntityDeleted(dataAcquisition1Id, cellEsdu1Id, cellElementary1Id,
- cellRegion1Id, cellMap1Id,
- resultEsdu1Id, resultRegion1Id, resultMap1Id);
-
- // and all his imports
- assertEntityDeleted(importAcoustic1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importResultVoyage1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CatchesRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CatchesRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CatchesRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,26 +39,14 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importCatches1Id);
+ removeImport(// import to remove
+ importCatches1Id,
+ // data that should be removed
+ totalSample1Id, subSample1Id, biometrySample1Id,
+ // importLog that should be removed
+ importCatches1Id
+ );
- // sample1 are deleted
- assertEntityDeleted(totalSample1Id, subSample1Id, biometrySample1Id);
- // and all his imports
- assertEntityDeleted(importCatches1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- cellEsdu1Id, cellElementary1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonAllRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonAllRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonAllRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,61 +39,36 @@
@Test
public void removeImport1() throws TopiaException {
- removeImport(importCommonAll1Id);
-
- // voyage 1 is deleted
- assertEntityDeleted(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
- echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id);
-
- // and all his imports
- assertEntityDeleted(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
-
- // voyage 2 still in db
- assertEntityExists(voyage2Id, transect2Id);
-
- // and all his imports
- assertEntityExists(importCommonAll2Id,
- importCommonTransect2Id);
-
+ removeImport(// import to remove
+ importCommonAll1Id,
+ // data that should be removed
+ voyage1Id, transect1Id, operation1Id, transect1_2Id,
+ totalSample1Id, subSample1Id, biometrySample1Id,
+ cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
+ cellRegion1Id, resultRegion1Id,
+ cellMap1Id, resultMap1Id,
+ echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id,
+ // importLog that should be removed
+ importCommonAll1Id,
+ importCommonTransect1Id,
+ importOperation1Id,
+ importCatches1Id,
+ importAcoustic1Id,
+ importResultVoyage1Id,
+ importResultEsdu1Id,
+ importResultRegion1Id,
+ importResultMap1Id);
}
@Test
public void removeImport2() throws TopiaException {
- removeImport(importCommonAll2Id);
-
- // voyage 2 is deleted
- assertEntityDeleted(voyage2Id);
-
- // and all his imports
- assertEntityDeleted(importCommonAll2Id,
- importCommonTransect2Id);
-
- // voyage 1 still in db
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
- echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
+ removeImport(// import to remove
+ importCommonAll2Id,
+ // data that should be removed
+ voyage2Id, transect2Id, transect2_2Id,
+ // importLog that should be removed
+ importCommonAll2Id,
+ importCommonTransect2Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,70 +39,27 @@
@Test
public void removeImport1() throws TopiaException {
- removeImport(importCommonTransect1Id);
-
- // transect 1 is deleted
- assertEntityDeleted(transect1_2Id);
-
- // and all his imports
- assertEntityDeleted(importCommonTransect1Id);
-
- // voyage 1 is still here
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- cellEsdu1Id, cellElementary1Id, resultEsdu1Id);
-
- // and all his imports (exception transect1 one)
- assertEntityExists(importCommonAll1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id);
-
-
- // voyage 2 still in db
- assertEntityExists(voyage2Id, transect2Id);
-
- // and all his imports
- assertEntityExists(importCommonAll2Id,
- importCommonTransect2Id);
+ removeImport(// import to remove
+ importCommonTransect1Id,
+ // data that should be removed
+ transect1_2Id, resultEsdu1Id,
+ cellRegion1Id, resultRegion1Id,
+ cellMap1Id, resultMap1Id,
+ // importLog that should be removed
+ importCommonTransect1Id,
+ importResultEsdu1Id,
+ importResultMap1Id,
+ importResultRegion1Id);
}
@Test
public void removeImport2() throws TopiaException {
- removeImport(importCommonTransect2Id);
-
- // transect 2 is deleted
- assertEntityDeleted(transect2_2Id);
-
- // and all his imports
- assertEntityDeleted(importCommonTransect2Id);
-
-
- // voyage 2 is still here
- assertEntityExists(voyage2Id, transect2Id);
-
- // and all his imports
- assertEntityExists(importCommonAll2Id);
-
-
- // voyage 1 still in db
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
- echotype1Id, lengthAgeKey1Id,lengthWeightKey1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
+ removeImport(// import to remove
+ importCommonTransect2Id,
+ // data that should be removed
+ transect2_2Id,
+ // importLog that should be removed
+ importCommonTransect2Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/OperationRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/OperationRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/OperationRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,26 +39,12 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importOperation1Id);
-
- // operation 1 is deleted
- assertEntityDeleted(operation1Id);
-
- // and all his imports
- assertEntityDeleted(importOperation1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id,
- cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
- echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
+ removeImport(// import to remove
+ importOperation1Id,
+ // data that should be removed
+ operation1Id,
+ totalSample1Id, subSample1Id, biometrySample1Id,
+ // importLog that should be removed
+ importOperation1Id, importCatches1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultEsduRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultEsduRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultEsduRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,29 +39,12 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importResultEsdu1Id);
-
- // esdu cell result are deleted
- assertEntityDeleted(resultEsdu1Id);
-
- // and all his imports
- assertEntityDeleted(importResultEsdu1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- dataAcquisition1Id, cellEsdu1Id, cellElementary1Id,
- echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultRegion1Id,
- importResultMap1Id);
+ removeImport(// import to remove
+ importResultEsdu1Id,
+ // data that should be removed
+ resultEsdu1Id,
+ // importLog that should be removed
+ importResultEsdu1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultMapRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultMapRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultMapRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,7 +39,11 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importResultMap1Id);
-
+ removeImport(// import to remove
+ importResultMap1Id,
+ // data that should be removed
+ cellMap1Id, resultMap1Id,
+ // importLog that should be removed
+ importResultMap1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,27 +39,11 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importResultRegion1Id);
-
- // esdu cell result are deleted
- assertEntityDeleted(cellRegion1Id, resultRegion1Id);
-
- // and all his imports
- assertEntityDeleted(importResultRegion1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- dataAcquisition1Id, cellEsdu1Id, cellElementary1Id, resultEsdu1Id,
- echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id,
- importResultVoyage1Id,
- importResultMap1Id);
+ removeImport(// import to remove
+ importResultRegion1Id,
+ // data that should be removed
+ cellRegion1Id, resultRegion1Id,
+ // importLog that should be removed
+ importResultRegion1Id);
}
}
Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultVoyageRemoveDataServiceTest.java
===================================================================
--- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultVoyageRemoveDataServiceTest.java 2012-09-21 13:25:26 UTC (rev 678)
+++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultVoyageRemoveDataServiceTest.java 2012-09-21 19:25:39 UTC (rev 679)
@@ -39,29 +39,16 @@
@Test
public void removeImport() throws TopiaException {
- removeImport(importResultVoyage1Id);
-
- // voyage "results" are deleted
- assertEntityDeleted(echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id,
- cellRegion1Id, cellMap1Id,
- resultEsdu1Id, resultRegion1Id, resultMap1Id);
-
- // and all his imports
- assertEntityDeleted(importResultVoyage1Id,
- importResultEsdu1Id,
- importResultRegion1Id,
- importResultMap1Id);
-
- // voyage 1 other imports stay
- assertEntityExists(voyage1Id, transect1Id, operation1Id,
- totalSample1Id, subSample1Id, biometrySample1Id,
- dataAcquisition1Id, cellEsdu1Id, cellElementary1Id);
-
- // and all his imports
- assertEntityExists(importCommonAll1Id,
- importCommonTransect1Id,
- importOperation1Id,
- importCatches1Id,
- importAcoustic1Id);
+ removeImport(// import to remove
+ importResultVoyage1Id,
+ // data that should be removed
+ echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id,
+ cellRegion1Id, cellMap1Id,
+ resultEsdu1Id, resultRegion1Id, resultMap1Id,
+ // importLog that should be removed
+ importResultVoyage1Id,
+ importResultEsdu1Id,
+ importResultRegion1Id,
+ importResultMap1Id);
}
}
1
0
21 Sep '12
Author: tchemit
Date: 2012-09-21 15:25:26 +0200 (Fri, 21 Sep 2012)
New Revision: 678
Url: http://forge.codelutin.com/repositories/revision/echobase/678
Log:
fixes #1439: Tableau de bord
refs #1437: Suppression des imports
Added:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/DashBoard.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetVoyage.java
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
Modified:
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java
trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -23,6 +23,8 @@
package fr.ifremer.echobase;
import com.google.common.base.Function;
+import fr.ifremer.echobase.entities.ImportLog;
+import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Cell;
import fr.ifremer.echobase.entities.data.DataProcessing;
import fr.ifremer.echobase.entities.data.Echotype;
@@ -308,6 +310,20 @@
}
};
+ public static final Function<ImportLog, String> IMPORT_LOG_VOYAGE_ID = new Function<ImportLog, String>() {
+ @Override
+ public String apply(ImportLog input) {
+ return input.getVoyageId();
+ }
+ };
+
+ public static final Function<ImportLog, ImportType> IMPORT_LOG_IMPORT_TYPE= new Function<ImportLog, ImportType>() {
+ @Override
+ public ImportType apply(ImportLog input) {
+ return input.getImportType();
+ }
+ };
+
public static String getSpeciesCategoryKey(Species species, SizeCategory sizeCategory, SexCategory sexCategory) {
String key = species.getBaracoudaCode();
if (sizeCategory != null) {
Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java
===================================================================
--- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -33,16 +33,15 @@
import java.util.List;
/**
- * TODO
+ * Metasof the working db.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since TODO
+ * @since 1.1
*/
public class EchoBaseDbMeta extends DbMeta<EchoBaseEntityEnum> {
public static EchoBaseDbMeta newDbMeta() {
- return new EchoBaseDbMeta(new EchoBasePersistenceHelper()
- );
+ return new EchoBaseDbMeta(new EchoBasePersistenceHelper());
}
private static final List<EchoBaseEntityEnum> REFERENCE_TYPES = ImmutableList.copyOf(Arrays.asList(
@@ -127,7 +126,8 @@
EchoBaseDbMeta(EchoBasePersistenceHelper persistenceHelper) {
super(persistenceHelper,
EchoBaseEntityEnum.values(),
- EchoBaseEntityEnum.EntityModificationLog);
+ EchoBaseEntityEnum.EntityModificationLog,
+ EchoBaseEntityEnum.ImportLog);
{
// reference tables
@@ -145,7 +145,6 @@
{
// data tables
-
List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList();
addTables(result, DATA_TYPES);
dataTables = ImmutableList.copyOf(result);
@@ -157,7 +156,6 @@
addAssociations(result, DATA_TYPES);
dataAssociations = ImmutableList.copyOf(result);
}
-
}
public int getEntriesSize() {
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -182,6 +182,19 @@
}
}
+ public <E extends TopiaEntity> void decorateForeignKey(
+ Map data,
+ Class<E> propertyType,
+ String property,
+ String decoratorContext) {
+
+ DecoratorService decoratorService = getService(DecoratorService.class);
+
+ E mission = getEntityById(propertyType, (String) data.get(property));
+ String voyageToString = decoratorService.decorate(getLocale(), mission, decoratorContext);
+ data.put(property + "_lbl", voyageToString);
+ }
+
public void saveEntity(TableMeta<EchoBaseEntityEnum> meta,
Map<String, String> properties,
EchoBaseUser user) {
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -105,6 +105,8 @@
*/
public class DecoratorService extends EchoBaseServiceSupport {
+ public static final String DATE_ONLY = "dateOnly";
+
protected final DecoratorMulti18nProvider decoratorProvider;
public DecoratorService() {
@@ -183,7 +185,10 @@
// ImportLog decorator
registerJXPathDecorator(locale, ImportLog.class, "${importType}$s - ${importDate}$s - ${importText}$s");
+ // ImportLog decorator
+ registerJXPathDecorator(locale, ImportLog.class, DATE_ONLY, "${importDate}$s");
+
// WorkingDbConfiguration decorator
registerJXPathDecorator(locale, WorkingDbConfiguration.class, "${url}$s - ${login}$s (${description}$s)");
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/RemoveDataService.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -52,6 +52,8 @@
import org.nuiton.util.TimeLog;
import org.nuiton.util.decorator.Decorator;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.EnumMap;
import java.util.List;
import java.util.Set;
@@ -96,11 +98,21 @@
// compute nb steps
int nbSteps = 0;
+ List<ImportLog> importsToTreat = Lists.newArrayList();
for (String id : model.getImportLogIds()) {
ImportLog importLog = getEntityById(ImportLog.class, id);
nbSteps += importLog.getImportId().size() + 3;
+ importsToTreat.add(importLog);
}
model.setNbSteps(nbSteps);
+
+ // sort import logs from importType
+ Collections.sort(importsToTreat, new Comparator<ImportLog>() {
+ @Override
+ public int compare(ImportLog o1, ImportLog o2) {
+ return o1.getImportType().ordinal() - o2.getImportType().ordinal();
+ }
+ });
StringBuilder result = new StringBuilder();
for (String id : model.getImportLogIds()) {
String importResult = removeImport(model, id, user);
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -23,13 +23,17 @@
*/
package fr.ifremer.echobase.ui.actions.dbeditor;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+import fr.ifremer.echobase.EchoBaseFunctions;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.ImportLog;
import fr.ifremer.echobase.entities.ImportType;
import fr.ifremer.echobase.entities.data.Voyage;
import fr.ifremer.echobase.services.DbEditorService;
import fr.ifremer.echobase.services.DecoratorService;
-import fr.ifremer.echobase.services.EchoBaseServiceSupport;
import fr.ifremer.echobase.ui.actions.AbstractJSONPaginedAction;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -39,6 +43,7 @@
import org.nuiton.util.decorator.Decorator;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Map;
/**
@@ -106,16 +111,7 @@
public String entityImportLogs() throws Exception {
entityType = EchoBaseEntityEnum.ImportLog;
- execute();
- Map<String, String> importTypes = decorateEnums(ImportType.values());
- Decorator<Voyage> voyageDecorator =
- getService(DecoratorService.class).getDecorator(
- getLocale(), Voyage.class, null);
-
- EchoBaseServiceSupport service =
- getService(EchoBaseServiceSupport.class);
-
if (StringUtils.isNotBlank(voyageId)) {
// add a filter on voyageId
@@ -123,17 +119,64 @@
FilterRuleOperator.eq, ImportLog.PROPERTY_VOYAGE_ID, voyageId
)));
}
+ execute();
+ Map<String, String> importTypes = decorateEnums(ImportType.values());
+
+ DbEditorService service = getService(DbEditorService.class);
for (Map row : datas) {
String importType = (String) row.get(ImportLog.PROPERTY_IMPORT_TYPE);
String importTypeToString = importTypes.get(importType);
row.put(ImportLog.PROPERTY_IMPORT_TYPE, importTypeToString);
- String voyageId = (String) row.get(ImportLog.PROPERTY_VOYAGE_ID);
- Voyage voyage = service.getEntityById(Voyage.class, voyageId);
- String voyageToString = voyageDecorator.toString(voyage);
- row.put("voyage", voyageToString);
+ service.decorateForeignKey(row, Voyage.class, ImportLog.PROPERTY_VOYAGE_ID, null);
}
return SUCCESS;
}
+
+ public String dashboardImportLogs() throws Exception {
+ entityType = EchoBaseEntityEnum.Voyage;
+ execute();
+
+ DbEditorService service = getService(DbEditorService.class);
+
+ DecoratorService decoratorService = getService(DecoratorService.class);
+ Decorator<ImportLog> importLogDecorator = decoratorService.getDecorator(
+ getLocale(), ImportLog.class, DecoratorService.DATE_ONLY);
+
+ Multimap<String, ImportLog> importLogsByVoyage = Multimaps.index(
+ service.getEntities(ImportLog.class),
+ EchoBaseFunctions.IMPORT_LOG_VOYAGE_ID);
+
+ for (Map row : datas) {
+
+ String id = (String) row.get("id");
+
+ Collection<ImportLog> importLogs = importLogsByVoyage.get(id);
+
+ service.decorateForeignKey(row, Voyage.class, "id", null);
+
+ // to keep importLogs decorated, indexed by their topiaId
+ Map<String, String> imports = Maps.newHashMap();
+
+ // to keep importLogs ids indexed by their importType
+ Multimap<ImportType, String> result = ArrayListMultimap.create();
+
+ for (ImportLog importLog : importLogs) {
+ String importLogToString =
+ importLogDecorator.toString(importLog);
+ String importId = importLog.getTopiaId();
+ imports.put(importId, importLogToString);
+ result.put(importLog.getImportType(), importId);
+ }
+ row.put("importLogs", imports);
+
+ for (ImportType importType : result.keySet()) {
+ row.put("importType." + importType.name(), result.get(importType));
+ }
+
+
+ }
+ return SUCCESS;
+ }
}
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/DashBoard.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/DashBoard.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/DashBoard.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -0,0 +1,30 @@
+package fr.ifremer.echobase.ui.actions.workingDb;
+
+import fr.ifremer.echobase.entities.ImportType;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+
+import java.util.Map;
+
+/**
+ * DashBoard of existing voyages.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class DashBoard extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Map<String, String> importTypes;
+
+ public Map<String, String> getImportTypes() {
+ return importTypes;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ importTypes = decorateEnums(ImportType.values());
+ return SUCCESS;
+ }
+}
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/DashBoard.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -0,0 +1,54 @@
+package fr.ifremer.echobase.ui.actions.workingDb;
+
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.ImportLog;
+import fr.ifremer.echobase.entities.ImportType;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.nuiton.topia.persistence.metadata.TableMeta;
+
+import java.util.Map;
+
+/**
+ * Obtain details of a given {@link ImportLog}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class GetImportLogDetail extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String importLogId;
+
+ protected Map data;
+
+ public void setImportLogId(String importLogId) {
+ this.importLogId = importLogId;
+ }
+
+ public Map<?, ?> getData() {
+ return data;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ DbEditorService service = getService(DbEditorService.class);
+ TableMeta<EchoBaseEntityEnum> tableMeta = service.getTableMeta(EchoBaseEntityEnum.ImportLog);
+ data = service.getData(tableMeta, importLogId);
+
+
+ // decorate import type
+ Map<String, String> importTypes = decorateEnums(ImportType.values());
+ String importType = (String) data.get(ImportLog.PROPERTY_IMPORT_TYPE);
+ data.put(ImportLog.PROPERTY_IMPORT_TYPE, importTypes.get(importType));
+
+ // decorate foreign keys
+ service.decorateForeignKey(data, Voyage.class, ImportLog.PROPERTY_VOYAGE_ID, null);
+
+ return SUCCESS;
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetVoyage.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetVoyage.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetVoyage.java 2012-09-21 13:25:26 UTC (rev 678)
@@ -0,0 +1,51 @@
+package fr.ifremer.echobase.ui.actions.workingDb;
+
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.ImportLog;
+import fr.ifremer.echobase.entities.data.Voyage;
+import fr.ifremer.echobase.entities.references.AreaOfOperation;
+import fr.ifremer.echobase.entities.references.Mission;
+import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.nuiton.topia.persistence.metadata.TableMeta;
+
+import java.util.Map;
+
+/**
+ * Obtain details of a given {@link ImportLog}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class GetVoyage extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String voyageId;
+
+ protected Map data;
+
+ public void setVoyageId(String voyageId) {
+ this.voyageId = voyageId;
+ }
+
+ public Map<?, ?> getData() {
+ return data;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ DbEditorService service = getService(DbEditorService.class);
+ TableMeta<EchoBaseEntityEnum> tableMeta = service.getTableMeta(EchoBaseEntityEnum.Voyage);
+ data = service.getData(tableMeta, voyageId);
+
+ // decorate foreign keys
+ service.decorateForeignKey(data, Mission.class, Voyage.PROPERTY_MISSION, null);
+ service.decorateForeignKey(data, AreaOfOperation.class, Voyage.PROPERTY_AREA_OF_OPERATION, null);
+
+ return SUCCESS;
+ }
+
+
+}
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetVoyage.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2012-09-21 13:25:26 UTC (rev 678)
@@ -137,8 +137,21 @@
<action name="getDashboardImportLogs" method="dashboardImportLogs"
class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
<result type="jsonWithPager"/>
+
</action>
+ <!-- Get import log detail -->
+ <action name="getDashboardImportLog" method="execute"
+ class="fr.ifremer.echobase.ui.actions.workingDb.GetImportLogDetail">
+ <result type="json"/>
+ </action>
+
+ <!-- Get voyage detail -->
+ <action name="getDashboardVoyage" method="execute"
+ class="fr.ifremer.echobase.ui.actions.workingDb.GetVoyage">
+ <result type="json"/>
+ </action>
+
<!-- Show dashboard -->
<action name="dashboard" method="execute"
class="fr.ifremer.echobase.ui.actions.workingDb.DashBoard">
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2012-09-21 13:25:26 UTC (rev 678)
@@ -10,7 +10,9 @@
echobase.action.createNewMission=Create a new mission
echobase.action.createSqlQuery=Save
echobase.action.createWorkingDbConfiguration=Save
+echobase.action.dashboard=Voyages dashboard
echobase.action.delete=Delete
+echobase.action.delete.selectedImport=Delete selected imports
echobase.action.downloadEmbeddedApplicationFile=Download the portable database
echobase.action.downloadExportDbFile=Download database export file
echobase.action.export=Export
@@ -61,6 +63,7 @@
echobase.common.dataProcessing=DataProcessing
echobase.common.dataProcessingNotes=Data processing notes
echobase.common.datum=Datum
+echobase.common.description=Description
echobase.common.digitThreshold=Digitization threshold
echobase.common.distributionStatement=Distribution statement
echobase.common.echotypeFile=
@@ -129,6 +132,8 @@
echobase.common.soundSpeedCalculationsME70=Sound speed calculation method (ME70 instrument)
echobase.common.sounderConstant=Sounder constant (if relevant)
echobase.common.source=Source
+echobase.common.startEndDate=Start - End date
+echobase.common.startEndPort=Start - End port
echobase.common.subSampleFile=
echobase.common.totalSampleFile=
echobase.common.transceiverAcquisitionAbsorptionDescription=Transceiver absorption coefficient computation method (data acquisition)
@@ -145,6 +150,7 @@
echobase.common.voyageFile=
echobase.confirm.delete.importData=Delete import
echobase.confirm.delete.query=Delete query
+echobase.confirm.delete.selected.importData=Delete selected imports
echobase.confirm.delete.workingDbConfiguration=Delete working database configuration
echobase.error.bad.password=Invalid password
echobase.error.email.already.used=The user name already exists
@@ -321,20 +327,21 @@
echobase.menu.removeData=Remove data
echobase.menu.users=Manage users
echobase.menu.viewData=Display data
+echobase.message.clickToShowImportDefail=Click to show import detail
echobase.message.createEmbedded.result=Portable application was successful in %s.
echobase.message.download.link=If download did not start by itself, you can start it manually from this link\:
echobase.message.exportDb.result=Export of database (mode %s) was successful (file %s) in %s.
echobase.message.importData.result=Data import successful in %s \:\n%s
echobase.message.no.row.selected=No data selected
echobase.message.noEntrySelection=No field selected
-echobase.action.delete.selectedImport=Delete selected imports
+echobase.message.noImportLogSelected=No import selected
+echobase.message.noVoyageSelected=No voyage selected
echobase.message.removeData.result=Data import removalwas successful in %s\:\n%s
echobase.message.warnEmbeddedApplicationInProgress=Please do not close the window to access the new portable database file
echobase.message.warnExportInProgress=Please do not close the window to access the export file
echobase.message.warnImportInProgress=Please do not close the window to access the imported file
echobase.message.warnRemoveDataInProgress=Please do not close the window to access remove data result
echobase.title.confirm.deleteImportLogs=Delete data
-echobase.confirm.delete.selected.importData=Delete selected imports
echobase.title.confirm.deleteQuery=Delete a query
echobase.title.confirm.deleteWorkingDbConfiguration=Delete a configuration
echobase.title.connectToDbInformations=Database connection information
@@ -364,6 +371,7 @@
echobase.title.removeDataProgress=Remove import data
echobase.title.removeDataResult=Result of remove import data
echobase.title.users=Administrate users
+echobase.title.voyage.detail=Voyage detail
echobase.title.welcome=Welcome to Echobase
echobase.title.workingDbConfiguration=Manage working database configurations
echobase.tooltip.disconnectWorkingDb=Change working database
Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
===================================================================
--- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-09-21 13:25:26 UTC (rev 678)
@@ -10,7 +10,9 @@
echobase.action.createNewMission=Créer une nouvelle mission
echobase.action.createSqlQuery=Enregistrer
echobase.action.createWorkingDbConfiguration=Enregistrer
+echobase.action.dashboard=Tableau de bord des campagnes
echobase.action.delete=Suppression
+echobase.action.delete.selectedImport=Supprimer les imports sélectionnés
echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée
echobase.action.downloadExportDbFile=Télécharger le fichier d'export de la base complète
echobase.action.export=Exporter
@@ -61,6 +63,7 @@
echobase.common.dataProcessing=DataProcessing
echobase.common.dataProcessingNotes=Notes sur le pré-traitement des données
echobase.common.datum=Référenciel
+echobase.common.description=Description
echobase.common.digitThreshold=Seuil de numérisation
echobase.common.distributionStatement=Conditions de diffusion des données
echobase.common.echotypeFile=
@@ -129,6 +132,8 @@
echobase.common.soundSpeedCalculationsME70=Méthode de calcul de la célérité du son (ME70)
echobase.common.sounderConstant=Constante sondeur (si besoin)
echobase.common.source=Source
+echobase.common.startEndDate=Date de début - fin
+echobase.common.startEndPort=Port de départ - arrivé
echobase.common.subSampleFile=
echobase.common.totalSampleFile=
echobase.common.transceiverAcquisitionAbsorptionDescription=Méthode de calcul du coefficient d'absorption pour l'acquisition des données
@@ -145,6 +150,7 @@
echobase.common.voyageFile=
echobase.confirm.delete.importData=Confirmer la suppression de l'import
echobase.confirm.delete.query=Confirmer la suppression de la requête
+echobase.confirm.delete.selected.importData=Confirmer la suppression des imports sélectionnés
echobase.confirm.delete.workingDbConfiguration=Confirmer la suppression de la configuration suivante
echobase.error.bad.password=Mot de passe incorrect
echobase.error.email.already.used=Nom d'utilisateur déjà utilisé
@@ -321,20 +327,21 @@
echobase.menu.removeData=Supprimer des données
echobase.menu.users=Gérer les utilisateurs
echobase.menu.viewData=Visualiser les données
+echobase.message.clickToShowImportDefail=Cliquer pour obtenir les détails de l'import
echobase.message.createEmbedded.result=La création de l'application embarqué a réussi en %s
echobase.message.download.link=Si le téléchargement n'a pas démarré automatiquement, suivez ce lien \:
echobase.message.exportDb.result=L'export de la base (mode %s) a réussi (fichier %s) en %s
echobase.message.importData.result=Import de données réussi en %s \:\n%s
echobase.message.no.row.selected=Aucune donnée sélectionnée
echobase.message.noEntrySelection=Pas de champ sélectionné
+echobase.message.noImportLogSelected=Pas d'import sélectionné
+echobase.message.noVoyageSelected=Pas de campagne sélectionné
echobase.message.removeData.result=La suppression de l'import s'est déroule avec succès en %s \:\n%s
echobase.message.warnEmbeddedApplicationInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de la création de l'application embarquée
echobase.message.warnExportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'export
echobase.message.warnImportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'import
echobase.message.warnRemoveDataInProgress=Merci de ne pas fermer la fenètre pour pouvoir accéder aux résultats de la suppression de l'import
echobase.title.confirm.deleteImportLogs=Supprimer des données
-echobase.action.delete.selectedImport=Supprimer les imports sélectionnés
-echobase.confirm.delete.selected.importData=Confirmer la suppression des imports sélectionnés
echobase.title.confirm.deleteQuery=Supprimer une requête
echobase.title.confirm.deleteWorkingDbConfiguration=Supprimer la configuration
echobase.title.connectToDbInformations=Informations de connexion à la base de données
@@ -364,6 +371,7 @@
echobase.title.removeDataProgress=Suppression d'un import en cours...
echobase.title.removeDataResult=Résultat de la suppression d'un import
echobase.title.users=Administration des utilisateurs
+echobase.title.voyage.detail=Détail de la campagne
echobase.title.welcome=Bienvenue dans EchoBase
echobase.title.workingDbConfiguration=Administration des configurations de base de travail
echobase.tooltip.disconnectWorkingDb=Changer de base de travail
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/decorators.xml 2012-09-21 13:25:26 UTC (rev 678)
@@ -36,6 +36,7 @@
<pattern>/exportQuery/confirmDelete*</pattern>
<pattern>/importData/get*</pattern>
<pattern>/workingDb/confirmDelete*</pattern>
+ <pattern>/workingDb/get*</pattern>
<!--<pattern>/removeData/confirmDelete*</pattern>-->
</excludes>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2012-09-21 13:25:26 UTC (rev 678)
@@ -50,3 +50,14 @@
</ul>
</fieldset>
</div>
+<br/>
+<s:if test="%{workingDbSelected}">
+ <s:form namespace="/workingDb" action="dashboard">
+ <ul class="toolbar floatLeft">
+ <li>
+ <s:submit theme="simple" action="dashboard"
+ key="echobase.action.dashboard"/>
+ </li>
+ </ul>
+ </s:form>
+</s:if>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/confirmDelete.jsp 2012-09-21 13:25:26 UTC (rev 678)
@@ -42,6 +42,9 @@
<s:form namespace="/removeData">
+ <s:iterator value="model.importLogIds" var="id">
+ <s:hidden name="model.importLogIds" value="%{#id}"/>
+ </s:iterator>
<br/>
<ul class="toolbar floatRight">
<li>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/removeData/importLogs.jsp 2012-09-21 13:25:26 UTC (rev 678)
@@ -27,10 +27,6 @@
<script type="text/javascript"
src="<s:url value='/js/gridHelper.js' />"></script>
-<s:set var="emptySelection">
- <s:text name="echobase.message.noEntrySelection"/>
-</s:set>
-
<script type="text/javascript">
function reloadPage(params) {
@@ -39,26 +35,45 @@
return false;
}
+ function loadImportLogDetail(importLogId) {
+ $.ajax(
+ {
+ url:'<s:url action="getDashboardImportLog" namespace="/workingDb"/>',
+ data:{importLogId:importLogId},
+ async:false,
+ dataType:"json",
+ success:function (data, textStatus) {
+
+ $('#noImportLogDetail').hide();
+ $('#importLogDetail').show();
+ var json = data.data;
+
+ if ($('#noVoyageDetail').is(":visible")) {
+
+ // need to load voyage
+ loadVoyageDetail(json['voyageId']);
+ }
+
+ $('#importLogVoyage').html(json['voyageId_lbl']);
+ $('#importLogText').html(json['importText']);
+ $('#importLogUser').html(json['importUser']);
+ $('#importLogDate').html(json['importDate']);
+ $('#importLogImportType').html(json['importType']);
+ }
+ });
+ return false;
+ }
+
jQuery(document).ready(function () {
$('[name="voyageId"]').change(function (event) {
reloadPage({'voyageId':this.value});
});
- $.addRowSelectTopic('importLogs', function () {
+ $.addRowSelectTopic('importLogs', function (event) {
- $('#extraInfos').show();
- var text = $("tr[aria-selected=true] td[aria-describedby='importLogs_importText']").text();
- $('#importLogText').html(text);
- var voyage = $("tr[aria-selected=true] td[aria-describedby='importLogs_voyage']").text();
- $('#importLogVoyage').html(voyage);
- var user = $("tr[aria-selected=true] td[aria-describedby='importLogs_importUser']").text();
- $('#importLogUser').html(user);
- var date = $("tr[aria-selected=true] td[aria-describedby='importLogs_importDate']").text();
- $('#importLogDate').html(date);
- var importType = $("tr[aria-selected=true] td[aria-describedby='importLogs_importType']").text();
- $('#importLogImportType').html(importType);
-
+ var id = event.originalEvent.id;
+ loadImportLogDetail(id);
});
$.addClearSelectTopic('importLogs', function (event) {
@@ -70,7 +85,8 @@
elem.attr("name", "model.importLogIds");
elem.attr("value", newId);
});
- $('#extraInfos').hide();
+ $('#noImportLogDetail').show();
+ $('#importLogDetail').hide();
});
$.addEvenAndOddClasses('importLogs');
});
@@ -113,7 +129,7 @@
<sjg:gridColumn name="id" title="id" hidden="true"/>
<sjg:gridColumn name="importType" sortable="true"
title="%{getText('echobase.common.importType')}"/>
- <sjg:gridColumn name="voyage" sortable="true"
+ <sjg:gridColumn name="voyageId_lbl" sortable="true"
title="%{getText('echobase.common.voyage')}"/>
<sjg:gridColumn name="importDate" sortable="true"
title="%{getText('echobase.common.importDate')}"/>
@@ -125,30 +141,30 @@
<br/>
<fieldset>
<legend><s:text name="echobase.title.importLog.detail"/></legend>
- <div id="extraInfos">
+ <div id="noImportLogDetail">
+ <pre>
+ <s:text name="echobase.message.noImportLogSelected"/>
+ </pre>
+ </div>
+ <div id="importLogDetail">
<s:label key='echobase.common.importType' value=''/>
- <div class="clearBoth"/>
<pre id='importLogImportType' style="font-weight: bold;"></pre>
<br/>
<s:label key='echobase.common.voyage' value=''/>
- <div class="clearBoth"/>
<pre id='importLogVoyage' style="font-weight: bold;"></pre>
<br/>
<s:label key='echobase.common.importDate' value=''/>
- <div class="clearBoth"/>
<pre id='importLogDate' style="font-weight: bold;"></pre>
<br/>
<s:label key='echobase.common.importText' value=''/>
- <div class="clearBoth"/>
<pre id='importLogText' style="font-weight: bold;"></pre>
<br/>
<s:label key='echobase.common.importUser' value=''/>
- <div class="clearBoth"/>
<pre id='importLogUser' style="font-weight: bold;"></pre>
</div>
</fieldset>
@@ -156,6 +172,6 @@
<br/>
<s:submit id='confirmDelete' action="confirmDelete" method="input"
onclick="return checkOneRowSelected();"
- key="echobase.action.delete.selectedImport" />
+ key="echobase.action.delete.selectedImport"/>
</s:form>
\ No newline at end of file
Added: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp 2012-09-21 13:25:26 UTC (rev 678)
@@ -0,0 +1,223 @@
+<%--
+#%L
+ EchoBase :: UI
+ $Id$
+ $HeadURL: http://svn.forge.codelutin.com/svn/echobase/trunk/echobase-ui/src/main/weba… $
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+--%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
+<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags" %>
+<script type="text/javascript"
+ src="<s:url value='/js/gridHelper.js' />"></script>
+
+<s:set var="importTooltip">
+ <s:text name="echobase.message.clickToShowImportDefail"/>
+</s:set>
+
+<script type="text/javascript">
+
+ function loadImportLogDetail(importLogId) {
+ $.ajax(
+ {
+ url:'<s:url action="getDashboardImportLog" namespace="/workingDb"/>',
+ data:{importLogId:importLogId},
+ async:false,
+ dataType:"json",
+ success:function (data, textStatus) {
+
+ $('#noImportLogDetail').hide();
+ $('#importLogDetail').show();
+ var json = data.data;
+
+ if ($('#noVoyageDetail').is(":visible")) {
+
+ // need to load voyage
+ loadVoyageDetail(json['voyageId']);
+ }
+
+ $('#importLogVoyage').html(json['voyageId_lbl']);
+ $('#importLogText').html(json['importText']);
+ $('#importLogUser').html(json['importUser']);
+ $('#importLogDate').html(json['importDate']);
+ $('#importLogImportType').html(json['importType']);
+ }
+ });
+ return false;
+ }
+
+ function loadVoyageDetail(voyageId) {
+ $.ajax(
+ {
+ url:'<s:url action="getDashboardVoyage" namespace="/workingDb"/>',
+ data:{voyageId:voyageId},
+ async:false,
+ dataType:"json",
+ success:function (data, textStatus) {
+
+ $('#noVoyageDetail').hide();
+ $('#voyageDetail').show();
+ var json = data.data;
+
+ $('#voyageMission').html(json['mission_lbl']);
+ $('#voyageAreaOfOperation').html(json['areaOfOperation_lbl']);
+ $('#voyageStartEndPort').html(json['startPort'] + " - " + json['endPort']);
+ $('#voyageStartEndDate').html(json['startDate'] + " - " + json['endDate']);
+ $('#voyageDatum').html(json['datum']);
+ $('#voyageName').html(json['name']);
+ $('#voyageDescription').html(json['description']);
+
+ }
+ });
+ return false;
+ }
+
+ function formatImportLogs(cellvalue, options, rowObject) {
+ var result = "<ul>";
+ var importMapping = rowObject['importLogs'];
+ $(cellvalue).each(function () {
+ var importId = this;
+ var val = importMapping[importId];
+ result += "<li><a href='#' title='${importTooltip}' onclick='return loadImportLogDetail(\"" + importId +
+ "\")' class='fontsize11'>" + val + "</a></li>";
+ });
+ result += "</ul>";
+ return result;
+ }
+
+ jQuery(document).ready(function () {
+
+ // display voyage infos
+ $.addRowSelectTopic('voyages', function () {
+ var voyageId = $("tr[aria-selected=true] td[aria-describedby='voyages_id']").text();
+ loadVoyageDetail(voyageId);
+ });
+
+ $.addClearSelectTopic('voyages', function (event) {
+
+ $('#noImportLogDetail').show();
+ $('#importLogDetail').hide();
+ $('#noVoyageDetail').show();
+ $('#voyageDetail').hide();
+ });
+ $.addEvenAndOddClasses('voyages');
+ });
+
+
+</script>
+
+<title><s:text name="echobase.title.importLogs"/></title>
+
+<s:url id="loadUrl" action="getDashboardImportLogs" namespace="/workingDb"
+ escapeAmp="false"/>
+<sjg:grid id="voyages" dataType="json" href="%{loadUrl}" gridModel="datas"
+ pager="true" pagerButtons="true" pagerInput="true" navigator="true"
+ autowidth="true" rownumbers="false" viewrecords="true"
+ navigatorEdit="false" navigatorSearch="false"
+ navigatorDelete="false"
+ navigatorAdd="false" rowList="10,15,20,50,100,250,500" rowNum="10"
+ onSelectRowTopics="voyages-rowSelect"
+ onCellSelectTopics="voyages-rowSelect"
+ onCompleteTopics="voyages-clearSelect">
+
+ <sjg:gridColumn name="id" title="id" hidden="true"/>
+ <sjg:gridColumn name="id_lbl" sortable="true"
+ title="%{getText('echobase.common.voyage')}"/>
+
+ <s:iterator value="%{importTypes.entrySet()}" var="entry">
+ <sjg:gridColumn name="importType.%{#entry.key}" sortable="true"
+ title="%{#entry.value}" formatter="formatImportLogs"/>
+ </s:iterator>
+</sjg:grid>
+<br/>
+
+
+<fieldset>
+ <legend><s:text name="echobase.title.voyage.detail"/></legend>
+
+ <div id="noVoyageDetail">
+ <pre>
+ <s:text name="echobase.message.noVoyageSelected"/>
+ </pre>
+ </div>
+ <div id="voyageDetail">
+
+ <s:label key='echobase.common.name' value=''/>
+ <pre id='voyageName' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.description' value=''/>
+ <pre id='voyageDescription' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.mission' value=''/>
+ <pre id='voyageMission' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.areaOfOperation' value=''/>
+ <pre id='voyageAreaOfOperation' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.startEndPort' value=''/>
+ <pre id='voyageStartEndPort' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.startEndDate' value=''/>
+ <pre id='voyageStartEndDate' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.datum' value=''/>
+ <pre id='voyageDatum' style="font-weight: bold;"></pre>
+ <br/>
+
+ </div>
+
+</fieldset>
+
+<fieldset>
+ <legend><s:text name="echobase.title.importLog.detail"/></legend>
+
+ <div id="noImportLogDetail">
+ <pre>
+ <s:text name="echobase.message.noImportLogSelected"/>
+ </pre>
+ </div>
+ <div id="importLogDetail">
+
+ <s:label key='echobase.common.importType' value=''/>
+ <pre id='importLogImportType' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.voyage' value=''/>
+ <pre id='importLogVoyage' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.importDate' value=''/>
+ <pre id='importLogDate' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.importText' value=''/>
+ <pre id='importLogText' style="font-weight: bold;"></pre>
+ <br/>
+
+ <s:label key='echobase.common.importUser' value=''/>
+ <pre id='importLogUser' style="font-weight: bold;"></pre>
+ </div>
+
+</fieldset>
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp 2012-09-21 10:32:50 UTC (rev 677)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/information.jsp 2012-09-21 13:25:26 UTC (rev 678)
@@ -87,6 +87,10 @@
<s:submit theme="simple" action="disconnect"
key="echobase.action.workingDbconfiguration.disconnect"/>
</li>
+ <li>
+ <s:submit theme="simple" action="dashboard"
+ key="echobase.action.dashboard"/>
+ </li>
</ul>
</s:form>
1
0
r677 - trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery
by tchemit@users.forge.codelutin.com 21 Sep '12
by tchemit@users.forge.codelutin.com 21 Sep '12
21 Sep '12
Author: tchemit
Date: 2012-09-21 12:32:50 +0200 (Fri, 21 Sep 2012)
New Revision: 677
Url: http://forge.codelutin.com/repositories/revision/echobase/677
Log:
fixes #1518: Impossible d'?\195?\169crire une nouvelle requ?\195?\168te d'export
Modified:
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2012-09-21 10:29:14 UTC (rev 676)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/exportQuery.jsp 2012-09-21 10:32:50 UTC (rev 677)
@@ -113,15 +113,15 @@
<legend><s:text name="echobase.legend.sqlQuery.configuration"/></legend>
<s:textarea key="query.name" required="true" cols="160" rows="1"
- readonly="%{queryExists or !canUpdateQuery}"
+ readonly="%{queryExists}"
label="%{getText('echobase.label.query.name')}"/>
<s:textarea key="query.description" required="true" cols="160" rows="2"
- readonly="%{!canUpdateQuery}"
+ readonly="%{queryExists and !canUpdateQuery}"
label="%{getText('echobase.label.query.description')}"/>
<s:textarea key="query.sqlQuery" required="true" cols="160" rows="4"
- readonly="%{!canUpdateQuery}"
+ readonly="%{queryExists and !canUpdateQuery}"
label="%{getText('echobase.label.query.sql')}"/>
<s:if test="queryExists">
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp 2012-09-21 10:29:14 UTC (rev 676)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportQuery/newLibreOfficeQuery.jsp 2012-09-21 10:32:50 UTC (rev 677)
@@ -59,10 +59,6 @@
return false;
}
- jQuery(document).ready(function () {
-
- });
-
</script>
<title><s:text name="echobase.title.export"/></title>
1
0
r676 - in trunk/echobase-ui/src/main/resources: . config
by tchemit@users.forge.codelutin.com 21 Sep '12
by tchemit@users.forge.codelutin.com 21 Sep '12
21 Sep '12
Author: tchemit
Date: 2012-09-21 12:29:14 +0200 (Fri, 21 Sep 2012)
New Revision: 676
Url: http://forge.codelutin.com/repositories/revision/echobase/676
Log:
fixes #1519: La pagination des tableaux n'est pas correcte
Modified:
trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
trunk/echobase-ui/src/main/resources/config/struts-removeData.xml
trunk/echobase-ui/src/main/resources/config/struts-user.xml
trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
trunk/echobase-ui/src/main/resources/struts.xml
Modified: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -57,7 +57,7 @@
<!-- Get datas of the selected table -->
<action name="getTableDatas"
class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
- <result type="json"/>
+ <result type="jsonWithPager"/>
</action>
<!-- Get datas of the selected table -->
Modified: trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/config/struts-exportQuery.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -79,7 +79,7 @@
<!-- Get result of the export query execution -->
<action name="getExportQueryResult"
class="fr.ifremer.echobase.ui.actions.exportQuery.GetExportQueryResult">
- <result type="json"/>
+ <result type="jsonWithPager"/>
</action>
<!-- Clone the export query -->
Modified: trunk/echobase-ui/src/main/resources/config/struts-removeData.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-removeData.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/config/struts-removeData.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -65,7 +65,7 @@
<!-- Get import logs entries -->
<action name="getImportLogs" method="entityImportLogs"
class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
- <result type="json"/>
+ <result type="jsonWithPager"/>
</action>
</package>
Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-user.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/config/struts-user.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -68,7 +68,7 @@
<!-- Get list of users in database -->
<action name="getUsers"
class="fr.ifremer.echobase.ui.actions.user.GetUsers">
- <result type="json"/>
+ <result type="jsonWithPager"/>
</action>
</package>
Modified: trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/config/struts-workingDb.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -130,9 +130,20 @@
<!-- Get modification logs entries -->
<action name="getEntityModificationLogs" method="entityModificationLogs"
class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
- <result type="json"/>
+ <result type="jsonWithPager"/>
</action>
+ <!-- Get dashboard values -->
+ <action name="getDashboardImportLogs" method="dashboardImportLogs"
+ class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
+ <result type="jsonWithPager"/>
+ </action>
+
+ <!-- Show dashboard -->
+ <action name="dashboard" method="execute"
+ class="fr.ifremer.echobase.ui.actions.workingDb.DashBoard">
+ <result>/WEB-INF/jsp/workingDb/dashboard.jsp</result>
+ </action>
</package>
</struts>
Modified: trunk/echobase-ui/src/main/resources/struts.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/struts.xml 2012-09-20 16:03:59 UTC (rev 675)
+++ trunk/echobase-ui/src/main/resources/struts.xml 2012-09-21 10:29:14 UTC (rev 676)
@@ -48,7 +48,7 @@
<!--see http://struts.apache.org/2.2.3/docs/performance-tuning.html-->
<constant name="struts.freemarker.templatesCache" value="true"/>
- <package name="default" extends="json-default" abstract="true"
+ <package name="default" extends="struts-default" abstract="true"
namespace="/">
<result-types>
@@ -57,6 +57,14 @@
<param name="actionName">home</param>
<param name="namespace">/</param>
</result-type>
+ <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
+ <result-type name="jsonWithPager" class="org.apache.struts2.json.JSONResult">
+ <param name="includeProperties">
+ rows,page,total,records,datas,datas.*,sord,sidx,filters,searchField,searchString,searchOper
+ </param>
+ <param name="ignoreHierarchy">false</param>
+ <!--<param name="defaultEncoding">UTF-8</param>-->
+ </result-type>
</result-types>
<interceptors>
1
0