Example usage for org.hibernate Session save

List of usage examples for org.hibernate Session save

Introduction

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

Prototype

Serializable save(Object object);

Source Link

Document

Persist the given transient instance, first assigning a generated identifier.

Usage

From source file:au.edu.anu.metadatastores.store.epress.EpressService.java

License:Open Source License

/**
 * Save a single E Press record/*from www. j  a  va 2s . co m*/
 * 
 * @param epress The E Press record t osave
 * @return The E Press record item
 */
public EpressItem saveEpress(Epress epress, Boolean userUpdated) {
    Session session = StoreHibernateUtil.getSessionFactory().openSession();

    try {
        session.beginTransaction();

        Query query = session.createQuery("FROM EpressItem WHERE extId = :extId");
        query.setParameter("extId", epress.getExtId());
        EpressItem item = (EpressItem) query.uniqueResult();

        Date lastModified = new Date();

        ItemTraitParser parser = new ItemTraitParser();
        Item newItem = null;
        newItem = parser.getItem(epress, Boolean.FALSE, lastModified);

        if (item == null) {
            item = new EpressItem();
            if (newItem.getExtId() == null) {
                return null;
            }
            item.setExtId(newItem.getExtId());
            session.save(item);
        }

        updateAttributesFromItem(item, newItem, session, lastModified);

        session.getTransaction().commit();
        return item;
    } catch (IllegalAccessException e) {
        LOGGER.error("Exception accessing field when trying to get an e press item", e);
    } catch (InvocationTargetException e) {
        LOGGER.error("Exception invoking method when trying to get an e press item", e);
    } finally {
        session.close();
    }

    return null;
}

From source file:au.edu.anu.metadatastores.store.grants.GrantService.java

License:Open Source License

/**
 * Save the grant information//from w  w w.j a va2  s .  c om
 * 
 * @param grant The grant to save
 * @param userUpdated Indicator of whether it is user updated or system updated
 * @return The GrantItem that has been created/updated
 */
public GrantItem saveGrant(Grant grant, Boolean userUpdated) {
    Session session = StoreHibernateUtil.getSessionFactory().openSession();

    GrantItem item = null;
    try {
        session.enableFilter("attributes");
        session.beginTransaction();

        Query query = session.createQuery("from GrantItem where extId = :extId");
        query.setParameter("extId", grant.getContractCode());

        item = (GrantItem) query.uniqueResult();

        Date lastModified = new Date();
        ItemTraitParser parser = new ItemTraitParser();
        Item newItem = null;
        newItem = parser.getItem(grant, userUpdated, lastModified);

        if (item == null) {
            item = new GrantItem();
            if (newItem.getExtId() == null) {
                return null;
            }
            item.setExtId(newItem.getExtId());
            session.save(item);
        }

        updateAttributesFromItem(item, newItem, session, lastModified);

        LOGGER.debug("Number of item attributes before: {}", item.getItemAttributes().size());

        associatePeople(item, grant, session);

        LOGGER.debug("Number of Item Attributes after: {}", item.getItemAttributes().size());

        item = (GrantItem) session.merge(item);
        session.getTransaction().commit();
    } catch (IllegalAccessException e) {
        LOGGER.error("Exception accessing field when trying to get a grant item", e);
    } catch (InvocationTargetException e) {
        LOGGER.error("Exception invoking method when trying to get a grant item", e);
    } catch (Exception e) {
        if (item == null) {
            LOGGER.error("Exception querying item", e);
        } else {
            LOGGER.error("Error Merging Item {}", item.getIid(), e);
            LOGGER.info("Error with item: {}, Title: {}, System: {}, Ext Id: {}", item.getIid(),
                    item.getTitle(), item.getExtSystem(), item.getExtId());
            for (ItemAttribute attr : item.getItemAttributes()) {
                LOGGER.info("AID: {}, IID: {}, Type: {}, Value: {}", new Object[] { attr.getAid(),
                        attr.getItem().getIid(), attr.getAttrType(), attr.getAttrValue() });
            }
            for (HistItemAttribute attr : item.getHistItemAttributes()) {
                LOGGER.info("AID: {}, Date: {}, Type: {}, Value: {}", new Object[] { attr.getId().getAid(),
                        attr.getId().getHistDatetime(), attr.getAttrType(), attr.getAttrValue() });
            }
        }
    } finally {
        session.close();
    }

    return item;
}

From source file:au.edu.anu.metadatastores.store.misc.RelationService.java

License:Open Source License

/**
 * Updates the relation with a confirmation or denial of the relationship
 * //w w w.  ja  va  2s .c o m
 * @param relation The relation to confirm or deny
 * @param isRelation Whether the relation is one or not
 */
