Voting Tool
Aus JSUG
This site contains a short overview of the JSUG Voting Tool hosted at googlecode. Its aim is to provide an easy way figuring out which topics are preferred by the members.
Inhaltsverzeichnis |
[Bearbeiten] General
[Bearbeiten] Technologies used
- GWT 1.5.3
- RESTful Webservices
- PHP 5
[Bearbeiten] Access Sourcecode
You can check out the full source code by:
# anonymous read-only access: svn checkout http://jsugvoting.googlecode.com/svn/ jsugvoting-read-only # project members only: svn checkout https://jsugvoting.googlecode.com/svn/trunk/ jsugvoting --username <your_name>
[Bearbeiten] Technical Documentation
... kind of ...
[Bearbeiten] Usecases
- Anonym
- View Topics
- Register
- Login
- Member
- Logout
- Vote
- Unvote
- Request Talk
- Offer Talk
- Join Talk
- Admin
- Edit Topic
[Bearbeiten] Commands/Events
- ??? ReloadData
- Register
- Login
- Logout
- GiveVote
- RevokeVote
- RequestTalk
- OfferTalk
- JoinTalk
[Bearbeiten] Valueobjects
- TalkEntity
- id: long
- createdOn: timestamp
- createdBy: User
- title: String
- votes: Vote[]
- tags: Tag[]
- detail: String
- link: String // LUXURY // about topic itself
- thumbnail: image // LUXURY
- state: Enum {need | offer | next | past}
- attribute1: String // attributes are state depending (?)
- attribute2: String
- attribute3: String
- attribute4: String
- VoteEntity
- topicId: long
- userId: long
- createdOn: timestamp
- UserEntity
- id: long
- createdOn: timestamp
- username: String
- password: String // SHA-1 encrypted
- email: String
- Tag
- id: long
- word: String
[Bearbeiten] Protocol
- describes passed json/xml dataformats
- mimetypes:
- application/json
- application/xml
[Bearbeiten] Overview
- Request
- Head
- Message Version; e.g. "0.1"
- Message Code (unique for this request/response); e.g. "7"
- Status Code
- Body
- ...
- Head
[Bearbeiten] Talk
GET: /users; response:
[
{
Id: 1,
Username: "foo"
},
{
Id: 2,
Username: "bar"
}
]
[Bearbeiten] REST
- /session ... von REST vordefined
- GET: X
- PUT: X
- POST: login
- DELETE: logout
- /users
- GET: list all users
- PUT: X
- POST: register new user
- DELETE: X
- /talks
- GET: list all talks
- PUT: X
- POST: new talk
- DELETE: X
- /talks/{talkId}
- GET: X (evtl: display talk)
- PUT: X
- POST: X
- DELETE: X (admin: delete talk)
- /talks/{talkId}/speakers
- GET: X
- PUT: X
- POST: join that talk
- DELETE: delete yourself
- /talks/{talkId}/vote
- GET: X (evtl: returned true/false if yet voted)
- PUT: X
- POST: add vote
- DELETE: unvote
[Bearbeiten] Service API
- AuthService
- login(username: String, password: String): boolean
- logout(): void
- register(username: String, password: String, email: String): boolean
- TopicsService
- ...
