Commit 5db922ed by Tuomas Riihimäki

Moved PlaceMap Servlet implementation to beans.

2 parents 6fd7ba35 dec183d9
Showing with 420 additions and 257 deletions
package fi.insomnia.bortal.beans;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.model.Event;
/**
* Session Bean implementation class EventBean
*/
@Stateless
public class EventBean implements EventBeanLocal {
@EJB
private EventFacade eventFacade;
@Override
public Event getEventByHostname(String hostname) {
Event ret = eventFacade.findByHostname(hostname);
if (ret == null) {
ret = findOrCreateDefaultEvent();
}
return ret;
}
public Event findOrCreateDefaultEvent() {
Event ret = eventFacade.findByHostname("");
if (ret == null) {
ret = new Event();
ret.setReferer("");
ret.setName("DEFAULT EVENT");
eventFacade.create(ret);
}
return ret;
}
}
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);
}
}
...@@ -22,9 +22,9 @@ public class SecurityBean implements SecurityBeanLocal { ...@@ -22,9 +22,9 @@ public class SecurityBean implements SecurityBeanLocal {
private final Logger logger = org.slf4j.LoggerFactory.getLogger(SecurityBean.class); private final Logger logger = org.slf4j.LoggerFactory.getLogger(SecurityBean.class);
@EJB @EJB
LogEntryTypeFacade typeFacade; private LogEntryTypeFacade typeFacade;
@EJB @EJB
LogEntryFacade entryFacade; private LogEntryFacade entryFacade;
/** /**
* Default constructor. * Default constructor.
......
package fi.insomnia.bortal.beans;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.EventSettingsFacade;
import fi.insomnia.bortal.facade.EventStatusFacade;
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.EventSettings;
import fi.insomnia.bortal.model.EventStatus;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User;
/**
* Session Bean implementation class TestDataBean
*/
@Stateless
public class TestDataBean implements TestDataBeanLocal {
public static final String TEST_MAP_IMAGE_NAME = "testmap.png";
@EJB
private EventMapFacade eventMapFacade;
@EJB
private EventStatusFacade eventStatusFacade;
@EJB
private EventSettingsFacade eventSettingsFacade;
@EJB
private EventFacade eventFacade;
@EJB
private UserFacade userFacade;
@EJB
private PlaceFacade placeFacade;
/**
* Default constructor.
*/
public TestDataBean() {
// TODO Auto-generated constructor stub
}
public EventMap generateTestMap(Event event) {
try {
EventMap map = new EventMap();
map.setEvent(event);
InputStream stream = getClass().getResourceAsStream(TEST_MAP_IMAGE_NAME);
File file = new File(getClass().getResource(TEST_MAP_IMAGE_NAME).toURI());
long length = file.length();
// Create the byte array to hold the data
byte[] bytes = new byte[(int) length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead = stream.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file " + file.getName());
}
stream.close();
map.setMapData(bytes);
eventMapFacade.create(map);
return map;
} catch (URISyntaxException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
return null;
}
/**
* Generate all metashit, ex. events.
*/
public Event generateMetaData() {
EventStatus status = new EventStatus();
status.setStatusName("BLAAH");
eventStatusFacade.create(status);
EventSettings settings = new EventSettings();
settings.setOrganisation("MUN ORGANISAATIO; EI SUN!");
settings.setAdmin(generateUser());
eventSettingsFacade.create(settings);
Event event = new Event();
event.setName("testEvent");
event.setSettings(settings);
event.setStatus(status);
eventFacade.create(event);
return event;
}
private User generateUser() {
User user = new User();
user.setNick("Nick");
user.setPassword("plaah");
userFacade.create(user);
return user;
}
public void generateTestPlaces(EventMap map) {
for (int x = 5; x < 400; x += 50) {
for (int y = 5; y < 150; y += 50) {
Place place = new Place();
place.setMap(map);
place.setMapX(x);
place.setMapY(y);
placeFacade.create(place);
}
}
}
}
...@@ -6,12 +6,20 @@ import fi.insomnia.bortal.model.EventPk; ...@@ -6,12 +6,20 @@ import fi.insomnia.bortal.model.EventPk;
/** /**
* Session Bean implementation class GenericFacade * Session Bean implementation class GenericFacade
*/ */
public abstract class EventChildGenericFacade<T extends EventChildInterface> extends GenericFacade<EventPk,T> implements EventChildGenericFacadeLocal<T>{ public abstract class EventChildGenericFacade<T extends EventChildInterface> extends GenericFacade<EventPk,T> {
public EventChildGenericFacade(Class<T> entityClass) { public EventChildGenericFacade(Class<T> entityClass) {
super(entityClass); super(entityClass);
} }
public T find(Integer eventId, Integer id)
{
EventPk pk = new EventPk();
pk.setEventId(eventId);
pk.setId(id);
return find(pk);
}
......
...@@ -4,6 +4,8 @@ import javax.ejb.LocalBean; ...@@ -4,6 +4,8 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
@Stateless @Stateless
...@@ -21,4 +23,13 @@ public class EventFacade extends GenericFacade<Integer, Event> { ...@@ -21,4 +23,13 @@ public class EventFacade extends GenericFacade<Integer, Event> {
return em; return em;
} }
public Event findByHostname(String hostname) {
TypedQuery<Event> q = em.createNamedQuery("Event.findByReferer", Event.class);
q.setParameter("referer", hostname);
return this.getSingleNullableResult(q);
}
} }
...@@ -13,7 +13,7 @@ import fi.insomnia.bortal.model.ModelInterface; ...@@ -13,7 +13,7 @@ import fi.insomnia.bortal.model.ModelInterface;
/** /**
* Session Bean implementation class GenericFacade * Session Bean implementation class GenericFacade
*/ */
public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements GenericFacadeLocal<PK,T> { public abstract class GenericFacade<PK,T extends ModelInterface<PK>>{
private Class<T> entClass; private Class<T> entClass;
public GenericFacade(Class<T>entityClass) public GenericFacade(Class<T>entityClass)
...@@ -27,16 +27,16 @@ public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements ...@@ -27,16 +27,16 @@ public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements
protected abstract EntityManager getEm(); protected abstract EntityManager getEm();
@Override
public void create(T entity) { public void create(T entity) {
getEm().persist(entity); getEm().persist(entity);
} }
@Override
public void remove(T entity) { public void remove(T entity) {
getEm().remove(entity); getEm().remove(entity);
} }
@Override
public T merge(T entity) { public T merge(T entity) {
return getEm().merge(entity); return getEm().merge(entity);
} }
......
...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.User; ...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.User;
@Stateless @Stateless
@LocalBean @LocalBean
public class UserFacade extends GenericFacade<Integer, User> implements UserFacadeLocal{ public class UserFacade extends GenericFacade<Integer, User>{
public static final String DEFAULT_USER_LOGIN = "ANONYMOUS"; public static final String DEFAULT_USER_LOGIN = "ANONYMOUS";
......
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.Event;
@Local
public interface EventBeanLocal {
Event getEventByHostname(String hostname);
}
package fi.insomnia.bortal.beans;
import java.io.IOException;
import java.io.OutputStream;
import javax.ejb.Local;
import fi.insomnia.bortal.model.Event;
@Local
public interface PlaceMapBeanLocal {
void printPlaceMapToStream(OutputStream outputStream, String filetype, Event event, Integer mapId, Integer userId, Integer placeId) throws IOException;
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap;
@Local
public interface TestDataBeanLocal {
EventMap generateTestMap(Event event);
Event generateMetaData();
void generateTestPlaces(EventMap map);
}
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.EventChildInterface;
import fi.insomnia.bortal.model.EventPk;
public interface EventChildGenericFacadeLocal<T extends EventChildInterface> extends GenericFacadeLocal<EventPk,T>{
}
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.Event;
public interface EventFacadeLocal extends GenericFacadeLocal<Integer, Event> {
}
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.EventMap;
public interface EventMapFacadeLocal extends EventChildGenericFacadeLocal<EventMap> {
}
package fi.insomnia.bortal.facade;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.ModelInterface;
@Local
public interface GenericFacadeLocal<PK, T extends ModelInterface<PK>> {
void create(T entity);
void remove(T entity);
T merge(T entity);
T find(PK id);
List<T> findAll();
List<T> findRange(int[] range);
long count();
}
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.Place;
public interface PlaceFacadeLocal extends EventChildGenericFacadeLocal<Place> {
}
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.User;
public interface UserFacadeLocal extends GenericFacadeLocal<Integer,User> {
}
...@@ -24,26 +24,22 @@ import javax.persistence.Version; ...@@ -24,26 +24,22 @@ import javax.persistence.Version;
* *
*/ */
@Entity @Entity
@Table(name = "event_status", uniqueConstraints = { @UniqueConstraint(columnNames = { "status_name" }) }) @Table(name = "event_status", uniqueConstraints = {
@NamedQueries( { @UniqueConstraint(columnNames = {"status_name"})})
@NamedQuery(name = "EventStatus.findAll", query = "SELECT e FROM EventStatus e"), @NamedQueries({
@NamedQuery(name = "EventStatus.findAll", query = "SELECT e FROM EventStatus e"),
@NamedQuery(name = "EventStatus.findByStatusName", query = "SELECT e FROM EventStatus e WHERE e.statusName = :statusName") }) @NamedQuery(name = "EventStatus.findByStatusName", query = "SELECT e FROM EventStatus e WHERE e.statusName = :statusName")})
public class EventStatus implements ModelInterface<Integer> { public class EventStatus implements ModelInterface<Integer> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "event_status_id", nullable = false) @Column(name = "event_status_id", nullable = false)
private Integer id; private Integer id;
@Column(name = "status_name", nullable = false) @Column(name = "status_name", nullable = false)
private String statusName; private String statusName;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "status") @OneToMany(cascade = CascadeType.ALL, mappedBy = "status")
private List<Event> events; private List<Event> events;
@Version @Version
@Column(nullable = false) @Column(nullable = false)
private int jpaVersionField = 0; private int jpaVersionField = 0;
......
...@@ -82,5 +82,6 @@ public class HostnameFilter implements Filter { ...@@ -82,5 +82,6 @@ public class HostnameFilter implements Filter {
} }
return ret; return ret;
} }
} }
...@@ -4,26 +4,22 @@ ...@@ -4,26 +4,22 @@
*/ */
package fi.insomnia.bortal.servlet; package fi.insomnia.bortal.servlet;
import fi.insomnia.bortal.facade.EventMapFacadeLocal;
import fi.insomnia.bortal.facade.PlaceFacadeLocal;
import fi.insomnia.bortal.facade.UserFacadeLocal;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User;
import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.imageio.ImageIO;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import fi.insomnia.bortal.HostnameFilter;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.model.Event;
/** /**
* *
* @author tuukka * @author tuukka
*/ */
public class PlaceMap extends HttpServlet { public class PlaceMap extends HttpServlet {
...@@ -32,98 +28,67 @@ public class PlaceMap extends HttpServlet { ...@@ -32,98 +28,67 @@ public class PlaceMap extends HttpServlet {
* *
*/ */
private static final long serialVersionUID = 8769688627918936258L; private static final long serialVersionUID = 8769688627918936258L;
@EJB
private PlaceMapBeanLocal placemapBean;
private EventBeanLocal eventBean;
public static final String PARAMETER_EVENT_MAP_ID = "mapid"; public static final String PARAMETER_EVENT_MAP_ID = "mapid";
public static final String PARAMETER_SELECTED_PLACE_ID = "placeid"; public static final String PARAMETER_SELECTED_PLACE_ID = "placeid";
public static final String PARAMETER_CURRENT_USER_ID = "userid"; public static final String PARAMETER_CURRENT_USER_ID = "userid";
public static final String PARAMETER_EVENT_ID = "eventid"; public static final String PARAMETER_EVENT_ID = "eventid";
@EJB
private PlaceFacadeLocal placeFacade; /**
@EJB * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
private EventMapFacadeLocal eventMapFacade; * methods.
@EJB *
private UserFacadeLocal userFacade; * @param request
* servlet request
/** * @param response
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * servlet response
* @param request servlet request * @throws ServletException
* @param response servlet response * if a servlet-specific error occurs
* @throws ServletException if a servlet-specific error occurs * @throws IOException
* @throws IOException if an I/O error occurs * if an I/O error occurs
*/ */
protected void processRequest(HttpServletRequest request, HttpServletResponse response) protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8"); response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); PrintWriter out = response.getWriter();
try {
Integer eventId = getIntegerParameter(request, PARAMETER_EVENT_ID); try {
Integer placeId = getIntegerParameter(request, PARAMETER_SELECTED_PLACE_ID); Integer placeId = getIntegerParameter(request, PARAMETER_SELECTED_PLACE_ID);
Integer mapId = getIntegerParameter(request, PARAMETER_EVENT_MAP_ID); Integer mapId = getIntegerParameter(request, PARAMETER_EVENT_MAP_ID);
Integer userId = getIntegerParameter(request, PARAMETER_CURRENT_USER_ID); Integer userId = getIntegerParameter(request, PARAMETER_CURRENT_USER_ID);
Place place = null; response.setContentType("image/png");
EventMap map = null;
if (placeId != null) {
EventPk pk = new EventPk();
pk.setEventId(eventId);
pk.setId(placeId);
place = placeFacade.find(pk);
}
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) {
place.drawOwnedPlace(image);
}
}
if (place != null) {
place.drawSelectedPlace(image);
}
placemapBean.printPlaceMapToStream(response.getOutputStream(), "png", getEvent(request), mapId, userId, placeId);
response.setContentType("image/png"); /*
ImageIO.write(image, "png", response.getOutputStream()); * TODO output your page here out.println("<html>");
* out.println("<head>");
* out.println("<title>Servlet PlaceMap</title>");
/* TODO output your page here * out.println("</head>"); out.println("<body>");
out.println("<html>"); * out.println("<h1>Servlet PlaceMap at " + request.getContextPath
out.println("<head>"); * () + "</h1>"); out.println("</body>"); out.println("</html>");
out.println("<title>Servlet PlaceMap</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet PlaceMap at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/ */
} finally { } finally {
out.close(); out.close();
} }
} }
private Event getEvent(HttpServletRequest request) {
String hostname = HostnameFilter.getHostname(request.getSession());
return eventBean.getEventByHostname(hostname);
}
public void addPlacesToMap() { public void addPlacesToMap() {
} }
/*** /***
* Convert request parameter into integer * Convert request parameter into integer
*
* @param request * @param request
* @param parameter * @param parameter
* @return * @return
...@@ -138,13 +103,19 @@ public class PlaceMap extends HttpServlet { ...@@ -138,13 +103,19 @@ public class PlaceMap extends HttpServlet {
return null; return null;
} }
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> // <editor-fold defaultstate="collapsed"
/** // desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method. * Handles the HTTP <code>GET</code> method.
* @param request servlet request *
* @param response servlet response * @param request
* @throws ServletException if a servlet-specific error occurs * servlet request
* @throws IOException if an I/O error occurs * @param response
* servlet response
* @throws ServletException
* if a servlet-specific error occurs
* @throws IOException
* if an I/O error occurs
*/ */
@Override @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response)
...@@ -152,12 +123,17 @@ public class PlaceMap extends HttpServlet { ...@@ -152,12 +123,17 @@ public class PlaceMap extends HttpServlet {
processRequest(request, response); processRequest(request, response);
} }
/** /**
* Handles the HTTP <code>POST</code> method. * Handles the HTTP <code>POST</code> method.
* @param request servlet request *
* @param response servlet response * @param request
* @throws ServletException if a servlet-specific error occurs * servlet request
* @throws IOException if an I/O error occurs * @param response
* servlet response
* @throws ServletException
* if a servlet-specific error occurs
* @throws IOException
* if an I/O error occurs
*/ */
@Override @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response)
...@@ -165,8 +141,9 @@ public class PlaceMap extends HttpServlet { ...@@ -165,8 +141,9 @@ public class PlaceMap extends HttpServlet {
processRequest(request, response); processRequest(request, response);
} }
/** /**
* Returns a short description of the servlet. * Returns a short description of the servlet.
*
* @return a String containing servlet description * @return a String containing servlet description
*/ */
@Override @Override
......
...@@ -4,118 +4,38 @@ ...@@ -4,118 +4,38 @@
*/ */
package fi.insomnia.bortal.view; package fi.insomnia.bortal.view;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped; import javax.faces.bean.RequestScoped;
import fi.insomnia.bortal.facade.EventFacadeLocal; import fi.insomnia.bortal.beans.TestDataBeanLocal;
import fi.insomnia.bortal.facade.EventMapFacadeLocal;
import fi.insomnia.bortal.facade.PlaceFacadeLocal;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place;
/** /**
* *
* @author tuukka * @author tuukka
*/ */
@ManagedBean(name = "TestDataView") @ManagedBean(name = "TestDataView")
@RequestScoped @RequestScoped
public class TestDataView { public class TestDataView {
public static final String TEST_MAP_IMAGE_NAME = "testmap.png";
@EJB
private EventMapFacadeLocal eventMapFacade;
@EJB
private EventFacadeLocal eventFacade;
private PlaceFacadeLocal placeFacade;
@EJB
private TestDataBeanLocal testdatabean;
public void generateData() { public void generateData() {
Event event = generateMetaData();
EventMap map = generateTestMap(event); Event event = testdatabean.generateMetaData();
generateTestPlaces(map); EventMap map = testdatabean.generateTestMap(event);
testdatabean.generateTestPlaces(map);
} }
private EventMap generateTestMap(Event event) {
try {
EventMap map = new EventMap();
map.setEvent(event);
InputStream stream = getClass().getResourceAsStream(TEST_MAP_IMAGE_NAME);
File file = new File(getClass().getResource(TEST_MAP_IMAGE_NAME).toURI());
long length = file.length();
// Create the byte array to hold the data
byte[] bytes = new byte[(int) length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead = stream.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file " + file.getName());
}
stream.close();
map.setMapData(bytes);
eventMapFacade.create(map);
return map;
} catch (URISyntaxException ex) {
Logger.getLogger(TestDataView.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TestDataView.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
/**
* Generate all metashit, ex. events.
*/
private Event generateMetaData() {
Event event = new Event();
event.setName("testEvent");
eventFacade.create(event);
return event;
}
private void generateTestPlaces(EventMap map) {
for (int x = 5; x < 400; x += 50) {
for (int y = 5; y < 150; y += 50) {
Place place = new Place();
place.setMap(map);
place.setMapX(x);
place.setMapY(y);
placeFacade.create(place);
}
}
}
/** Creates a new instance of TestDataView */ /** Creates a new instance of TestDataView */
public TestDataView() { public TestDataView() {
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!