PlaceMapBean.java 2.21 KB
package fi.insomnia.bortal.beans;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.imageio.ImageIO;

import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class PlaceMapBean
 */
@Stateless
public class PlaceMapBean implements PlaceMapBeanLocal {

    /**
     * Default constructor.
     */
    public PlaceMapBean() {
        // TODO Auto-generated constructor stub
    }

    @EJB
    private PlaceFacade placeFacade;
    @EJB
    private EventMapFacade eventMapFacade;
    @EJB
    private UserFacade userFacade;

    @Override
    public void printPlaceMapToStream(OutputStream outputStream, String filetype, Event event, Integer mapId, Integer userId, Integer placeId) throws IOException {

        Integer eventId = event.getId();
        Place place = null;
        EventMap map = null;

        if (placeId != null) {
            EventPk pk = new EventPk();
            pk.setEventId(eventId);
            pk.setId(placeId);

            place = placeFacade.find(eventId, placeId);
        }

        if (place != null) {
            map = place.getMap();
        } else {
            EventPk pk = new EventPk();
            pk.setEventId(eventId);
            pk.setId(mapId);

            map = eventMapFacade.find(pk);
        }

        BufferedImage image = map.getMapWithPlaces();

        if (userId != null) {
            User user = userFacade.find(userId);

            if (user != null) {
                for (PlaceGroup uplacegroup : user.getPlaceGroupList()) {
                    for (Place uplace : uplacegroup.getPlaces())
                        uplace.drawOwnedPlace(image);
                }
            }
        }

        if (place != null) {
            place.drawSelectedPlace(image);
        }

        ImageIO.write(image, filetype, outputStream);

    }
}