Skip to content
Snippets Groups Projects
Commit 2233f5fe authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Gracefully delete user that owns barkbeetle season trapsites [BN-14]

parent 606616a0
No related branches found
No related tags found
No related merge requests found
......@@ -51,6 +51,8 @@ import no.nibio.vips.logic.entity.VipsLogicRole;
import no.nibio.vips.logic.entity.VipsLogicUser;
import no.nibio.vips.logic.entity.misc.UserResources;
import no.nibio.vips.logic.i18n.SessionLocaleUtil;
import no.nibio.vips.logic.modules.barkbeetle.BarkbeetleBean;
import no.nibio.vips.logic.modules.barkbeetle.SeasonTrapsite;
import no.nibio.vips.logic.util.Globals;
import no.nibio.vips.util.ServletUtil;
import no.nibio.web.forms.FormField;
......@@ -71,6 +73,9 @@ public class UserController extends HttpServlet {
@EJB
UserBean userBean;
@EJB
BarkbeetleBean barkbeetleBean;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
......@@ -406,9 +411,12 @@ public class UserController extends HttpServlet {
Integer userId = Integer.valueOf(request.getParameter("userId"));
VipsLogicUser viewUser = em.find(VipsLogicUser.class, userId);
UserResources userResources = userBean.getUserResources(viewUser);
// Barkbeetle module dependencies
List<SeasonTrapsite> userSeasonTrapsites = barkbeetleBean.getSeasonTrapsites(viewUser);
// If some resources connected, render form, otherwise, route to user delete
if(userResources.isEmpty())
if(userResources.isEmpty() && userSeasonTrapsites.isEmpty())
{
response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/user").append("?action=deleteUser&userId=").append(userId).toString());
}
......@@ -423,7 +431,9 @@ public class UserController extends HttpServlet {
request.setAttribute("viewUser", viewUser);
request.setAttribute("userResources", userResources);
java.util.Collections.sort(users);
request.setAttribute("users", users);
request.setAttribute("userBarkbeetleSeasonTrapsites", userSeasonTrapsites);
request.setAttribute("errorMsg", request.getParameter("errorMsg"));
request.getRequestDispatcher("/userDeleteForm.ftl").forward(request, response);
}
......@@ -450,7 +460,9 @@ public class UserController extends HttpServlet {
// Are there resources connected to this user?
UserResources userResources = userBean.getUserResources(viewUser);
if(! userResources.isEmpty())
// Barkbeetle module dependencies
List<SeasonTrapsite> userSeasonTrapsites = barkbeetleBean.getSeasonTrapsites(viewUser);
if(! userResources.isEmpty() || ! userSeasonTrapsites.isEmpty())
{
boolean resourcesTransferred = false;
try
......@@ -460,6 +472,7 @@ public class UserController extends HttpServlet {
if(transferToUser != null)
{
userBean.transferUserResources(viewUser,transferToUser);
barkbeetleBean.transferSeasonTrapsites(viewUser,transferToUser);
resourcesTransferred = true;
}
}
......
......@@ -117,6 +117,30 @@ public class BarkbeetleBean {
.getResultList();
}
/**
* Get all trapsites belonging to a specific user
* @param user
* @return
*/
public List<SeasonTrapsite> getSeasonTrapsites(VipsLogicUser user)
{
return em.createNamedQuery("SeasonTrapsite.findByUserId")
.setParameter("userId", user)
.getResultList();
}
/**
* Transferring ownership of all season trapsites for all seasons belonging to a user
* to another user
* @param fromUser the current owner of the sites
* @param toUser the new owner of the sites
*/
public void transferSeasonTrapsites(VipsLogicUser fromUser, VipsLogicUser toUser){
em.createNativeQuery("UPDATE barkbeetle.season_trapsite SET user_id=:toUserId WHERE user_id=:fromUserId")
.setParameter("fromUserId", fromUser.getUserId())
.setParameter("toUserId", toUser.getUserId())
.executeUpdate();
}
/**
* Get the list of trapsites for the given season
*
......
......@@ -35,7 +35,10 @@
<li>${i18nBundle.weatherStations}: ${userResources.pois?size}</li>
<li>${i18nBundle.messages}: ${userResources.messageLocales?size}</li>
<li>${i18nBundle.forecasts}: ${userResources.forecastConfigurations?size}</li>
<li>${i18nBundle.observations}: ${userResources.observations?size}</li>
<li>${i18nBundle.observations}: ${userResources.observations?size}</li>
<#if userBarkbeetleSeasonTrapsites?size gt 0 >
<li>Barkbillefellelokaliteter: ${userBarkbeetleSeasonTrapsites?size}</li>
</#if>
</ul>
<h2>${i18nBundle.transferResources}</h2>
<form action="/user?action=deleteUser" method="POST" onsubmit="return confirm('${i18nBundle.confirmDelete}');"/>
......@@ -48,7 +51,7 @@
</#if>
<#list users as user>
<#if user.userId != viewUser.userId>
<option value="${user.userId}">${user.firstName!""} ${user.lastName}</option>
<option value="${user.userId}">${user.lastName}, ${user.firstName!""}</option>
</#if>
</#list>
</select>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment