dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #10918
[Bug 724165] Re: datasetsection-allow-nonunique-names
Steps to reproduce.
1) Create a dataset with two category combos.
2) Add a data set section from the first catcombo named "Test." Save the section.
3) Add a data set section to the same dataset with the second catcombo named "Test". Save the section.
4) Attempt to delete the data set section.
I was unable to reproduce this on MySQL.
--
You received this bug notification because you are a member of DHIS 2
developers, which is subscribed to DHIS.
https://bugs.launchpad.net/bugs/724165
Title:
datasetsection-allow-nonunique-names
Status in DHIS 2 - District Health Information Software:
Confirmed
Bug description:
Data set sections can currently be assigned non-unique names. Perhaps this is a design feature, but it does not seem to make a whole lot of sense. Would suggest to require each section to have a unique name.
When dataset sections with identical names are attempted to be deleted, an exception occurs.
* ERROR 09:54:44,216 Error while executing action (ExceptionInterceptor.java [17
109727@qtp-7408068-94])
org.hibernate.NonUniqueResultException: query did not return a unique result: 2
at org.hibernate.impl.AbstractQueryImpl.uniqueElement(AbstractQueryImpl.
java:868)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:369)
at org.hisp.dhis.dataset.hibernate.HibernateSectionStore.getSectionByNam
e(HibernateSectionStore.java:89)
at org.hisp.dhis.dataset.DefaultSectionService.getSectionByName(DefaultS
ectionService.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti
on(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo
inpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami
cAopProxy.java:202)
at $Proxy19.getSectionByName(Unknown Source)
at org.hisp.dhis.dataset.action.section.ValidateSectionAction.execute(Va
lidateSectionAction.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultA
ctionInvocation.java:441)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Defa
ultActionInvocation.java:280)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:243)
at org.hisp.dhis.webportal.interceptor.XWorkPortalUserInterceptor.interc
ept(XWorkPortalUserInterceptor.java:82)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.webportal.interceptor.XWorkPortalModuleInterceptor.inte
rcept(XWorkPortalModuleInterceptor.java:85)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.webportal.interceptor.XWorkPortalMenuInterceptor.interc
ept(XWorkPortalMenuInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.webportal.interceptor.XWorkPortalParamsInterceptor.inte
rcept(XWorkPortalParamsInterceptor.java:117)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.ContextInterceptor.intercept(ContextInterce
ptor.java:70)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.StyleInterceptor.intercept(StyleInterceptor
.java:107)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.SystemSettingInterceptor.intercept(SystemSe
ttingInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.DisplayPropertyInterceptor.intercept(Displa
yPropertyInterceptor.java:90)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.SortOrderInterceptor.intercept(SortOrderInt
erceptor.java:124)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.security.intercept.XWorkSecurityInterceptor.intercept(X
WorkSecurityInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.I18nInterceptor.intercept(I18nInterceptor.j
ava:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Cha
iningInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept
(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept
(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.inter
cept(StaticParametersInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.hisp.dhis.interceptor.ExceptionInterceptor.intercept(ExceptionInt
erceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI
nvocation.java:237)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.j
ava:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.jav
a:488)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatc
her.java:395)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:368)
at org.hisp.dhis.security.filter.RequiredLoginFilter.doFilter(RequiredLo
ginFilter.java:129)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:380)
at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(Automati
cAccessFilter.java:112)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.d
oFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticatio
nProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFi
lter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChai
nProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(D
elegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegat
ingFilterProxy.java:167)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.do
FilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:76)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
88)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
82)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
65)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:54
2)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio
n.java:943)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
va:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
ava:582)
Follow ups
References