Example usage for org.hibernate.criterion Restrictions between

List of usage examples for org.hibernate.criterion Restrictions between

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions between.

Prototype

public static Criterion between(String propertyName, Object low, Object high) 

Source Link

Document

Apply a "between" constraint to the named property

Usage

From source file:Dao.MovieDAO.java

public List<Movie> getMoviesNowPlaying() {
    Session session = this.sessionFactory.getCurrentSession();
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -50);//from w  ww.  jav a  2 s .c o  m
    Date date = cal.getTime();
    Timestamp today = new Timestamp(System.currentTimeMillis());
    Timestamp lastMonth = new Timestamp(date.getTime());

    List movies = session.createCriteria(Movie.class).add(Restrictions.between("releaseDate", lastMonth, today))
            .list();
    if (movies.isEmpty()) {
        return null;
    }

    logger.info("Now Playing loaded successfully, Movie details=" + movies);
    return movies;
}

From source file:Dao.MovieDAO.java

public List<Movie> getMoviesComingSoon() {
    Session session = this.sessionFactory.getCurrentSession();
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, 750);//from w  w w . j  a va  2  s  .  com
    Date date = cal.getTime();
    Timestamp today = new Timestamp(System.currentTimeMillis());
    Timestamp comingSoon = new Timestamp(date.getTime());

    List movies = session.createCriteria(Movie.class)
            .add(Restrictions.between("releaseDate", today, comingSoon)).list();
    if (movies.isEmpty()) {
        return null;
    }
    logger.info("Coming Soon successfully, Movie details=" + movies);
    return movies;
}

From source file:Dao.MovieDAO.java

public List<Movie> getOldMovies() {
    Session session = this.sessionFactory.getCurrentSession();
    Calendar cal2000 = Calendar.getInstance();
    cal2000.add(Calendar.DATE, -6330);
    Calendar cal2016 = Calendar.getInstance();
    cal2016.add(Calendar.DATE, -486);

    Date date = cal2000.getTime();
    Date date2 = cal2016.getTime();

    Timestamp year2000 = new Timestamp(date.getTime());
    Timestamp year2016 = new Timestamp(date2.getTime());

    List movies = session.createCriteria(Movie.class)
            .add(Restrictions.between("releaseDate", year2000, year2016))
            .add(Restrictions.ge("movieScore", 7.5)).list();

    if (movies.isEmpty()) {
        return null;
    }/*  www  .j a  v  a  2 s  .co m*/
    logger.info("Old Movies successfully, Movie details=" + movies);
    return movies;
}

From source file:Dao.MovieDAO.java

public List<Movie> getMoviesTopRated() {
    Session session = this.sessionFactory.getCurrentSession();
    Calendar cal2016 = Calendar.getInstance();
    cal2016.add(Calendar.DATE, -486);
    Date date = cal2016.getTime();
    Timestamp year2016 = new Timestamp(date.getTime());
    Timestamp today = new Timestamp(System.currentTimeMillis());

    List movies = session.createCriteria(Movie.class).add(Restrictions.between("releaseDate", year2016, today))
            .add(Restrictions.ge("movieScore", 7.5)).list();

    if (movies.isEmpty()) {
        return null;
    }//from  w  ww.  j  a  v  a2  s  .  c  o m
    logger.info("Top Rated successfully, Movie details=" + movies);
    return movies;
}

From source file:database.Company.java

License:Open Source License

/**
 * Gets the number of added dates of particular month and year from db.
 *
 * @param date the date//from  www.  j  a  v  a2 s .com
 * @return the number of added dates of particular month and year from db
 */
public int getNumberOfAddedDatesOfParticularMonthAndYearFromDB(Date date) {
    Pair<Calendar, Calendar> from_to = MyDateUtils.getMaxAndMinOfMonth(date);
    Calendar from = from_to.getValue0();
    Calendar to = from_to.getValue1();

    HibernateSupport.beginTransaction();

    long values_size = (long) HibernateSupport.getCurrentSession().createCriteria(MarketValue.class)
            .add(Restrictions.eq("company", this))
            .add(Restrictions.between("date", from.getTime(), to.getTime()))
            .setProjection(Projections.rowCount()).uniqueResult();

    HibernateSupport.commitTransaction();

    return (int) values_size;
}

From source file:database.Company.java

License:Open Source License

/**
 * Gets the market values between two dates from database [from, to].
 *
 * @param from the start date//  w w w. j  a v a  2 s . c  om
 * @param to the end date
 * @return the market values between dates
 */
public ArrayList<MarketValue> getMarketValuesBetweenDatesFromDB(Date from, Date to) {
    List<Criterion> list = new ArrayList<Criterion>();
    list.add(Restrictions.eq("company", this));
    list.add(Restrictions.between("date", from, to));
    return HibernateSupport.readMoreObjectsDesc(MarketValue.class, list, "date");
}

From source file:db.Database.java

public ArrayList<CashFlow> getCashFlow(Date begin, Date end, Account acc) {
    session = sessionFactory.openSession();
    ArrayList<CashFlow> cashFlow = new ArrayList<>();
    List transfers = session.createCriteria(Transfer.class)
            .add(Restrictions.disjunction().add(Restrictions.eq("from", acc)).add(Restrictions.eq("to", acc)))
            .add(Restrictions.between("date", begin, end)).list();

    List payments = session.createCriteria(Payment.class).add(Restrictions.eq("account", acc))
            .add(Restrictions.between("date", begin, end)).list();

    int lastid = 0;
    for (int i = payments.size() - 1; i >= 0; i--) {
        Payment p = (Payment) payments.get(i);
        if (p.getId() != lastid) {
            lastid = p.getId();/*  ww w .j  a v a2s.com*/
        } else {
            payments.remove(i);
        }
    }

    cashFlow.addAll(transfers);
    cashFlow.addAll(payments);
    session.close();
    return cashFlow;
}

From source file:db.Database.java

public ArrayList<CashFlow> getCashFlow(Date begin, Date end) {
    session = sessionFactory.openSession();
    ArrayList<CashFlow> cashFlow = new ArrayList<>();
    List transfers = session.createCriteria(Transfer.class).add(Restrictions.between("date", begin, end))
            .list();//www .j av  a 2 s  .  c om

    List payments = session.createCriteria(Payment.class).add(Restrictions.between("date", begin, end))
            .addOrder(Order.asc("id")).list();

    int lastid = 0;
    for (int i = payments.size() - 1; i >= 0; i--) {
        Payment p = (Payment) payments.get(i);
        if (p.getId() != lastid) {
            lastid = p.getId();
        } else {
            payments.remove(i);
        }
    }

    cashFlow.addAll(transfers);
    cashFlow.addAll(payments);
    session.close();
    return cashFlow;
}

From source file:de.ingrid.portal.interfaces.impl.DBAnniversaryInterfaceImpl.java

License:EUPL

/**
 * @see de.ingrid.portal.interfaces.SimilarTermsInterface#getAnniversary(java.sql.Date)
 *//*from ww w .  ja va 2s . c om*/
public IngridHitDetail[] getAnniversaries(Date d, String lang) {

    Session session = HibernateUtil.currentSession();
    Transaction tx = null;
    try {
        Calendar queryDateFrom = Calendar.getInstance();
        queryDateFrom.set(Calendar.HOUR_OF_DAY, 0);
        queryDateFrom.set(Calendar.MINUTE, 0);
        queryDateFrom.set(Calendar.SECOND, 0);
        queryDateFrom.set(Calendar.MILLISECOND, 0);
        Calendar queryDateTo = Calendar.getInstance();
        queryDateTo.set(Calendar.HOUR_OF_DAY, 23);
        queryDateTo.set(Calendar.MINUTE, 59);
        queryDateTo.set(Calendar.SECOND, 59);
        queryDateTo.set(Calendar.MILLISECOND, 0);

        Calendar fromCal = Calendar.getInstance();
        Calendar toCal = Calendar.getInstance();

        fromCal.setTime(d);

        tx = session.beginTransaction();
        List anniversaryList = session.createCriteria(IngridAnniversary.class)
                .add(Restrictions.eq("dateFromDay", new Integer(fromCal.get(Calendar.DAY_OF_MONTH))))
                .add(Restrictions.eq("dateFromMonth", new Integer(fromCal.get(Calendar.MONTH) + 1)))
                .add(Restrictions.eq("language", lang)).list();
        tx.commit();

        if (anniversaryList.isEmpty()) {
            // fall back: get any event of this month
            fromCal.setTime(d);
            toCal.setTime(d);

            tx = session.beginTransaction();
            anniversaryList = session.createCriteria(IngridAnniversary.class)
                    .add(Restrictions.between("dateFromMonth", new Integer(fromCal.get(Calendar.MONTH) + 1),
                            new Integer(toCal.get(Calendar.MONTH) + 1)))
                    .add(Restrictions.sqlRestriction("length({alias}.date_from) > 4"))
                    .add(Restrictions.eq("language", lang)).list();
            tx.commit();

            if (anniversaryList.isEmpty()) {
                // fall back: get any event that has been fetched for today
                fromCal.setTime(d);

                tx = session.beginTransaction();
                anniversaryList = session.createCriteria(IngridAnniversary.class)
                        .add(Restrictions.eq("language", lang)).list();
                tx.commit();
            }
        }

        IngridHitDetail[] rslt = new IngridHitDetail[anniversaryList.size()];
        for (int i = 0; i < rslt.length; i++) {
            IngridAnniversary anni = (IngridAnniversary) anniversaryList.get(i);
            rslt[i] = new DetailedTopic();
            rslt[i].put("topicId", anni.getTopicId());
            rslt[i].put("topicName", anni.getTopicName());
            rslt[i].put("from", anni.getDateFrom());
            rslt[i].put("until", anni.getDateTo());
            rslt[i].put("until", anni.getDateTo());
            session.evict(anni);
        }

        return rslt;

    } catch (Exception e) {
        if (tx != null && tx.isActive()) {
            tx.rollback();
        }
        if (log.isErrorEnabled()) {
            log.error("Exception while querying sns for anniversary.", e);
        }
        return new DetailedTopic[0];
    } finally {
        HibernateUtil.closeSession();
    }
}

From source file:de.lemo.dms.connectors.clix2010.ClixImporter.java

License:Open Source License

/**
 * Loads all tables needed for the data-extraction from the Clix database.
 * /*from   ww w.  ja va  2  s .com*/
 * @param start
 *            the start
 * @param end
 *            the end
 */
@SuppressWarnings("unchecked")
private void loadData(final DBConfigObject dbConfig, final Long start, final Long end, List<Long> courses,
        List<String> logins) {
    // accessing DB by creating a session and a transaction using HibernateUtil
    final Session session = ClixHibernateUtil.getSessionFactory(dbConfig).openSession();

    boolean hasCR = false;
    if (courses != null && courses.size() > 0)
        hasCR = true;

    boolean empty = true;

    if (logins != null && !logins.isEmpty()) {
        List<Long> newCourses = new ArrayList<Long>();
        Criteria criteria = session.createCriteria(Person.class, "obj");
        criteria.add(CriteriaHelper.in("obj.login", logins));
        List<Long> usId = new ArrayList<Long>();

        for (Person p : (List<Person>) criteria.list())
            usId.add(p.getId());

        if (!usId.isEmpty()) {
            criteria = session.createCriteria(PersonComponentAssignment.class, "obj");
            criteria.add(CriteriaHelper.in("obj.person", usId));
            for (PersonComponentAssignment pca : (List<PersonComponentAssignment>) criteria.list())
                newCourses.add(pca.getComponent());

            courses.addAll(newCourses);
            hasCR = true;

        }

    }

    this.logger.info("Starting data extraction.");

    Criteria criteria;

    // The Clix database uses date representation of the type varchar, so the unix-timestamp has to be converted
    // to a string
    String startStr = TimeConverter.getStringRepresentation(start);
    String endStr = TimeConverter.getStringRepresentation(end);

    // Read the tables that don't refer to log-entries once
    if (this.userMining == null) {

        //Get EComposing tables
        criteria = session.createCriteria(EComposing.class, "obj");
        if (hasCR) {
            criteria.add(CriteriaHelper.in("obj.composing", courses));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        this.eComposing = criteria.list();
        this.eComposingMap = new HashMap<Long, EComposing>();
        for (int i = 0; i < this.eComposing.size(); i++) {
            this.eComposingMap.put(this.eComposing.get(i).getComponent(), this.eComposing.get(i));
        }
        logger.info("EComposing tables: " + this.eComposing.size());

        criteria = session.createCriteria(Portfolio.class, "obj");
        if (hasCR) {
            criteria.add(CriteriaHelper.in("obj.component", courses));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        this.portfolio = criteria.list();
        this.logger.info("Portfolio tables: " + this.portfolio.size());

        //Get PersonComponentAssignment tables
        criteria = session.createCriteria(PersonComponentAssignment.class, "obj");
        if (hasCR) {
            criteria.add(CriteriaHelper.in("obj.component", courses));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        this.personComponentAssignment = criteria.list();
        this.logger.info("PersonComponentAssignment tables: " + this.personComponentAssignment.size());

        //Get ExerciseGroup tables
        criteria = session.createCriteria(ExerciseGroup.class, "obj");
        if (hasCR) {
            criteria.add(CriteriaHelper.in("obj.associatedCourse", courses));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        this.exerciseGroup = criteria.list();
        this.logger.info("ExerciseGroup tables: " + this.exerciseGroup.size());

        //Get ExercisePersonalised tables
        criteria = session.createCriteria(ExercisePersonalised.class, "obj");
        if (hasCR) {
            Set<Long> ids = new HashSet<Long>();
            for (ExerciseGroup eg : this.exerciseGroup)
                ids.add(eg.getId());
            if (!(empty = ids.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.community", ids));
        }
        criteria.add(Restrictions.between("obj.uploadDate", startStr, endStr));
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.exercisePersonalised = criteria.list();
        else
            this.exercisePersonalised = new ArrayList<ExercisePersonalised>();
        this.logger.info("ExercisePersonalised tables: " + this.exercisePersonalised.size());

        //Get EComponent tables
        Set<Long> tmpComp = new HashSet<Long>();
        criteria = session.createCriteria(EComponent.class, "obj");
        if (hasCR) {
            tmpComp.addAll(this.eComposingMap.keySet());
            tmpComp.addAll(courses);
            for (ExercisePersonalised eP : this.exercisePersonalised)
                tmpComp.add(eP.getExercise());
            if (!(empty = tmpComp.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.id", tmpComp));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        final List<EComponent> tmp;
        if (!(hasCR && empty))
            tmp = criteria.list();
        else
            tmp = new ArrayList<EComponent>();
        this.eComponentMap = new HashMap<Long, EComponent>();
        for (final EComponent c : tmp) {
            this.eComponentMap.put(c.getId(), c);
        }
        tmp.clear();
        this.logger.info("EComponent tables: " + this.eComponentMap.values().size());

        //Get EComponentType tables
        criteria = session.createCriteria(EComponentType.class, "obj");
        if (hasCR) {
            Set<Long> ids = new HashSet<Long>();

            for (EComponent eg : this.eComponentMap.values()) {
                ids.add(eg.getType());
            }
            //if(!(empty = ids.isEmpty()))
            //criteria.add(CriteriaHelper.in("obj.id", ids));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        this.eComponentType = criteria.list();
        this.logger.info("EComponentType tables: " + this.eComponentType.size());

        //Get TQtiContentStructure tables
        criteria = session.createCriteria(TQtiContentStructure.class, "obj");
        if (hasCR) {
            ArrayList<Long> newKeys = new ArrayList<Long>(this.eComposingMap.keySet());
            HashSet<Long> allKeys = new HashSet<Long>();
            while (!newKeys.isEmpty()) {

                criteria = session.createCriteria(TQtiContentStructure.class, "obj");
                criteria.add(CriteriaHelper.in("obj.container", newKeys));
                List<TQtiContentStructure> t = criteria.list();
                newKeys.clear();
                for (TQtiContentStructure tqs : t) {
                    newKeys.add(tqs.getContent());
                    allKeys.add(tqs.getContainer());
                }
                allKeys.addAll(newKeys);
            }
            criteria = session.createCriteria(TQtiContentStructure.class, "obj");
            if (!(empty = allKeys.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.container", allKeys));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.tQtiContentStructure = criteria.list();
        else
            this.tQtiContentStructure = new ArrayList<TQtiContentStructure>();
        this.logger.info("TQtiContentStructure tables: " + this.tQtiContentStructure.size());

        //Get TQtiContentComposing tables
        criteria = session.createCriteria(TQtiContentComposing.class, "obj");
        if (hasCR) {
            HashSet<Long> tmp1 = new HashSet<Long>();
            for (TQtiContentStructure tqs : this.tQtiContentStructure)
                tmp1.add(tqs.getContent());
            if (!(empty = tmp1.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.container", tmp1));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.tQtiContentComposing = criteria.list();
        else
            this.tQtiContentComposing = new ArrayList<TQtiContentComposing>();
        logger.info("TQtiContentComposing tables: " + this.tQtiContentComposing.size());

        //Get Person tables
        criteria = session.createCriteria(Person.class, "obj");
        if (hasCR) {
            Set<Long> ids = new HashSet<Long>();
            for (Portfolio eg : this.portfolio)
                ids.add(eg.getPerson());
            for (ExercisePersonalised eP : this.exercisePersonalised)
                ids.add(eP.getUser());
            for (PersonComponentAssignment eP : this.personComponentAssignment)
                ids.add(eP.getPerson());
            if (!(empty = ids.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.id", ids));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.person = criteria.list();
        else
            this.person = new ArrayList<Person>();
        this.logger.info("Person tables: " + this.person.size());

        //Get PlatformGroupSpecification tables
        /*criteria = session.createCriteria(PlatformGroupSpecification.class, "obj");
        if(hasCR)
        {
           Set<Long> ids = new HashSet<Long>();
           for(Person eg : this.person)
              ids.add(eg.getId());
           if(!(empty = ids.isEmpty()))
              criteria.add(CriteriaHelper.in("obj.person", ids));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if(!hasCR || !empty)
           this.platformGroupSpecification = criteria.list();
        else*/
        this.platformGroupSpecification = new ArrayList<PlatformGroupSpecification>();
        this.logger.info("PlatformGroupSpecification tables: " + this.platformGroupSpecification.size());

        //Get PlatformGroup tables
        criteria = session.createCriteria(PlatformGroup.class, "obj");
        if (hasCR) {
            Set<Long> ids = new HashSet<Long>();
            for (PlatformGroupSpecification eg : this.platformGroupSpecification)
                ids.add(eg.getGroup());
            if (!(empty = ids.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.id", ids));
        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.platformGroup = criteria.list();
        else
            this.platformGroup = new ArrayList<PlatformGroup>();
        this.logger.info("PlatformGroup tables: " + this.platformGroup.size());

        //Get TQtiContent tables
        criteria = session.createCriteria(TQtiContent.class, "obj");
        if (hasCR) {
            HashSet<Long> ids = new HashSet<Long>();
            for (TQtiContentStructure tqs : this.tQtiContentStructure) {
                ids.add(tqs.getContainer());
                ids.add(tqs.getContent());
            }
            for (TQtiContentComposing tqs : this.tQtiContentComposing) {
                ids.add(tqs.getContainer());
                ids.add(tqs.getContent());
            }
            if (!(empty = ids.isEmpty()))
                criteria.add(CriteriaHelper.in("obj.id", ids));

        }
        criteria.addOrder(Property.forName("obj.id").asc());
        if (!(hasCR && empty))
            this.tQtiContent = criteria.list();
        else
            this.tQtiContent = new ArrayList<TQtiContent>();
        this.logger.info("TQtiContent tables: " + this.tQtiContent.size());
    }

    //Get TQtiTestItemD tables
    criteria = session.createCriteria(TQtiTestItemD.class, "obj");
    if (hasCR) {
        HashSet<Long> ids = new HashSet<Long>();
        for (TQtiContent tc : this.tQtiContent) {
            ids.add(tc.getId());
        }
        if (!(empty = ids.isEmpty())) {
            criteria.add(CriteriaHelper.in("obj.content", ids));
        }
    }
    criteria.addOrder(Property.forName("obj.id").asc());
    if (!(hasCR && empty))
        this.tQtiTestItemD = criteria.list();
    else
        this.tQtiTestItemD = new ArrayList<TQtiTestItemD>();
    this.logger.info("TQtiTestItemD tables: " + this.tQtiTestItemD.size());

    //Get TeamExerciseGroup tables
    criteria = session.createCriteria(TeamExerciseGroup.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.addOrder(Property.forName("obj.id").asc());
    this.teamExerciseGroup = criteria.list();
    this.logger.info("TeamExerciseGroup tables: " + this.teamExerciseGroup.size());

    //Get TGroupFullSpecification tables
    criteria = session.createCriteria(TGroupFullSpecification.class, "obj");
    if (hasCR) {

        Set<Long> ids = new HashSet<Long>();
        for (TeamExerciseGroup eg : this.teamExerciseGroup)
            ids.add(eg.getId());
        if (!(empty = ids.isEmpty()))
            criteria.add(CriteriaHelper.in("obj.group", ids));
    }
    criteria.addOrder(Property.forName("obj.id").asc());
    if (!(hasCR && empty))
        this.tGroupFullSpecification = criteria.list();
    else
        this.tGroupFullSpecification = new ArrayList<TGroupFullSpecification>();
    this.logger.info("TGroupFullSpecification tables: " + this.tGroupFullSpecification.size());

    // Read log-data successively, using the time stamps

    //Get QTiTestPlayerResp tables
    criteria = session.createCriteria(TQtiTestPlayerResp.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.container", courses));
    }
    criteria.addOrder(Property.forName("obj.id").asc());
    this.tQtiTestPlayerResp = criteria.list();
    logger.info("TQtiTestPlayerResp tables: " + this.tQtiTestPlayerResp.size());

    //Get LearningLog tables
    criteria = session.createCriteria(LearningLog.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.course", courses));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.learningLog = criteria.list();
    this.logger.info("LearningLog tables: " + this.learningLog.size());

    //Get Portfolio tables
    criteria = session.createCriteria(Portfolio.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.portfolio = criteria.list();
    this.logger.info("Portfolio tables: " + this.portfolio.size());

    //Get PortfolioLog tables
    criteria = session.createCriteria(PortfolioLog.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.portfolioLog = criteria.list();
    this.logger.info("PortfolioLog tables: " + this.portfolioLog.size());

    //Get ChatProtocol tables
    criteria = session.createCriteria(ChatProtocol.class, "obj");
    if (hasCR) {
        HashSet<Long> tmp1 = new HashSet<Long>(this.eComposingMap.keySet());
        if (!(empty = tmp1.isEmpty()))
            criteria.add(CriteriaHelper.in("obj.chatroom", tmp1));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    if (!(hasCR && empty))
        this.chatProtocol = criteria.list();
    else
        this.chatProtocol = new ArrayList<ChatProtocol>();
    this.logger.info("ChatProtocol tables: " + this.chatProtocol.size());

    //Get ForumEntry tables
    criteria = session.createCriteria(ForumEntry.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.forum", this.eComposingMap.keySet()));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.forumEntry = criteria.list();
    this.logger.info("ForumEntry tables: " + this.forumEntry.size());

    //Get ForumEntryState tables
    criteria = session.createCriteria(ForumEntryState.class, "obj");
    if (hasCR) {
        if (!this.eComposingMap.isEmpty())
            criteria.add(CriteriaHelper.in("obj.forum", this.eComposingMap.keySet()));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    if (!this.eComposingMap.isEmpty())
        this.forumEntryState = criteria.list();
    else
        this.forumEntryState = new ArrayList<ForumEntryState>();
    this.logger.info("ForumEntryState tables: " + this.forumEntryState.size());

    //Get TQtiEvalAssessment tables
    criteria = session.createCriteria(TQtiEvalAssessment.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.add(Restrictions.between("obj.lastInvocation", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.tQtiEvalAssessment = criteria.list();
    this.logger.info("TQtiEvalAssessment tables: " + this.tQtiEvalAssessment.size());

    //Get ScormSessionTimes tables
    criteria = session.createCriteria(ScormSessionTimes.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.scormSessionTimes = criteria.list();
    this.logger.info("ScormSessionTimes tables: " + this.scormSessionTimes.size());

    //Get WikiEntry tables
    criteria = session.createCriteria(WikiEntry.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.component", courses));
    }
    criteria.add(Restrictions.between("obj.lastUpdated", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.wikiEntry = criteria.list();
    this.logger.info("WikiEntry tables: " + this.wikiEntry.size());

    //Get QTiTestPlayer tables
    criteria = session.createCriteria(TQtiTestPlayer.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.container", courses));
    }
    criteria.add(Restrictions.between("obj.created", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.tQtiTestPlayer = criteria.list();
    logger.info("TQtiTestPlayer tables: " + this.tQtiTestPlayer.size());

    // The date-strings have to be modified, because the date format of the table BiTrackContentImpressions is
    // different
    startStr = startStr.substring(0, startStr.indexOf(' '));
    endStr = endStr.substring(0, endStr.indexOf(' '));

    //Get BiTrackContentImpressions tables
    criteria = session.createCriteria(BiTrackContentImpressions.class, "obj");
    if (hasCR) {
        criteria.add(CriteriaHelper.in("obj.container", courses));
    }
    criteria.add(Restrictions.between("obj.dayOfAccess", startStr, endStr));
    criteria.addOrder(Property.forName("obj.id").asc());
    this.biTrackContentImpressions = criteria.list();
    this.logger.info("BiTrackContentImpressions tables: " + this.biTrackContentImpressions.size());

    session.clear();
    session.close();

}