Example usage for org.hibernate Session refresh

List of usage examples for org.hibernate Session refresh

Introduction

In this page you can find the example usage for org.hibernate Session refresh.

Prototype

void refresh(Object object);

Source Link

Document

Re-read the state of the given instance from the underlying database.

Usage

From source file:at.ac.tuwien.ifs.tita.dao.GenericHibernateDao.java

License:Apache License

/** {@inheritDoc} */
public void refresh(T entity) {
    Session s = getSession();
    s.refresh(entity);
}

From source file:au.com.nicta.ct.solution.tracking.CtTrackingModel.java

License:Open Source License

protected void deleteTracks(boolean showProgress) { // i.e. all tracks

    if (!valid())
        return;/*from   w  ww  .  java  2s.c  o  m*/

    //        CtSolutions solution = (CtSolutions)CtObjectDirectory.get( "solution" );

    //        String hql1 = " DELETE FROM CtTracksDetections td "
    //                    + " WHERE td.ctTracks IN ( "
    //                    + " SELECT t FROM CtTracks t "
    //                    + " INNER JOIN t.ctSolutions s "
    //                    + " WHERE s.pkSolution = " + solution.getPkSolution() +" ) ";

    String hql1 = " SELECT td FROM CtTracksDetections td " + " WHERE td.ctTracks IN ( "
            + " SELECT t FROM CtTracks t " + " INNER JOIN t.ctSolutions s " + " WHERE s.pkSolution = "
            + _s.getPkSolution() + " ) ";

    //        String hql1 = " SELECT t FROM CtTracks t "
    //                    + " INNER JOIN t.ctSolutions s "
    //                    + " WHERE s.pkSolution = " + solution.getPkSolution();// +" ) ";
    String hql2 = " DELETE FROM CtTracksDetections td " + " WHERE td IN (:vals) ";

    String hql3 = " DELETE FROM CtTracks t " + " WHERE t.ctSolutions = " + _s.getPkSolution();

    //        clear();

    Session session = CtSession.Current();
    session.beginTransaction();

    Query q1 = session.createQuery(hql1);
    List results = q1.list();

    if (results.isEmpty()) {
        session.getTransaction().commit();
        return; // mnothing changed
    }

    Query q2 = session.createQuery(hql2);

    q2.setParameterList("vals", results);

    int rowCount2 = q2.executeUpdate(); // this query fails

    Query q3 = session.createQuery(hql3);
    int rowCount3 = q3.executeUpdate();

    session.getTransaction().commit();
    session.refresh(_s);

    ////////////////////////////////////////////////////////////////////////
    // Manually refresh detections and tracks as seems to be a bug with 
    // their consistency
    ////////////////////////////////////////////////////////////////////////
    CtPageFrame.showWaitCursor();

    Set<CtDetections> cd = _s.getCtDetectionses();
    Set<CtTracks> ct = _s.getCtTrackses();

    for (CtDetections d : cd) {
        session.refresh(d);
    }

    for (CtTracks t : ct) {
        session.refresh(t);
    }

    CtPageFrame.showDefaultCursor();
    ////////////////////////////////////////////////////////////////////////

    refresh(_cc, _ism, _twm, _s, showProgress);
    //        fireModelChanged(); in update anyway
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.DayBookings.java

License:Open Source License

/**
 * Finds a rig that matches the booking constraints and is viable (i.e. is
 * ready to be allocated to a session.                                   
 * //from  w w  w.j  a  va 2 s.  c  o m
 * @param current rig assigned to booking which is assumed to be offline
 * @param mb memory booking
 * @param ses database session
 * @return viable matching rig or null if not found
 */
public Rig findViableRig(String current, MBooking mb, Session ses) {
    /* Rig bookings cannot be balanced to other rigs, so we can immediately
     * give a no success response. */
    if (mb.getType() == BType.RIG)
        return null;

    RigDao dao = new RigDao(ses);
    Rig currentRig = dao.findByName(current);
    if (currentRig == null) {
        this.logger.error("Attempt to find a viable rig for booking failed because rig " + current + " was not "
                + "found. Serious state loss.");
        return null;
    }

    RigBookings rb = this.getRigBookings(currentRig, ses), next;
    switch (mb.getType()) {
    case TYPE:
        next = rb.getTypeLoopNext();
        while (next != rb) {
            if (this.outerLoadBalance(next, mb, false)) {
                Rig viable = (Rig) ses.merge(next.getRig());
                ses.refresh(viable);
                if (viable.isActive() && viable.isOnline() && !viable.isInSession()) {
                    this.logger.debug("Viable load balancing found rig " + viable.getName() + " can satisfy "
                            + "booking for rig type " + mb.getRigType().getName() + '.');
                    this.outerLoadBalance(next, mb, true);
                    next.commitBooking(mb);
                    rb.removeBooking(mb);
                    return viable;
                }
            }
            next = next.getTypeLoopNext();
        }
        break;

    case CAPABILITY:
        next = rb.getCapsLoopNext(mb.getRequestCapabilities());
        while (next != rb) {
            if (this.outerLoadBalance(next, mb, false)) {
                Rig viable = (Rig) ses.merge(next.getRig());
                if (viable.isActive() && viable.isOnline() && !viable.isInSession()) {
                    this.logger.debug("Viable load balancing found rig " + viable.getName() + " can satisfy "
                            + "booking for request capabilities "
                            + mb.getRequestCapabilities().getCapabilities() + '.');
                    this.outerLoadBalance(next, mb, true);
                    next.commitBooking(mb);
                    rb.removeBooking(mb);
                    return viable;
                }
            }
            next = next.getCapsLoopNext(mb.getRequestCapabilities());
        }
        break;
    }

    return null;
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testFindBestFitsC1() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*from  w  ww  .  ja va2 s  . com*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    rt2tm.add(Calendar.MINUTE, 15);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 7);
    bt.add(Calendar.MINUTE, 30);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(3600);
    b.setResourceType("CAPABILITY");
    b.setRequestCapabilities(rcaps1);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    List<MRange> fits = this.day.findBestFits(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertFalse(st);
    assertNotNull(fits);
    assertEquals(2, fits.size());

    MRange r = fits.get(0);
    assertEquals(28, r.getStartSlot());
    assertEquals(31, r.getEndSlot());
    assertEquals(4, r.getNumSlots());

    r = fits.get(1);
    assertEquals(33, r.getStartSlot());
    assertEquals(36, r.getEndSlot());
    assertEquals(4, r.getNumSlots());
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testFindBestFitsR1() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*www  .  ja v  a 2 s . c om*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 2);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(3600);
    b.setResourceType("RIG");
    b.setRig(r1);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    List<MRange> fits = this.day.findBestFits(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertFalse(st);
    assertNotNull(fits);
    assertEquals(2, fits.size());

    MRange r = fits.get(0);
    assertEquals(6, r.getStartSlot());
    assertEquals(7, r.getEndSlot());
    assertEquals(2, r.getNumSlots());

    r = fits.get(1);
    assertEquals(10, r.getStartSlot());
    assertEquals(13, r.getEndSlot());
    assertEquals(4, r.getNumSlots());
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testFindBestFitsT1() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*from ww w. j ava2s  .  c o m*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(1800);
    b.setResourceType("TYPE");
    b.setRigType(rigType1);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    List<MRange> fits = this.day.findBestFits(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertFalse(st);
    assertNotNull(fits);
    assertEquals(1, fits.size());

    MRange r = fits.get(0);
    assertEquals(6, r.getStartSlot());
    assertEquals(7, r.getEndSlot());
    assertEquals(2, r.getNumSlots());
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testCreateBookingLots() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();//from   w w  w  . ja  v  a  2  s.c  om
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 4);
    bt.add(Calendar.MINUTE, 30);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(3600);
    b.setResourceType("TYPE");
    b.setRigType(rigType2);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    mb = new MBooking(b, this.dayStr);
    boolean st1 = this.day.createBooking(mb, ses);

    bt.add(Calendar.MINUTE, 30);
    bt.add(Calendar.HOUR, 6);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    mb = new MBooking(b, this.dayStr);
    boolean st2 = this.day.createBooking(mb, ses);

    mb = new MBooking(b, this.dayStr);
    boolean st3 = this.day.createBooking(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertTrue(st);
    assertFalse(st1);
    assertTrue(st2);
    assertFalse(st3);
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testCreateBookingRT1Full() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*from   w  w  w  .j  a v a2s .  co  m*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 5);
    bt.add(Calendar.MINUTE, 30);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(3600);
    b.setResourceType("TYPE");
    b.setRigType(rigType2);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertFalse(st);
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testCreateBookingRT1LoadBalance() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*from  w  w  w .j a v  a2  s  .  c  o m*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("RIG");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRig(r1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 5);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.HOUR, 1);
    b.setEndTime(bt.getTime());
    b.setDuration(3600);
    b.setResourceType("TYPE");
    b.setRigType(rigType1);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertTrue(st);
}

