/*
* Copyright 2011, Nabil Benothman, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package com.ubike.services.impl;
import com.ubike.model.GpsFile;
import com.ubike.model.Route;
import com.ubike.model.Statistic;
import com.ubike.model.Trip;
import com.ubike.model.TripSegment;
import com.ubike.services.TripManagerLocal;
import com.ubike.util.Metric;
import com.ubike.util.StatisticType;
import java.util.LinkedList;
import java.util.List;
import java.util.Date;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
*
* @author BENOTHMAN Nabil.
*/
@Stateless
public class TripManagerBean implements TripManagerLocal {
@PersistenceContext(unitName = "ubikeEJB")
private EntityManager manager;
/**
* Persist the given entity in the database
* @param entity The entity to be persisted
*/
private void addEntity(Object entity) {
manager.persist(entity);
manager.flush();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#addTrip(com.ubike.entities.Trip)
*/
@Override
public void addTrip(Trip trip) {
addEntity(trip);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#addSegment(com.ubike.entities.TripSegment)
*/
@Override
public void addSegment(TripSegment segment) {
addEntity(segment);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#addGPSFile(com.ubike.entities.GpsFile)
*/
@Override
public void addGPSFile(GpsFile file) {
addEntity(file);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#addRoute(com.ubike.entities.Route)
*/
@Override
public void addRoute(Route route) {
addEntity(route);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#addStatistic(com.ubike.model.Statistic)
*/
@Override
public void addStatistic(Statistic stat) {
addEntity(stat);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getUserTrips(java.lang.Long)
*/
@Override
public List<Trip> getUserTrips(long userId) {
try {
return (List<Trip>) manager.createNamedQuery("Trip.getUserTrips").setParameter(
"ownerId", userId).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Trip>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getUserTripsByDate(java.lang.Long)
*/
@Override
public List<Trip> getUserTripsByDate(long userId, Date sDate, Date eDate) {
try {
return (List<Trip>) manager.createNamedQuery("Trip.getUserTripByDate").setParameter(
"ownerId", userId).setParameter("sDate", sDate).setParameter("eDate", eDate).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Trip>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getTripSegments(java.lang.Long)
*/
@Override
public List<TripSegment> getTripSegments(long tripId) {
try {
return (List<TripSegment>) manager.createNamedQuery(
"TripSegment.getByTrip").setParameter(
"tripId", tripId).getResultList();
} catch (Exception exp) {
}
return new LinkedList<TripSegment>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getFileByName(java.lang.String)
*/
@Override
public GpsFile getFileByName(String fileName) {
try {
return (GpsFile) manager.createNamedQuery("GPSFILE.getByName").
setParameter("param", fileName).getSingleResult();
} catch (Exception exp) {
}
return null;
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getTripById(java.lang.Long)
*/
@Override
public Trip getTripById(long tripId) {
return manager.find(Trip.class, tripId);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatByType(com.ubike.util.StatisticType)
*/
@Override
public List<Statistic> getStatByType(StatisticType type) {
try {
return manager.createNamedQuery("Statistic.getByType").setParameter("param", type).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatByMetric(com.ubike.util.Metric)
*/
@Override
public List<Statistic> getStatByMetric(Metric metric) {
try {
return manager.createNamedQuery("Statistic.getByMetric").setParameter("param", metric).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatByInterval(java.util.Date, java.util.Date)
*/
@Override
public List<Statistic> getStatByInterval(Date start, Date end) {
try {
return manager.createNamedQuery("Statistic.getByInterval").
setParameter("start", start).setParameter("end", end).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatByInterval(java.lang.Long,java.util.Date, java.util.Date)
*/
@Override
public List<Statistic> getEntityStatByInterval(long entityId, Date start, Date end) {
try {
return manager.createNamedQuery("Statistic.getEntityStatByInterval").setParameter("entityId", entityId).
setParameter("start", start).setParameter("end", end).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatAfterDate(java.util.Date)
*/
@Override
public List<Statistic> getStatAfterDate(Date date) {
try {
return manager.createNamedQuery("Statistic.getAfter").setParameter("start", date).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatBeforDate(java.util.Date)
*/
@Override
public List<Statistic> getStatBeforDate(Date date) {
try {
return manager.createNamedQuery("Statistic.getBefore").setParameter("end", date).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getStatByData(com.ubike.util.Metric,
* com.ubike.util.StatisticType,java.util.Date,java.util.Date)
*/
@Override
public List<Statistic> getStatByData(Metric metric, StatisticType type, Date start, Date end) {
try {
return manager.createNamedQuery("Statistic.getByData").setParameter("type", type).
setParameter("metric", metric).setParameter("start", start).
setParameter("end", end).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStat(java.lang.Long)
*/
@Override
public List<Statistic> getEntityStat(long entityId) {
try {
return manager.createNamedQuery("Statistic.getEntityStat").setParameter("entityId", entityId).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStatByIntervalAndType(java.lang.Long,
* com.ubike.util.StatisticType,java.util.Date,java.util.Date)
*/
@Override
public List<Statistic> getEntityStatByIntervalAndType(long entityId, StatisticType type, Date start, Date end) {
try {
return manager.createNamedQuery("Statistic.getEntityStatByIntervalAndType").
setParameter("entityId", entityId).setParameter("type", type).setParameter("start", start).
setParameter("end", end).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStatAfterByType(java.lang.Long,
* com.ubike.util.StatisticType,java.util.Date)
*/
@Override
public List<Statistic> getEntityStatAfterByType(long entityId, StatisticType type, Date start) {
try {
return manager.createNamedQuery("Statistic.getEntityStatAfterByType").
setParameter("entityId", entityId).setParameter("type", type).
setParameter("start", start).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStatByType(java.lang.Long)
*/
@Override
public List<Statistic> getEntityStatByType(long entityId, StatisticType type) {
try {
return manager.createNamedQuery("Statistic.getEntityStatByType").
setParameter("entityId", entityId).setParameter("type", type).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStatByMetric(java.lang.Long)
*/
@Override
public List<Statistic> getEntityStatByMetric(long entityId, Metric metric) {
try {
return manager.createNamedQuery("Statistic.getEntityStatByMetric").
setParameter("entityId", entityId).setParameter("metric", metric).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#getEntityStatByMetricAndType(java.lang.Long)
*/
@Override
public List<Statistic> getEntityStatByMetricAndType(long entityId, Metric metric, StatisticType type) {
try {
return manager.createNamedQuery("Statistic.getEntityStatByMetricAndType").
setParameter("entityId", entityId).setParameter("metric", metric).
setParameter("type", type).getResultList();
} catch (Exception exp) {
}
return new LinkedList<Statistic>();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#insertEntity(java.lang.Object)
*/
@Override
public void insertEntity(Object entity) {
manager.persist(entity);
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#flush()
*/
@Override
public void flush() {
manager.flush();
}
/* (non-Javadoc)
* @see com.ubike.services.TripManagerLocal#updateEntity(java.lang.Object)
*/
@Override
public void updateEntity(Object o) {
try {
System.out.println("TripManagerBean#updateEntity( " + o + " )");
manager.merge(o);
} catch (Exception exp) {
exp.printStackTrace();
}
}
@Override
public void setEntityManager(EntityManager entityManager) {
this.manager = entityManager;
}
}