Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Antti Väyrynen
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit edf86cf5
authored
Feb 09, 2014
by
Tuukka Kivilahti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
littlebit barcode refactoring, more to come
1 parent
0708a0e5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
119 additions
and
162 deletions
code/MoyaBeans/.settings/org.eclipse.jdt.core.prefs
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/BootstrapBean.java
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/ReaderBean.java
code/MoyaBeansClient/ejbModule/fi/codecrew/moya/beans/ReaderBeanLocal.java
code/MoyaDatabase/src/fi/codecrew/moya/model/ReaderEvent.java
code/MoyaDatabase/src/fi/codecrew/moya/model/ReaderEventType.java
code/MoyaBeans/.settings/org.eclipse.jdt.core.prefs
View file @
edf86cf
This diff is collapsed.
Click to expand it.
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/BootstrapBean.java
View file @
edf86cf
...
@@ -40,6 +40,9 @@ public class BootstrapBean implements BootstrapBeanLocal {
...
@@ -40,6 +40,9 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN event_users_id integer REFERENCES event_users(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN event_users_id integer REFERENCES event_users(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN places_id integer REFERENCES places(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN places_id integer REFERENCES places(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN products_id integer REFERENCES products(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN products_id integer REFERENCES products(id) DEFAULT null;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events ADD COLUMN type text NOT NULL;"
});
dbUpdates
.
add
(
new
String
[]
{
"ALTER TABLE reader_events DROP COLUMN gamepoint;"
});
}
}
@EJB
@EJB
...
...
code/MoyaBeans/ejbModule/fi/codecrew/moya/beans/ReaderBean.java
View file @
edf86cf
...
@@ -19,9 +19,12 @@ import fi.codecrew.moya.facade.ReaderFacade;
...
@@ -19,9 +19,12 @@ import fi.codecrew.moya.facade.ReaderFacade;
import
fi.codecrew.moya.model.AccountEvent
;
import
fi.codecrew.moya.model.AccountEvent
;
import
fi.codecrew.moya.model.CardTemplate
;
import
fi.codecrew.moya.model.CardTemplate
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.Place
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.model.Product
;
import
fi.codecrew.moya.model.Reader
;
import
fi.codecrew.moya.model.Reader
;
import
fi.codecrew.moya.model.ReaderEvent
;
import
fi.codecrew.moya.model.ReaderEvent
;
import
fi.codecrew.moya.model.ReaderEventType
;
import
fi.codecrew.moya.model.ReaderType
;
import
fi.codecrew.moya.model.ReaderType
;
import
fi.codecrew.moya.model.User
;
import
fi.codecrew.moya.model.User
;
...
@@ -47,143 +50,104 @@ public class ReaderBean implements ReaderBeanLocal {
...
@@ -47,143 +50,104 @@ public class ReaderBean implements ReaderBeanLocal {
private
CardTemplateBean
cardTemplateBean
;
private
CardTemplateBean
cardTemplateBean
;
@EJB
@EJB
private
ProductPBean
productPBean
;
private
ProductPBean
productPBean
;
@EJB
private
BarcodeBeanLocal
barcodeBean
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ReaderBean
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ReaderBean
.
class
);
@Override
@Override
public
ReaderEvent
check
Tag
(
String
readerIdent
,
String
tag
)
{
public
ReaderEvent
check
Code
(
String
readerIdent
,
String
code
)
{
Reader
reader
=
readerfacade
.
findOrCreateByIdent
(
readerIdent
);
Reader
reader
=
readerfacade
.
findOrCreateByIdent
(
readerIdent
);
tag
=
tag
.
replace
(
"\"\b"
,
""
);
code
=
code
.
replace
(
"\"\b"
,
""
);
if
(
reader
.
getType
()
==
ReaderType
.
RFID
)
{
if
(
reader
.
getType
()
==
ReaderType
.
RFID
)
{
if
(
Pattern
.
matches
(
"^.*000000$"
,
tag
))
if
(
Pattern
.
matches
(
"^.*000000$"
,
code
))
{
{
tag
=
tag
.
replace
(
"000000"
,
""
);
code
=
code
.
replace
(
"000000"
,
""
);
}
}
StringBuilder
sb
=
new
StringBuilder
(
tag
);
StringBuilder
sb
=
new
StringBuilder
(
code
);
while
(
sb
.
length
()
<
16
)
while
(
sb
.
length
()
<
16
)
{
{
sb
.
insert
(
0
,
"0"
);
sb
.
insert
(
0
,
"0"
);
}
}
tag
=
sb
.
toString
();
code
=
sb
.
toString
();
}
}
PrintedCard
card
=
cardfacade
.
findByRfid
(
tag
);
ReaderEvent
event
=
new
ReaderEvent
(
new
Date
(),
reader
,
code
);
logger
.
info
(
"reader {}, card {}"
,
reader
,
card
);
//
RfidEvent revent = reventcontainer.foundTag(reader, tag);
//
first, check if dublicate, there is 30s timeout for dublicates, afther that it's ok to create dublicate
// that's bcause accident dublicates are bad, but otherwise it's probably bcause user want's to read it again
List
<
ReaderEvent
>
lastevents
=
readerEventFacade
.
findLastEvents
(
reader
,
1
);
List
<
ReaderEvent
>
lastevents
=
readerEventFacade
.
findLastEvents
(
reader
,
1
);
ReaderEvent
ret
=
null
;
if
(!
lastevents
.
isEmpty
()
&&
!
reader
.
isAutoproduct
())
if
(!
lastevents
.
isEmpty
()
&&
!
reader
.
isAutoproduct
())
{
{
ReaderEvent
lastevent
=
lastevents
.
get
(
0
);
ReaderEvent
lastevent
=
lastevents
.
get
(
0
);
if
(
card
==
null
)
{
if
(
lastevent
.
getValue
()
==
event
.
getValue
()
&&
(
lastevent
.
getUpdatetime
().
getTime
()
+
60000
l
)
>
event
.
getTime
().
getTime
())
{
if
(
lastevent
.
getPrintedCard
()
==
null
&&
tag
.
equals
(
lastevent
.
getValue
()))
return
lastevent
;
// todo: update lastevent bfore return
{
ret
=
lastevent
;
}
}
else
if
(
card
.
equals
(
lastevent
.
getPrintedCard
()))
{
ret
=
lastevent
;
}
}
}
}
if
(
ret
==
null
)
{
ret
=
createReaderEvent
(
reader
,
card
);
// find stuff with barcode and set type
logger
.
debug
(
"Got reader autoproduct {} with count {}"
,
reader
.
getAutomaticProduct
(),
reader
.
getAutomaticProductCount
());
// IF we find 2 stuff with same barcode, it's just bad luck and things may be little random.
logger
.
debug
(
"ret {}, card, {} autoproduct {}"
,
new
Object
[]
{
ret
,
card
,
reader
.
isAutoproduct
()
});
EventUser
user
=
barcodeBean
.
getUser
(
code
);
if
(
ret
!=
null
&&
card
!=
null
&&
reader
.
isAutoproduct
())
{
EventUser
eu
=
userbean
.
getEventUser
(
card
.
getUser
().
getUser
());
if
(
user
!=
null
)
{
AccountEvent
createAc
=
productPBean
.
createAccountEvent
(
reader
.
getAutomaticProduct
(),
reader
.
getAutomaticProductCount
(),
eu
,
Calendar
.
getInstance
());
event
.
setType
(
ReaderEventType
.
USER
);
readerfacade
.
flush
();
event
.
setUser
(
user
);
logger
.
info
(
"Creating new accountevent from autoproduct {}"
,
createAc
);
}
ret
.
setNotes
(
"Created automatic account event from reader. "
+
createAc
);
PrintedCard
card
=
barcodeBean
.
getPrintedCard
(
code
);
if
(
card
!=
null
)
{
event
.
setType
(
ReaderEventType
.
CARD
);
event
.
setPrintedCard
(
card
);
if
(
card
.
getUser
()
!=
null
)
{
event
.
setUser
(
card
.
getUser
());
}
}
}
else
{
ret
.
setUpdatetime
(
new
Date
());
}
}
if
(
card
==
null
)
{
Product
product
=
barcodeBean
.
getProduct
(
code
);
ret
.
setValue
(
tag
);
if
(
product
!=
null
)
{
event
.
setType
(
ReaderEventType
.
PRODUCT
);
event
.
setProduct
(
product
);
}
}
return
ret
;
Place
place
=
barcodeBean
.
getPlaceFromBarcode
(
code
);
}
if
(
place
!=
null
)
{
//
event
.
setType
(
ReaderEventType
.
PLACE
);
// @Override
event
.
setPlace
(
place
);
// public ReaderEvent assocTagToPlacecode(String tag, String readerIdent,
// String placecode) throws BortalCatchableException,
// PermissionDeniedException {
//
// GroupMembership gm = gmfacade.findByToken(placecode);
// if (gm == null) {
// throw new BortalCatchableException("Token" + placecode + " not found!",
// "readerbean.tokenNotFound");
// }
// if (gm.getUser() == null) {
// throw new BortalCatchableException("Token " + placecode +
// "found but not assoc to user!",
// "readerbean.userNotAssociateToMembership");
// }
//
// PrintedCard card = cardtemplatebean.setRfidUid(tag, gm.getUser());
//
// Reader reader = readerfacade.findOrCreateByIdent(readerIdent);
//
// return createReaderEvent(reader, card);
//
// }
private
ReaderEvent
createReaderEvent
(
Reader
reader
,
PrintedCard
card
)
{
ReaderEvent
ret
=
new
ReaderEvent
(
Calendar
.
getInstance
(),
card
,
reader
);
Integer
gamepoints
=
reader
.
getGamepoints
();
if
(
gamepoints
>
0
&&
card
!=
null
)
{
int
awardedCount
=
0
;
for
(
ReaderEvent
oldRe
:
reader
.
getEvents
())
{
if
(
oldRe
.
getGamePoint
()
>
0
)
{
++
awardedCount
;
// User has been already awarded points from this reader.
// Not awarding again...
if
(
oldRe
.
getPrintedCard
().
equals
(
card
))
{
gamepoints
=
0
;
break
;
}
}
}
// if points can be awarded only limited times...
if
(
reader
.
getMaxEvents
()
>
0
&&
reader
.
getMaxEvents
()
>
awardedCount
)
{
gamepoints
=
0
;
}
}
}
event
.
setUpdatetime
(
new
Date
());
// reader is in autoproduct-mode, create dat product
if
(
reader
.
isAutoproduct
())
{
EventUser
eu
=
userbean
.
getEventUser
(
card
.
getUser
().
getUser
());
AccountEvent
createAc
=
productPBean
.
createAccountEvent
(
reader
.
getAutomaticProduct
(),
reader
.
getAutomaticProductCount
(),
eu
,
Calendar
.
getInstance
());
readerfacade
.
flush
();
logger
.
info
(
"Creating new accountevent from autoproduct {}"
,
createAc
);
event
.
setNotes
(
"Created automatic account event from reader. "
+
createAc
);
ret
.
setGamePoint
(
gamepoints
);
reader
.
getEvents
().
add
(
ret
);
if
(
card
!=
null
)
{
card
.
getReaderEvents
().
add
(
ret
);
}
}
return
ret
;
return
event
;
}
}
@Override
@Override
public
ReaderEvent
assocTagToCard
(
String
tag
,
String
readerIdent
,
PrintedCard
card
)
{
public
ReaderEvent
assocTagToCard
(
String
tag
,
String
readerIdent
,
PrintedCard
card
)
{
...
...
code/MoyaBeansClient/ejbModule/fi/codecrew/moya/beans/ReaderBeanLocal.java
View file @
edf86cf
...
@@ -39,6 +39,6 @@ public interface ReaderBeanLocal {
...
@@ -39,6 +39,6 @@ public interface ReaderBeanLocal {
List
<
ReaderEvent
>
getLastReaderEvents
();
List
<
ReaderEvent
>
getLastReaderEvents
();
ReaderEvent
check
Tag
(
String
readerIdent
,
String
tag
);
ReaderEvent
check
Code
(
String
readerIdent
,
String
code
);
}
}
code/MoyaDatabase/src/fi/codecrew/moya/model/ReaderEvent.java
View file @
edf86cf
...
@@ -23,14 +23,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
...
@@ -23,14 +23,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
@OptimisticLocking
(
type
=
OptimisticLockingType
.
CHANGED_COLUMNS
)
@OptimisticLocking
(
type
=
OptimisticLockingType
.
CHANGED_COLUMNS
)
public
class
ReaderEvent
extends
GenericEntity
{
public
class
ReaderEvent
extends
GenericEntity
{
public
enum
Type
{
USER
,
PLACE
,
CARD
,
PRODUCT
,
UNKNOWN
}
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@Column
(
name
=
"event_time"
,
nullable
=
false
)
@Column
(
name
=
"event_time"
,
nullable
=
false
)
...
@@ -48,9 +40,6 @@ public class ReaderEvent extends GenericEntity {
...
@@ -48,9 +40,6 @@ public class ReaderEvent extends GenericEntity {
@Column
(
name
=
"notes"
)
@Column
(
name
=
"notes"
)
private
String
notes
;
private
String
notes
;
@Column
(
nullable
=
false
)
private
Integer
gamePoint
=
0
;
@JoinColumn
(
name
=
"printed_cards_id"
,
referencedColumnName
=
"id"
,
nullable
=
true
,
updatable
=
false
)
@JoinColumn
(
name
=
"printed_cards_id"
,
referencedColumnName
=
"id"
,
nullable
=
true
,
updatable
=
false
)
@ManyToOne
(
optional
=
false
)
@ManyToOne
(
optional
=
false
)
private
PrintedCard
printedCard
;
private
PrintedCard
printedCard
;
...
@@ -71,7 +60,41 @@ public class ReaderEvent extends GenericEntity {
...
@@ -71,7 +60,41 @@ public class ReaderEvent extends GenericEntity {
@ManyToOne
(
optional
=
false
)
@ManyToOne
(
optional
=
false
)
private
Product
product
;
private
Product
product
;
private
Type
type
;
private
ReaderEventType
type
;
public
ReaderEvent
(
Date
eventTime
,
Reader
reader
,
String
value
)
{
this
(
eventTime
,
reader
,
value
,
null
,
null
,
null
,
null
,
ReaderEventType
.
UNKNOWN
);
}
public
ReaderEvent
(
Date
eventTime
,
Reader
reader
,
String
value
,
ReaderEventType
type
)
{
this
(
eventTime
,
reader
,
value
,
null
,
null
,
null
,
null
,
type
);
}
public
ReaderEvent
(
Date
eventTime
,
Reader
reader
,
String
value
,
PrintedCard
card
,
EventUser
user
,
Place
place
,
Product
product
,
ReaderEventType
type
)
{
this
.
time
=
eventTime
;
this
.
reader
=
reader
;
this
.
value
=
value
;
this
.
user
=
user
;
this
.
printedCard
=
card
;
this
.
user
=
user
;
this
.
place
=
place
;
this
.
product
=
product
;
if
(
type
==
null
)
type
=
ReaderEventType
.
UNKNOWN
;
this
.
type
=
type
;
}
public
ReaderEvent
()
{
super
();
}
public
EventUser
getUser
()
{
public
EventUser
getUser
()
{
return
user
;
return
user
;
...
@@ -97,48 +120,14 @@ public class ReaderEvent extends GenericEntity {
...
@@ -97,48 +120,14 @@ public class ReaderEvent extends GenericEntity {
this
.
product
=
product
;
this
.
product
=
product
;
}
}
public
Type
getType
()
{
public
ReaderEvent
Type
getType
()
{
return
type
;
return
type
;
}
}
public
void
setType
(
Type
type
)
{
public
void
setType
(
ReaderEvent
Type
type
)
{
this
.
type
=
type
;
this
.
type
=
type
;
}
}
public
ReaderEvent
(
Calendar
eventTime
,
Reader
reader
,
String
value
)
{
this
(
eventTime
,
reader
,
value
,
null
,
null
,
null
,
null
,
Type
.
UNKNOWN
);
}
public
ReaderEvent
(
Calendar
eventTime
,
Reader
reader
,
String
value
,
Type
type
)
{
this
(
eventTime
,
reader
,
value
,
null
,
null
,
null
,
null
,
type
);
}
public
ReaderEvent
(
Calendar
eventTime
,
Reader
reader
,
String
value
,
PrintedCard
card
,
EventUser
user
,
Place
place
,
Product
product
,
Type
type
)
{
this
.
time
=
eventTime
.
getTime
();
this
.
reader
=
reader
;
this
.
value
=
value
;
this
.
user
=
user
;
this
.
printedCard
=
card
;
this
.
user
=
user
;
this
.
place
=
place
;
this
.
product
=
product
;
if
(
type
==
null
)
type
=
Type
.
UNKNOWN
;
this
.
type
=
type
;
}
public
ReaderEvent
()
{
super
();
}
public
String
getNotes
()
{
public
String
getNotes
()
{
return
notes
;
return
notes
;
}
}
...
@@ -179,14 +168,6 @@ public class ReaderEvent extends GenericEntity {
...
@@ -179,14 +168,6 @@ public class ReaderEvent extends GenericEntity {
this
.
reader
=
readersId
;
this
.
reader
=
readersId
;
}
}
public
void
setGamePoint
(
Integer
gamePoint
)
{
this
.
gamePoint
=
gamePoint
;
}
public
Integer
getGamePoint
()
{
return
gamePoint
;
}
public
Date
getUpdatetime
()
{
public
Date
getUpdatetime
()
{
if
(
updatetime
==
null
)
if
(
updatetime
==
null
)
return
time
;
return
time
;
...
...
code/MoyaDatabase/src/fi/codecrew/moya/model/ReaderEventType.java
0 → 100644
View file @
edf86cf
package
fi
.
codecrew
.
moya
.
model
;
public
enum
ReaderEventType
{
USER
,
PLACE
,
CARD
,
PRODUCT
,
UNKNOWN
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment