Commit 615b85c4 by Tuomas Riihimäki Committed by Tuomas Riihimäki

Implement moving places

1 parent c402ca8c
......@@ -510,23 +510,50 @@ public class PlaceBean implements PlaceBeanLocal {
}
private PlaceSlot releasePlacePriv(Place place) {
EventUser user = permbean.getCurrentUser();
if (place.getGroup() != null || place.getCurrentUser() == null
|| (!permbean.hasPermission(MapPermission.MANAGE_OTHERS) && !place.getCurrentUser().equals(user))) {
return null;
}
if (place.getGroup() != null) {
place.getGroup().getPlaces().remove(place);
}
place.setGroup(null);
place.setCurrentUser(null);
place.setReserveTime(null);
if (place.getPlaceReserver() != null) {
place.getPlaceReserver().setPlaceReservation(null);
place.setPlaceReserver(null);
}
PlaceSlot slot = placeSlotFacade.findSlotForPlace(place);
// remove also slot from place
if (slot != null) {
slot.setPlace(null);
slot.setUsed(null);
place.setReserverSlot(null);
}
return slot;
}
public GroupMembership removeGroupMembership(Place place) {
GroupMembership res = place.getPlaceReserver();
if (res != null) {
if (res.getPlaceGroup().getMembers() != null) {
res.getPlaceGroup().getMembers().remove(res);
}
if (res.getUser() != null && res.getUser().getGroupMemberships() != null) {
res.getUser().getGroupMemberships().remove(res);
}
place.setPlaceReserver(null);
gmemfacade.remove(res);
}
return res;
}
@Override
@RolesAllowed(MapPermission.S_VIEW)
public Place find(int placeId) {
......@@ -552,36 +579,9 @@ public class PlaceBean implements PlaceBeanLocal {
@RolesAllowed(MapPermission.S_MANAGE_OTHERS)
public Place unbuyPlace(Place place) {
place = placeFacade.reload(place);
if (place.getGroup() != null) {
place.getGroup().getPlaces().remove(place);
}
place.setGroup(null);
place.setCurrentUser(null);
place.setReserveTime(null);
if (place.getPlaceReserver() != null) {
GroupMembership res = place.getPlaceReserver();
if (res.getPlaceGroup().getMembers() != null) {
res.getPlaceGroup().getMembers().remove(res);
}
if (res.getUser() != null && res.getUser().getGroupMemberships() != null) {
res.getUser().getGroupMemberships().remove(res);
}
place.setPlaceReserver(null);
gmemfacade.remove(res);
}
PlaceSlot slot = placeSlotFacade.findSlotForPlace(place);
removeGroupMembership(place);
releasePlacePriv(place);
// remove also slot from place
if (slot != null) {
slot.setPlace(null);
slot.setUsed(null);
place.setReserverSlot(null);
}
return place;
}
......@@ -858,24 +858,45 @@ public class PlaceBean implements PlaceBeanLocal {
for (Entry<Place, Place> s : change.entrySet()) {
Place src = placeFacade.reload(s.getKey());
Place dst = placeFacade.reload(s.getValue());
if (!src.getProduct().equals(dst.getProduct())) {
throw new EJBException("src and dst product types differ for {}, {}" + src + " " + dst);
}
if (!manageOthers && !user.equals(src.getCurrentUser())
&& (src.getGroup() == null || !user.equals(src.getGroup().getCreator()))) {
throw new EJBAccessException("Trying to move places for another user without permissions!");
}
Place dst = placeFacade.reload(s.getValue());
if (!dst.isBuyable() || dst.isTaken()) {
throw new EJBException("Place already taken!!");
}
// Store values we want to store to the destination place
PlaceGroup grp = src.getGroup();
GroupMembership gmem = src.getPlaceReserver();
EventUser currentUser = src.getCurrentUser();
PlaceSlot srcSlot = releasePlacePriv(src);
if (srcSlot != null) {
// this place was reserved via a slot...
srcSlot.setPlace(dst);
dst.setReserverSlot(srcSlot);
srcSlot.setUsed(new Date());
}
dst.setCurrentUser(user);
dst.setReserveTime(Calendar.getInstance());
dst.setCurrentUser(currentUser);
if (gmem != null) {
dst.setPlaceReserver(gmem);
gmem.setPlaceReservation(dst);
}
dst.setGroup(grp);
if (grp != null) {
grp.getPlaces().add(dst);
}
}
}
......
......@@ -79,7 +79,9 @@
<p:commandButton
rendered="#{ajaxMapView.canUserBuy()}"
value="#{i18n['mapPlacechange.commitMove']}"
action="#{mapPlacechangeView.commitMove()}" />
action="#{mapPlacechangeView.commitMove()}"
ajax="false"
/>
</h:form>
......
......@@ -98,7 +98,7 @@ public class MapPlacechangeView extends GenericCDIView {
}
}
public void commitMove(){
public String commitMove(){
HashMap<Place, Place> change = new HashMap<Place,Place>();
for(MoveContainer s : slots){
......@@ -108,8 +108,9 @@ public class MapPlacechangeView extends GenericCDIView {
}
placebean.movePlaces(change);
slots = null;
initView();
//slots = null;
//initView();
return "/place/myGroups?faces_redirect=true";
}
public void toggleDstPlace() {
......@@ -117,14 +118,14 @@ public class MapPlacechangeView extends GenericCDIView {
Integer placeId = new Integer(paramMap.get("placeId"));
Place place = placebean.find(placeId);
setToggleSuccess(false);
toggleSuccess = false;
for (MoveContainer mc : getMoveContainers()) {
if (place.equals(mc.getSrc().getPlace())) {
setSlotState(mc, !mc.isMoving());
return;
}
if (place.equals(mc.getDst())) {
setToggleSuccess(true);
toggleSuccess = true;
mc.setDst(null);
return;
}
......@@ -135,7 +136,7 @@ public class MapPlacechangeView extends GenericCDIView {
}
for (MoveContainer mc : moveContainers) {
if (mc.isMoving() && mc.dst == null && mc.getSrc().getProduct().equals(place.getProduct())) {
setToggleSuccess(true);
toggleSuccess = true;
mc.setDst(place);
return;
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!