From source file:au.edu.uts.eng.remotelabs.schedserver.bookings.impl.slotsengine.tests.DayBookingsTester.java

License:Open Source License

public void testCreateBookingRT2Free() throws Exception {
    Session ses = DataAccessActivator.getNewSession();
    ses.beginTransaction();/*  w ww  . j  a v  a 2 s. c  o m*/
    UserClass uclass1 = new UserClass();
    uclass1.setName("booktestclass");
    uclass1.setActive(true);
    uclass1.setQueuable(false);
    uclass1.setBookable(true);
    uclass1.setTimeHorizon(1000);
    ses.save(uclass1);
    User us1 = new User();
    us1.setName("bktestuser1");
    us1.setNamespace("BKNS");
    us1.setPersona("USER");
    ses.save(us1);
    RigType rigType1 = new RigType("booktestrigtype", 300, false);
    ses.save(rigType1);
    RigType rigType2 = new RigType("booktestrigtype2", 300, false);
    ses.save(rigType2);
    RigCapabilities caps1 = new RigCapabilities("book,test,foo");
    ses.save(caps1);
    RigCapabilities caps2 = new RigCapabilities("book,test,bar");
    ses.save(caps2);
    RigCapabilities caps3 = new RigCapabilities("book,baz,foo");
    ses.save(caps3);
    RequestCapabilities rcaps1 = new RequestCapabilities("book");
    ses.save(rcaps1);
    RequestCapabilities rcaps2 = new RequestCapabilities("foo");
    ses.save(rcaps2);
    RequestCapabilities rcaps3 = new RequestCapabilities("bar");
    ses.save(rcaps3);
    Rig r1 = new Rig();
    r1.setName("bkrig1");
    r1.setRigType(rigType1);
    r1.setLastUpdateTimestamp(new Date());
    r1.setRigCapabilities(caps1);
    ses.save(r1);
    Rig r2 = new Rig();
    r2.setName("bkrig2");
    r2.setRigType(rigType1);
    r2.setLastUpdateTimestamp(new Date());
    r2.setRigCapabilities(caps2);
    ses.save(r2);
    Rig r3 = new Rig();
    r3.setName("bkrig3");
    r3.setRigType(rigType2);
    r3.setLastUpdateTimestamp(new Date());
    r3.setRigCapabilities(caps3);
    ses.save(r3);
    ResourcePermission perm1 = new ResourcePermission();
    perm1.setUserClass(uclass1);
    perm1.setType("TYPE");
    perm1.setSessionDuration(3600);
    perm1.setQueueActivityTimeout(300);
    perm1.setAllowedExtensions((short) 10);
    perm1.setSessionActivityTimeout(300);
    perm1.setExtensionDuration(300);
    perm1.setMaximumBookings(10);
    perm1.setRigType(rigType1);
    perm1.setStartTime(new Date());
    perm1.setExpiryTime(new Date());
    perm1.setDisplayName("bookperm");
    ses.save(perm1);

    /* #### BOOKINGS FOR R1 ########################################### */
    Calendar r1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk1 = new Bookings();
    bk1.setActive(true);
    bk1.setDuration(3600);
    /* Slots 2 - 5. */
    r1tm.add(Calendar.MINUTE, 30);
    bk1.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 1);
    bk1.setEndTime(r1tm.getTime());
    bk1.setResourcePermission(perm1);
    bk1.setResourceType("RIG");
    bk1.setRig(r1);
    bk1.setUser(us1);
    bk1.setUserName(us1.getName());
    bk1.setUserNamespace(us1.getNamespace());
    ses.save(bk1);
    Bookings bk2 = new Bookings();
    bk2.setActive(true);
    bk2.setCancelReason("Test cancel.");
    bk2.setDuration(1800);
    /* Slots 8 - 9. */
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.MINUTE, 30);
    bk2.setEndTime(r1tm.getTime());
    bk2.setResourcePermission(perm1);
    bk2.setResourceType("RIG");
    bk2.setRig(r1);
    bk2.setUser(us1);
    bk2.setUserName(us1.getName());
    bk2.setUserNamespace(us1.getNamespace());
    ses.save(bk2);
    Bookings bk3 = new Bookings();
    bk3.setActive(true);
    bk3.setDuration(7200);
    /* Slots 36 - 43. */
    r1tm.add(Calendar.MINUTE, 30);
    r1tm.add(Calendar.HOUR, 6);
    bk3.setStartTime(r1tm.getTime());
    r1tm.add(Calendar.HOUR, 2);
    bk3.setEndTime(r1tm.getTime());
    bk3.setResourcePermission(perm1);
    bk3.setResourceType("RIG");
    bk3.setRig(r1);
    bk3.setUser(us1);
    bk3.setUserName(us1.getName());
    bk3.setUserNamespace(us1.getNamespace());
    ses.save(bk3);

    /* #### BOOKINGS FOR R2 ########################################### */
    Calendar r2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk8 = new Bookings();
    bk8.setActive(true);
    bk8.setDuration(3600);
    /* Slots 13 - 16. */
    r2tm.add(Calendar.HOUR, 3);
    bk8.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.HOUR, 1);
    bk8.setEndTime(r2tm.getTime());
    bk8.setResourcePermission(perm1);
    bk8.setResourceType("RIG");
    bk8.setRig(r2);
    bk8.setUser(us1);
    bk8.setUserName(us1.getName());
    bk8.setUserNamespace(us1.getNamespace());
    ses.save(bk8);

    Bookings bk9 = new Bookings();
    bk9.setActive(true);
    bk9.setDuration(1800);
    /* Slots 36 - 37. */
    r2tm.add(Calendar.HOUR, 5);
    bk9.setStartTime(r2tm.getTime());
    r2tm.add(Calendar.MINUTE, 30);
    bk9.setEndTime(r2tm.getTime());
    bk9.setResourcePermission(perm1);
    bk9.setResourceType("RIG");
    bk9.setRig(r2);
    bk9.setUser(us1);
    bk9.setUserName(us1.getName());
    bk9.setUserNamespace(us1.getNamespace());
    ses.save(bk9);

    /* #### BOOKINGS FOR R3 ########################################### */
    Calendar r3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk10 = new Bookings();
    bk10.setActive(true);
    bk10.setDuration(1800);
    /* Slots 2 - 3. */
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.MINUTE, 30);
    bk10.setEndTime(r3tm.getTime());
    bk10.setResourcePermission(perm1);
    bk10.setResourceType("RIG");
    bk10.setRig(r3);
    bk10.setUser(us1);
    bk10.setUserName(us1.getName());
    bk10.setUserNamespace(us1.getNamespace());
    ses.save(bk10);

    Bookings bk11 = new Bookings();
    bk11.setActive(true);
    bk11.setDuration(3600);
    /* Slots 12 - 15. */
    r3tm.add(Calendar.HOUR, 2);
    bk11.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk11.setEndTime(r3tm.getTime());
    bk11.setResourcePermission(perm1);
    bk11.setResourceType("RIG");
    bk11.setRig(r3);
    bk11.setUser(us1);
    bk11.setUserName(us1.getName());
    bk11.setUserNamespace(us1.getNamespace());
    ses.save(bk11);

    Bookings bk12 = new Bookings();
    bk12.setActive(true);
    bk12.setDuration(3600);
    /* Slots 24 - 27. */
    r3tm.add(Calendar.HOUR, 2);
    bk12.setStartTime(r3tm.getTime());
    r3tm.add(Calendar.HOUR, 1);
    bk12.setEndTime(r3tm.getTime());
    bk12.setResourcePermission(perm1);
    bk12.setResourceType("RIG");
    bk12.setRig(r3);
    bk12.setUser(us1);
    bk12.setUserName(us1.getName());
    bk12.setUserNamespace(us1.getNamespace());
    ses.save(bk12);

    /* #### Type bookings for RigType1 ####################################*/
    Calendar rt1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk4 = new Bookings();
    bk4.setActive(true);
    bk4.setDuration(1800);
    /* Slots 0 - 1. */
    bk4.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.MINUTE, 30);
    bk4.setEndTime(rt1tm.getTime());
    bk4.setResourcePermission(perm1);
    bk4.setResourceType("TYPE");
    bk4.setRigType(rigType1);
    bk4.setUser(us1);
    bk4.setUserName(us1.getName());
    bk4.setUserNamespace(us1.getNamespace());
    ses.save(bk4);

    Bookings bk13 = new Bookings();
    bk13.setActive(true);
    bk13.setDuration(7200);
    /* Slots 0 - 7. */
    rt1tm.add(Calendar.MINUTE, -30);
    bk13.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 2);
    bk13.setEndTime(rt1tm.getTime());
    bk13.setResourcePermission(perm1);
    bk13.setResourceType("TYPE");
    bk13.setRigType(rigType1);
    bk13.setUser(us1);
    bk13.setUserName(us1.getName());
    bk13.setUserNamespace(us1.getNamespace());
    ses.save(bk13);

    Bookings bk5 = new Bookings();
    bk5.setActive(true);
    bk5.setDuration(3600);
    /* Slots 20 - 23. */
    rt1tm.add(Calendar.HOUR, 3);
    bk5.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk5.setEndTime(rt1tm.getTime());
    bk5.setResourcePermission(perm1);
    bk5.setResourceType("TYPE");
    bk5.setRigType(rigType1);
    bk5.setUser(us1);
    bk5.setUserName(us1.getName());
    bk5.setUserNamespace(us1.getNamespace());
    ses.save(bk5);

    Bookings bk14 = new Bookings();
    bk14.setActive(true);
    bk14.setDuration(3600);
    /* Slots 24 - 27. */
    bk14.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    bk14.setEndTime(rt1tm.getTime());
    bk14.setResourcePermission(perm1);
    bk14.setResourceType("TYPE");
    bk14.setRigType(rigType1);
    bk14.setUser(us1);
    bk14.setUserName(us1.getName());
    bk14.setUserNamespace(us1.getNamespace());
    ses.save(bk14);

    Bookings bk15 = new Bookings();
    bk15.setActive(true);
    bk15.setDuration(5400);
    /* Slots 52 - 58. */
    rt1tm.add(Calendar.HOUR, 6);
    bk15.setStartTime(rt1tm.getTime());
    rt1tm.add(Calendar.HOUR, 1);
    rt1tm.add(Calendar.MINUTE, 30);
    bk15.setEndTime(rt1tm.getTime());
    bk15.setResourcePermission(perm1);
    bk15.setResourceType("TYPE");
    bk15.setRigType(rigType1);
    bk15.setUser(us1);
    bk15.setUserName(us1.getName());
    bk15.setUserNamespace(us1.getNamespace());
    ses.save(bk15);

    /* #### Type bookings for RigType2 ####################################*/
    Calendar rt2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk16 = new Bookings();
    bk16.setActive(true);
    bk16.setDuration(3600);
    /* Slots 52 - 59. */
    rt2tm.add(Calendar.HOUR, 7);
    bk16.setStartTime(rt2tm.getTime());
    rt2tm.add(Calendar.HOUR, 1);
    bk16.setEndTime(rt2tm.getTime());
    bk16.setResourcePermission(perm1);
    bk16.setResourceType("TYPE");
    bk16.setRigType(rigType2);
    bk16.setUser(us1);
    bk16.setUserName(us1.getName());
    bk16.setUserNamespace(us1.getNamespace());
    ses.save(bk16);

    /* #### Bookings for Request Caps 1. #################################*/
    Calendar rcap1tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk6 = new Bookings();
    bk6.setActive(true);
    bk6.setDuration(1800);
    /* Slots 20 - 21. */
    rcap1tm.add(Calendar.HOUR, 5);
    bk6.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk6.setEndTime(rcap1tm.getTime());
    bk6.setResourcePermission(perm1);
    bk6.setResourceType("CAPABILITY");
    bk6.setRequestCapabilities(rcaps1);
    bk6.setUser(us1);
    bk6.setUserName(us1.getName());
    bk6.setUserNamespace(us1.getNamespace());
    ses.save(bk6);

    Bookings bk7 = new Bookings();
    bk7.setActive(true);
    bk7.setDuration(1800);
    /* Slots 22 - 23. */
    bk7.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.MINUTE, 30);
    bk7.setEndTime(rcap1tm.getTime());
    bk7.setResourcePermission(perm1);
    bk7.setResourceType("CAPABILITY");
    bk7.setRequestCapabilities(rcaps1);
    bk7.setUser(us1);
    bk7.setUserName(us1.getName());
    bk7.setUserNamespace(us1.getNamespace());
    ses.save(bk7);

    Bookings bk17 = new Bookings();
    bk17.setActive(true);
    bk17.setDuration(1800);
    /* Slots 32 - 35. */
    rcap1tm.add(Calendar.HOUR, 2);
    bk17.setStartTime(rcap1tm.getTime());
    rcap1tm.add(Calendar.HOUR, 1);
    bk17.setEndTime(rcap1tm.getTime());
    bk17.setResourcePermission(perm1);
    bk17.setResourceType("CAPABILITY");
    bk17.setRequestCapabilities(rcaps1);
    bk17.setUser(us1);
    bk17.setUserName(us1.getName());
    bk17.setUserNamespace(us1.getNamespace());
    ses.save(bk17);

    /* #### Bookings for Request Caps 2. #################################*/
    Calendar rcap2tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk18 = new Bookings();
    bk18.setActive(true);
    bk18.setDuration(1800);
    /* Slots 56 - 59. */
    rcap2tm.add(Calendar.HOUR, 14);
    bk18.setStartTime(rcap2tm.getTime());
    rcap2tm.add(Calendar.HOUR, 1);
    bk18.setEndTime(rcap2tm.getTime());
    bk18.setResourcePermission(perm1);
    bk18.setResourceType("CAPABILITY");
    bk18.setRequestCapabilities(rcaps2);
    bk18.setUser(us1);
    bk18.setUserName(us1.getName());
    bk18.setUserNamespace(us1.getNamespace());
    ses.save(bk18);

    /* #### Bookings for Request Caps 3. #################################*/
    Calendar rcap3tm = TimeUtil.getDayBegin(this.dayStr);
    Bookings bk19 = new Bookings();
    bk19.setActive(true);
    bk19.setDuration(4500);
    /* Slots 56 - 59. */
    rcap3tm.add(Calendar.HOUR, 7);
    bk19.setStartTime(rcap3tm.getTime());
    rcap3tm.add(Calendar.HOUR, 1);
    rcap3tm.add(Calendar.MINUTE, 15);
    bk19.setEndTime(rcap3tm.getTime());
    bk19.setResourcePermission(perm1);
    bk19.setResourceType("CAPABILITY");
    bk19.setRequestCapabilities(rcaps3);
    bk19.setUser(us1);
    bk19.setUserName(us1.getName());
    bk19.setUserNamespace(us1.getNamespace());
    ses.save(bk19);

    ses.getTransaction().commit();

    ses.beginTransaction();
    MatchingCapabilities mat1 = new MatchingCapabilities(rcaps1, caps1);
    ses.save(mat1);
    MatchingCapabilities mat2 = new MatchingCapabilities(rcaps1, caps2);
    ses.save(mat2);
    MatchingCapabilities mat3 = new MatchingCapabilities(rcaps1, caps3);
    ses.save(mat3);
    MatchingCapabilities mat4 = new MatchingCapabilities(rcaps2, caps1);
    ses.save(mat4);
    MatchingCapabilities mat5 = new MatchingCapabilities(rcaps2, caps3);
    ses.save(mat5);
    MatchingCapabilities mat6 = new MatchingCapabilities(rcaps3, caps2);
    ses.save(mat6);
    ses.getTransaction().commit();

    ses.refresh(rcaps1);
    ses.refresh(rcaps2);
    ses.refresh(rcaps3);
    ses.refresh(caps1);
    ses.refresh(caps2);
    ses.refresh(caps3);
    ses.refresh(r1);
    ses.refresh(r2);
    ses.refresh(r3);
    ses.refresh(rigType1);
    ses.refresh(rigType2);

    Bookings b = new Bookings();
    b.setActive(true);
    Calendar bt = TimeUtil.getDayBegin(this.dayStr);
    bt.add(Calendar.HOUR, 1);
    bt.add(Calendar.MINUTE, 30);
    b.setStartTime(bt.getTime());
    bt.add(Calendar.MINUTE, 30);
    b.setEndTime(bt.getTime());
    b.setDuration(1800);
    b.setResourceType("TYPE");
    b.setRigType(rigType1);
    b.setUser(us1);
    b.setUserName(us1.getName());
    b.setUserName(us1.getNamespace());
    b.setResourcePermission(perm1);

    MBooking mb = new MBooking(b, this.dayStr);
    boolean st = this.day.createBooking(mb, ses);

    ses.beginTransaction();
    ses.delete(bk1);
    ses.delete(bk2);
    ses.delete(bk3);
    ses.delete(bk4);
    ses.delete(bk5);
    ses.delete(bk6);
    ses.delete(bk7);
    ses.delete(bk8);
    ses.delete(bk9);
    ses.delete(bk10);
    ses.delete(bk11);
    ses.delete(bk12);
    ses.delete(bk13);
    ses.delete(bk14);
    ses.delete(bk15);
    ses.delete(bk16);
    ses.delete(bk17);
    ses.delete(bk18);
    ses.delete(bk19);
    ses.delete(perm1);
    ses.delete(r1);
    ses.delete(r2);
    ses.delete(r3);
    ses.delete(mat1);
    ses.delete(mat2);
    ses.delete(mat3);
    ses.delete(mat4);
    ses.delete(mat5);
    ses.delete(mat6);
    ses.delete(caps1);
    ses.delete(caps2);
    ses.delete(caps3);
    ses.delete(rcaps1);
    ses.delete(rcaps2);
    ses.delete(rcaps3);
    ses.delete(rigType1);
    ses.delete(rigType2);
    ses.delete(us1);
    ses.delete(uclass1);
    ses.getTransaction().commit();

    assertTrue(bk1.isActive());
    assertTrue(bk2.isActive());
    assertTrue(bk3.isActive());
    assertTrue(bk4.isActive());
    assertTrue(bk5.isActive());
    assertTrue(bk6.isActive());
    assertTrue(bk7.isActive());
    assertTrue(bk8.isActive());
    assertTrue(bk9.isActive());
    assertTrue(bk10.isActive());
    assertTrue(bk11.isActive());
    assertTrue(bk12.isActive());
    assertTrue(bk13.isActive());
    assertTrue(bk14.isActive());
    assertTrue(bk15.isActive());
    assertTrue(bk16.isActive());
    assertTrue(bk17.isActive());
    assertTrue(bk18.isActive());
    assertTrue(bk19.isActive());

    assertTrue(st);
}