public void confirmOrDenyRelation(Relation relation, Boolean isRelation) {
    Session session = StoreHibernateUtil.getSessionFactory().openSession();
    try {
        session.beginTransaction();

        PotentialRelationId id = new PotentialRelationId(relation.getIid(), relation.getRelationValue(),
                relation.getRelatedIid());

        PotentialRelation potentialRelation = (PotentialRelation) session.get(PotentialRelation.class, id);

        if (potentialRelation == null) {
            potentialRelation = new PotentialRelation();
            potentialRelation.setId(id);
        }

        potentialRelation.setRequireCheck(Boolean.FALSE);
        potentialRelation.setIslink(isRelation);

        session.merge(potentialRelation);

        ItemRelationId itemRelationId = new ItemRelationId(id.getIid(), id.getRelationValue(),
                id.getRelatedIid());

        ItemRelation itemRelation = (ItemRelation) session.get(ItemRelation.class, itemRelationId);

        if (isRelation == Boolean.TRUE) {
            if (itemRelation == null) {
                itemRelation = new ItemRelation();
                itemRelation.setId(itemRelationId);
                itemRelation.setUserUpdated(Boolean.TRUE);
                session.save(itemRelation);
            } else {
                itemRelation.setUserUpdated(Boolean.TRUE);
                session.merge(itemRelation);
            }
        } else {
            if (itemRelation != null) {
                session.delete(itemRelation);
            }
        }

        session.getTransaction().commit();
    } finally {
        session.close();
    }
}

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

License:Open Source License

@Override
public BookingCreation createBooking(User user, ResourcePermission perm, TimePeriod tp, Session ses) {
    Calendar start = tp.getStartTime();
    Calendar end = tp.getEndTime();

    BookingCreation response = new BookingCreation();

    Bookings bk = new Bookings();
    bk.setActive(true);//from w w  w.  ja v a  2s. c  o  m
    bk.setResourcePermission(perm);

    /* Timing information. */
    bk.setCreationTime(new Date());
    bk.setStartTime(start.getTime());
    bk.setEndTime(end.getTime());
    bk.setDuration((int) (end.getTimeInMillis() - start.getTimeInMillis()) / 1000);

    /* User information. */
    bk.setUser(user);
    bk.setUserNamespace(user.getNamespace());
    bk.setUserName(user.getName());

    DayBookings db;
    List<String> dayKeys = TimeUtil.getDayKeys(start.getTime(), end.getTime());
    if (dayKeys.size() == 1) {
        /* Single day booking so we can proceed normally creating the booking. */
        String day = dayKeys.get(0);

        bk.setResourceType(perm.getType());
        bk.setRig(perm.getRig());
        bk.setRigType(perm.getRigType());
        bk.setRequestCapabilities(perm.getRequestCapabilities());

        MBooking mb = new MBooking(bk, day);
        synchronized (db = this.getDayBookings(day)) {
            if (db.createBooking(mb, ses)) {
                response.setWasCreated(true);
                try {
                    /* Save the booking to the database. */
                    ses.beginTransaction();
                    ses.save(bk);
                    ses.getTransaction().commit();
                    response.setWasCreated(true);
                    response.setBooking(bk);

                    String info = "Successfully created booking for " + user.getNamespace() + ':'
                            + user.getName() + " on ";
                    switch (mb.getType()) {
                    case RIG:
                        info += "rig " + mb.getRig().getName();
                        break;
                    case TYPE:
                        info += "rig type " + mb.getRigType().getName();
                        break;
                    case CAPABILITY:
                        info += "capabilities " + mb.getRequestCapabilities().getCapabilities();
                        break;
                    }
                    info += " to start at " + bk.getStartTime() + " and finish " + bk.getEndTime() + '.';
                    this.logger.info(info);
                } catch (HibernateException ex) {
                    this.logger.error("Failed to persist a booking to the databse. Error: " + ex.getMessage()
                            + ". Rolling back and removing the booking.");
                    ses.getTransaction().rollback();
                    response.setWasCreated(false);
                    db.removeBooking(mb);
                }
            } else {
                response.setWasCreated(false);

                long rs;
                for (MRange range : db.findBestFits(mb, ses)) {
                    if ((rs = range.getStart().getTimeInMillis()) < perm.getStartTime().getTime()
                            || rs < System.currentTimeMillis() + perm.getUserClass().getTimeHorizon() * 1000) {
                        this.logger.info("Excluding best fit option which was to start at "
                                + range.getStart().getTime()
                                + " because it would be before the permission start or is in the past .");
                    } else if (range.getEnd().getTimeInMillis() > perm.getExpiryTime().getTime()) {
                        this.logger.info(
                                "Excluding best fit option which was to end at " + range.getEnd().getTime()
                                        + " because it would finish after the permission end time.");
                    } else {
                        response.addBestFit(new TimePeriod(range.getStart(), range.getEnd()));
                    }
                }
            }
        }
    } else {
        /* Multi-day booking so we will need to do some fiddling. */

        /* 1) If the booking is less than an hour each way of a hour divide,
         * give a best fit solution and not allow the booking to be created. */
        // TODO multi-day
    }

    return response;
}

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();/*  w w  w .  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("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();/*  w  w w .j  a  va  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("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();/*w  w  w.  j  a  va 2s . 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);
    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  . j  a  va  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();// w  w  w . ja  v a 2s.  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);
    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  ww w  .j  av  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("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);
}