Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Hao-Hsiang Song
/
topics-auction
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
31dd5bcd
authored
Nov 30, 2018
by
Bright Sukumpanumet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add timer functions
parent
daa0dcbb
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
78 additions
and
29 deletions
src/main/java/edu/uchicago/mpcs/topics/auction/Item.java
src/main/java/edu/uchicago/mpcs/topics/auction/Status.java
src/main/java/edu/uchicago/mpcs/topics/auction/TimeTracker.java
src/main/java/edu/uchicago/mpcs/topics/controller/ShoppingCartController.java
src/main/java/edu/uchicago/mpcs/topics/service/BidService.java
src/main/java/edu/uchicago/mpcs/topics/service/ShoppingCartService.java
target/h2db.mv.db
src/main/java/edu/uchicago/mpcs/topics/auction/Item.java
View file @
31dd5bcd
...
...
@@ -2,6 +2,7 @@ package edu.uchicago.mpcs.topics.auction;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
edu.uchicago.mpcs.topics.user.User
;
import
javax.persistence.*
;
import
java.util.Date
;
...
...
@@ -33,11 +34,13 @@ public class Item
@Column
(
length
=
2000
)
private
String
photoUrl
;
private
Long
us
erId
;
//seller
private
Long
sell
erId
;
//seller
private
Status
status
;
private
Long
currentBidderID
;
@ManyToMany
(
mappedBy
=
"items"
)
@JsonIgnore
private
Set
<
ShoppingCart
>
shopping_carts
=
new
HashSet
<>();
//must have the same name as the table
...
...
@@ -47,7 +50,7 @@ public class Item
}
public
Item
(
String
title
,
String
description
,
Long
categoryId
,
double
currentPrice
,
double
buyNowPrice
,
String
photoUrl
,
Long
us
erId
,
Boolean
canBuyNow
)
double
buyNowPrice
,
String
photoUrl
,
Long
sell
erId
,
Boolean
canBuyNow
)
{
this
.
title
=
title
;
this
.
description
=
description
;
...
...
@@ -55,7 +58,7 @@ public class Item
this
.
currentPrice
=
currentPrice
;
this
.
buyNowPrice
=
buyNowPrice
;
this
.
photoUrl
=
photoUrl
;
this
.
userId
=
us
erId
;
this
.
sellerId
=
sell
erId
;
this
.
canBuyNow
=
canBuyNow
;
}
...
...
@@ -130,14 +133,14 @@ public class Item
this
.
photoUrl
=
photoUrl
;
}
public
Long
get
Us
erId
()
public
Long
get
Sell
erId
()
{
return
us
erId
;
return
sell
erId
;
}
public
void
set
UserId
(
Long
us
erId
)
public
void
set
SellerId
(
Long
sell
erId
)
{
this
.
userId
=
us
erId
;
this
.
sellerId
=
sell
erId
;
}
@JsonIgnore
...
...
@@ -212,4 +215,14 @@ public class Item
{
this
.
endTime
=
endTime
;
}
public
Long
getCurrentBidderID
()
{
return
currentBidderID
;
}
public
void
setCurrentBidderID
(
Long
currentBidderID
)
{
this
.
currentBidderID
=
currentBidderID
;
}
}
src/main/java/edu/uchicago/mpcs/topics/auction/Status.java
View file @
31dd5bcd
...
...
@@ -5,5 +5,5 @@ package edu.uchicago.mpcs.topics.auction;
*/
public
enum
Status
{
ACTIVE
,
INACTIVE
,
FAILED
,
INAPPROPRIATE
,
COUNTERFEIT
,
SUSPENDED
,
DELETED
,
HASBID
,
SOLD
ACTIVE
,
INACTIVE
,
FAILED
,
INAPPROPRIATE
,
COUNTERFEIT
,
SUSPENDED
,
DELETED
,
HASBID
,
SOLD
,
ENDED
}
src/main/java/edu/uchicago/mpcs/topics/auction/TimeTracker.java
View file @
31dd5bcd
package
edu
.
uchicago
.
mpcs
.
topics
.
auction
;
import
java.util.Date
;
import
java.util.Timer
;
import
edu.uchicago.mpcs.topics.db.ItemRepository
;
import
edu.uchicago.mpcs.topics.db.ShoppingCartRepository
;
public
class
TimeTracker
{
private
Timer
timer
;
private
long
timeWindow
;
private
Date
start
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
public
Timer
getTimer
()
{
return
timer
;
}
public
class
TimeTracker
{
private
Long
itemId
;
public
void
setTimer
(
Timer
timer
)
{
this
.
timer
=
timer
;
}
private
ItemRepository
itemRepository
;
private
ShoppingCartRepository
shoppingCartRepository
;
public
long
getTimeWindow
()
{
return
timeWindow
;
}
public
void
setTimeWindow
(
long
timeWindow
)
{
this
.
timeWindow
=
timeWindow
;
//Please use format 2018-11-30T01:37:17
public
TimeTracker
(
Long
itemId
,
LocalDateTime
startTime
,
LocalDateTime
endTime
,
ItemRepository
itemRepository
,
ShoppingCartRepository
shoppingCartRepository
)
{
this
.
itemId
=
itemId
;
this
.
itemRepository
=
itemRepository
;
this
.
shoppingCartRepository
=
shoppingCartRepository
;
LocalDateTime
currentTime
=
LocalDateTime
.
now
();
Duration
durationStart
=
Duration
.
between
(
startTime
,
currentTime
);
ScheduledExecutorService
startTimer
=
Executors
.
newSingleThreadScheduledExecutor
();
startTimer
.
schedule
(()
->
timeStart
(),
durationStart
.
getSeconds
(),
TimeUnit
.
SECONDS
);
Duration
durationEnd
=
Duration
.
between
(
startTime
,
endTime
);
ScheduledExecutorService
endTimer
=
Executors
.
newSingleThreadScheduledExecutor
();
endTimer
.
schedule
(()
->
timeEnd
(),
durationEnd
.
getSeconds
(),
TimeUnit
.
SECONDS
);
}
public
Date
getStart
()
{
return
start
;
private
void
timeStart
()
{
Item
itemToUpdate
=
itemRepository
.
findById
(
this
.
itemId
).
orElse
(
null
);
itemToUpdate
.
setStatus
(
Status
.
ACTIVE
);
itemRepository
.
save
(
itemToUpdate
);
}
public
void
setStart
(
Date
start
)
{
this
.
start
=
start
;
private
void
timeEnd
()
{
//set status to ENDED
Item
itemToUpdate
=
itemRepository
.
findById
(
this
.
itemId
).
orElse
(
null
);
itemToUpdate
.
setStatus
(
Status
.
ENDED
);
itemRepository
.
save
(
itemToUpdate
);
//TODO add the item to user shopping cart
// ShoppingCart shoppingCart = shoppingCartRepository.findById(itemToUpdate.getHighestBidder().getUserId()).orElse(null);
// shoppingCartRepository.save(shoppingCart.addItem(itemToUpdate));
}
}
src/main/java/edu/uchicago/mpcs/topics/controller/ShoppingCartController.java
View file @
31dd5bcd
...
...
@@ -7,6 +7,7 @@ import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import
edu.uchicago.mpcs.topics.service.CheckoutService
;
import
edu.uchicago.mpcs.topics.service.ShoppingCartService
;
import
edu.uchicago.mpcs.topics.auction.ShoppingCart
;
import
edu.uchicago.mpcs.topics.user.User
;
import
org.springframework.web.bind.annotation.*
;
/**
...
...
src/main/java/edu/uchicago/mpcs/topics/service/BidService.java
View file @
31dd5bcd
...
...
@@ -32,10 +32,13 @@ public class BidService
{
itemToUpdate
.
setItemId
(
bid
.
getItemId
());
itemToUpdate
.
setCurrentPrice
(
bid
.
getAmount
());
itemToUpdate
.
setCurrentBidderID
(
bid
.
getUserId
());
itemRepository
.
save
(
itemToUpdate
);
bid
.
setStatus
(
Status
.
ACTIVE
);
//set highestBidder
return
bidRepository
.
save
(
bid
);
}
else
...
...
src/main/java/edu/uchicago/mpcs/topics/service/ShoppingCartService.java
View file @
31dd5bcd
...
...
@@ -5,6 +5,7 @@ import edu.uchicago.mpcs.topics.auction.Status;
import
edu.uchicago.mpcs.topics.db.ItemRepository
;
import
edu.uchicago.mpcs.topics.db.ShoppingCartRepository
;
import
edu.uchicago.mpcs.topics.auction.ShoppingCart
;
import
edu.uchicago.mpcs.topics.user.User
;
import
org.springframework.stereotype.Service
;
/**
...
...
target/h2db.mv.db
View file @
31dd5bcd
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment