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
- 1820 discussions
09 Nov '11
Author: tchemit
Date: 2011-11-09 20:41:58 +0100 (Wed, 09 Nov 2011)
New Revision: 32
Url: http://forge.codelutin.com/repositories/revision/echobase/32
Log:
use new Pager object (should be pushed to nuiton-utils) + new filter
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/Pager.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/AbstractJSONPaginedAction.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetEntities.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsers.java
Removed:
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/json/GetUsersDatas.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseTransactionInterceptorImpl.java
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java
trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
trunk/echobase-ui/src/main/resources/config/struts-json.xml
trunk/echobase-ui/src/main/resources/config/struts-user.xml
trunk/echobase-ui/src/main/resources/struts.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml
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 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -35,6 +35,8 @@
import fr.ifremer.echobase.entities.meta.TableMeta;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.persistence.TopiaDAO;
@@ -55,29 +57,39 @@
*/
public class DbEditorService extends AbstractEchoBaseService {
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DbEditorService.class);
+
+ protected DecoratorService decoratorService;
+
+ protected DecoratorService getDecoratorService() {
+ if (decoratorService == null) {
+
+ decoratorService = serviceContext.newService(DecoratorService.class);
+ }
+ return decoratorService;
+ }
+
public static class ResultDatas {
/** Total count. */
int count;
/** Loaded datas (for the given asked page). */
- Map[] rows;
+ Map<?, ?>[] rows;
+ public ResultDatas(int count, Map<?, ?>[] rows) {
+ this.count = count;
+ this.rows = rows;
+ }
+
public int getCount() {
return count;
}
- public void setCount(int count) {
- this.count = count;
- }
-
public Map[] getRows() {
return rows;
}
-
- public void setRows(Map[] rows) {
- this.rows = rows;
- }
}
public TableMeta getTableMetas(String tableName) {
@@ -86,10 +98,9 @@
return result;
}
- //TODO Use an object to filter datas and do pagination
+ //TODO Use an object to filter datas
public ResultDatas getDatas(String tableName,
- int from,
- int to,
+ Pager pager,
String sidx,
Boolean ascendantOrder) {
@@ -99,7 +110,27 @@
Class<? extends TopiaEntity> contract = entityEnum.getContract();
try {
TopiaDAO dao = EchoBaseDAOHelper.getDAO(getTransaction(), contract);
- ResultDatas result = new ResultDatas();
+
+ // first query to count datas
+ TopiaQuery countQuery = dao.createQuery("e");
+ countQuery.addSelect("count(*)");
+ int count = dao.countByQuery(countQuery);
+
+ pager.setRecords(count);
+ pager.computeIndexesAndPageCount();
+
+ int from = pager.getStartIndex();
+ int to = pager.getEndIndex();
+
+ if (log.isInfoEnabled()) {
+ log.info("Count = " + count);
+ log.info("page = " + pager.getPageNumber());
+ log.info("pageSize = " + pager.getPageSize());
+ log.info("from = " + from);
+ log.info("to = " + to);
+ log.info("pageCount= " + pager.getPageCount());
+ }
+
TopiaQuery query = dao.createQuery("e");
if (StringUtils.isNotEmpty(sidx)) {
if (ascendantOrder) {
@@ -108,22 +139,17 @@
query.addOrderDesc(sidx);
}
}
+ query.setLimit(from, to - 1);
List<?> all = dao.findAllByQuery(query);
- int count = all.size();
- if (count < to) {
- to = count;
- }
- Map[] rows = new Map[to - from];
+ Map<?, ?>[] rows = new Map[to - from];
- int j = 0;
- for (int i = from; i < to; i++) {
- TopiaEntity entity = (TopiaEntity) all.get(i);
+ int i = 0;
+ for (Object o : all) {
+ TopiaEntity entity = (TopiaEntity) o;
Map<String, Object> row = loadRow(tableMeta, entity);
- rows[j++] = row;
+ rows[i++] = row;
}
-
- result.setCount(all.size());
- result.setRows(rows);
+ ResultDatas result = new ResultDatas(count, rows);
return result;
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
@@ -197,7 +223,6 @@
} finally {
monitor.setBean(null);
}
-
}
protected Map<String, Object> loadRow(TableMeta tableMeta, TopiaEntity entity) {
@@ -207,8 +232,24 @@
row.put("id", entity.getTopiaId());
for (ColumnMeta columnMeta : tableMeta) {
String propertyName = columnMeta.getName();
- Object property =
- operator.get(propertyName, entity);
+
+ // get property value
+ Object property = operator.get(propertyName, entity);
+ if (columnMeta.isFK() && property != null) {
+
+ // this is a foreign key, just keep the topiaid
+ String topiaId = ((TopiaEntity) property).getTopiaId();
+
+ // decorate the entity
+ String decorate = getDecoratorService().decorate(
+ getLocale(), property, null);
+
+ // keep the decorate value
+ row.put(propertyName + "_lib", decorate);
+
+ // use as the property his topiaid
+ property = topiaId;
+ }
row.put(propertyName, property);
}
return row;
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,124 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import org.apache.commons.collections.CollectionUtils;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.util.decorator.Decorator;
+import org.nuiton.util.decorator.DecoratorMulti18nProvider;
+import org.nuiton.util.decorator.DecoratorUtil;
+import org.nuiton.util.decorator.JXPathDecorator;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Service to decorate entities.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class DecoratorService extends AbstractEchoBaseService {
+
+ protected final DecoratorMulti18nProvider decoratorProvider;
+
+ public DecoratorService() {
+ decoratorProvider = new EchoBaseDecoratorProvider();
+ }
+
+ public <O> Decorator<O> getDecorator(Locale locale,
+ Class<O> type,
+ String context) {
+ Preconditions.checkNotNull(type, "Decorator type can not be null!");
+ Decorator<O> decorator = decoratorProvider.getDecoratorByType(locale, type, context);
+ Preconditions.checkNotNull(
+ decorator,
+ "Could not find decorator for type " + type +
+ " and context " + context
+ );
+ return decorator;
+ }
+
+ public String decorate(Locale locale, Object o, String context) {
+ Decorator<?> decorator = getDecorator(locale, o.getClass(), context);
+ String result = decorator.toString(o);
+ return result;
+ }
+
+ public <O> List<O> sortToList(Locale locale, Collection<O> beans, String context) {
+ Preconditions.checkNotNull(beans);
+ List<O> list = Lists.newArrayList(beans);
+ getDecoratorAndSort(locale, context, list);
+ return list;
+ }
+
+ public <E extends TopiaEntity> Map<String, String> sortAndDecorate(Locale locale,
+ Collection<E> beans,
+ String context) {
+ Preconditions.checkNotNull(beans);
+ List<E> list = Lists.newArrayList(beans);
+
+ Decorator<E> decorator = getDecoratorAndSort(locale, context, list);
+ Map<String, String> result = Maps.newLinkedHashMap();
+ for (E bean : list) {
+ result.put(bean.getTopiaId(), decorator.toString(bean));
+ }
+ return result;
+ }
+
+ protected <O> Decorator<O> getDecoratorAndSort(Locale locale,
+ String context,
+ List<O> list) {
+ Decorator<O> decorator = null;
+ if (CollectionUtils.isNotEmpty(list)) {
+ O object = list.get(0);
+ Preconditions.checkNotNull(object);
+ decorator = decoratorProvider.getDecorator(locale, object, context);
+ Preconditions.checkNotNull(
+ decorator,
+ "Could not find decorator for type " + object.getClass() +
+ " and context " + context
+ );
+ DecoratorUtil.sort((JXPathDecorator<O>) decorator, list, 0);
+ }
+ return decorator;
+ }
+
+ static class EchoBaseDecoratorProvider extends DecoratorMulti18nProvider {
+
+ @Override
+ protected void loadDecorators(Locale locale) {
+
+ // trip decorator
+ registerJXPathDecorator(locale, EchoBaseUser.class, "${email}$s");
+
+ }
+ }
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/Pager.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/Pager.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/Pager.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,109 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.services;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.nuiton.util.PagerUtil;
+
+import java.io.Serializable;
+
+/**
+ * A simple pager bean.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class Pager implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected int records;
+
+ protected int startIndex;
+
+ protected int endIndex;
+
+ protected int pageNumber;
+
+ protected int pageSize;
+
+ protected int pageCount;
+
+ public int getRecords() {
+ return records;
+ }
+
+ public int getStartIndex() {
+ return startIndex;
+ }
+
+ public int getEndIndex() {
+ return endIndex;
+ }
+
+ public int getPageNumber() {
+ return pageNumber;
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ public int getPageCount() {
+ return pageCount;
+ }
+
+ public void setRecords(int records) {
+ this.records = records;
+ }
+
+ public void setStartIndex(int startIndex) {
+ this.startIndex = startIndex;
+ }
+
+ public void setEndIndex(int endIndex) {
+ this.endIndex = endIndex;
+ }
+
+ public void setPageNumber(int pageNumber) {
+ this.pageNumber = pageNumber;
+ }
+
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public void setPageCount(int pageCount) {
+ this.pageCount = pageCount;
+ }
+
+ public void computeIndexesAndPageCount() {
+ Pair<Integer, Integer> pageBound =
+ PagerUtil.getPageBound(records, pageNumber, pageSize);
+ startIndex = pageBound.getLeft();
+ endIndex = pageBound.getRight();
+ pageCount = PagerUtil.getTotalPage(records, pageSize);
+ }
+
+}
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/Pager.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -31,6 +31,7 @@
import fr.ifremer.echobase.entities.EchoBaseUserDTO;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.util.StringUtil;
import java.util.List;
@@ -42,8 +43,27 @@
public class UserService extends AbstractEchoBaseService {
public List<EchoBaseUser> getUsers() {
+ return getUsers(null);
+ }
+
+ public List<EchoBaseUser> getUsers(Pager pager) {
try {
- List<EchoBaseUser> users = getDAO().findAll();
+ List<EchoBaseUser> users;
+
+ EchoBaseUserDAO dao = getDAO();
+ if (pager == null) {
+
+ users = dao.findAll();
+ } else {
+
+ // get user count
+ long count = dao.count();
+ pager.setRecords((int) count);
+ pager.computeIndexesAndPageCount();
+ TopiaQuery query = dao.createQuery("e");
+ query.setLimit(pager.getStartIndex(), pager.getEndIndex() - 1);
+ users = dao.findAllByQuery(query);
+ }
return users;
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException(eee);
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,66 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui;
+
+import com.google.common.base.Supplier;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaRuntimeException;
+import org.nuiton.web.filter.TopiaTransactionFilter;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class EchoBaseTopiaTransactionFilter extends TopiaTransactionFilter {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(EchoBaseTopiaTransactionFilter.class);
+
+ @Override
+ protected TopiaContext beginTransaction() throws TopiaRuntimeException {
+ EchoBaseApplicationContext applicationContext =
+ EchoBaseActionSupport.getEchoBaseApplicationContext();
+ Supplier<TopiaContext> rootContextSupplier =
+ applicationContext.getRootContextSupplier();
+
+ TopiaContext rootContext = rootContextSupplier.get();
+ TopiaContext transaction = null;
+ try {
+ transaction = rootContext.beginTransaction();
+ } catch (TopiaException eee) {
+ throw new TopiaRuntimeException("Could not start transaction", eee);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("Starts a new echo transaction " + transaction);
+ }
+ return transaction;
+ }
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseTopiaTransactionFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -31,10 +31,13 @@
import fr.ifremer.echobase.services.EchoBaseServiceFactory;
import fr.ifremer.echobase.ui.EchoBaseApplicationContext;
import fr.ifremer.echobase.ui.EchoBaseSession;
+import org.apache.struts2.StrutsStatics;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.framework.TopiaTransactionAware;
+import org.nuiton.web.filter.TopiaTransactionFilter;
import org.nuiton.web.struts2.BaseAction;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@@ -54,9 +57,6 @@
private static final long serialVersionUID = 1L;
- public static final String LOG_LINE =
- "--------------------------------------------------------------------------------";
-
/** Key to store the {@link EchoBaseSession} instance in the session's map. */
protected static final String SESSION_PARAMETER = "echoBaseSession";
@@ -68,7 +68,7 @@
private SimpleDateFormat monthFormat;
public static EchoBaseApplicationContext getEchoBaseApplicationContext() {
- Map<String, Object> application = ActionContext.getContext().getApplication();
+ Map<String, Object> application = getActionContext().getApplication();
EchoBaseApplicationContext applicationContext =
(EchoBaseApplicationContext) application.get(APPLICATION_CONTEXT_PARAMETER);
return applicationContext;
@@ -87,8 +87,7 @@
* Actions may <strong>not</strong> call it directly by use
* {@link #newService(Class)} instead.
*/
- protected transient EchoBaseServiceFactory serviceFactory =
- new EchoBaseServiceFactory();
+ protected transient EchoBaseServiceFactory serviceFactory;
protected transient EchoBaseServiceContext serviceContext;
@@ -98,7 +97,8 @@
if (echoBaseSession == null) {
// load it from session
- Map<String, Object> strutsSession = ActionContext.getContext().getSession();
+ Map<String, Object> strutsSession =
+ getActionContext().getSession();
EchoBaseSession session = (EchoBaseSession)
strutsSession.get(SESSION_PARAMETER);
@@ -132,12 +132,19 @@
getTransaction(),
getConfiguration(),
getEchoBaseApplicationContext().getDbMeta(),
- serviceFactory
+ getServiceFactory()
);
}
return serviceContext;
}
+ public EchoBaseServiceFactory getServiceFactory() {
+ if (serviceFactory == null) {
+ serviceFactory = new EchoBaseServiceFactory();
+ }
+ return serviceFactory;
+ }
+
/**
* Sub-classes should use this method to easily get a service instance.
*
@@ -145,12 +152,18 @@
* @return A newly created service of the expected type with necessary data set
*/
public <E extends EchoBaseService> E newService(Class<E> serviceClass) {
- E service = serviceFactory.newService(serviceClass, getServiceContext());
+ E service = getServiceFactory().newService(serviceClass,
+ getServiceContext());
return service;
}
@Override
public TopiaContext getTransaction() {
+ if (transaction == null) {
+ HttpServletRequest request = (HttpServletRequest)
+ getActionContext().get(StrutsStatics.HTTP_REQUEST);
+ transaction = TopiaTransactionFilter.getTransaction(request);
+ }
return transaction;
}
@@ -183,4 +196,7 @@
return monthFormat;
}
+ protected static ActionContext getActionContext() {
+ return ActionContext.getContext();
+ }
}
Deleted: 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 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -1,220 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.actions.dbeditor;
-
-import fr.ifremer.echobase.services.DbEditorService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.struts2.json.JSONUtil;
-
-import java.util.Map;
-
-/**
- * To obtain the data for the given request.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class GetEntities extends EchoBaseActionSupport {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(GetEntities.class);
-
- private static final String SIDX_PREFIX = "tableDatas_";
-
- /** Name of the table to load. */
- protected String tableName;
-
- /** Datas of the given table. */
- protected Map<?,?>[] datas;
-
- //get how many rows we want to have into the grid - rowNum attribute in the grid
- protected Integer rows = 0;
-
- //Get the requested page. By default grid sets this to 1.
- protected Integer page = 0;
-
- // sorting order - asc or desc
- protected String sord;
-
- // get index row - i.e. user click to sort.
- protected String sidx;
-
- // Search Field
- protected String searchField;
-
- // The Search String
- protected String searchString;
-
- // he Search Operation ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
- protected String searchOper;
-
- protected String filters;
-
- // Your Total Pages
- protected Integer total = 0;
-
- // All Record
- protected Integer records = 0;
-
- public Map<?,?>[] getDatas() {
- return datas;
- }
-
- public void setTableName(String tableName) {
- this.tableName = tableName;
- }
-
- @Override
- public String execute() throws Exception {
- DbEditorService dbEditorService = newService(DbEditorService.class);
-
- int to = rows * page;
- int from = to - rows;
-
- Boolean ascendantOrder = null;
-
- if (StringUtils.isNotEmpty(sidx)) {
-
- // there is a sort to do
- sidx = sidx.substring(SIDX_PREFIX.length());
-
- ascendantOrder = "asc".equals(sord);
- }
-
- Object filterObject = null;
-
-
- if (StringUtils.isNotEmpty(filters)) {
- filterObject = JSONUtil.deserialize(filters);
- }
-
- if (log.isInfoEnabled()) {
- log.info("searchField = " + searchField);
- log.info("searchField = " + searchField);
- log.info("searchString = " + searchString);
- log.info("searchOper = " + searchOper);
- log.info("filters = " + filters);
- log.info("filterObject = " + filterObject);
- log.info("sidx = " + sidx);
- log.info("sord = " + sord);
- }
-
- DbEditorService.ResultDatas resultDatas =
- dbEditorService.getDatas(tableName, from, to, sidx, ascendantOrder);
-
- datas = resultDatas.getRows();
-
- records = resultDatas.getCount();
-
- //calculate the total pages for the query
- total = (int) Math.ceil((double) records / (double) rows);
-
- return SUCCESS;
- }
-
- public Integer getRows() {
- return rows;
- }
-
- public void setRows(Integer rows) {
- this.rows = rows;
- }
-
- public Integer getPage() {
- return page;
- }
-
- public void setPage(Integer page) {
- this.page = page;
- }
-
- public String getSord() {
- return sord;
- }
-
- public void setSord(String sord) {
- this.sord = sord;
- }
-
- public String getSidx() {
- return sidx;
- }
-
- public void setSidx(String sidx) {
- this.sidx = sidx;
- }
-
- public String getSearchField() {
- return searchField;
- }
-
- public void setSearchField(String searchField) {
- this.searchField = searchField;
- }
-
- public String getSearchString() {
- return searchString;
- }
-
- public void setSearchString(String searchString) {
- this.searchString = searchString;
- }
-
- public String getSearchOper() {
- return searchOper;
- }
-
- public void setSearchOper(String searchOper) {
- this.searchOper = searchOper;
- }
-
- public Integer getTotal() {
- return total;
- }
-
- public void setTotal(Integer total) {
- this.total = total;
- }
-
- public Integer getRecords() {
- return records;
- }
-
- public void setRecords(Integer records) {
- this.records = records;
- }
-
- public String getFilters() {
- return filters;
- }
-
- public void setFilters(String filters) {
- this.filters = filters;
- }
-}
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/AbstractJSONPaginedAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/AbstractJSONPaginedAction.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/AbstractJSONPaginedAction.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,138 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.json;
+
+import fr.ifremer.echobase.services.Pager;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts2.json.JSONException;
+import org.apache.struts2.json.JSONUtil;
+
+/**
+ * Abstract JSON action with pagination support.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public abstract class AbstractJSONPaginedAction extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ public abstract Integer getRows();
+
+ public abstract Integer getPage();
+
+ public abstract Integer getTotal();
+
+ public abstract Integer getRecords();
+
+ protected Pager pager = new Pager();
+
+// //get how many rows we want to have into the grid - rowNum attribute in the grid
+// protected Integer rows = 0;
+//
+// //Get the requested page. By default grid sets this to 1.
+// protected Integer page = 0;
+
+ // sorting order - asc or desc
+ protected String sord;
+
+ // get index row - i.e. user click to sort.
+ protected String sidx;
+
+ protected String filters;
+
+// // Your Total Pages
+// protected Integer total = 0;
+//
+// // All Record
+// protected Integer records = 0;
+
+ /** Prefix added to the sidx when used. */
+ protected final String sidx_prefix;
+
+ protected AbstractJSONPaginedAction(String sidx_prefix) {
+ this.sidx_prefix = sidx_prefix;
+ }
+
+ public void setRows(Integer rows) {
+ pager.setPageSize(rows);
+ }
+
+ public void setPage(Integer page) {
+ pager.setPageNumber(page);
+ }
+
+ public String getSord() {
+ return sord;
+ }
+
+ public void setSord(String sord) {
+ this.sord = sord;
+ }
+
+ public String getSidx() {
+ return sidx;
+ }
+
+ public void setSidx(String sidx) {
+ this.sidx = sidx;
+ }
+
+ public String getFilters() {
+ return filters;
+ }
+
+ public void setFilters(String filters) {
+ this.filters = filters;
+ }
+
+ protected String getSortColumn() {
+ String result = null;
+ if (useSort()) {
+ result = sidx.substring(sidx_prefix.length());
+ }
+ return result;
+ }
+
+ protected Boolean isSortAscendant() {
+ Boolean result = null;
+ if (useSort()) {
+ result = "asc".equals(sord);
+ }
+ return result;
+ }
+
+ protected boolean useSort() {
+ return StringUtils.isNotEmpty(sidx);
+ }
+
+ protected Object getFilterObject() throws JSONException {
+ Object filterObject = null;
+ if (StringUtils.isNotEmpty(filters)) {
+ filterObject = JSONUtil.deserialize(filters);
+ }
+ return filterObject;
+ }
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/AbstractJSONPaginedAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetEntities.java (from rev 30, 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/json/GetEntities.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetEntities.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,116 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.json;
+
+import fr.ifremer.echobase.services.DbEditorService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+
+/**
+ * To obtain the data for the given request.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class GetEntities extends AbstractJSONPaginedAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(GetEntities.class);
+
+ /** Name of the table to load. */
+ protected String tableName;
+
+ /** Datas of the given table. */
+ protected Map<?, ?>[] datas;
+
+ public GetEntities() {
+ super("tableDatas_");
+ }
+
+ public Map<?, ?>[] getDatas() {
+ return datas;
+ }
+
+ @Override
+ public Integer getRows() {
+ return pager.getPageSize();
+ }
+
+ @Override
+ public Integer getPage() {
+ return pager.getPageNumber();
+ }
+
+ @Override
+ public Integer getTotal() {
+ return pager.getPageCount();
+ }
+
+ @Override
+ public Integer getRecords() {
+ return pager.getRecords();
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ Boolean ascendantOrder = isSortAscendant();
+ String sortColumn = getSortColumn();
+ Object filterObject = getFilterObject();
+
+ if (log.isInfoEnabled()) {
+ log.info("filters = " + getFilters());
+ log.info("filterObject = " + filterObject);
+ log.info("sidx = " + sortColumn);
+ log.info("sord = " + ascendantOrder);
+ }
+
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+
+ DbEditorService.ResultDatas resultDatas = dbEditorService.getDatas(
+ tableName,
+ pager,
+ sortColumn,
+ ascendantOrder
+ );
+
+ datas = resultDatas.getRows();
+
+ if (log.isInfoEnabled()) {
+ log.info("Total page = " + getTotal());
+ }
+
+ return SUCCESS;
+ }
+
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetEntities.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsers.java (from rev 25, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsers.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsers.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -0,0 +1,87 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.json;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EchoBaseUserDTO;
+import fr.ifremer.echobase.services.UserService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Obtains all users of the echobase internal database.
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class GetUsers extends AbstractJSONPaginedAction {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<EchoBaseUserDTO> users;
+
+ public GetUsers() {
+ super("users_");
+ }
+
+ public List<EchoBaseUserDTO> getUsers() {
+ return users;
+ }
+
+ @Override
+ public Integer getRows() {
+ return pager.getPageSize();
+ }
+
+ @Override
+ public Integer getPage() {
+ return pager.getPageNumber();
+ }
+
+ @Override
+ public Integer getTotal() {
+ return pager.getPageCount();
+ }
+
+ @Override
+ public Integer getRecords() {
+ return pager.getRecords();
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ List<EchoBaseUser> allUsers =
+ newService(UserService.class).getUsers(pager);
+
+ users = new ArrayList<EchoBaseUserDTO>(allUsers.size());
+ for (EchoBaseUser user : allUsers) {
+ users.add(user.toDTO());
+ }
+
+ return SUCCESS;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsers.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -1,63 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.actions.json;
-
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.EchoBaseUserDTO;
-import fr.ifremer.echobase.services.UserService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Obtains all users of the echobase internal database.
- *
- * @author sletellier <letellier(a)codelutin.com>
- * @since 0.1
- */
-public class GetUsersDatas extends EchoBaseActionSupport {
-
- private static final long serialVersionUID = 1L;
-
- protected List<EchoBaseUserDTO> users;
-
- public List<EchoBaseUserDTO> getUsers() {
- return users;
- }
-
- @Override
- public String execute() throws Exception {
-
- List<EchoBaseUser> allUsers = newService(UserService.class).getUsers();
-
- users = new ArrayList<EchoBaseUserDTO>(allUsers.size());
- for (EchoBaseUser user : allUsers) {
- users.add(user.toDTO());
- }
-
- return SUCCESS;
- }
-
-}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -26,6 +26,7 @@
import com.opensymphony.xwork2.ActionInvocation;
import fr.ifremer.echobase.ui.EchoBaseSession;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import fr.ifremer.echobase.ui.actions.LoginAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -60,6 +61,29 @@
boolean userLoggued = echoBaseSession.getEchoBaseUser() != null;
if (!userLoggued) {
+
+ boolean autoLogin =
+ EchoBaseActionSupport.getEchoBaseApplicationContext().getConfiguration().getOptionAsBoolean("autoLogin");
+
+ if (autoLogin) {
+ // by-pass login
+
+ if (log.isInfoEnabled()) {
+ log.info("AutotLogin with admin/admin user");
+ }
+ LoginAction loginAction = new LoginAction();
+ loginAction.setSession(invocation.getInvocationContext().getSession());
+ loginAction.setEmail("admin");
+ loginAction.setPassword("admin");
+ try {
+ loginAction.doLogin();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not auto-login", eee);
+ }
+ }
+ return true;
+ }
if (log.isInfoEnabled()) {
log.info("No user loggued!");
}
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseTransactionInterceptorImpl.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseTransactionInterceptorImpl.java 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/EchoBaseTransactionInterceptorImpl.java 2011-11-09 19:41:58 UTC (rev 32)
@@ -1,64 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.interceptors;
-
-import com.google.common.base.Supplier;
-import fr.ifremer.echobase.ui.EchoBaseApplicationContext;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.web.struts2.interceptor.OpenTopiaTransactionInterceptor;
-
-/**
- * Implementation of the {@link OpenTopiaTransactionInterceptor} giving how to
- * create a new topia transaction on a EchoBase database.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class EchoBaseTransactionInterceptorImpl extends OpenTopiaTransactionInterceptor {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(EchoBaseTransactionInterceptorImpl.class);
-
- @Override
- protected TopiaContext beginTransaction() throws TopiaException {
- EchoBaseApplicationContext applicationContext =
- EchoBaseActionSupport.getEchoBaseApplicationContext();
- Supplier<TopiaContext> rootContextSupplier =
- applicationContext.getRootContextSupplier();
-
- TopiaContext rootContext = rootContextSupplier.get();
- TopiaContext transaction = rootContext.beginTransaction();
- if (log.isDebugEnabled()) {
- log.debug("Starts a new echo transaction " + transaction);
- }
- return transaction;
- }
-}
Modified: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-09 19:41:58 UTC (rev 32)
@@ -38,7 +38,7 @@
</action>
<action name="getTableDatas"
- class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
+ class="fr.ifremer.echobase.ui.actions.json.GetEntities">
<interceptor-ref name="basicStackLoggued"/>
<result type="json"/>
</action>
Modified: trunk/echobase-ui/src/main/resources/config/struts-json.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-json.xml 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/resources/config/struts-json.xml 2011-11-09 19:41:58 UTC (rev 32)
@@ -32,7 +32,7 @@
<package name="json" extends="loggued" namespace="/json">
<action name="getUsers"
- class="fr.ifremer.echobase.ui.actions.json.GetUsersDatas">
+ class="fr.ifremer.echobase.ui.actions.json.GetUsers">
<interceptor-ref name="basicStackLoggued"/>
<interceptor-ref name="checkUserIsAdmin"/>
<result type="json"/>
Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-09 19:41:58 UTC (rev 32)
@@ -37,7 +37,7 @@
<result name="input">/WEB-INF/jsp/user/login.jsp</result>
<result name="error">/WEB-INF/jsp/user/login.jsp</result>
<result name="redirect" type="redirect">${redirectAction}</result>
- <interceptor-ref name="echoBaseParamsPrepareParamsStack"/>
+ <interceptor-ref name="paramsPrepareParamsStack"/>
</action>
<!-- logout action -->
Modified: trunk/echobase-ui/src/main/resources/struts.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/struts.xml 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/resources/struts.xml 2011-11-09 19:41:58 UTC (rev 32)
@@ -44,12 +44,12 @@
<constant name="struts.multipart.maxSize" value="209715200"/>
<constant name="struts.freemarker.templatesCache" value="true"/>
- <package name="default" extends="struts-default" abstract="true"
+ <package name="default" extends="json-default" abstract="true"
namespace="/">
- <result-types>
+ <!--result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult"/>
- </result-types>
+ </result-types-->
<interceptors>
@@ -57,10 +57,6 @@
<interceptor name="paramRemover"
class="com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor"/>
- <!-- to manage the echobase topia transaction inside an action -->
- <interceptor name="topiaTransaction"
- class="fr.ifremer.echobase.ui.interceptors.EchoBaseTransactionInterceptorImpl"/>
-
<!-- to clean some properties from the echobase session -->
<interceptor name="cleanEchoBaseSession"
class="fr.ifremer.echobase.ui.interceptors.CleanEchoBaseSessionInterceptor"/>
@@ -91,30 +87,18 @@
<interceptors>
- <!-- echobase basic authenticated stack -->
- <interceptor-stack name="echoBaseBasicStack">
- <interceptor-ref name="topiaTransaction"/>
- <interceptor-ref name="basicStack"/>
- </interceptor-stack>
-
- <!-- echobase stack with params-->
- <interceptor-stack name="echoBaseParamsPrepareParamsStack">
- <interceptor-ref name="topiaTransaction"/>
- <interceptor-ref name="paramsPrepareParamsStack"/>
- </interceptor-stack>
-
<!-- basic authenticated stack -->
<interceptor-stack name="basicStackLoggued">
<interceptor-ref name="i18n"/>
<interceptor-ref name="checkUserLoggued"/>
- <interceptor-ref name="echoBaseBasicStack"/>
+ <interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- authenticated stack with params-->
<interceptor-stack name="paramsPrepareParamsStackLoggued">
<interceptor-ref name="i18n"/>
<interceptor-ref name="checkUserLoggued"/>
- <interceptor-ref name="echoBaseParamsPrepareParamsStack"/>
+ <interceptor-ref name="paramsPrepareParamsStack"/>
</interceptor-stack>
</interceptors>
@@ -136,7 +120,6 @@
<param name="paramNames">request_locale</param>
</interceptor-ref>
<interceptor-ref name="checkUserLoggued"/>
- <interceptor-ref name="topiaTransaction"/>
</action>
</package>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userList.jsp 2011-11-09 19:41:58 UTC (rev 32)
@@ -59,19 +59,15 @@
<sjg:grid id="users" caption="%{getText('echobase.title.users')}"
dataType="json" href="%{loadUrl}" gridModel="users"
- pager="true" pagerButtons="false" pagerInput="false"
- navigator="true"
- rownumbers="false"
- autowidth="true"
+ pager="true" pagerButtons="true" pagerInput="true"
+ navigator="true" rownumbers="false" autowidth="true"
onSelectRowTopics='users-rowSelect'
onCompleteTopics='users-cleanSelect'
- navigatorEdit="false"
- navigatorDelete="false"
- navigatorSearch="false"
- navigatorRefresh="false"
+ navigatorEdit="false" navigatorDelete="false"
+ navigatorSearch="false" navigatorRefresh="false"
navigatorAdd="false"
editinline="false" resizable="true"
- height="100"
+ rowList="10,15,20, 50" rowNum="10"
navigatorExtraButtons="{
add: { title : 'Ajouter', icon: 'ui-icon-plus', topic: 'users-rowAdd' },
update: { title : 'Mettre à jour', icon: 'ui-icon-pencil', topic: 'users-rowUpdate' },
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml 2011-11-09 19:41:12 UTC (rev 31)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml 2011-11-09 19:41:58 UTC (rev 32)
@@ -30,8 +30,8 @@
<display-name>EchoBase</display-name>
<filter>
- <filter-name>topiaCloseTransaction</filter-name>
- <filter-class>org.nuiton.web.struts2.filter.CloseTopiaTransactionFilter</filter-class>
+ <filter-name>topiaTransaction</filter-name>
+ <filter-class>fr.ifremer.echobase.ui.EchoBaseTopiaTransactionFilter</filter-class>
</filter>
<filter>
@@ -54,7 +54,7 @@
</filter>
<filter-mapping>
- <filter-name>topiaCloseTransaction</filter-name>
+ <filter-name>topiaTransaction</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1
0
Author: tchemit
Date: 2011-11-09 20:41:12 +0100 (Wed, 09 Nov 2011)
New Revision: 31
Url: http://forge.codelutin.com/repositories/revision/echobase/31
Log:
using nuiton-web (new topia filter)
Modified:
trunk/echobase-ui/pom.xml
trunk/pom.xml
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2011-11-09 08:55:29 UTC (rev 30)
+++ trunk/echobase-ui/pom.xml 2011-11-09 19:41:12 UTC (rev 31)
@@ -42,6 +42,10 @@
<groupId>org.nuiton.web</groupId>
<artifactId>nuiton-struts2</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.nuiton.web</groupId>
+ <artifactId>nuiton-web</artifactId>
+ </dependency>
<dependency>
<groupId>org.nuiton</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-11-09 08:55:29 UTC (rev 30)
+++ trunk/pom.xml 2011-11-09 19:41:12 UTC (rev 31)
@@ -110,7 +110,7 @@
<topiaVersion>2.6.3</topiaVersion>
<nuitonUtilsVersion>2.4-SNAPSHOT</nuitonUtilsVersion>
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
- <nuitonWebVersion>1.5</nuitonWebVersion>
+ <nuitonWebVersion>1.6-SNAPSHOT</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
<struts2Version>2.2.3.1</struts2Version>
<jqueryPluginVersion>3.1.0</jqueryPluginVersion>
@@ -173,6 +173,13 @@
</dependency>
<dependency>
+ <groupId>org.nuiton.web</groupId>
+ <artifactId>nuiton-web</artifactId>
+ <version>${nuitonWebVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton.i18n</groupId>
<artifactId>nuiton-i18n</artifactId>
<version>${nuitonI18nVersion}</version>
1
0
r30 - in trunk: echobase-services/src/main/java/fr/ifremer/echobase/services/models echobase-ui/src/main/java/fr/ifremer/echobase/ui echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor echobase-ui/src/main/resources/config echobase-ui/src/main/resources/i18n echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor
by tchemit@users.forge.codelutin.com 09 Nov '11
by tchemit@users.forge.codelutin.com 09 Nov '11
09 Nov '11
Author: tchemit
Date: 2011-11-09 09:55:29 +0100 (Wed, 09 Nov 2011)
New Revision: 30
Url: http://forge.codelutin.com/repositories/revision/echobase/30
Log:
db editor story
Added:
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/LoadEntities.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java
Removed:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java
trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
trunk/echobase-ui/src/main/resources/config/struts-import.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -25,34 +25,45 @@
import fr.ifremer.echobase.entities.Survey;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
import java.io.File;
+import java.io.Serializable;
/**
* Object representing all import configuration
*
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
-public class ImportModel {
+public class ImportModel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
protected Survey surveySelected;
protected File accessImport;
+
protected String accessImportFileName;
protected File accousticImport;
+
protected String accousticImportFileName;
protected File pecherieImport;
+
protected String pecherieImportFileName;
protected File lectureAgeGenImport;
+
protected String lectureAgeGenImportFileName;
protected File eventsImport;
+
protected String eventsImportFileName;
protected File typeEchoSpeciesImport;
+
protected String typeEchoSpeciesImportFileName;
protected String comment;
@@ -65,7 +76,6 @@
this.surveySelected = surveySelected;
}
-
public String getComment() {
return comment;
}
@@ -182,40 +192,51 @@
pecherieImport != null ||
eventsImport != null ||
typeEchoSpeciesImport != null);
-
return result;
}
@Override
public String toString() {
- StringBuilder builder = new StringBuilder();
-
- // Add selected survey
- if (surveySelected != null) {
- addToBuilder(builder, "surveySelected", surveySelected.getName());
- }
-
- // Add all import files
- addToBuilder(builder, "accessImportFile", accessImportFileName);
- addToBuilder(builder, "accousticImportFile", accousticImportFileName);
- addToBuilder(builder, "pecherieImportFile", pecherieImportFileName);
- addToBuilder(builder, "lectureAgeGenImportFile", lectureAgeGenImportFileName);
- addToBuilder(builder, "eventsImportFile", eventsImportFileName);
- addToBuilder(builder, "pecherieImportFile", typeEchoSpeciesImportFileName);
-
+ ToStringBuilder builder = new ToStringBuilder(this);
+ builder.append("surveySelected", surveySelected.getName());
+ builder.append("accessImportFile", accessImportFileName);
+ builder.append("accousticImportFile", accousticImportFileName);
+ builder.append("pecherieImportFile", pecherieImportFileName);
+ builder.append("lectureAgeGenImportFile", lectureAgeGenImportFileName);
+ builder.append("eventsImportFile", eventsImportFileName);
+ builder.append("pecherieImportFile", typeEchoSpeciesImportFileName);
if (StringUtils.isNotEmpty(comment)) {
- addToBuilder(builder, "comment", comment);
+ builder.append("comment", comment);
}
- return builder.toString().trim();
+ return builder.toString();
+// StringBuilder builder = new StringBuilder();
+//
+// // Add selected survey
+// if (surveySelected != null) {
+// addToBuilder(builder, "surveySelected", surveySelected.getName());
+// }
+//
+// // Add all import files
+// addToBuilder(builder, "accessImportFile", accessImportFileName);
+// addToBuilder(builder, "accousticImportFile", accousticImportFileName);
+// addToBuilder(builder, "pecherieImportFile", pecherieImportFileName);
+// addToBuilder(builder, "lectureAgeGenImportFile", lectureAgeGenImportFileName);
+// addToBuilder(builder, "eventsImportFile", eventsImportFileName);
+// addToBuilder(builder, "pecherieImportFile", typeEchoSpeciesImportFileName);
+//
+// if (StringUtils.isNotEmpty(comment)) {
+// addToBuilder(builder, "comment", comment);
+// }
+// return builder.toString().trim();
}
- protected void addToBuilder(StringBuilder builder, String name, String value) {
- if (StringUtils.isNotEmpty(value)) {
- builder.append(" ");
- builder.append(name);
- builder.append("[");
- builder.append(value);
- builder.append("]");
- }
- }
+// protected void addToBuilder(StringBuilder builder, String name, String value) {
+// if (StringUtils.isNotEmpty(value)) {
+// builder.append(" ");
+// builder.append(name);
+// builder.append("[");
+// builder.append(value);
+// builder.append("]");
+// }
+// }
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -108,7 +108,7 @@
applicationContext.setRootContextSupplier(rootContextSupplier);
List<EchoBaseEntityEnum> entityEnums =
Lists.newArrayList(EchoBaseEntityEnum.values());
- entityEnums.remove(EchoBaseEntityEnum.EchoBaseUser);
+// entityEnums.remove(EchoBaseEntityEnum.EchoBaseUser);
DbMeta dbMeta = new DbMeta(entityEnums.toArray(new EchoBaseEntityEnum[entityEnums.size()]));
applicationContext.setDbMeta(dbMeta);
@@ -123,7 +123,8 @@
// init database (and create minimal admin user if required)
try {
boolean schemaExist = isSchemaCreated();
- if (!schemaExist) {
+ if (!schemaExist ||
+ configuration.getOptionAsBoolean("updateSchema")) {
updateSchema(configuration);
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -1,7 +1,29 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
package fr.ifremer.echobase.ui.actions;
import com.google.common.collect.Maps;
-import com.opensymphony.xwork2.Preparable;
import fr.ifremer.echobase.entities.Survey;
import fr.ifremer.echobase.services.SurveyService;
import fr.ifremer.echobase.services.models.ImportModel;
@@ -19,6 +41,8 @@
*/
public class ImportAction extends EchoBaseActionSupport {
+ private static final long serialVersionUID = 1L;
+
protected static final Log log = LogFactory.getLog(ImportAction.class);
protected ImportModel importModel;
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java (from rev 25, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -0,0 +1,220 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.dbeditor;
+
+import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.json.JSONUtil;
+
+import java.util.Map;
+
+/**
+ * To obtain the data for the given request.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class GetEntities extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(GetEntities.class);
+
+ private static final String SIDX_PREFIX = "tableDatas_";
+
+ /** Name of the table to load. */
+ protected String tableName;
+
+ /** Datas of the given table. */
+ protected Map<?,?>[] datas;
+
+ //get how many rows we want to have into the grid - rowNum attribute in the grid
+ protected Integer rows = 0;
+
+ //Get the requested page. By default grid sets this to 1.
+ protected Integer page = 0;
+
+ // sorting order - asc or desc
+ protected String sord;
+
+ // get index row - i.e. user click to sort.
+ protected String sidx;
+
+ // Search Field
+ protected String searchField;
+
+ // The Search String
+ protected String searchString;
+
+ // he Search Operation ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
+ protected String searchOper;
+
+ protected String filters;
+
+ // Your Total Pages
+ protected Integer total = 0;
+
+ // All Record
+ protected Integer records = 0;
+
+ public Map<?,?>[] getDatas() {
+ return datas;
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ @Override
+ public String execute() throws Exception {
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+
+ int to = rows * page;
+ int from = to - rows;
+
+ Boolean ascendantOrder = null;
+
+ if (StringUtils.isNotEmpty(sidx)) {
+
+ // there is a sort to do
+ sidx = sidx.substring(SIDX_PREFIX.length());
+
+ ascendantOrder = "asc".equals(sord);
+ }
+
+ Object filterObject = null;
+
+
+ if (StringUtils.isNotEmpty(filters)) {
+ filterObject = JSONUtil.deserialize(filters);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("searchField = " + searchField);
+ log.info("searchField = " + searchField);
+ log.info("searchString = " + searchString);
+ log.info("searchOper = " + searchOper);
+ log.info("filters = " + filters);
+ log.info("filterObject = " + filterObject);
+ log.info("sidx = " + sidx);
+ log.info("sord = " + sord);
+ }
+
+ DbEditorService.ResultDatas resultDatas =
+ dbEditorService.getDatas(tableName, from, to, sidx, ascendantOrder);
+
+ datas = resultDatas.getRows();
+
+ records = resultDatas.getCount();
+
+ //calculate the total pages for the query
+ total = (int) Math.ceil((double) records / (double) rows);
+
+ return SUCCESS;
+ }
+
+ public Integer getRows() {
+ return rows;
+ }
+
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ public Integer getPage() {
+ return page;
+ }
+
+ public void setPage(Integer page) {
+ this.page = page;
+ }
+
+ public String getSord() {
+ return sord;
+ }
+
+ public void setSord(String sord) {
+ this.sord = sord;
+ }
+
+ public String getSidx() {
+ return sidx;
+ }
+
+ public void setSidx(String sidx) {
+ this.sidx = sidx;
+ }
+
+ public String getSearchField() {
+ return searchField;
+ }
+
+ public void setSearchField(String searchField) {
+ this.searchField = searchField;
+ }
+
+ public String getSearchString() {
+ return searchString;
+ }
+
+ public void setSearchString(String searchString) {
+ this.searchString = searchString;
+ }
+
+ public String getSearchOper() {
+ return searchOper;
+ }
+
+ public void setSearchOper(String searchOper) {
+ this.searchOper = searchOper;
+ }
+
+ public Integer getTotal() {
+ return total;
+ }
+
+ public void setTotal(Integer total) {
+ this.total = total;
+ }
+
+ public Integer getRecords() {
+ return records;
+ }
+
+ public void setRecords(Integer records) {
+ this.records = records;
+ }
+
+ public String getFilters() {
+ return filters;
+ }
+
+ public void setFilters(String filters) {
+ this.filters = filters;
+ }
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -1,63 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.actions.dbeditor;
-
-import fr.ifremer.echobase.services.DbEditorService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-
-import java.util.Map;
-
-/**
- * To obtain the data for the given request.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class GetTableDatas extends EchoBaseActionSupport {
-
- private static final long serialVersionUID = 1L;
-
- /** Name of the table to load. */
- protected String tableName;
-
- /** Datas of the given table. */
- protected Map[] datas;
-
- public Map[] getDatas() {
- return datas;
- }
-
- public void setTableName(String tableName) {
- this.tableName = tableName;
- }
-
- @Override
- public String execute() throws Exception {
- DbEditorService dbEditorService = newService(DbEditorService.class);
- datas = dbEditorService.getDatas(tableName);
- return SUCCESS;
- }
-
-
-}
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java (from rev 25, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -0,0 +1,95 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.dbeditor;
+
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.entities.meta.ColumnMeta;
+import fr.ifremer.echobase.entities.meta.DbMeta;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.l_;
+
+/**
+ * To load the db editor pages.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class LoadEntities extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Name of the table to load. */
+ protected String tableName;
+
+ /** All tables availables */
+ protected Map<String, String> tableNames;
+
+ /** Metas of the table */
+ protected TableMeta tableMeta;
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public Map<String, String> getTableNames() {
+ return tableNames;
+ }
+
+ public List<ColumnMeta> getColumnMetas() {
+ return tableMeta.getColumns();
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ @Override
+ public String input() throws Exception {
+ tableNames = Maps.newTreeMap();
+ DbMeta dbMeta = getEchoBaseApplicationContext().getDbMeta();
+ for (TableMeta tableMeta : dbMeta) {
+ String name = tableMeta.getName();
+ String i18nKey = tableMeta.getI18nKey();
+ tableNames.put(name, l_(getLocale(), i18nKey));
+ }
+ if (StringUtils.isEmpty(tableName)) {
+
+ // no table selected
+ addActionMessage(_("echobase.info.no.table.selected"));
+ } else {
+
+ // load table metas
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+ tableMeta = dbEditorService.getTableMetas(tableName);
+ }
+ return INPUT;
+ }
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadEntities.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -1,96 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.actions.dbeditor;
-
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.entities.meta.ColumnMeta;
-import fr.ifremer.echobase.entities.meta.DbMeta;
-import fr.ifremer.echobase.entities.meta.TableMeta;
-import fr.ifremer.echobase.services.DbEditorService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-import org.apache.commons.lang.StringUtils;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.l_;
-
-/**
- * To load the db editor page.s
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class LoadTablePage extends EchoBaseActionSupport {
-
- private static final long serialVersionUID = 1L;
-
- /** Name of the table to load. */
- protected String tableName;
-
- /** All tables availables */
- protected Map<String, String> tableNames;
-
- /** Metas of the table */
- protected TableMeta tableMeta;
-
- public String getTableName() {
- return tableName;
- }
-
- public Map<String, String> getTableNames() {
- return tableNames;
- }
-
- public List<ColumnMeta> getColumnMetas() {
- return tableMeta.getColumns();
- }
-
- public void setTableName(String tableName) {
- this.tableName = tableName;
- }
-
- @Override
- public String input() throws Exception {
- tableNames = Maps.newTreeMap();
- DbMeta dbMeta = getEchoBaseApplicationContext().getDbMeta();
- for (TableMeta tableMeta : dbMeta) {
- String name = tableMeta.getName();
- String i18nKey = tableMeta.getI18nKey();
- tableNames.put(name, l_(getLocale(), i18nKey));
- }
- if (StringUtils.isEmpty(tableName)) {
-
- // no table selected
- addActionMessage(_("echobase.info.no.table.selected"));
- } else {
-
- // load table metas
- DbEditorService dbEditorService = newService(DbEditorService.class);
- tableMeta = dbEditorService.getTableMetas(tableName);
- }
- return INPUT;
- }
-}
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java 2011-11-09 08:55:29 UTC (rev 30)
@@ -0,0 +1,117 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.dbeditor;
+
+import com.google.common.collect.Maps;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import fr.ifremer.echobase.services.DbEditorService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts2.interceptor.ParameterAware;
+import org.nuiton.util.beans.PropertyDiff;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Save the edition of a row of a table.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class SaveEntity extends EchoBaseActionSupport implements ParameterAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Name of the table to load. */
+ protected String tableName;
+
+ /** id of entity to save. */
+ protected String id;
+
+ /** Metas of the table */
+ protected TableMeta tableMeta;
+
+ protected Map<String, String[]> params;
+
+ protected transient DbEditorService dbEditorService;
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+ TableMeta tableMeta = dbEditorService.getTableMetas(tableName);
+ Map<String, String> properties = Maps.newHashMap();
+ List<String> columnNames = tableMeta.getColumnNames();
+ for (String columnName : columnNames) {
+ if (params.containsKey(columnName)) {
+
+ // there is a such property to edit
+ String[] values = params.get(columnName);
+
+ if (values.length > 0) {
+
+ // take only the first value
+ String propertyValue = values[0];
+ if (StringUtils.isNotEmpty(propertyValue)) {
+
+ // only keep properties with no empty value
+ properties.put(columnName, propertyValue);
+ }
+ }
+ }
+ }
+
+ PropertyDiff[] diffs =
+ dbEditorService.saveEntity(tableMeta,
+ id,
+ properties,
+ getEchoBaseSession().getEchoBaseUser());
+
+ for (PropertyDiff diff : diffs) {
+ addActionMessage(_("echobase.message.modified.property",
+ diff.getSourceProperty(),
+ diff.getSourceValue(),
+ diff.getTargetValue())
+ );
+ }
+ return NONE;
+ }
+
+ @Override
+ public void setParameters(Map<String, String[]> parameters) {
+ params = Maps.newHashMap();
+ params.putAll(parameters);
+ }
+
+}
+
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-09 08:55:29 UTC (rev 30)
@@ -32,17 +32,22 @@
<package name="dbeditor" extends="loggued" namespace="/dbeditor">
<action name="dbeditor" method="input"
- class="fr.ifremer.echobase.ui.actions.dbeditor.LoadTablePage">
+ class="fr.ifremer.echobase.ui.actions.dbeditor.LoadEntities">
<interceptor-ref name="basicStackLoggued"/>
<result name="input">/WEB-INF/jsp/dbeditor/dbeditor.jsp</result>
</action>
-
+
<action name="getTableDatas"
- class="fr.ifremer.echobase.ui.actions.dbeditor.GetTableDatas">
+ class="fr.ifremer.echobase.ui.actions.dbeditor.GetEntities">
<interceptor-ref name="basicStackLoggued"/>
<result type="json"/>
</action>
+ <action name="editTableData"
+ class="fr.ifremer.echobase.ui.actions.dbeditor.SaveEntity">
+ <interceptor-ref name="basicStackLoggued"/>
+ </action>
+
</package>
</struts>
Modified: trunk/echobase-ui/src/main/resources/config/struts-import.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-import.xml 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/resources/config/struts-import.xml 2011-11-09 08:55:29 UTC (rev 30)
@@ -1,5 +1,29 @@
<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ -->
+
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
Property changes on: trunk/echobase-ui/src/main/resources/config/struts-import.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-11-09 08:55:29 UTC (rev 30)
@@ -43,8 +43,10 @@
echobase.menu.import=Imports
echobase.menu.logs=Logs
echobase.menu.users=Utilisateurs
+echobase.message.modified.property=
echobase.msg.warnImportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir acceder au résultats de l'import.
echobase.survey.selectHeader=Selectionnez une campagne
+echobase.title.dbEditor=Modification de la base
echobase.title.export=Export
echobase.title.import=Imports
echobase.title.importProgress=Import en cours
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 2011-11-09 08:49:36 UTC (rev 29)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2011-11-09 08:55:29 UTC (rev 30)
@@ -36,7 +36,7 @@
$('[name="tableName"]').change(function(event) {
- var url = "${reloadUrl}?" + $.param({ tableName:this.value});
+ var url = "${reloadUrl}?" + $.param({tableName:this.value});
window.location = url;
});
});
@@ -46,7 +46,6 @@
<s:select key="tableName"
label='%{getText("echobase.common.tableName")}'
list="tableNames" headerKey="" headerValue=""/>
-
</div>
<br/>
@@ -56,25 +55,35 @@
<s:param name="tableName" value="%{tableName}"/>
</s:url>
+ <s:url id="editUrl" action="editTableData" namespace="/dbeditor"
+ escapeAmp="false">
+ <s:param name="tableName" value="%{tableName}"/>
+ </s:url>
+
<sjg:grid id="tableDatas"
caption="%{getText('echobase.common.tableDatas', tableNames[tableName])}"
dataType="json" href="%{loadUrl}" gridModel="datas"
- pager="true" pagerButtons="false" pagerInput="false"
+ pager="true" pagerButtons="true" pagerInput="true"
navigator="true" autowidth="true" rownumbers="false"
navigatorEdit="true"
navigatorDelete="false"
navigatorSearch="true"
navigatorRefresh="true"
navigatorAdd="false"
- resizable="true" editinline="false">
+ editurl="%{editUrl}"
+ rowList="10,15,20, 50"
+ rowNum="10"
+ resizable="true" editinline="false"
+ navigatorSearchOptions="{multipleGroup:false,showQuery:true,multipleSearch:true,sopt:['eq','ne','cn','nc','bw','bn','ew','en','lt','le','gt','ge','nu','nn','in','ni']}"
+ >
- <sjg:gridColumn name="id" title="id" hidden="true"/>
+ <sjg:gridColumn name="id" title="id" hidden="true" editable="true"/>
<s:iterator value="columnMetas" var="meta" status="status">
- <sjg:gridColumn name="%{#meta.name}" title="%{getText(#meta.i18nKey)}"
- edittype="%{#meta.columnType}"
- sortable="false" editable="true"/>
+ <sjg:gridColumn name="%{#meta.name}"
+ title="%{getText(#meta.i18nKey)}"
+ sortable="true" editable="true" />
</s:iterator>
1
0
Author: tchemit
Date: 2011-11-09 09:49:36 +0100 (Wed, 09 Nov 2011)
New Revision: 29
Url: http://forge.codelutin.com/repositories/revision/echobase/29
Log:
add json in compile scope
Modified:
trunk/echobase-ui/pom.xml
Modified: trunk/echobase-ui/pom.xml
===================================================================
--- trunk/echobase-ui/pom.xml 2011-11-09 07:31:29 UTC (rev 28)
+++ trunk/echobase-ui/pom.xml 2011-11-09 08:49:36 UTC (rev 29)
@@ -76,7 +76,7 @@
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
1
0
r28 - in trunk/echobase-services/src/main/java/fr/ifremer/echobase/services: . models
by tchemit@users.forge.codelutin.com 09 Nov '11
by tchemit@users.forge.codelutin.com 09 Nov '11
09 Nov '11
Author: tchemit
Date: 2011-11-09 08:31:29 +0100 (Wed, 09 Nov 2011)
New Revision: 28
Url: http://forge.codelutin.com/repositories/revision/echobase/28
Log:
contiue Dbeditor service + headers
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java 2011-11-09 07:29:52 UTC (rev 27)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java 2011-11-09 07:31:29 UTC (rev 28)
@@ -52,4 +52,6 @@
protected DbMeta getDbMeta() {
return serviceContext.getDbMeta();
}
+
+
}
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 2011-11-09 07:29:52 UTC (rev 27)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-11-09 07:31:29 UTC (rev 28)
@@ -27,15 +27,23 @@
import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EntityModificationLog;
+import fr.ifremer.echobase.entities.EntityModificationLogDAO;
import fr.ifremer.echobase.entities.meta.ColumnMeta;
import fr.ifremer.echobase.entities.meta.DbMeta;
import fr.ifremer.echobase.entities.meta.TableMeta;
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityOperator;
+import org.nuiton.util.beans.BeanMonitor;
+import org.nuiton.util.beans.PropertyDiff;
-import java.util.Iterator;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -47,6 +55,31 @@
*/
public class DbEditorService extends AbstractEchoBaseService {
+ public static class ResultDatas {
+
+ /** Total count. */
+ int count;
+
+ /** Loaded datas (for the given asked page). */
+ Map[] rows;
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public Map[] getRows() {
+ return rows;
+ }
+
+ public void setRows(Map[] rows) {
+ this.rows = rows;
+ }
+ }
+
public TableMeta getTableMetas(String tableName) {
DbMeta dbMeta = getDbMeta();
TableMeta result = dbMeta.getTable(tableName);
@@ -54,32 +87,124 @@
}
//TODO Use an object to filter datas and do pagination
- public Map[] getDatas(String tableName) {
+ public ResultDatas getDatas(String tableName,
+ int from,
+ int to,
+ String sidx,
+ Boolean ascendantOrder) {
+
DbMeta dbMeta = getDbMeta();
TableMeta tableMeta = dbMeta.getTable(tableName);
EchoBaseEntityEnum entityEnum = tableMeta.getEntityEnum();
Class<? extends TopiaEntity> contract = entityEnum.getContract();
try {
TopiaDAO dao = EchoBaseDAOHelper.getDAO(getTransaction(), contract);
- List<?> all = dao.findAll();
- Map[] result = new Map[all.size()];
- Iterator<?> dataItr = all.iterator();
- int i = 0;
- while (dataItr.hasNext()) {
- TopiaEntity entity = (TopiaEntity) dataItr.next();
+ ResultDatas result = new ResultDatas();
+ TopiaQuery query = dao.createQuery("e");
+ if (StringUtils.isNotEmpty(sidx)) {
+ if (ascendantOrder) {
+ query.addOrder(sidx);
+ } else {
+ query.addOrderDesc(sidx);
+ }
+ }
+ List<?> all = dao.findAllByQuery(query);
+ int count = all.size();
+ if (count < to) {
+ to = count;
+ }
+ Map[] rows = new Map[to - from];
+
+ int j = 0;
+ for (int i = from; i < to; i++) {
+ TopiaEntity entity = (TopiaEntity) all.get(i);
Map<String, Object> row = loadRow(tableMeta, entity);
- result[i++] = row;
+ rows[j++] = row;
}
+
+ result.setCount(all.size());
+ result.setRows(rows);
return result;
} catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
}
}
+ public PropertyDiff[] saveEntity(TableMeta tableMeta,
+ String id,
+ Map<String, String> properties,
+ EchoBaseUser user) {
+
+ Class<? extends TopiaEntity> entityType = tableMeta.getEntityType();
+ String[] columnNames = tableMeta.getColumnNamesAsArray();
+ BeanMonitor monitor = new BeanMonitor(columnNames);
+
+ try {
+ TopiaDAO dao = EchoBaseDAOHelper.getDAO(
+ getTransaction(),
+ entityType);
+
+ TopiaEntity entityToSave = dao.findByTopiaId(id);
+ monitor.setBean(entityToSave);
+ for (Map.Entry<String, String> entry : properties.entrySet()) {
+ String propertyName = entry.getKey();
+ String propertyValue = entry.getValue();
+ BeanUtils.setProperty(entityToSave,
+ propertyName,
+ propertyValue);
+ }
+
+ PropertyDiff[] propertyDiffs = monitor.getPropertyDiffs();
+
+ int length = propertyDiffs.length;
+
+ if (length > 0) {
+
+ // something was modified on the entity
+
+ EntityModificationLogDAO dao1 =
+ EchoBaseDAOHelper.getEntityModificationLogDAO(
+ getTransaction()
+ );
+
+ StringBuilder buffer;
+ if (length == 1) {
+ buffer = new StringBuilder("Une propriété a été modifiée :");
+ } else {
+ buffer = new StringBuilder(length + " propriétés ont été modifiées :");
+ }
+ for (int i = 0; i < length; i++) {
+ PropertyDiff diff = propertyDiffs[i];
+ buffer.append(String.format("\n Propriété '%s', ancienne valeur : %s, nouvelle valeur : %s",
+ diff.getSourceProperty(),
+ diff.getSourceValue(),
+ diff.getTargetValue()
+ ));
+ }
+ dao1.create(
+ EntityModificationLog.PROPERTY_ENTITY_TYPE, entityType.getSimpleName(),
+ EntityModificationLog.PROPERTY_ENTITY_ID, id,
+ EntityModificationLog.PROPERTY_USER, user,
+ EntityModificationLog.PROPERTY_MODIFICATION_DATE, new Date(),
+ EntityModificationLog.PROPERTY_MODIFICATION_TEXT, buffer.toString()
+ );
+
+ getTransaction().commitTransaction();
+ }
+ return propertyDiffs;
+ } catch (Exception eee) {
+ throw new EchoBaseTechnicalException("Could not update entity", eee);
+ } finally {
+ monitor.setBean(null);
+ }
+
+ }
+
protected Map<String, Object> loadRow(TableMeta tableMeta, TopiaEntity entity) {
Map<String, Object> row = Maps.newLinkedHashMap();
EntityOperator<TopiaEntity> operator =
(EntityOperator<TopiaEntity>) tableMeta.getOperator();
+ row.put("id", entity.getTopiaId());
for (ColumnMeta columnMeta : tableMeta) {
String propertyName = columnMeta.getName();
Object property =
@@ -88,5 +213,4 @@
}
return row;
}
-
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java 2011-11-09 07:29:52 UTC (rev 27)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java 2011-11-09 07:31:29 UTC (rev 28)
@@ -1,3 +1,26 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
package fr.ifremer.echobase.services;
import fr.ifremer.echobase.EchoBaseTechnicalException;
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java 2011-11-09 07:29:52 UTC (rev 27)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java 2011-11-09 07:31:29 UTC (rev 28)
@@ -1,3 +1,26 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
package fr.ifremer.echobase.services.models;
import fr.ifremer.echobase.entities.Survey;
Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r27 - in trunk/echobase-entities/src/main: java/fr/ifremer/echobase java/fr/ifremer/echobase/entities java/fr/ifremer/echobase/entities/meta resources/i18n xmi
by tchemit@users.forge.codelutin.com 09 Nov '11
by tchemit@users.forge.codelutin.com 09 Nov '11
09 Nov '11
Author: tchemit
Date: 2011-11-09 08:29:52 +0100 (Wed, 09 Nov 2011)
New Revision: 27
Url: http://forge.codelutin.com/repositories/revision/echobase/27
Log:
add entity EntityModificationLog + improve configuration and db meta
Added:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntityModificationLogImpl.java
Modified:
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java
trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java
trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
trunk/echobase-entities/src/main/xmi/echobase.zargo
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java 2011-11-09 07:26:15 UTC (rev 26)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseConfiguration.java 2011-11-09 07:29:52 UTC (rev 27)
@@ -126,6 +126,11 @@
return driverClass.getSimpleName().toLowerCase().contains("h2");
}
+ public boolean getOptionAsBoolean(String propertyName) {
+ Boolean result = applicationConfig.getOptionAsBoolean(propertyName);
+ return result!=null && result;
+ }
+
/**
* Creates a directory given the configuration given key.
*
Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntityModificationLogImpl.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntityModificationLogImpl.java (rev 0)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntityModificationLogImpl.java 2011-11-09 07:29:52 UTC (rev 27)
@@ -0,0 +1,46 @@
+/*
+ * #%L
+ * EchoBase :: Entities
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.entities;
+
+/**
+ * Default implementation of {@link EntityModificationLog}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
+ */
+public class EntityModificationLogImpl extends EntityModificationLogAbstract {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public EntityModificationLogDTO toDTO() {
+ EntityModificationLogDTO result = new EntityModificationLogDTOImpl();
+ result.setEntityType(getEntityType());
+ result.setEntityId(getEntityId());
+ result.setModificationDate(getModificationDate());
+ result.setModificationText(getModificationText());
+ result.setUser(getUser().toDTO());
+ return result;
+ }
+}
Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntityModificationLogImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java
===================================================================
--- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-11-09 07:26:15 UTC (rev 26)
+++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-11-09 07:29:52 UTC (rev 27)
@@ -73,6 +73,10 @@
return entityEnum;
}
+ public Class<? extends TopiaEntity> getEntityType() {
+ return entityEnum.getContract();
+ }
+
public String getI18nKey() {
return i18nKey;
}
@@ -93,6 +97,11 @@
return result;
}
+ public String[] getColumnNamesAsArray() {
+ List<String> columnNames = getColumnNames();
+ return columnNames.toArray(new String[columnNames.size()]);
+ }
+
public List<String> getColumnNames() {
List<String> result = Lists.newLinkedList();
for (ColumnMeta columnMeta : getColumns()) {
Modified: trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
===================================================================
--- trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-11-09 07:26:15 UTC (rev 26)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-11-09 07:29:52 UTC (rev 27)
@@ -3,13 +3,20 @@
echobase.common.echoBaseUser=Utilisateur
echobase.common.echoBaseUserDTO=
echobase.common.email=Courriel
+echobase.common.entityId=Identifiant de l'entité
+echobase.common.entityModificationLog=Journal des modifications
+echobase.common.entityModificationLogDTO=
+echobase.common.entityType=Type de l'entité
echobase.common.exportQuery=Requête d'export
echobase.common.exportQueryDTO=
echobase.common.id=Identifiant
echobase.common.lastModifiedDate=Date de dernière modification
echobase.common.lastModifiedUser=Utilisateur de dernière modification
+echobase.common.modificationDate=Date de modification
+echobase.common.modificationText=Modification
echobase.common.name=Nom
echobase.common.password=Mot de passe
echobase.common.sqlQuery=Requête SQL
-echobase.common.survey=
+echobase.common.survey=Campagne
+echobase.common.user=Utilisateur
echobase.config.data.directory.description=Chemin de l'application
Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo
===================================================================
(Binary files differ)
1
0
Author: tchemit
Date: 2011-11-09 08:26:15 +0100 (Wed, 09 Nov 2011)
New Revision: 26
Url: http://forge.codelutin.com/repositories/revision/echobase/26
Log:
use last snapshot of nuiton-utils
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-11-08 17:51:54 UTC (rev 25)
+++ trunk/pom.xml 2011-11-09 07:26:15 UTC (rev 26)
@@ -108,7 +108,7 @@
<eugenePluginVersion>2.4.1</eugenePluginVersion>
<topiaVersion>2.6.3</topiaVersion>
- <nuitonUtilsVersion>2.3</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.4-SNAPSHOT</nuitonUtilsVersion>
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
<nuitonWebVersion>1.5</nuitonWebVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
1
0
08 Nov '11
Author: sletellier
Date: 2011-11-08 18:51:54 +0100 (Tue, 08 Nov 2011)
New Revision: 25
Url: http://forge.codelutin.com/repositories/revision/echobase/25
Log:
- Add survey entity
- Add import pages
- Creating import model in service
- Creating survey service
Added:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java
trunk/echobase-ui/src/main/resources/config/struts-import.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/import.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importProgress.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importResult.jsp
Removed:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportProgress.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportResult.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/imports.jsp
Modified:
trunk/echobase-entities/src/license/THIRD-PARTY.properties
trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
trunk/echobase-entities/src/main/xmi/echobase.zargo
trunk/echobase-ui/src/main/resources/config/struts-json.xml
trunk/echobase-ui/src/main/resources/config/struts-user.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/resources/struts.xml
trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/export/exportQueryForm.jsp
Modified: trunk/echobase-entities/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/echobase-entities/src/license/THIRD-PARTY.properties 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-entities/src/license/THIRD-PARTY.properties 2011-11-08 17:51:54 UTC (rev 25)
@@ -5,7 +5,6 @@
# - BSD style
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - Common Public License Version 1.0
-# - General Public License (GPL)
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
@@ -19,9 +18,8 @@
# Please fill the missing licenses for dependencies :
#
#
-#Thu Nov 03 15:02:42 CET 2011
+#Tue Nov 08 16:07:35 CET 2011
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-echobase.title.dbEditor=Editeur de données
Modified: trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties
===================================================================
--- trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-entities/src/main/resources/i18n/echobase-entities_fr_FR.properties 2011-11-08 17:51:54 UTC (rev 25)
@@ -11,4 +11,5 @@
echobase.common.name=Nom
echobase.common.password=Mot de passe
echobase.common.sqlQuery=Requête SQL
+echobase.common.survey=
echobase.config.data.directory.description=Chemin de l'application
Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo
===================================================================
(Binary files differ)
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/SurveyService.java 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,39 @@
+package fr.ifremer.echobase.services;
+
+import fr.ifremer.echobase.EchoBaseTechnicalException;
+import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
+import fr.ifremer.echobase.entities.Survey;
+import fr.ifremer.echobase.entities.SurveyDAO;
+import org.nuiton.topia.TopiaException;
+
+import java.util.List;
+
+/**
+ * Service to manage all concerning survey
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class SurveyService extends AbstractEchoBaseService {
+
+ public List<Survey> getSurveys() {
+ try {
+ List<Survey> surveys = getDAO().findAll();
+ return surveys;
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException(eee);
+ }
+ }
+
+ public Survey getSurveyById(String topiaId) {
+ try {
+ Survey survey = getDAO().findByTopiaId(topiaId);
+ return survey;
+ } catch (TopiaException eee) {
+ throw new EchoBaseTechnicalException(eee);
+ }
+ }
+
+ protected SurveyDAO getDAO() throws TopiaException {
+ return EchoBaseDAOHelper.getSurveyDAO(getTransaction());
+ }
+}
Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java (rev 0)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/models/ImportModel.java 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,198 @@
+package fr.ifremer.echobase.services.models;
+
+import fr.ifremer.echobase.entities.Survey;
+import org.apache.commons.lang.StringUtils;
+
+import java.io.File;
+
+/**
+ * Object representing all import configuration
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class ImportModel {
+
+ protected Survey surveySelected;
+
+ protected File accessImport;
+ protected String accessImportFileName;
+
+ protected File accousticImport;
+ protected String accousticImportFileName;
+
+ protected File pecherieImport;
+ protected String pecherieImportFileName;
+
+ protected File lectureAgeGenImport;
+ protected String lectureAgeGenImportFileName;
+
+ protected File eventsImport;
+ protected String eventsImportFileName;
+
+ protected File typeEchoSpeciesImport;
+ protected String typeEchoSpeciesImportFileName;
+
+ protected String comment;
+
+ public Survey getSurveySelected() {
+ return surveySelected;
+ }
+
+ public void setSurveySelected(Survey surveySelected) {
+ this.surveySelected = surveySelected;
+ }
+
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public File getAccessImport() {
+ return accessImport;
+ }
+
+ public void setAccessImport(File accessImport) {
+ this.accessImport = accessImport;
+ }
+
+ public String getAccessImportFileName() {
+ return accessImportFileName;
+ }
+
+ public void setAccessImportFileName(String accessImportFileName) {
+ this.accessImportFileName = accessImportFileName;
+ }
+
+ public File getAccousticImport() {
+ return accousticImport;
+ }
+
+ public void setAccousticImport(File accousticImport) {
+ this.accousticImport = accousticImport;
+ }
+
+ public String getAccousticImportFileName() {
+ return accousticImportFileName;
+ }
+
+ public void setAccousticImportFileName(String accousticImportFileName) {
+ this.accousticImportFileName = accousticImportFileName;
+ }
+
+ public File getPecherieImport() {
+ return pecherieImport;
+ }
+
+ public void setPecherieImport(File pecherieImport) {
+ this.pecherieImport = pecherieImport;
+ }
+
+ public String getPecherieImportFileName() {
+ return pecherieImportFileName;
+ }
+
+ public void setPecherieImportFileName(String pecherieImportFileName) {
+ this.pecherieImportFileName = pecherieImportFileName;
+ }
+
+ public File getLectureAgeGenImport() {
+ return lectureAgeGenImport;
+ }
+
+ public void setLectureAgeGenImport(File lectureAgeGenImport) {
+ this.lectureAgeGenImport = lectureAgeGenImport;
+ }
+
+ public String getLectureAgeGenImportFileName() {
+ return lectureAgeGenImportFileName;
+ }
+
+ public void setLectureAgeGenImportFileName(String lectureAgeGenImportFileName) {
+ this.lectureAgeGenImportFileName = lectureAgeGenImportFileName;
+ }
+
+ public File getEventsImport() {
+ return eventsImport;
+ }
+
+ public void setEventsImport(File eventsImport) {
+ this.eventsImport = eventsImport;
+ }
+
+ public String getEventsImportFileName() {
+ return eventsImportFileName;
+ }
+
+ public void setEventsImportFileName(String eventsImportFileName) {
+ this.eventsImportFileName = eventsImportFileName;
+ }
+
+ public File getTypeEchoSpeciesImport() {
+ return typeEchoSpeciesImport;
+ }
+
+ public void setTypeEchoSpeciesImport(File typeEchoSpeciesImport) {
+ this.typeEchoSpeciesImport = typeEchoSpeciesImport;
+ }
+
+ public String getTypeEchoSpeciesImportFileName() {
+ return typeEchoSpeciesImportFileName;
+ }
+
+ public void setTypeEchoSpeciesImportFileName(String typeEchoSpeciesImportFileName) {
+ this.typeEchoSpeciesImportFileName = typeEchoSpeciesImportFileName;
+ }
+
+ public boolean validate() {
+
+ // access file or survey is selected, not both
+ boolean result = surveySelected == null ^ accessImport == null;
+
+ // Less one of other import
+ result = result && (accessImport != null ||
+ accousticImport != null ||
+ lectureAgeGenImport != null ||
+ pecherieImport != null ||
+ eventsImport != null ||
+ typeEchoSpeciesImport != null);
+
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+
+ // Add selected survey
+ if (surveySelected != null) {
+ addToBuilder(builder, "surveySelected", surveySelected.getName());
+ }
+
+ // Add all import files
+ addToBuilder(builder, "accessImportFile", accessImportFileName);
+ addToBuilder(builder, "accousticImportFile", accousticImportFileName);
+ addToBuilder(builder, "pecherieImportFile", pecherieImportFileName);
+ addToBuilder(builder, "lectureAgeGenImportFile", lectureAgeGenImportFileName);
+ addToBuilder(builder, "eventsImportFile", eventsImportFileName);
+ addToBuilder(builder, "pecherieImportFile", typeEchoSpeciesImportFileName);
+
+ if (StringUtils.isNotEmpty(comment)) {
+ addToBuilder(builder, "comment", comment);
+ }
+ return builder.toString().trim();
+ }
+
+ protected void addToBuilder(StringBuilder builder, String name, String value) {
+ if (StringUtils.isNotEmpty(value)) {
+ builder.append(" ");
+ builder.append(name);
+ builder.append("[");
+ builder.append(value);
+ builder.append("]");
+ }
+ }
+}
Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/ImportAction.java 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,82 @@
+package fr.ifremer.echobase.ui.actions;
+
+import com.google.common.collect.Maps;
+import com.opensymphony.xwork2.Preparable;
+import fr.ifremer.echobase.entities.Survey;
+import fr.ifremer.echobase.services.SurveyService;
+import fr.ifremer.echobase.services.models.ImportModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Action to manage imports
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class ImportAction extends EchoBaseActionSupport {
+
+ protected static final Log log = LogFactory.getLog(ImportAction.class);
+
+ protected ImportModel importModel;
+
+ protected Map<String, String> surveys;
+
+ public ImportModel getImportModel() {
+ if (importModel == null) {
+ importModel = new ImportModel();
+ }
+ return importModel;
+ }
+
+ public void setImportModel(ImportModel importModel) {
+ this.importModel = importModel;
+ }
+
+ public String getSelectedSurvey() {
+ Survey surveySelected = getImportModel().getSurveySelected();
+ if (surveySelected == null) {
+ return null;
+ }
+ return surveySelected.getTopiaId();
+ }
+
+ public void setSelectedSurvey(String selectedSurveyId) {
+ Survey selectedSurvey = newService(SurveyService.class).getSurveyById(selectedSurveyId);
+ getImportModel().setSurveySelected(selectedSurvey);
+ }
+
+ public Map<String, String> getSurveys() {
+ return surveys;
+ }
+
+ @Override
+ public String input() throws Exception {
+
+ SurveyService service = newService(SurveyService.class);
+ List<Survey> allSurveys = service.getSurveys();
+
+ surveys = Maps.newHashMap();
+ for (Survey survey : allSurveys) {
+ surveys.put(survey.getTopiaId(), survey.getName());
+ }
+
+ return INPUT;
+ }
+
+ @Override
+ public String execute() throws Exception {
+ log.info("Will import : " + importModel.toString());
+ return SUCCESS;
+ }
+
+ @Override
+ public void validate() {
+ if (!importModel.validate()) {
+ addActionError(getText("echobase.error.importArgument"));
+ }
+ }
+}
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java 2011-11-08 17:51:54 UTC (rev 25)
@@ -1,73 +0,0 @@
-/*
- * #%L
- * EchoBase :: UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.echobase.ui.actions.json;
-
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.EchoBaseUserDTO;
-import fr.ifremer.echobase.services.UserService;
-import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Obtains all users of the echobase internal database.
- *
- * @author sletellier <letellier(a)codelutin.com>
- * @since 0.1
- */
-public class GetUsersAction extends EchoBaseActionSupport {
-
- private static final long serialVersionUID = 1L;
-
-// protected transient UserService service;
-
- protected List<EchoBaseUserDTO> users;
-
- public List<EchoBaseUserDTO> getUsers() {
- return users;
- }
-
-// protected UserService getUserService() {
-// if (service == null) {
-// service = newService(UserService.class);
-// }
-// return service;
-// }
-
- @Override
- public String execute() throws Exception {
-
-// List<EchoBaseUser> allUsers = getUserService().getUsers();
- List<EchoBaseUser> allUsers = newService(UserService.class).getUsers();
-
- users = new ArrayList<EchoBaseUserDTO>(allUsers.size());
- for (EchoBaseUser user : allUsers) {
- users.add(user.toDTO());
- }
-
- return SUCCESS;
- }
-
-}
Copied: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java (from rev 24, trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java)
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java (rev 0)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,63 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.echobase.ui.actions.json;
+
+import fr.ifremer.echobase.entities.EchoBaseUser;
+import fr.ifremer.echobase.entities.EchoBaseUserDTO;
+import fr.ifremer.echobase.services.UserService;
+import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Obtains all users of the echobase internal database.
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class GetUsersDatas extends EchoBaseActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<EchoBaseUserDTO> users;
+
+ public List<EchoBaseUserDTO> getUsers() {
+ return users;
+ }
+
+ @Override
+ public String execute() throws Exception {
+
+ List<EchoBaseUser> allUsers = newService(UserService.class).getUsers();
+
+ users = new ArrayList<EchoBaseUserDTO>(allUsers.size());
+ for (EchoBaseUser user : allUsers) {
+ users.add(user.toDTO());
+ }
+
+ return SUCCESS;
+ }
+
+}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersDatas.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/echobase-ui/src/main/resources/config/struts-import.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-import.xml (rev 0)
+++ trunk/echobase-ui/src/main/resources/config/struts-import.xml 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE struts PUBLIC
+ "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/struts-2.1.7.dtd">
+
+<struts>
+
+ <package name="import" extends="loggued" namespace="/import">
+
+ <!-- Display import page -->
+ <action name="import" class="fr.ifremer.echobase.ui.actions.ImportAction" method="input">
+ <interceptor-ref name="basicStackLoggued"/>
+ <result name="input">/WEB-INF/jsp/import/import.jsp</result>
+ <result name="success" type="redirectAction">doImport</result>
+ </action>
+
+ <!-- Display import page -->
+ <action name="doImport" class="fr.ifremer.echobase.ui.actions.ImportAction">
+ <interceptor-ref name="paramsPrepareParamsStackLoggued"/>
+ <result name="success">/WEB-INF/jsp/import/importProgress.jsp</result>
+ </action>
+
+ </package>
+
+</struts>
+
Modified: trunk/echobase-ui/src/main/resources/config/struts-json.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-json.xml 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/resources/config/struts-json.xml 2011-11-08 17:51:54 UTC (rev 25)
@@ -23,7 +23,6 @@
#L%
-->
-
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
@@ -33,7 +32,7 @@
<package name="json" extends="loggued" namespace="/json">
<action name="getUsers"
- class="fr.ifremer.echobase.ui.actions.json.GetUsersAction">
+ class="fr.ifremer.echobase.ui.actions.json.GetUsersDatas">
<interceptor-ref name="basicStackLoggued"/>
<interceptor-ref name="checkUserIsAdmin"/>
<result type="json"/>
Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-08 17:51:54 UTC (rev 25)
@@ -23,7 +23,6 @@
#L%
-->
-
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
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 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-11-08 17:51:54 UTC (rev 25)
@@ -1,14 +1,17 @@
echobase.action.create=Créer
echobase.action.delete=Suppression
+echobase.action.import=Importer
echobase.action.locale.english=Anglais
echobase.action.locale.french=Français
echobase.action.login=Connection
echobase.action.logout=Déconnection
echobase.action.save=Sauvegarder
echobase.common.admin=Administrateur
+echobase.common.comment=Commentaire
echobase.common.email=Email
+echobase.common.import=Import configuration
echobase.common.password=Mot de passe
-echobase.common.save=Sauvegarder
+echobase.common.survey=Campagne
echobase.common.tableName=Nom de la table
echobase.common.user=Utilisateur
echobase.error.bad.password=Mot de passe incorrrect
@@ -19,6 +22,12 @@
echobase.export.queryDescription=Description
echobase.export.queryName=Nom
echobase.export.querySql=SQL
+echobase.importFile.access=Base access
+echobase.importFile.accoustique=Fichier accoustique
+echobase.importFile.events=Fichier evenements
+echobase.importFile.lectureAgeGen=Fichier lecture age
+echobase.importFile.pecherie=Fichier pecherie
+echobase.importFile.typeEchoSpecies=Fichier espèces
echobase.info.no.table.selected=Aucune table sélectionnée
echobase.label.admin.user.create=Création d'un utilisateur
echobase.label.admin.user.delete=Suppression d'un utilisateur
@@ -35,6 +44,7 @@
echobase.menu.logs=Logs
echobase.menu.users=Utilisateurs
echobase.msg.warnImportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir acceder au résultats de l'import.
+echobase.survey.selectHeader=Selectionnez une campagne
echobase.title.export=Export
echobase.title.import=Imports
echobase.title.importProgress=Import en cours
Modified: trunk/echobase-ui/src/main/resources/struts.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/struts.xml 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/resources/struts.xml 2011-11-08 17:51:54 UTC (rev 25)
@@ -144,6 +144,7 @@
<include file="config/struts-dbeditor.xml"/>
<include file="config/struts-json.xml"/>
<include file="config/struts-user.xml"/>
+ <include file="config/struts-import.xml"/>
</struts>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -41,7 +41,6 @@
<div id="body">
- <%-- TODO sletellier 20111104 : add this --%>
<s:if test="hasActionMessages()">
<div class="info_success">
<s:actionmessage/>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/includes/menu.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -25,13 +25,13 @@
<div class="cleanBoth">
<ul>
<li>
- <s:a action="import"><s:text name="echobase.menu.import"/></s:a>
+ <s:a action="import" namespace="/import"><s:text name="echobase.menu.import"/></s:a>
</li>
<li>
<s:a action="export"><s:text name="echobase.menu.export"/></s:a>
</li>
<li>
- <s:a action="export"><s:text name="echobase.menu.logs"/></s:a>
+ <s:a action="logs"><s:text name="echobase.menu.logs"/></s:a>
</li>
<s:if
test="%{userIsAdmin}">
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 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -43,7 +43,7 @@
</script>
<div>
- <s:select key="tableName" href='%{getTableNamesUrl}'
+ <s:select key="tableName"
label='%{getText("echobase.common.tableName")}'
list="tableNames" headerKey="" headerValue=""/>
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/export/exportQueryForm.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/export/exportQueryForm.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/export/exportQueryForm.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -49,7 +49,7 @@
<s:url id="saveExportQueryUrl" action="saveExportQuery" namespace="export"/>
<s:set id="saveExportQueryText">
- <s:text name="echobase.common.save"/>
+ <s:text name="echobase.action.save"/>
</s:set>
<sj:submit id="saveQuery"
Deleted: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportProgress.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportProgress.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportProgress.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -1,33 +0,0 @@
-<%--
- #%L
- EchoBase :: UI
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2011 Ifremer, Codelutin
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- #L%
- --%>
-<%@page contentType="text/html" pageEncoding="UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
-
-<title><s:text name="echobase.title.importProgress"/></title>
-
-<sj:progressbar value="%{EchoBaseActionContext.progression}"/>
-
-<%-- TODO letellier 20111104 : Add warn icon --%>
-<p><s:text name="echobase.msg.warnImportInProgress"/></p>
\ No newline at end of file
Deleted: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportResult.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportResult.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportResult.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -1,29 +0,0 @@
-<%--
- #%L
- EchoBase :: UI
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2011 Ifremer, Codelutin
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- #L%
- --%>
-<%@page contentType="text/html" pageEncoding="UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<title><s:text name="echobase.title.importResult"/></title>
-
-<%-- TODO letellier 20111104 : Add import results --%>
\ No newline at end of file
Copied: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/import.jsp (from rev 24, trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/imports.jsp)
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/import.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/import.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,56 @@
+<%--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<title><s:text name="echobase.title.import"/></title>
+
+<s:form id="importForm" action="import" namespace="/import" method="POST" enctype="multipart/form-data">
+
+ <fieldset>
+ <legend>
+ <s:text name="echobase.common.import"/>
+ </legend>
+ <s:select
+ key="selectedSurvey"
+ label='%{getText("echobase.common.survey")}'
+ list="surveys"
+ emptyOption="true"
+ headerKey="-1"
+ headerValue='%{getText("echobase.survey.selectHeader")}'
+ />
+
+ <s:file name="importModel.accessImport" key="echobase.importFile.access"/>
+ <s:file name="importModel.accousticImport" key="echobase.importFile.accoustique"/>
+ <s:file name="importModel.pecherieImport" key="echobase.importFile.pecherie"/>
+ <s:file name="importModel.lectureAgeGenImport" key="echobase.importFile.lectureAgeGen"/>
+ <s:file name="importModel.eventsImport" key="echobase.importFile.events"/>
+ <s:file name="importModel.typeEchoSpeciesImport" key="echobase.importFile.typeEchoSpecies"/>
+
+ <s:textarea name="importModel.comment" key="echobase.common.comment"/>
+
+ </fieldset>
+ <br/>
+ <s:submit id="addFilesSubmit" value='%{getText("echobase.action.import")}'/>
+</s:form>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/import.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importProgress.jsp (from rev 24, trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportProgress.jsp)
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importProgress.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importProgress.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,33 @@
+<%--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
+
+<title><s:text name="echobase.title.importProgress"/></title>
+
+<sj:progressbar value="%{EchoBaseActionContext.progression}"/>
+
+<%-- TODO letellier 20111104 : Add warn icon --%>
+<p><s:text name="echobase.msg.warnImportInProgress"/></p>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importProgress.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importResult.jsp (from rev 24, trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/ImportResult.jsp)
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importResult.jsp (rev 0)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importResult.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -0,0 +1,29 @@
+<%--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ --%>
+<%@page contentType="text/html" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<title><s:text name="echobase.title.importResult"/></title>
+
+<%-- TODO letellier 20111104 : Add import results --%>
\ No newline at end of file
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/importResult.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/imports.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/imports.jsp 2011-11-08 14:08:22 UTC (rev 24)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/import/imports.jsp 2011-11-08 17:51:54 UTC (rev 25)
@@ -1,43 +0,0 @@
-<%--
- #%L
- EchoBase :: UI
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2011 Ifremer, Codelutin
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- #L%
- --%>
-<%@page contentType="text/html" pageEncoding="UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<title><s:text name="echobase.title.import"/></title>
-
-<s:form id="importForm" action="importFiles" namespace="/import" method="POST" enctype="multipart/form-data">
-
- <%-- TODO letellier 20111104 : Allow to select existing campagne --%>
-
- <s:file name="accoustique" key="echobase.importFile.accoustique"/>
- <s:file name="pecherie" key="echobase.importFile.pecherie"/>
- <s:file name="lectureAgeGen" key="echobase.importFile.lectureAgeGen"/>
- <s:file name="events" key="echobase.importFile.events"/>
- <s:file name="typeEchoSpecies" key="echobase.importFile.typeEchoSpecies"/>
-
- <s:textarea name="comment" key="echobase.common.comment"/>
-
- <s:submit id="addFilesSubmit"
- value="%{saveText}"/>
-</s:form>
\ No newline at end of file
1
0
r24 - in trunk/echobase-ui/src/main: java/fr/ifremer/echobase/ui java/fr/ifremer/echobase/ui/actions java/fr/ifremer/echobase/ui/actions/dbeditor java/fr/ifremer/echobase/ui/actions/json resources/config resources/i18n webapp/WEB-INF/decorators webapp/WEB-INF/jsp/dbeditor webapp/WEB-INF/jsp/user
by tchemit@users.forge.codelutin.com 08 Nov '11
by tchemit@users.forge.codelutin.com 08 Nov '11
08 Nov '11
Author: tchemit
Date: 2011-11-08 15:08:22 +0100 (Tue, 08 Nov 2011)
New Revision: 24
Url: http://forge.codelutin.com/repositories/revision/echobase/24
Log:
add dbeditor
Removed:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/DbEditorUtil.java
Modified:
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java
trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java
trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
trunk/echobase-ui/src/main/resources/config/struts-json.xml
trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties
trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -25,6 +25,7 @@
import com.google.common.base.Supplier;
import fr.ifremer.echobase.EchoBaseConfiguration;
+import fr.ifremer.echobase.entities.meta.DbMeta;
import org.nuiton.topia.TopiaContext;
/**
@@ -34,6 +35,7 @@
public class EchoBaseApplicationContext {
protected EchoBaseConfiguration configuration;
+ protected DbMeta dbMeta;
protected Supplier<TopiaContext> rootContextSupplier;
@@ -52,4 +54,12 @@
public void setRootContextSupplier(Supplier<TopiaContext> rootContextSupplier) {
this.rootContextSupplier = rootContextSupplier;
}
+
+ public DbMeta getDbMeta() {
+ return dbMeta;
+ }
+
+ public void setDbMeta(DbMeta dbMeta) {
+ this.dbMeta = dbMeta;
+ }
}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -24,13 +24,16 @@
package fr.ifremer.echobase.ui;
import com.google.common.base.Supplier;
+import com.google.common.collect.Lists;
import fr.ifremer.echobase.EchoBaseConfiguration;
import fr.ifremer.echobase.EchoBaseTechnicalException;
import fr.ifremer.echobase.EchoBaseTopiaRootContextSupplierFactory;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
import fr.ifremer.echobase.entities.EchoBaseUser;
import fr.ifremer.echobase.entities.EchoBaseUserDTO;
import fr.ifremer.echobase.entities.EchoBaseUserDTOImpl;
import fr.ifremer.echobase.entities.EchoBaseUserImpl;
+import fr.ifremer.echobase.entities.meta.DbMeta;
import fr.ifremer.echobase.services.EchoBaseServiceContext;
import fr.ifremer.echobase.services.EchoBaseServiceContextImpl;
import fr.ifremer.echobase.services.EchoBaseServiceFactory;
@@ -103,7 +106,13 @@
new EchoBaseTopiaRootContextSupplierFactory();
rootContextSupplier = factory.newDatabaseFromConfig(configuration);
applicationContext.setRootContextSupplier(rootContextSupplier);
+ List<EchoBaseEntityEnum> entityEnums =
+ Lists.newArrayList(EchoBaseEntityEnum.values());
+ entityEnums.remove(EchoBaseEntityEnum.EchoBaseUser);
+ DbMeta dbMeta = new DbMeta(entityEnums.toArray(new EchoBaseEntityEnum[entityEnums.size()]));
+ applicationContext.setDbMeta(dbMeta);
+
// register our not locale dependant converter
Converter converter = ConverterUtil.getConverter(Float.class);
if (converter != null) {
@@ -119,7 +128,7 @@
updateSchema(configuration);
}
- createAdminUser(configuration);
+ createAdminUser(applicationContext);
} catch (TopiaException e) {
throw new EchoBaseTechnicalException("Could not init db", e);
}
@@ -179,22 +188,26 @@
}
/**
- * Creates the adminsitrator ({@code admin/admin}) on the internal
- * database.
+ * Creates the adminsitrator ({@code admin/admin}) on the database.
*
- * @param configuration EchoBase configuration
+ * @param applicationContext application context
* @throws TopiaException if could not create the user.
*/
- protected void createAdminUser(EchoBaseConfiguration configuration) throws TopiaException {
+ protected void createAdminUser(EchoBaseApplicationContext applicationContext) throws TopiaException {
+ EchoBaseConfiguration configuration =
+ applicationContext.getConfiguration();
+
EchoBaseServiceFactory serviceFactory =
new EchoBaseServiceFactory();
TopiaContext transaction = rootContextSupplier.get().beginTransaction();
try {
EchoBaseServiceContext serviceContext = new EchoBaseServiceContextImpl(
+ Locale.getDefault(),
transaction,
configuration,
+ applicationContext.getDbMeta(),
serviceFactory
);
@@ -217,13 +230,6 @@
userDTO.setAdmin(true);
service.createOrUpdate(userDTO);
- for (int i = 0; i < 1000; i++) {
-
- userDTO.setEmail("admin" + i);
- userDTO.setPassword("admin");
- userDTO.setAdmin(true);
- service.createOrUpdate(userDTO);
- }
}
} finally {
transaction.closeContext();
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -122,11 +122,18 @@
/**
* Fabrique pour récupérer le ServiceContext tel qu'il devrait être fourni
* à la fabrication d'un service.
+ *
+ * @return service context
*/
protected EchoBaseServiceContext getServiceContext() {
if (serviceContext == null) {
serviceContext = new EchoBaseServiceContextImpl(
- getTransaction(), getConfiguration(), serviceFactory);
+ getLocale(),
+ getTransaction(),
+ getConfiguration(),
+ getEchoBaseApplicationContext().getDbMeta(),
+ serviceFactory
+ );
}
return serviceContext;
}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EditActionEnum.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/DbEditorUtil.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/DbEditorUtil.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/DbEditorUtil.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -1,67 +0,0 @@
-package fr.ifremer.echobase.ui.actions.dbeditor;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
-import fr.ifremer.echobase.entities.EchoBaseUser;
-import fr.ifremer.echobase.entities.ExportQuery;
-import fr.ifremer.echobase.services.DbEditorService;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.beans.Introspector;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * Helper for the db editor.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.1
- */
-public class DbEditorUtil {
-
- protected static Map<String, String> tableNames;
-
- public static Map<String, String> getTableNames() {
-
- if (tableNames == null) {
- tableNames = Maps.newTreeMap();
- Class<? extends TopiaEntity>[] contractClasses =
- EchoBaseDAOHelper.getContractClasses();
- for (Class<? extends TopiaEntity> contractClass : contractClasses) {
- tableNames.put(contractClass.getName(), _("echobase.common." + Introspector.decapitalize(contractClass.getSimpleName())));
- }
- }
- return tableNames;
- }
-
- public static List<DbEditorService.TableMeta> getTableMeta(String tableName, TopiaContext transaction) {
-
- List<DbEditorService.TableMeta> result = Lists.newLinkedList();
- if (EchoBaseUser.class.getName().equals(tableName)) {
-// result.add(newMeta(EchoBaseUser.TOPIA_ID, String.class));
- result.add(DbEditorService.newMeta(EchoBaseUser.PROPERTY_EMAIL, String.class));
- result.add(DbEditorService.newMeta(EchoBaseUser.PROPERTY_ADMIN, boolean.class));
- }
-
- if (ExportQuery.class.getName().equals(tableName)) {
-
-// result.add(newMeta(ExportQuery.TOPIA_ID, String.class));
- result.add(DbEditorService.newMeta(ExportQuery.PROPERTY_NAME, String.class));
- result.add(DbEditorService.newMeta(ExportQuery.PROPERTY_DESCRIPTION, String.class));
- result.add(DbEditorService.newMeta(ExportQuery.PROPERTY_SQL_QUERY, String.class));
- result.add(DbEditorService.newMeta(ExportQuery.PROPERTY_LAST_MODIFIED_DATE, Date.class));
- result.add(DbEditorService.newMeta(ExportQuery.PROPERTY_LAST_MODIFIED_USER, EchoBaseUser.class));
- }
- return result;
- }
-
- protected DbEditorUtil() {
- // helper classes, avoid constructor
- }
-
-}
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -1,10 +1,32 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
package fr.ifremer.echobase.ui.actions.dbeditor;
-import com.google.common.collect.Lists;
import fr.ifremer.echobase.services.DbEditorService;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
-import java.util.List;
+import java.util.Map;
/**
* To obtain the data for the given request.
@@ -19,17 +41,21 @@
/** Name of the table to load. */
protected String tableName;
- /** Metas of the table */
- protected List<DbEditorService.TableMeta> tableMetas;
+ /** Datas of the given table. */
+ protected Map[] datas;
+ public Map[] getDatas() {
+ return datas;
+ }
+
public void setTableName(String tableName) {
this.tableName = tableName;
}
@Override
public String execute() throws Exception {
- tableMetas = Lists.newLinkedList();
- tableMetas.addAll(DbEditorUtil.getTableMeta(tableName));
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+ datas = dbEditorService.getDatas(tableName);
return SUCCESS;
}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetTableDatas.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java
===================================================================
--- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java 2011-11-08 14:08:22 UTC (rev 24)
@@ -1,23 +1,42 @@
+/*
+ * #%L
+ * EchoBase :: UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
package fr.ifremer.echobase.ui.actions.dbeditor;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.meta.ColumnMeta;
+import fr.ifremer.echobase.entities.meta.DbMeta;
+import fr.ifremer.echobase.entities.meta.TableMeta;
import fr.ifremer.echobase.services.DbEditorService;
import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport;
import org.apache.commons.lang.StringUtils;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.mapping.Column;
-import org.hibernate.mapping.PersistentClass;
-import org.hibernate.mapping.Table;
-import org.nuiton.topia.framework.TopiaContextImplementor;
-import org.nuiton.topia.persistence.TopiaEntity;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.l_;
+
/**
* To load the db editor page.s
*
@@ -35,7 +54,7 @@
protected Map<String, String> tableNames;
/** Metas of the table */
- protected List<DbEditorService.TableMeta> tableMetas;
+ protected TableMeta tableMeta;
public String getTableName() {
return tableName;
@@ -45,8 +64,8 @@
return tableNames;
}
- public List<DbEditorService.TableMeta> getTableMetas() {
- return tableMetas;
+ public List<ColumnMeta> getColumnMetas() {
+ return tableMeta.getColumns();
}
public void setTableName(String tableName) {
@@ -56,28 +75,21 @@
@Override
public String input() throws Exception {
tableNames = Maps.newTreeMap();
- tableNames.putAll(DbEditorUtil.getTableNames());
- if (StringUtils.isNotEmpty(tableName)) {
+ DbMeta dbMeta = getEchoBaseApplicationContext().getDbMeta();
+ for (TableMeta tableMeta : dbMeta) {
+ String name = tableMeta.getName();
+ String i18nKey = tableMeta.getI18nKey();
+ tableNames.put(name, l_(getLocale(), i18nKey));
+ }
+ if (StringUtils.isEmpty(tableName)) {
- // load also table metas
- EchoBaseEntityEnum entityEnum = EchoBaseEntityEnum.valueOf(tableName);
- Preconditions.checkNotNull(entityEnum);
- String implementationFQN = entityEnum.getImplementationFQN();
- TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction();
- Configuration hibernateConfiguration = tx.getHibernateConfiguration();
- PersistentClass classMapping = hibernateConfiguration.getClassMapping(implementationFQN);
- Table table = classMapping.getTable();
- Iterator<?> columnIterator = table.getColumnIterator();
- while (columnIterator.hasNext()) {
- Column column = (Column) columnIterator.next();
- String name = column.getName();
- if (TopiaEntity.TOPIA_CREATE_DATE.equals(name)) {
+ // no table selected
+ addActionMessage(_("echobase.info.no.table.selected"));
+ } else {
- // skip it
- }
- }
- tableMetas = Lists.newLinkedList();
- tableMetas.addAll(DbEditorUtil.getTableMeta(tableName, getTransaction()));
+ // load table metas
+ DbEditorService dbEditorService = newService(DbEditorService.class);
+ tableMeta = dbEditorService.getTableMetas(tableName);
}
return INPUT;
}
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/LoadTablePage.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/json/GetUsersAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
===================================================================
--- trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml 2011-11-08 14:08:22 UTC (rev 24)
@@ -1,4 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ #%L
+ EchoBase :: UI
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #L%
+ -->
+
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
Property changes on: trunk/echobase-ui/src/main/resources/config/struts-dbeditor.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/echobase-ui/src/main/resources/config/struts-json.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2011-11-08 14:08:22 UTC (rev 24)
@@ -9,6 +9,7 @@
echobase.common.email=Email
echobase.common.password=Mot de passe
echobase.common.save=Sauvegarder
+echobase.common.tableName=Nom de la table
echobase.common.user=Utilisateur
echobase.error.bad.password=Mot de passe incorrrect
echobase.error.email.already.used=
@@ -18,6 +19,7 @@
echobase.export.queryDescription=Description
echobase.export.queryName=Nom
echobase.export.querySql=SQL
+echobase.info.no.table.selected=Aucune table sélectionnée
echobase.label.admin.user.create=Création d'un utilisateur
echobase.label.admin.user.delete=Suppression d'un utilisateur
echobase.label.admin.user.edit=Edition d'un utilisateur
Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp
===================================================================
--- trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2011-11-08 14:08:22 UTC (rev 24)
@@ -41,18 +41,18 @@
<div id="body">
- <%-- TODO sletellier 20111104 : add this --%>
- <%--<s:if test="hasActionMessages()">--%>
- <%--<div class="info_success">--%>
- <%--<s:actionmessage/>--%>
- <%--</div>--%>
- <%--</s:if>--%>
+ <%-- TODO sletellier 20111104 : add this --%>
+ <s:if test="hasActionMessages()">
+ <div class="info_success">
+ <s:actionmessage/>
+ </div>
+ </s:if>
- <%--<s:if test="hasActionErrors()">--%>
- <%--<div class="info_error">--%>
- <%--<s:actionerror/>--%>
- <%--</div>--%>
- <%--</s:if>--%>
+ <s:if test="hasActionErrors()">
+ <div class="info_error">
+ <s:actionerror/>
+ </div>
+ </s:if>
<d:body/>
</div>
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 2011-11-08 14:07:37 UTC (rev 23)
+++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp 2011-11-08 14:08:22 UTC (rev 24)
@@ -2,8 +2,8 @@
#%L
EchoBase :: UI
- $Id: export.jsp 17 2011-11-07 10:57:50Z tchemit $
- $HeadURL: http://svn.forge.codelutin.com/svn/echobase/trunk/echobase-ui/src/main/weba… $
+ $Id$
+ $HeadURL$
%%
Copyright (C) 2011 Ifremer, Codelutin
%%
@@ -43,19 +43,14 @@
</script>
<div>
-<s:select key="tableName" href='%{getTableNamesUrl}'
- label='%{getText("echobase.common.tableName")}'
+ <s:select key="tableName" href='%{getTableNamesUrl}'
+ label='%{getText("echobase.common.tableName")}'
+ list="tableNames" headerKey="" headerValue=""/>
- list="tableNames" headerKey="" headerValue=""/>
-
- </div>
+</div>
<br/>
-<s:if test="tableName == ''">
- <p>Aucune table sélectionnée</p>
-</s:if>
-<s:else>
-
+<s:if test="tableName!=null and tableName != ''">
<s:url id="loadUrl" action="getTableDatas" namespace="/dbeditor"
escapeAmp="false">
<s:param name="tableName" value="%{tableName}"/>
@@ -63,7 +58,7 @@
<sjg:grid id="tableDatas"
caption="%{getText('echobase.common.tableDatas', tableNames[tableName])}"
- dataType="json" href="%{loadUrl}" gridModel="trips"
+ dataType="json" href="%{loadUrl}" gridModel="datas"
pager="true" pagerButtons="false" pagerInput="false"
navigator="true" autowidth="true" rownumbers="false"
navigatorEdit="true"
@@ -75,9 +70,9 @@
<sjg:gridColumn name="id" title="id" hidden="true"/>
- <s:iterator value="tableMetas" var="meta" status="status">
+ <s:iterator value="columnMetas" var="meta" status="status">
- <sjg:gridColumn name="%{#meta.name}" title="%{#meta.label}"
+ <sjg:gridColumn name="%{#meta.name}" title="%{getText(#meta.i18nKey)}"
edittype="%{#meta.columnType}"
sortable="false" editable="true"/>
@@ -85,5 +80,5 @@
</sjg:grid>
-</s:else>
+</s:if>
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/dbeditor/dbeditor.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/userForm.jsp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r23 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services
by tchemit@users.forge.codelutin.com 08 Nov '11
by tchemit@users.forge.codelutin.com 08 Nov '11
08 Nov '11
Author: tchemit
Date: 2011-11-08 15:07:37 +0100 (Tue, 08 Nov 2011)
New Revision: 23
Url: http://forge.codelutin.com/repositories/revision/echobase/23
Log:
begin of the dbEditorService
Modified:
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java
trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java 2011-11-08 14:06:34 UTC (rev 22)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java 2011-11-08 14:07:37 UTC (rev 23)
@@ -23,8 +23,11 @@
*/
package fr.ifremer.echobase.services;
+import fr.ifremer.echobase.entities.meta.DbMeta;
import org.nuiton.topia.TopiaContext;
+import java.util.Locale;
+
/**
* @author sletellier <letellier(a)codelutin.com>
* @since 0.1
@@ -38,7 +41,15 @@
this.serviceContext = serviceContext;
}
- public TopiaContext getTransaction() {
+ protected TopiaContext getTransaction() {
return serviceContext.getTransaction();
}
+
+ protected Locale getLocale() {
+ return serviceContext.getLocale();
+ }
+
+ protected DbMeta getDbMeta() {
+ return serviceContext.getDbMeta();
+ }
}
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 2011-11-08 14:06:34 UTC (rev 22)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2011-11-08 14:07:37 UTC (rev 23)
@@ -23,16 +23,21 @@
*/
package fr.ifremer.echobase.services;
-import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import fr.ifremer.echobase.EchoBaseTechnicalException;
-import org.apache.commons.beanutils.ResultSetDynaClass;
-import org.hibernate.mapping.Column;
+import fr.ifremer.echobase.entities.EchoBaseDAOHelper;
+import fr.ifremer.echobase.entities.EchoBaseEntityEnum;
+import fr.ifremer.echobase.entities.meta.ColumnMeta;
+import fr.ifremer.echobase.entities.meta.DbMeta;
+import fr.ifremer.echobase.entities.meta.TableMeta;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.util.EntityOperator;
-import java.io.Serializable;
-import java.sql.SQLException;
-import java.util.Date;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
/**
* Service to edit the database.
@@ -42,75 +47,46 @@
*/
public class DbEditorService extends AbstractEchoBaseService {
- protected static TableMeta newMeta(String name, Class<?> type) {
- return new TableMeta(name, type);
- }
-
- public List<TableMeta> getMetas(String tableName) {
- List<TableMeta> result = Lists.newLinkedList();
+ public TableMeta getTableMetas(String tableName) {
+ DbMeta dbMeta = getDbMeta();
+ TableMeta result = dbMeta.getTable(tableName);
return result;
}
- public ResultSetDynaClass getDatas(String tableName) {
+ //TODO Use an object to filter datas and do pagination
+ public Map[] getDatas(String tableName) {
+ DbMeta dbMeta = getDbMeta();
+ TableMeta tableMeta = dbMeta.getTable(tableName);
+ EchoBaseEntityEnum entityEnum = tableMeta.getEntityEnum();
+ Class<? extends TopiaEntity> contract = entityEnum.getContract();
try {
- ResultSetDynaClass result = null;
- result = new ResultSetDynaClass(null);
+ TopiaDAO dao = EchoBaseDAOHelper.getDAO(getTransaction(), contract);
+ List<?> all = dao.findAll();
+ Map[] result = new Map[all.size()];
+ Iterator<?> dataItr = all.iterator();
+ int i = 0;
+ while (dataItr.hasNext()) {
+ TopiaEntity entity = (TopiaEntity) dataItr.next();
+ Map<String, Object> row = loadRow(tableMeta, entity);
+ result[i++] = row;
+ }
return result;
- } catch (SQLException eee) {
+ } catch (TopiaException eee) {
throw new EchoBaseTechnicalException("Could not obtain data", eee);
}
}
- public static class TableMeta implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- protected String name;
-
- protected String label;
-
- protected Column hibernateColumn;
-
- protected Class<?> type;
-
- public TableMeta(String name, Class<?> type) {
- this(name, name, type);
+ protected Map<String, Object> loadRow(TableMeta tableMeta, TopiaEntity entity) {
+ Map<String, Object> row = Maps.newLinkedHashMap();
+ EntityOperator<TopiaEntity> operator =
+ (EntityOperator<TopiaEntity>) tableMeta.getOperator();
+ for (ColumnMeta columnMeta : tableMeta) {
+ String propertyName = columnMeta.getName();
+ Object property =
+ operator.get(propertyName, entity);
+ row.put(propertyName, property);
}
-
- public TableMeta(String name, String label, Class<?> type) {
- this.name = name;
- this.label = label;
- this.type = type;
- }
-
- public String getName() {
- return name;
- }
-
- public String getLabel() {
- return label;
- }
-
- public Class<?> getType() {
- return type;
- }
-
- public String getColumnType() {
- String result = "string";
- if (boolean.class.equals(type)) {
- result = "boolean";
- } else if (Date.class.equals(type)) {
- result = "date";
- }
- return result;
- }
-
- public boolean isFK() {
- return TopiaEntity.class.isAssignableFrom(type);
- }
-
- public Column getHibernateColumn() {
- return hibernateColumn;
- }
+ return row;
}
+
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2011-11-08 14:06:34 UTC (rev 22)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2011-11-08 14:07:37 UTC (rev 23)
@@ -25,8 +25,11 @@
package fr.ifremer.echobase.services;
import fr.ifremer.echobase.EchoBaseConfiguration;
+import fr.ifremer.echobase.entities.meta.DbMeta;
import org.nuiton.topia.TopiaContext;
+import java.util.Locale;
+
/**
* This contract represents objects you must provide when asking for a service.
* Objects provided may be injected in services returned by
@@ -39,8 +42,12 @@
TopiaContext getTransaction();
- <E extends EchoBaseService> E newService(Class<E> clazz);
+ Locale getLocale();
EchoBaseConfiguration getConfiguration();
+ DbMeta getDbMeta();
+
+ <E extends EchoBaseService> E newService(Class<E> clazz);
+
}
Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java
===================================================================
--- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java 2011-11-08 14:06:34 UTC (rev 22)
+++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java 2011-11-08 14:07:37 UTC (rev 23)
@@ -25,13 +25,17 @@
import com.google.common.base.Preconditions;
import fr.ifremer.echobase.EchoBaseConfiguration;
+import fr.ifremer.echobase.entities.meta.DbMeta;
import org.nuiton.topia.TopiaContext;
-/** Instances of this class will be given to service factory.
+import java.util.Locale;
+
+/**
+ * Instances of this class will be given to service factory.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
- **/
+ */
public class EchoBaseServiceContextImpl implements EchoBaseServiceContext {
protected TopiaContext transaction;
@@ -40,11 +44,19 @@
protected EchoBaseConfiguration configuration;
- public EchoBaseServiceContextImpl(TopiaContext transaction,
+ protected Locale locale;
+
+ protected DbMeta dbMeta;
+
+ public EchoBaseServiceContextImpl(Locale locale,
+ TopiaContext transaction,
EchoBaseConfiguration configuration,
+ DbMeta dbMeta,
EchoBaseServiceFactory serviceFactory) {
+ this.locale = locale;
this.transaction = transaction;
this.configuration = configuration;
+ this.dbMeta = dbMeta;
this.serviceFactory = serviceFactory;
}
@@ -55,6 +67,11 @@
}
@Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
public <E extends EchoBaseService> E newService(Class<E> clazz) {
return serviceFactory.newService(clazz, this);
}
@@ -64,6 +81,11 @@
return configuration;
}
+ @Override
+ public DbMeta getDbMeta() {
+ return dbMeta;
+ }
+
protected EchoBaseServiceFactory getServiceFactory() {
return serviceFactory;
}
1
0