List of usage examples for org.hibernate Session delete
void delete(Object object);
From source file:au.com.nicta.ct.solution.tracking.CtTrackingModel.java
License:Open Source License
protected void deleteTrackReferences(Session s, CtTracks t) { if (!valid()) return;//from w w w. ja v a 2 s.co m _s.getCtTrackses().remove(t); removeTracksSequencedDetections(t); //why not? s.delete(t); _tracksStates.remove(t); }
From source file:au.com.nicta.ct.solution.tracking.jipda.CtTkDBTracker.java
License:Open Source License
static void dropAllExistingTracks(Session session) { // Clear the current solution of all tracks String hql = "SELECT ctTracksDetections" + " FROM CtTracksDetections as ctTracksDetections" + " JOIN ctTracksDetections.ctTracks ctTracks" + " WHERE ctTracks.ctSolutions = :solutionPk"; Query q = session.createQuery(hql); q.setInteger("solutionPk", CtSolutionController.getSolutions().getPkSolution()); List<CtTracksDetections> results = q.list(); for (CtTracksDetections td : results) { session.delete(td); }/*from w ww .j a va2 s . c om*/ hql = "SELECT ctTracks" + " FROM CtTracks as ctTracks" + " WHERE ctTracks.ctSolutions = :solutionPk"; q = session.createQuery(hql); q.setInteger("solutionPk", CtSolutionController.getSolutions().getPkSolution()); List<CtTracks> results2 = q.list(); for (CtTracks t : results2) { session.delete(t); } }
From source file:au.com.nicta.ct.solution.tracking.jipda.CtTkDBTracker.java
License:Open Source License
static void dropExistingTracks(Session session, TkTracks tracks, int startTimeIdxInclusive, int endTimeIdxInclusive) { CtSolutions solution = (CtSolutions) CtObjectDirectory.get("solution"); // Drop all existing track detection associations int trackCnt = 0; for (TkTrack t : tracks) { ++trackCnt;//from ww w . java2 s. co m for (TkTrackElement e : t.elements) { TkDetection d = e.det; if (d == null) { continue; } System.out.println("d.timeIdx: " + (d.timeIdx)); System.out.println("trackCnt: " + (trackCnt)); System.out.println("total no. tracks: " + (trackCnt)); if (d.timeIdx == startTimeIdxInclusive || d.timeIdx == endTimeIdxInclusive) { continue; } Integer detectionPk = d.find(DETECTION_PK); String hql = "SELECT ctTracksDetections" + " FROM CtTracksDetections as ctTracksDetections" + " JOIN ctTracksDetections.ctDetections ctDetections" + " WHERE ctDetections.pkDetection = :detectionPk"; Query q = session.createQuery(hql); q.setInteger("detectionPk", detectionPk); List<CtTracksDetections> results = q.list(); HashSet<CtTracks> modified = new HashSet<CtTracks>(); for (CtTracksDetections td : results) { CtTracks t_n = td.getCtTracks(); CtDetections d_n = td.getCtDetections(); CtSolutions s = t_n.getCtSolutions(); if (s.getPkSolution() == solution.getPkSolution()) { // if( td.getCtTracks().getCtSolutions().getPkSolution() == solution.getPkSolution() ) { t_n.getCtTracksDetectionses().remove(td); d_n.getCtTracksDetectionses().remove(td); session.delete(td); modified.add(t_n); } } // now clean up tracks that have no surviving detections: for (CtTracks t_n : modified) { Set<CtTracksDetections> tds = t_n.getCtTracksDetectionses(); if (tds.isEmpty()) { CtSolutions s = t_n.getCtSolutions(); s.getCtTrackses().remove(t_n); session.delete(t); session.update(s); } } // String hql = // "DELETE from CtTracksDetections as ctTracksDetections" // + " WHERE fk_detection = " + detectionPk; // System.out.println("hql: " + (hql) ); // // Query query = session.createQuery(hql); // int row = query.executeUpdate(); // System.out.println("Rows deleted: " + row); } } }
From source file:au.com.nicta.ct.solution.tracking.jipda.CtTkDBTracker.java
License:Open Source License
static void removeEmptyTracks(Session session) { CtSolutions solution = (CtSolutions) CtObjectDirectory.get("solution"); String hql = "SELECT ctTracks" + " FROM CtTracks as ctTracks" + " JOIN ctTracks.ctSolutions as ctSolutions" + " WHERE ctSolutions.pkSolution = :solutionPk"; Query q = session.createQuery(hql); q.setInteger("solutionPk", solution.getPkSolution()); List<CtTracks> results = q.list(); for (CtTracks t : results) { Set<CtTracksDetections> s = t.getCtTracksDetectionses(); // System.out.println("t.getPkTrack(): " + (t.getPkTrack()) ); // System.out.println("t.getCtTracksDetectionses().size(): " + (t.getCtTracksDetectionses().size()) ); // System.out.println("s.isEmpty(): " + (s.isEmpty()) );; if (s.isEmpty()) { // empty track, delete it solution.getCtTrackses().remove(t); session.update(solution);// w w w. j a va 2 s . co m session.delete(t); } } }
From source file:au.edu.anu.metadatastores.harvester.HarvestContentService.java
License:Open Source License
/** * Delete the harvest content row/*from www .jav a 2 s . c om*/ * * @param content The harvest content row to delete */ public void deleteHarvestContent(HarvestContent content) { Session session = HarvesterHibernateUtil.getSessionFactory().openSession(); try { session.beginTransaction(); session.delete(content); session.getTransaction().commit(); } finally { session.close(); } }
From source file:au.edu.anu.metadatastores.store.datacommons.DataCommonsService.java
License:Open Source License
/** * Set the relationships// w w w. j ava 2 s . co m * * @param item The dublin core item to set the relation for * @param dublinCore the dublin core to set relations for * @param session The hibernate session */ protected void setRelations(DublinCoreItem item, DublinCore dublinCore, Session session) { Iterator<ItemRelation> it = item.getItemRelationsForIid().iterator(); List<ItemRelation> itemRelations = new ArrayList<ItemRelation>(); List<RelationPart> relationParts = getRelationPartsList(dublinCore); setIdentifierRelations(item, relationParts, itemRelations, session); setNLAIdentifierRelations(item, relationParts, itemRelations, session); setARCIdentifierRelations(item, relationParts, itemRelations, session); setNHMRCIdentifierRelations(item, relationParts, itemRelations, session); boolean hasValue = false; while (it.hasNext()) { ItemRelation relation = it.next(); for (ItemRelation itemRelation : itemRelations) { if (relation.getId().equals(itemRelation.getId())) { if (Boolean.TRUE.equals(relation.getUserUpdated())) { itemRelation.setUserUpdated(Boolean.TRUE); } hasValue = true; } } if (!hasValue && Boolean.TRUE.equals(relation.getUserUpdated())) { itemRelations.add(relation); } else if (!hasValue) { it.remove(); session.delete(relation); } hasValue = false; } item.setItemRelationsForIid(new HashSet<ItemRelation>(itemRelations)); }
From source file:au.edu.anu.metadatastores.store.misc.AbstractItemService.java
License:Open Source License
/** * Update the item with the new values if they have changed * //from w w w. java2s. c o m * @param oldItem The currently saved item * @param newItem The item with the updated information * @param session The current session * @param lastModified The last modified date */ protected void updateAttributesFromItem(Item oldItem, Item newItem, Session session, Date lastModified) { List<ItemAttribute> newAttrs = new ArrayList<ItemAttribute>(); List<ItemAttribute> removeAttrs = new ArrayList<ItemAttribute>(); if (newItem.getTitle() != null) { oldItem.setTitle(newItem.getTitle()); } Map<String, List<ItemAttribute>> oldItemMap = getAttributeMap(oldItem.getItemAttributes()); Map<String, List<ItemAttribute>> newItemMap = getAttributeMap(newItem.getItemAttributes()); List<ItemAttribute> foundNewList; Set<String> oldKeySet = oldItemMap.keySet(); Set<String> newKeySet = newItemMap.keySet(); for (String key : oldKeySet) { List<ItemAttribute> oldValues = oldItemMap.get(key); List<ItemAttribute> newValues = newItemMap.get(key); foundNewList = new ArrayList<ItemAttribute>(); boolean foundNewAttr = false; if (newValues != null) { for (ItemAttribute oldAttr : oldValues) { for (ItemAttribute newAttr : newValues) { if (oldAttr.getAttrValue().equals(newAttr.getAttrValue())) { foundNewAttr = true; foundNewList.add(newAttr); checkSubAttributes(oldItem, oldAttr, newAttr, removeAttrs); break; } } if (!foundNewAttr) { if (oldValues.size() == 1 && newValues.size() == 1) { ItemAttribute newAttr = newValues.get(0); foundNewList.add(newAttr); addAttributeHistory(oldItem, oldAttr, lastModified); oldAttr.setAttrValue(newAttr.getAttrValue()); oldAttr.setLastModified(newAttr.getLastModified()); oldAttr.setUserUpdated(newAttr.getUserUpdated()); } else { if (oldAttr.getItemAttribute() == null) { removeAttrs.add(oldAttr); } } } foundNewAttr = false; } newValues.removeAll(foundNewList); if (newValues.size() > 0) { newAttrs.addAll(newValues); } } else { for (ItemAttribute attr : oldValues) { if (attr.getItemAttribute() == null) { removeAttrs.add(attr); } } } } newKeySet.removeAll(oldKeySet); for (String key : newKeySet) { newAttrs.addAll(newItemMap.get(key)); } for (ItemAttribute attr : removeAttrs) { //TODO figure out when to know that user updated fields should be deleted. User updated information should be able to be dleted... LOGGER.info("Remove: {}, {}", attr.getAttrType(), attr.getAttrValue()); if (!Boolean.TRUE.equals(attr.getUserUpdated())) { LOGGER.info("Removing Value"); addAttributeHistory(oldItem, attr, lastModified); if (attr.getItemAttributes() != null && attr.getItemAttributes().size() > 0) { for (ItemAttribute subAttr : attr.getItemAttributes()) { oldItem.getItemAttributes().remove(subAttr); session.delete(subAttr); } } oldItem.getItemAttributes().remove(attr); session.delete(attr); } } oldItem.getItemAttributes().addAll(getNewAttributes(oldItem, null, newAttrs)); }
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 * /*from w w w . j av a 2 s .c om*/ * @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.tests.DayBookingsTester.java
License:Open Source License
public void testFindBestFitsC1() throws Exception { Session ses = DataAccessActivator.getNewSession(); ses.beginTransaction();//from w w w . ja 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); 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();/*ww 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, 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()); }