- java.lang.Object
-
- com.erudika.para.core.Vote
-
- All Implemented Interfaces:
Linkable,ParaObject,Votable,Serializable
public class Vote extends Object implements ParaObject
When a user votes on an object the vote is saved as positive or negative. The user has a short amount of time to amend that vote and then it's locked. Votes can expire after X seconds and they get deleted. This allows the voter to vote again on the same object.- Author:
- Alex Bogdanovski [alex@erudika.com]
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.erudika.para.core.Votable
Votable.VoteValue
-
-
Constructor Summary
Constructors Constructor Description Vote()No-args constructor.Vote(String voterid, String voteeid, Votable.VoteValue value)Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LongcountChildren(String type)Count the total number of child objects for this object.LongcountLinks(String type2)Count the total number of links between this object and another type of object.Stringcreate()Stores this object in the data store.voiddelete()Deletes the object permanently by removing it from the data store.voiddeleteChildren(String type)Deletes all child objects permanently.Votedown()Set the vote negative.booleanequals(Object obj)booleanexists()Checks if an object is stored in the data store.<P extends ParaObject>
List<P>findChildren(String type, String query, Pager... pager)Search through all child objects.<P extends ParaObject>
List<P>findLinkedObjects(String type, String field, String query, Pager... pager)Similar toLinkable.findChildren(java.lang.String, java.lang.String, com.erudika.para.core.utils.Pager...)but for many-to-many relationships.StringgetAppid()The application name.BooleangetCached()Boolean flag which controls whether this object is cached.<P extends ParaObject>
List<P>getChildren(String type, Pager... pager)Returns all child objects linked to this object.<P extends ParaObject>
List<P>getChildren(String type, String field, String term, Pager... pager)Returns all child objects linked to this object.StringgetCreatorid()The id of the user who created this.IntegergetExpiresAfter()Returns the expiration period.StringgetId()The id of an object.BooleangetIndexed()Boolean flag which controls whether this object is indexed by the search engine.<P extends ParaObject>
List<P>getLinkedObjects(String type, Pager... pager)Similar toLinkable.getChildren(java.lang.String, com.erudika.para.core.utils.Pager...)but for many-to-many relationships.List<Linker>getLinks(String type2, Pager... pager)Returns all links between this type object and another type of object.IntegergetLockedAfter()The period during which a vote can be amended.StringgetName()The name of the object.StringgetObjectURI()The URI of this object.StringgetParentid()The id of the parent object.StringgetPlural()The plural name of the object.BooleangetStored()Boolean flag which controls whether this object is stored in the database or not.List<String>getTags()The tags associated with this object.LonggetTimestamp()The time when the object was created, in milliseconds.StringgetType()The name of the object's class.LonggetUpdated()The last time this object was updated.StringgetValue()Returns the value of the vote.LonggetVersion()Returns the version number for this object.IntegergetVotes()Returns the total sum of all votes for this object.inthashCode()booleanisAmendable()Checks if vote can still be amended.booleanisDownvote()booleanisExpired()Checks if expired.booleanisLinked(ParaObject toObj)Checks if a given object is linked to this one.booleanisLinked(String type2, String id2)Checks if this object is linked to another.booleanisUpvote()Stringlink(String id2)Links an object to this one in a many-to-many relationship.voidsetAppid(String appid)Sets a new app name.voidsetCached(Boolean cached)Sets the "isCached" flag.voidsetCreatorid(String creatorid)Sets a new creator id.voidsetExpiresAfter(Integer expiresAfter)Sets the expiration period.voidsetId(String id)Sets a new id.voidsetIndexed(Boolean indexed)Sets the "isIndexed" flag.voidsetLockedAfter(Integer lockedAfter)Sets the lock after period.voidsetName(String name)Sets a new name.voidsetParentid(String parentid)Sets a new parent id.voidsetStored(Boolean stored)Sets the "isStored" flag.voidsetTags(List<String> tags)Merges the given tags with existing tags.voidsetTimestamp(Long timestamp)Sets the timestamp.voidsetType(String type)Sets a new object type.voidsetUpdated(Long updated)Sets the last updated timestamp.voidsetValue(String value)Sets the value of the vote.voidsetVersion(Long version)Sets the version of this object.voidsetVotes(Integer votes)Sets the total votes for this object.StringtoString()voidunlink(String type, String id2)Unlinks an object from this one.voidunlinkAll()Unlinks all objects that are linked to this one.Voteup()Set the vote positive.voidupdate()Updates the object permanently.booleanvoteDown(String userid)Downvotes the object.booleanvoteUp(String userid)Upvotes the object.
-
-
-
Constructor Detail
-
Vote
public Vote()
No-args constructor.
-
Vote
public Vote(String voterid, String voteeid, Votable.VoteValue value)
Default constructor.- Parameters:
voterid- the user id of the votervoteeid- the id of the object that will receive the votevalue- up + or down -
-
-
Method Detail
-
getId
public final String getId()
Description copied from interface:ParaObjectThe id of an object. Usually an autogenerated unique string of numbers.- Specified by:
getIdin interfaceParaObject- Returns:
- the id
-
up
public Vote up()
Set the vote positive.- Returns:
- this
-
down
public Vote down()
Set the vote negative.- Returns:
- this
-
isUpvote
public boolean isUpvote()
- Returns:
- true if vote is positive
-
isDownvote
public boolean isDownvote()
- Returns:
- true if vote is negative
-
getValue
public String getValue()
Returns the value of the vote.- Returns:
- UP or DOWN
-
setValue
public void setValue(String value)
Sets the value of the vote.- Parameters:
value- UP or DOWN
-
getExpiresAfter
public Integer getExpiresAfter()
Returns the expiration period.- Returns:
- time in seconds
-
setExpiresAfter
public void setExpiresAfter(Integer expiresAfter)
Sets the expiration period.- Parameters:
expiresAfter- time in seconds
-
getLockedAfter
public Integer getLockedAfter()
The period during which a vote can be amended.- Returns:
- lock after period in seconds
-
setLockedAfter
public void setLockedAfter(Integer lockedAfter)
Sets the lock after period.- Parameters:
lockedAfter- time in seconds
-
isExpired
public boolean isExpired()
Checks if expired.- Returns:
- true if expired
-
isAmendable
public boolean isAmendable()
Checks if vote can still be amended.- Returns:
- true if vote can still be changed
-
setId
public final void setId(String id)
Description copied from interface:ParaObjectSets a new id. Must not be null or empty.- Specified by:
setIdin interfaceParaObject- Parameters:
id- the new id
-
getType
public final String getType()
Description copied from interface:ParaObjectThe name of the object's class. This is equivalent toClass.getSimpleName().toLowerCase()- Specified by:
getTypein interfaceParaObject- Returns:
- the simple name of the class
-
setType
public final void setType(String type)
Description copied from interface:ParaObjectSets a new object type. Must not be null or empty.- Specified by:
setTypein interfaceParaObject- Parameters:
type- a new type
-
getAppid
public String getAppid()
Description copied from interface:ParaObjectThe application name. Added to support multiple separate apps. Every object must belong to an app.- Specified by:
getAppidin interfaceParaObject- Returns:
- the app id (name). default: para
-
setAppid
public void setAppid(String appid)
Description copied from interface:ParaObjectSets a new app name. Must not be null or empty.- Specified by:
setAppidin interfaceParaObject- Parameters:
appid- the new app id (name)
-
getObjectURI
public String getObjectURI()
Description copied from interface:ParaObjectThe URI of this object. For example: /users/123- Specified by:
getObjectURIin interfaceParaObject- Returns:
- the URI
- See Also:
Utils.getObjectURI(com.erudika.para.core.ParaObject, boolean, boolean)
-
getTags
public List<String> getTags()
Description copied from interface:ParaObjectThe tags associated with this object. Tags must not be null or empty.- Specified by:
getTagsin interfaceParaObject- Returns:
- a set of tags, or an empty set
- See Also:
Tag
-
setTags
public void setTags(List<String> tags)
Description copied from interface:ParaObjectMerges the given tags with existing tags.- Specified by:
setTagsin interfaceParaObject- Parameters:
tags- the additional tags, or clears all tags if set to null
-
getStored
public Boolean getStored()
Description copied from interface:ParaObjectBoolean flag which controls whether this object is stored in the database or not. Default is true.- Specified by:
getStoredin interfaceParaObject- Returns:
- true if this object is stored in DB.
-
setStored
public void setStored(Boolean stored)
Description copied from interface:ParaObjectSets the "isStored" flag.- Specified by:
setStoredin interfaceParaObject- Parameters:
stored- when set to true, object is stored in DB.
-
getIndexed
public Boolean getIndexed()
Description copied from interface:ParaObjectBoolean flag which controls whether this object is indexed by the search engine. Default is true.- Specified by:
getIndexedin interfaceParaObject- Returns:
- true if this object is indexed
-
setIndexed
public void setIndexed(Boolean indexed)
Description copied from interface:ParaObjectSets the "isIndexed" flag.- Specified by:
setIndexedin interfaceParaObject- Parameters:
indexed- when set to true, object is indexed.
-
getCached
public Boolean getCached()
Description copied from interface:ParaObjectBoolean flag which controls whether this object is cached. Default is true.- Specified by:
getCachedin interfaceParaObject- Returns:
- true if this object is cached on update() and create().
-
setCached
public void setCached(Boolean cached)
Description copied from interface:ParaObjectSets the "isCached" flag.- Specified by:
setCachedin interfaceParaObject- Parameters:
cached- when set to true, object is cached.
-
getTimestamp
public Long getTimestamp()
Description copied from interface:ParaObjectThe time when the object was created, in milliseconds.- Specified by:
getTimestampin interfaceParaObject- Returns:
- the timestamp of creation
-
setTimestamp
public void setTimestamp(Long timestamp)
Description copied from interface:ParaObjectSets the timestamp.- Specified by:
setTimestampin interfaceParaObject- Parameters:
timestamp- a new timestamp in milliseconds.
-
getCreatorid
public String getCreatorid()
Description copied from interface:ParaObjectThe id of the user who created this. Should point to aUserid.- Specified by:
getCreatoridin interfaceParaObject- Returns:
- the id or null
-
setCreatorid
public void setCreatorid(String creatorid)
Description copied from interface:ParaObjectSets a new creator id. Must not be null or empty.- Specified by:
setCreatoridin interfaceParaObject- Parameters:
creatorid- a new id
-
getName
public final String getName()
Description copied from interface:ParaObjectThe name of the object. Can be anything.- Specified by:
getNamein interfaceParaObject- Returns:
- the name. default: [type id]
-
setName
public final void setName(String name)
Description copied from interface:ParaObjectSets a new name. Must not be null or empty.- Specified by:
setNamein interfaceParaObject- Parameters:
name- the new name
-
getPlural
public String getPlural()
Description copied from interface:ParaObjectThe plural name of the object. For example: user - users- Specified by:
getPluralin interfaceParaObject- Returns:
- the plural name
-
getParentid
public String getParentid()
Description copied from interface:ParaObjectThe id of the parent object.- Specified by:
getParentidin interfaceParaObject- Returns:
- the id of the parent or null
-
setParentid
public void setParentid(String parentid)
Description copied from interface:ParaObjectSets a new parent id. Must not be null or empty.- Specified by:
setParentidin interfaceParaObject- Parameters:
parentid- a new id
-
getUpdated
public Long getUpdated()
Description copied from interface:ParaObjectThe last time this object was updated. Timestamp in ms.- Specified by:
getUpdatedin interfaceParaObject- Returns:
- timestamp in milliseconds
-
setUpdated
public void setUpdated(Long updated)
Description copied from interface:ParaObjectSets the last updated timestamp.- Specified by:
setUpdatedin interfaceParaObject- Parameters:
updated- a new timestamp
-
create
public String create()
Description copied from interface:ParaObjectStores this object in the data store.- Specified by:
createin interfaceParaObject- Returns:
- the id of the object (a new id if object is new)
- See Also:
Stored,DAO.create(com.erudika.para.core.ParaObject)
-
update
public void update()
Description copied from interface:ParaObjectUpdates the object permanently. Changes toLockedfields are ignored.- Specified by:
updatein interfaceParaObject- See Also:
Locked,DAO.update(com.erudika.para.core.ParaObject)
-
delete
public void delete()
Description copied from interface:ParaObjectDeletes the object permanently by removing it from the data store.- Specified by:
deletein interfaceParaObject- See Also:
DAO.delete(com.erudika.para.core.ParaObject)
-
exists
public boolean exists()
Description copied from interface:ParaObjectChecks if an object is stored in the data store.- Specified by:
existsin interfaceParaObject- Returns:
- true if the object is persisted to the data store.
- See Also:
DAO.read(java.lang.String)
-
voteUp
public boolean voteUp(String userid)
Description copied from interface:VotableUpvotes the object.
-
voteDown
public boolean voteDown(String userid)
Description copied from interface:VotableDownvotes the object.
-
getVotes
public Integer getVotes()
Description copied from interface:VotableReturns the total sum of all votes for this object. For example: (+6) + (-4) = 2
-
setVotes
public void setVotes(Integer votes)
Description copied from interface:VotableSets the total votes for this object.
-
getVersion
public Long getVersion()
Description copied from interface:ParaObjectReturns the version number for this object. Used primarily for optimistic locking.- Specified by:
getVersionin interfaceParaObject- Returns:
- a positive number,
0if unused or-1, indicating a failed update.
-
setVersion
public void setVersion(Long version)
Description copied from interface:ParaObjectSets the version of this object. This value should come from the database.- Specified by:
setVersionin interfaceParaObject- Parameters:
version- a positive number, different than the current value of the version field
-
countLinks
public Long countLinks(String type2)
Description copied from interface:LinkableCount the total number of links between this object and another type of object.- Specified by:
countLinksin interfaceLinkable- Parameters:
type2- the other type of object- Returns:
- the number of links
-
getLinks
public List<Linker> getLinks(String type2, Pager... pager)
Description copied from interface:LinkableReturns all links between this type object and another type of object.
-
getLinkedObjects
public <P extends ParaObject> List<P> getLinkedObjects(String type, Pager... pager)
Description copied from interface:LinkableSimilar toLinkable.getChildren(java.lang.String, com.erudika.para.core.utils.Pager...)but for many-to-many relationships.- Specified by:
getLinkedObjectsin interfaceLinkable- Type Parameters:
P- type of linked objects- Parameters:
type- type of linked objects to look forpager- aPager- Returns:
- a list of linked objects
-
findLinkedObjects
public <P extends ParaObject> List<P> findLinkedObjects(String type, String field, String query, Pager... pager)
Description copied from interface:LinkableSimilar toLinkable.findChildren(java.lang.String, java.lang.String, com.erudika.para.core.utils.Pager...)but for many-to-many relationships. Searches through all linked objects connected to this via aLinkerobject.- Specified by:
findLinkedObjectsin interfaceLinkable- Type Parameters:
P- type of linked objects- Parameters:
type- type of linked objects to look forfield- the name of the field to target (within a nested field "nstd")query- a query stringpager- aPager- Returns:
- a list of linked objects matching the search query
-
isLinked
public boolean isLinked(String type2, String id2)
Description copied from interface:LinkableChecks if this object is linked to another.
-
isLinked
public boolean isLinked(ParaObject toObj)
Description copied from interface:LinkableChecks if a given object is linked to this one.
-
link
public String link(String id2)
Description copied from interface:LinkableLinks an object to this one in a many-to-many relationship. Only a link is created. Objects are left untouched. The type of the second object is automatically determined on read.
-
unlink
public void unlink(String type, String id2)
Description copied from interface:LinkableUnlinks an object from this one. Only a link is deleted. Objects are left untouched.
-
unlinkAll
public void unlinkAll()
Description copied from interface:LinkableUnlinks all objects that are linked to this one. Deletes allLinkerobjects. Only the links are deleted. Objects are left untouched.
-
countChildren
public Long countChildren(String type)
Description copied from interface:LinkableCount the total number of child objects for this object.- Specified by:
countChildrenin interfaceLinkable- Parameters:
type- the other type of object- Returns:
- the number of links
-
getChildren
public <P extends ParaObject> List<P> getChildren(String type, Pager... pager)
Description copied from interface:LinkableReturns all child objects linked to this object.- Specified by:
getChildrenin interfaceLinkable- Type Parameters:
P- the type of children- Parameters:
type- the type of children to look forpager- aPager- Returns:
- a list of
ParaObjectin a one-to-many relationship with this object
-
getChildren
public <P extends ParaObject> List<P> getChildren(String type, String field, String term, Pager... pager)
Description copied from interface:LinkableReturns all child objects linked to this object.- Specified by:
getChildrenin interfaceLinkable- Type Parameters:
P- the type of children- Parameters:
type- the type of children to look forfield- the field name to use as filterterm- the field value to use as filterpager- aPager- Returns:
- a list of
ParaObjectin a one-to-many relationship with this object
-
findChildren
public <P extends ParaObject> List<P> findChildren(String type, String query, Pager... pager)
Description copied from interface:LinkableSearch through all child objects. Only searches child objects directly connected to this parent via theparentidfield.- Specified by:
findChildrenin interfaceLinkable- Type Parameters:
P- the type of children- Parameters:
type- the type of children to look forquery- a query stringpager- aPager- Returns:
- a list of
ParaObjectin a one-to-many relationship with this object
-
deleteChildren
public void deleteChildren(String type)
Description copied from interface:LinkableDeletes all child objects permanently.- Specified by:
deleteChildrenin interfaceLinkable- Parameters:
type- the children's type.
-
-