@Override public boolean registerBid(double value, int uniqueUserId, int auctionId) throws RemoteException { RMIClientIntf clientIntf = registeredUsers.get(uniqueUserId); Bid bid = new Bid(value, uniqueUserId); if (!liveAuctionItems.containsKey(auctionId)) { clientIntf.callBack("Auction item id does not exist\n"); return false; } if (uniqueUserId == liveAuctionItems.get(auctionId).getCreator_id()) { clientIntf.callBack("Not able to register bid - bidder is the creator of this auction\n"); return false; } else { if (liveAuctionItems.get(auctionId).addBidder(bid)) { clientIntf.callBack( "Bid registered to auction with id " + auctionId + " and amount " + bid.getBid() + "\n"); return true; } else { clientIntf.callBack( "Bid rejected, user has already placed a bid for this auction, can only place higher bids\n"); return false; } } }
@Override public void notifyResult(AuctionItem item) { if (registeredUsers.containsKey(item.getCreator_id())) { RMIClientIntf creator = registeredUsers.get(item.getCreator_id()); try { creator.callBack("Your Auction has produced the following results :\n "); creator.callBack(item.getResult()); } catch (RemoteException e) { System.out.println("Creator no longer online\n"); } } else { System.out.println("Creator id does not exist\n"); } // Normally an auction with no creator registered should not exist but since this is a // simplified implementation // We allow bids on auctions with no creator (usually the initialised ones) for testing // purposes. if (item.numberOfBids() != 0) { System.out.println("Notifying bidders"); Iterator<Bid> it = item.getBidders(); while (it.hasNext()) { Bid bidder = it.next(); if (registeredUsers.containsKey(bidder.getUserId())) { RMIClientIntf client = registeredUsers.get(bidder.getUserId()); try { client.callBack(item.getResult()); } catch (RemoteException e) { System.out.println("Bidder with id " + bidder.getUserId() + " no longer online\n"); } } else { System.out.println("User id does not exist\n"); } } } }
protected void receiveInfo(GameInfo info) { // TODO Auto-generated method stub Bid bid = DudoState.currentBid; if (info instanceof NotYourTurnInfo) return; // get the dice of the normal player // compare to most recent bid int currentVal = bid.currentVal; int currentFrequency = bid.currentFreq; // if it was a "not your turn" message, just ignore it if (info instanceof NotYourTurnInfo) return; // have a small chance that Dudo will be called double chance = Math.random(); if (chance < .1) { // must send in the game action // game.sendAction)(new DudoMoveAction()) } // increases the frequency not the value bid.setLastBidVal(currentVal); bid.setLastFreq(currentFrequency); int increase = (int) Math.random() * 2; currentFrequency = currentFrequency + increase; currentVal = currentVal + 1; bid.setBidFreq(currentFrequency); bid.setBidVal(currentVal); // if bid has values that are not probable call Dudo on recent player // game.sendAction(new DudoMoveAction(this, ,)); // if not then, make a guess within a range of two game.sendAction(new DudoMoveAction(this, currentVal, currentFrequency)); }
private int amountOfBidsFrom(User user) { int total = 0; for (Bid l : bids) { if (l.getUser().equals(user)) total++; } return total; }
public static void verifyOrderedList(SortedSet<Bid> bids) { if (bids.size() > 0) { double firstPrice = bids.first().getPrice(); double lastPrice = bids.last().getPrice(); for (Bid bid : bids) { MatcherAssert.assertThat(bid.getPrice(), greaterThanOrEqualTo(firstPrice)); MatcherAssert.assertThat(bid.getPrice(), lessThanOrEqualTo(lastPrice)); } } }
/** * build BidWin from scratch * * @param bid value of the winning bid * @param fine fine in case of transaction failure * @return */ @Override public Packet buildBidWin(Bid bid, int fine) { int transactionID = bid.getTransactionID(); Inet4Address winnerIP = bid.getSourceIP(); int winningBid = bid.getBid(); BidWin bidWin = new BidWin(transactionID, winnerIP, winningBid, fine); bidWin.setSourceIP(this.deviceIP); bidWin.setDestinationIP(this.broadcastAddr); return bidWin; }
@Test public void placeBid_should_return_the_bid_back_with_id_set_from_database() { Bid incoming = new Bid(0, 1, 3, 15000, "User3"); dbHandler.setReturnBid(1); initProvider(); String json = jsonHandler.bidToJSON(incoming); Bid result = provider.placeBid(json); assertNotNull(result); assertEquals(1, result.getBidID()); }
/** * build Bid from scratch * * @param advert the Advert to which the Bid repsonds * @param bid value of the bid * @return Bid built from given data * @throws NegativeBidException */ @Override public Packet buildBid(Advert advert, int bid) throws NegativeBidException { assert advert != null : "Bids can only be made for valid Advert packets!"; int transactionID = advert.transactionID; Bid bidPkt = new Bid(transactionID, bid); bidPkt.setSourceIP(this.deviceIP); bidPkt.setDestinationIP(this.broadcastAddr); return bidPkt; }
/** * Builds a dummy Bid in case no Bid was received * * @param TransactionID * @param bid * @return dummy Bid * @throws NegativeBidException */ @Override public Packet buildDummyBid(int transactionID, int bid) throws NegativeBidException { Bid bidPkt = new Bid(transactionID, bid); Inet4Address backboneIP = (Inet4Address) NetworkManager.getInstance().getMyOwnBackbone(); if (backboneIP == null) { return null; } bidPkt.setSourceIP(backboneIP); bidPkt.setDestinationIP(this.broadcastAddr); return bidPkt; }
@Override public boolean equals(Object obj) { if (obj instanceof Bid) { Bid b = (Bid) obj; return (this.name.equals(b.getBidder()) && this.value == b.getBid()); } else if (obj instanceof String) { String str = (String) obj; return str.equals(name + value); } else { return false; } }
@Test public void acceptBid() throws Exception { Stock myStock = new Stock("ABC", "AB Corp"); Bid b1 = exchange.buy(traderA, myStock, 12); Bid b2 = exchange.sell(traderB, myStock, 10); assertThat(b1.getId(), is(1L)); assertThat(b2.getId(), is(2L)); assertThat(exchange.getTransactions().size(), is(1)); assertThat(exchange.getTransactions().poll(), is(new Transaction(b1, b2, 12))); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bidding); Intent intent = getIntent(); if (intent.hasExtra("myUsername")) { myUsername = intent.getStringExtra("myUsername"); } ListView allBidsList = (ListView) findViewById(R.id.listView); allBidsList.setOnItemClickListener(onItemClickListener); ArrayList<Bid> allBids = new ArrayList<>(); ElasticSearchAppController.GetBidsTask getBidsTask = new ElasticSearchAppController.GetBidsTask(); getBidsTask.execute(); try { allBids.addAll(getBidsTask.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } System.out.println("NUMBER OF FOUND BIDS FOR THIS USER"); System.out.printf("%d\n", NavigationMainActivity.allBids.size()); myBids.clear(); for (Bid bid : allBids) { System.out.printf("%s\n", bid.getBidder()); System.out.printf("%s\n", myUsername); if ((bid.getBidder()).equals(myUsername)) { System.out.printf("%s\n", bid.getItem()); myBids.add(bid); } } System.out.println("NUMBER OF FOUND BIDS FOR THIS USER"); System.out.printf("%d\n", myBids.size()); for (int x = 0; x < myBids.size(); x++) { System.out.println(myBids.get(x).getItem()); } adapter = new ArrayAdapter<>(this, R.layout.list_item, myBids); allBidsList.setAdapter(adapter); }
public void Close() { for (Lot lot : lots) { System.out.println(lot.toString()); Bid highestBid = lot.getHighestBid(); if (highestBid != null) { Person winner = highestBid.getBidder(); System.out.println("Sold to: " + winner.getName()); } else { System.out.println("Not sold!"); } // I'd assume it quits from here } }
/** * Make a bid for a lot. A message is printed indicating whether the bid is successful or not. * * @param lotNumber The lot being bid for. * @param bidder The person bidding for the lot. * @param value The value of the bid. */ public void makeABid(int lotNumber, Person bidder, long value) { Lot selectedLot = getLot(lotNumber); if (selectedLot != null) { Bid bid = new Bid(bidder, value); boolean successful = selectedLot.bidFor(bid); if (successful) { System.out.println("The bid for lot number " + lotNumber + " was successful."); } else { // Report which bid is higher. Bid highestBid = selectedLot.getHighestBid(); System.out.println( "Lot number: " + lotNumber + " already has a bid of: " + highestBid.getValue()); } } }
public Double getHighBidAmount() { ArrayList<Bid> bidResults = new ArrayList<Bid>(); Double result = 0.00; ElasticSearchCtr.GetBid getBid = new ElasticSearchCtr.GetBid(); getBid.execute(new String[] {"bidStallID", this.getStallID()}); try { bidResults = getBid.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } for (Bid b : bidResults) { result = Math.max(result, b.BidAmount()); } return result; }
@Test public void unacceptableBids() throws Exception { Stock myStock = new Stock("ABC", "AB Corp"); Bid b1 = exchange.buy(traderA, myStock, 10); Bid s1 = exchange.sell(traderB, myStock, 12); assertThat(s1.getId(), not(b1.getId())); assertThat(exchange.getTransactions().size(), is(0)); Bid s2 = exchange.sell(traderB, myStock, 9); Bid s3 = exchange.sell(traderB, myStock, 15); assertThat(exchange.getTransactions().size(), is(1)); assertThat(exchange.getTransactions().peek(), is(new Transaction(b1, s2, 10))); assertThat( exchange.getTransactions().peek().toString(), is( "Transaction{buy=Bid{id=1, trader=Trader{name='Al'}, stock=Stock{name='AB Corp', ticker='ABC'}, price=10.0}, sell=Bid{id=3, trader=Trader{name='Ben'}, stock=Stock{name='AB Corp', ticker='ABC'}, price=9.0}, price=10.0}")); }
public static void newBids(Long id) { // count new bids long newBids = Bid.count( "from AuctionItem a join a.bids as b " + "where a.id = ? AND b.date > ?", id, request.date); // wait if needed if (newBids == 0) { await("1s"); } // return the JSON output of the new bids AuctionItem item = AuctionItem.findById(id); JsonObject json = new JsonObject(); json.addProperty("next", item.getNextBidPrice()); json.addProperty("top", item.getCurrentTopBid()); renderJSON(json.toString()); }
public static void main(java.lang.String[] args) { try { authorizationData = new AuthorizationData(); authorizationData.setDeveloperToken(DeveloperToken); authorizationData.setAuthentication(new PasswordAuthentication(UserName, Password)); authorizationData.setCustomerId(CustomerId); authorizationData.setAccountId(AccountId); CampaignService = new ServiceClient<ICampaignManagementService>( authorizationData, ICampaignManagementService.class); // Get the user's list of Bing Merchant Center (BMC) stores. final ArrayOfBMCStore stores = getBMCStoresByCustomerId(); if (stores == null) { outputStatusMessage( String.format( "Customer %d does not have any regeistered BMC stores.\n\n", authorizationData.getCustomerId())); return; } // Create a Bing Shopping campaign using the ID of the first store in the list. Campaign campaign = new Campaign(); campaign.setName("Bing Shopping Campaign " + System.currentTimeMillis()); campaign.setDescription("Bing Shopping Campaign Example."); campaign.setBudgetType(BudgetLimitType.MONTHLY_BUDGET_SPEND_UNTIL_DEPLETED); campaign.setMonthlyBudget(1000.00); campaign.setTimeZone("PacificTimeUSCanadaTijuana"); ArrayList<CampaignType> campaignTypes = new ArrayList<CampaignType>(); campaignTypes.add(CampaignType.SHOPPING); ArrayOfSetting settings = new ArrayOfSetting(); ShoppingSetting shoppingSetting = new ShoppingSetting(); shoppingSetting.setPriority(0); shoppingSetting.setSalesCountryCode("US"); shoppingSetting.setStoreId(stores.getBMCStores().get(0).getId()); settings.getSettings().add(shoppingSetting); campaign.setSettings(settings); campaign.setCampaignType(campaignTypes); campaign.setDaylightSaving(true); ArrayOfCampaign campaigns = new ArrayOfCampaign(); campaigns.getCampaigns().add(campaign); AddCampaignsResponse addCampaignsResponse = addCampaigns(AccountId, campaigns); ArrayOfNullableOflong campaignIds = addCampaignsResponse.getCampaignIds(); ArrayOfBatchError campaignErrors = addCampaignsResponse.getPartialErrors(); outputCampaignsWithPartialErrors(campaigns, campaignIds, campaignErrors); ArrayOfAdGroup adGroups = new ArrayOfAdGroup(); AdGroup adGroup = new AdGroup(); adGroup.setName("Product Categories"); ArrayList<AdDistribution> adDistribution = new ArrayList<AdDistribution>(); adDistribution.add(AdDistribution.SEARCH); adGroup.setAdDistribution(adDistribution); adGroup.setBiddingModel(BiddingModel.KEYWORD); adGroup.setPricingModel(PricingModel.CPC); adGroup.setStartDate(null); adGroup.setEndDate(new com.microsoft.bingads.v10.campaignmanagement.Date()); adGroup.getEndDate().setDay(31); adGroup.getEndDate().setMonth(12); adGroup.getEndDate().setYear(2016); Bid searchBid = new Bid(); searchBid.setAmount(0.09); adGroup.setSearchBid(searchBid); adGroup.setLanguage("English"); adGroups.getAdGroups().add(adGroup); AddAdGroupsResponse addAdGroupsResponse = addAdGroups(campaignIds.getLongs().get(0), adGroups); ArrayOfNullableOflong adGroupIds = addAdGroupsResponse.getAdGroupIds(); ArrayOfBatchError adGroupErrors = addAdGroupsResponse.getPartialErrors(); outputAdGroupsWithPartialErrors(adGroups, adGroupIds, adGroupErrors); ArrayOfAd ads = new ArrayOfAd(); ProductAd productAd = new ProductAd() { { promotionalText = "Free shipping on $99 purchases."; } }; ads.getAds().add(productAd); AddAdsResponse addAdsResponse = addAds(adGroupIds.getLongs().get(0), ads); ArrayOfNullableOflong adIds = addAdsResponse.getAdIds(); ArrayOfBatchError adErrors = addAdsResponse.getPartialErrors(); outputAdsWithPartialErrors(ads, adIds, adErrors); // Add criterion to the campaign. The criterion is used to limit the campaign to a subset of // your product catalog. AddCampaignCriterionsResponse addCriterionResponse = addCampaignCriterion(campaignIds.getLongs().get(0)); printCampaignCriterionIdentifiers( addCriterionResponse.getCampaignCriterionIds(), addCriterionResponse.getNestedPartialErrors()); addAndUpdateAdGroupCriterion(adGroupIds.getLongs().get(0)); ApplyProductPartitionActionsResponse applyPartitionActionsResponse = addBranchAndLeafCriterion(adGroupIds.getLongs().get(0)); long rootId = applyPartitionActionsResponse.getAdGroupCriterionIds().getLongs().get(1); long electronicsCriterionId = applyPartitionActionsResponse.getAdGroupCriterionIds().getLongs().get(8); updateBranchAndLeafCriterion(adGroupIds.getLongs().get(0), rootId, electronicsCriterionId); // Delete the campaign from the account. ArrayOflong deleteCampaignIds = new ArrayOflong(); deleteCampaignIds.getLongs().add(campaignIds.getLongs().get(0)); deleteCampaigns(AccountId, deleteCampaignIds); outputStatusMessage(String.format("Deleted CampaignId %d\n", campaignIds.getLongs().get(0))); // Campaign Management service operations can throw AdApiFaultDetail. } catch (AdApiFaultDetail_Exception ex) { outputStatusMessage("The operation failed with the following faults:\n"); for (AdApiError error : ex.getFaultInfo().getErrors().getAdApiErrors()) { outputStatusMessage("AdApiError\n"); outputStatusMessage( String.format( "Code: %d\nError Code: %s\nMessage: %s\n\n", error.getCode(), error.getErrorCode(), error.getMessage())); } // Campaign Management service operations can throw ApiFaultDetail. } catch (ApiFaultDetail_Exception ex) { outputStatusMessage("The operation failed with the following faults:\n"); for (BatchError error : ex.getFaultInfo().getBatchErrors().getBatchErrors()) { outputStatusMessage(String.format("BatchError at Index: %d\n", error.getIndex())); outputStatusMessage( String.format("Code: %d\nMessage: %s\n\n", error.getCode(), error.getMessage())); } for (OperationError error : ex.getFaultInfo().getOperationErrors().getOperationErrors()) { outputStatusMessage("OperationError\n"); outputStatusMessage( String.format("Code: %d\nMessage: %s\n\n", error.getCode(), error.getMessage())); } // Some Campaign Management service operations such as SetAdExtensionsAssociations can throw // EditorialApiFaultDetail. } catch (EditorialApiFaultDetail_Exception ex) { outputStatusMessage("The operation failed with the following faults:\n"); for (BatchError error : ex.getFaultInfo().getBatchErrors().getBatchErrors()) { outputStatusMessage(String.format("BatchError at Index: %d\n", error.getIndex())); outputStatusMessage( String.format("Code: %d\nMessage: %s\n\n", error.getCode(), error.getMessage())); } for (EditorialError error : ex.getFaultInfo().getEditorialErrors().getEditorialErrors()) { outputStatusMessage(String.format("EditorialError at Index: %d\n\n", error.getIndex())); outputStatusMessage( String.format("Code: %d\nMessage: %s\n\n", error.getCode(), error.getMessage())); outputStatusMessage( String.format( "Appealable: %s\nDisapproved Text: %s\nCountry: %s\n\n", error.getAppealable(), error.getDisapprovedText(), error.getPublisherCountry())); } for (OperationError error : ex.getFaultInfo().getOperationErrors().getOperationErrors()) { outputStatusMessage("OperationError\n"); outputStatusMessage( String.format("Code: %d\nMessage: %s\n\n", error.getCode(), error.getMessage())); } } catch (RemoteException ex) { outputStatusMessage("Service communication error encountered: "); outputStatusMessage(ex.getMessage()); ex.printStackTrace(); } catch (Exception ex) { outputStatusMessage("Error encountered: "); outputStatusMessage(ex.getMessage()); ex.printStackTrace(); } }
/** * Goes trough the table auction and checks which auctions are over. If the auction is over, finds * all bids for that auction, selects the highest bid and sends winning message, also sends to all * other users message that auction is over. */ public static void checkAuctionOutcome() { // Declaring list of all auctions. List<Auction> auctions = finder.all(); // Declaring variable that represents current date. Date currentDate = new Date(); // Going trough all auctions. for (int i = 0; i < auctions.size(); i++) { // Declaring variable that represents auction ending date. Date auctionEndingDate = auctions.get(i).endingDate; // Checking if the auction is active and if the auction ending date is before current date. if (auctions.get(i).isActive && auctionEndingDate.before(currentDate)) { // Finding all auction bids. List<Bid> bids = Bid.getAuctionBids(auctions.get(i)); // Declaring variable that represents highest bid. Bid highestBid = bids.get(0); // Declaring string variable that represents winning message. String winningMessage = "Congratulations!!! You won bitBay auction for item #" + auctions.get(i).product.id + " - " + auctions.get(i).product.name + ".\n\r \n\r To proceed with transaction please contact: " + auctions.get(i).product.user.email; // Declaring and saving winning message. Message message = new Message( CommonHelpers.serviceUser(), highestBid.user, "Auction Winning", winningMessage); message.save(); // Sending SMS notification to auction winner. String sms = "Congratulations!!! You won bitBay auction for item #" + auctions.get(i).product.id + " - " + auctions.get(i).product.name + ". " + "This product has been sent to your cart"; if (highestBid.user.phoneNumber != null) { SmsHelper.sendSms(sms, highestBid.user.phoneNumber); } // After user won on auction create new cart if user don't have one, and put auction item to // his cart Cart cart = Cart.findCartByUser(highestBid.user); if (cart == null) { Cart newCart = new Cart(); newCart.user = highestBid.user; newCart.save(); CartItem cartItem = new CartItem(auctions.get(i).product, highestBid.user, newCart); cartItem.save(); } else { CartItem cartItem = new CartItem(auctions.get(i).product, highestBid.user, cart); cartItem.save(); } // Declaring string set that will contain emails of all users that have not had highest bid. Set<String> bidUsers = new HashSet<>(); // Adding all user emails to the set. for (int j = 0; j < bids.size(); j++) { bidUsers.add(bids.get(j).user.email); } // Removing email of highest bit user from the set. bidUsers.remove(highestBid.user.email); // Declaring string variable that represents losing message. String losingMessage = "Biding for item #" + auctions.get(i).product.id + " - " + auctions.get(i).product.name + " is over.\n\r \n\r We are sorry to inform you that your bid was not enough."; // Declaring iterator list of all user emails. Iterator<String> iter = bidUsers.iterator(); // Going trough all emails and sending message. while (iter.hasNext()) { User receiver = User.getUserByEmail(iter.next()); Message msg = new Message(CommonHelpers.serviceUser(), receiver, "Auction results", losingMessage); msg.save(); } // Setting auction status to inactive. auctions.get(i).isActive = false; auctions.get(i).update(); } } }
public void testJoinFetch() { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery("delete from Bid").executeUpdate(); s.createQuery("delete from Comment").executeUpdate(); s.createQuery("delete from Item").executeUpdate(); t.commit(); s.close(); Category cat = new Category("Photography"); Item i = new Item(cat, "Camera"); Bid b = new Bid(i, 100.0f); new Bid(i, 105.0f); new Comment(i, "This looks like a really good deal"); new Comment(i, "Is it the latest version?"); new Comment(i, "<comment deleted>"); System.out.println(b.getTimestamp()); s = openSession(); t = s.beginTransaction(); s.persist(cat); s.persist(i); t.commit(); s.close(); getSessions().evict(Item.class); s = openSession(); t = s.beginTransaction(); i = (Item) s.get(Item.class, i.getId()); assertTrue(Hibernate.isInitialized(i.getBids())); assertEquals(i.getBids().size(), 2); assertTrue(Hibernate.isInitialized(i.getComments())); assertEquals(i.getComments().size(), 3); t.commit(); s.close(); getSessions().evict(Bid.class); s = openSession(); t = s.beginTransaction(); b = (Bid) s.get(Bid.class, b.getId()); assertTrue(Hibernate.isInitialized(b.getItem())); assertTrue(Hibernate.isInitialized(b.getItem().getComments())); assertEquals(b.getItem().getComments().size(), 3); System.out.println(b.getTimestamp()); t.commit(); s.close(); getSessions().evictCollection(Item.class.getName() + ".bids"); s = openSession(); t = s.beginTransaction(); i = (Item) s.createCriteria(Item.class) .setFetchMode("bids", FetchMode.SELECT) .setFetchMode("comments", FetchMode.SELECT) .uniqueResult(); assertFalse(Hibernate.isInitialized(i.getBids())); assertFalse(Hibernate.isInitialized(i.getComments())); b = (Bid) i.getBids().iterator().next(); assertTrue(Hibernate.isInitialized(b.getItem())); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); i = (Item) s.createQuery("from Item i left join fetch i.bids left join fetch i.comments") .uniqueResult(); assertTrue(Hibernate.isInitialized(i.getBids())); assertTrue(Hibernate.isInitialized(i.getComments())); assertEquals(i.getComments().size(), 3); assertEquals(i.getBids().size(), 2); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); Object[] row = (Object[]) s.getNamedQuery(Item.class.getName() + ".all").list().get(0); i = (Item) row[0]; assertTrue(Hibernate.isInitialized(i.getBids())); assertTrue(Hibernate.isInitialized(i.getComments())); assertEquals(i.getComments().size(), 3); assertEquals(i.getBids().size(), 2); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); i = (Item) s.createCriteria(Item.class).uniqueResult(); assertTrue(Hibernate.isInitialized(i.getBids())); assertTrue(Hibernate.isInitialized(i.getComments())); assertEquals(i.getComments().size(), 3); assertEquals(i.getBids().size(), 2); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); List bids = s.createQuery("from Bid b left join fetch b.item i left join fetch i.category").list(); Bid bid = (Bid) bids.get(0); assertTrue(Hibernate.isInitialized(bid.getItem())); assertTrue(Hibernate.isInitialized(bid.getItem().getCategory())); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); List pairs = s.createQuery("from Item i left join i.bids b left join fetch i.category").list(); Item item = (Item) ((Object[]) pairs.get(0))[0]; assertFalse(Hibernate.isInitialized(item.getBids())); assertTrue(Hibernate.isInitialized(item.getCategory())); s.clear(); pairs = s.createQuery("from Item i left join i.bids b left join i.category").list(); item = (Item) ((Object[]) pairs.get(0))[0]; assertFalse(Hibernate.isInitialized(item.getBids())); assertTrue(Hibernate.isInitialized(item.getCategory())); s.clear(); pairs = s.createQuery("from Bid b left join b.item i left join fetch i.category").list(); bid = (Bid) ((Object[]) pairs.get(0))[0]; assertTrue(Hibernate.isInitialized(bid.getItem())); assertTrue(Hibernate.isInitialized(bid.getItem().getCategory())); s.clear(); pairs = s.createQuery("from Bid b left join b.item i left join i.category").list(); bid = (Bid) ((Object[]) pairs.get(0))[0]; assertTrue(Hibernate.isInitialized(bid.getItem())); assertTrue(Hibernate.isInitialized(bid.getItem().getCategory())); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); s.createQuery("delete from Bid").executeUpdate(); s.createQuery("delete from Comment").executeUpdate(); s.createQuery("delete from Item").executeUpdate(); s.createQuery("delete from Category").executeUpdate(); t.commit(); s.close(); }
public void take(Bid bid) { if (bids.isEmpty() || canTakeBidFrom(bid.getUser())) { bids.add(bid); } }
@Test @SuppressWarnings({"unchecked"}) @SkipForDialect( value = {PostgreSQL81Dialect.class}, comment = "doesn't like boolean=1") public void testLazy() { Session s = openSession(); Transaction t = s.beginTransaction(); Auction a = new Auction(); a.setDescription("an auction for something"); a.setEnd(new Date()); Bid b = new Bid(); b.setAmount(new BigDecimal(123.34).setScale(19, BigDecimal.ROUND_DOWN)); b.setSuccessful(true); b.setDatetime(new Date()); b.setItem(a); a.getBids().add(b); a.setSuccessfulBid(b); s.persist(b); t.commit(); s.close(); Long aid = a.getId(); Long bid = b.getId(); s = openSession(); t = s.beginTransaction(); b = (Bid) s.load(Bid.class, bid); assertFalse(Hibernate.isInitialized(b)); a = (Auction) s.get(Auction.class, aid); assertFalse(Hibernate.isInitialized(a.getBids())); assertTrue(Hibernate.isInitialized(a.getSuccessfulBid())); assertSame(a.getBids().iterator().next(), b); assertSame(b, a.getSuccessfulBid()); assertTrue(Hibernate.isInitialized(b)); assertTrue(b.isSuccessful()); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); b = (Bid) s.load(Bid.class, bid); assertFalse(Hibernate.isInitialized(b)); a = (Auction) s.createQuery("from Auction a left join fetch a.bids").uniqueResult(); assertTrue(Hibernate.isInitialized(b)); assertTrue(Hibernate.isInitialized(a.getBids())); assertSame(b, a.getSuccessfulBid()); assertSame(a.getBids().iterator().next(), b); assertTrue(b.isSuccessful()); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); b = (Bid) s.load(Bid.class, bid); a = (Auction) s.load(Auction.class, aid); assertFalse(Hibernate.isInitialized(b)); assertFalse(Hibernate.isInitialized(a)); s.createQuery("from Auction a left join fetch a.successfulBid").list(); assertTrue(Hibernate.isInitialized(b)); assertTrue(Hibernate.isInitialized(a)); assertSame(b, a.getSuccessfulBid()); assertFalse(Hibernate.isInitialized(a.getBids())); assertSame(a.getBids().iterator().next(), b); assertTrue(b.isSuccessful()); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); b = (Bid) s.load(Bid.class, bid); a = (Auction) s.load(Auction.class, aid); assertFalse(Hibernate.isInitialized(b)); assertFalse(Hibernate.isInitialized(a)); assertSame(s.get(Bid.class, bid), b); assertTrue(Hibernate.isInitialized(b)); assertSame(s.get(Auction.class, aid), a); assertTrue(Hibernate.isInitialized(a)); assertSame(b, a.getSuccessfulBid()); assertFalse(Hibernate.isInitialized(a.getBids())); assertSame(a.getBids().iterator().next(), b); assertTrue(b.isSuccessful()); t.commit(); s.close(); }
public void loadWithBids(List<Bid> bids) { if (bidding == null) return; bidding.loadWithBids(bids); }