| /** |
| * |
| */ |
| package org.apache.continuum.store.jpa; |
| |
| import java.util.Date; |
| import java.util.Map; |
| |
| import org.apache.continuum.model.project.Project; |
| import org.apache.continuum.model.project.ProjectGroup; |
| import org.apache.continuum.store.api.Query; |
| |
| /** |
| * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a> |
| * @version $Id$ |
| * @since 1.2 |
| */ |
| public class ProjectNotifierQuery<ProjectNotifier> implements Query<ProjectNotifier> |
| { |
| |
| /** |
| * ProjectNotifier creation date criteria. |
| */ |
| private Date dateCreated; |
| |
| /** |
| * ProjectNotifier update date criteria. |
| */ |
| private Date dateUpdated; |
| |
| /** |
| * ProjectNotifier Id criteria. |
| */ |
| private Long id; |
| |
| /** |
| * Determines if a ProjectNotifier is set up on a {@link Project} or a {@link ProjectGroup}. |
| */ |
| private boolean isDefinedOnProject = false; |
| |
| /** |
| * Determines if a {@link ProjectNotifier} is defined by a user. |
| */ |
| private boolean isUserDefined = false; |
| |
| /** |
| * ProjectNotifier model encoding criteria. |
| */ |
| private String modelEncoding; |
| |
| /** |
| * @return |
| * |
| */ |
| public Date getDateCreated() |
| { |
| return this.dateCreated; |
| } |
| |
| /** |
| * @return |
| * @see org.apache.continuum.model.CommonUpdatableEntity#getDateUpdated() |
| */ |
| public Date getDateUpdated() |
| { |
| return this.dateUpdated; |
| } |
| |
| /** |
| * @return |
| */ |
| public Long getId() |
| { |
| return this.id; |
| } |
| |
| /** |
| * @return |
| */ |
| public String getModelEncoding() |
| { |
| return this.modelEncoding; |
| } |
| |
| /** |
| * Determine if a date of creation was specified in the query. |
| * |
| * @return <code>true</code> if a date of creation was specified, else <code>false</code>. |
| */ |
| public boolean hasDateCreated() |
| { |
| return ( null != this.dateCreated ); |
| } |
| |
| /** |
| * Determine if an update date was specified in the query. |
| * |
| * @return <code>true</code> if a date of update was specified, else <code>false</code>. |
| */ |
| public boolean hasDateUpdated() |
| { |
| return ( null != this.dateUpdated ); |
| } |
| |
| /** |
| * |
| * @return |
| */ |
| public boolean hasId() |
| { |
| return ( null != this.id && this.id.longValue() > 0L ); |
| } |
| |
| /** |
| * Determine if there was a model encoding specified in the query. |
| * |
| * @return <code>true</code> if there was a model encoding specified, else <code>false</code>. |
| */ |
| public boolean hasModelEncoding() |
| { |
| return ( null != this.modelEncoding && this.modelEncoding.length() > 0 ); |
| } |
| |
| /** |
| * @return the isDefinedOnProject |
| */ |
| public boolean isDefinedOnProject() |
| { |
| return isDefinedOnProject; |
| } |
| |
| /** |
| * @return the isUserDefined |
| */ |
| public boolean isUserDefined() |
| { |
| return isUserDefined; |
| } |
| |
| /** |
| * @param dateCreated |
| */ |
| public void setDateCreated( Date dateCreated ) |
| { |
| this.dateCreated = dateCreated; |
| } |
| |
| /** |
| * @param dateUpdated |
| */ |
| public void setDateUpdated( Date dateUpdated ) |
| { |
| this.dateUpdated = dateUpdated; |
| } |
| |
| /** |
| * @param isDefinedOnProject |
| * the isDefinedOnProject to set |
| */ |
| public void setDefinedOnProject( boolean isDefinedOnProject ) |
| { |
| this.isDefinedOnProject = isDefinedOnProject; |
| } |
| |
| /** |
| * @param id |
| */ |
| public void setId( Long id ) |
| { |
| this.id = id; |
| } |
| |
| /** |
| * @param modelEncoding |
| */ |
| public void setModelEncoding( String modelEncoding ) |
| { |
| this.modelEncoding = modelEncoding; |
| } |
| |
| /** |
| * @param isUserDefined |
| * the isUserDefined to set |
| */ |
| public void setUserDefined( boolean isUserDefined ) |
| { |
| this.isUserDefined = isUserDefined; |
| } |
| |
| /** |
| * @{inheritDoc} |
| * |
| * @see org.apache.continuum.store.api.Query#toString(java.util.Map) |
| */ |
| public String toString( Map<String, Object> whereClause ) |
| { |
| StringBuffer sb = new StringBuffer(); |
| |
| if ( this.hasId() ) |
| { |
| whereClause.put( "id", this.getId() ); |
| if ( sb.length() > 0 ) |
| sb.append( "and" ); |
| sb.append( " notifier.id =:id " ); |
| } |
| if ( this.hasDateCreated() ) |
| { |
| whereClause.put( "dateCreated", this.getDateCreated() ); |
| if ( sb.length() > 0 ) |
| sb.append( "and" ); |
| sb.append( " notifier.dateCreated =:dateCreated " ); |
| } |
| if ( this.hasDateUpdated() ) |
| { |
| whereClause.put( "dateUpdated", this.getDateUpdated() ); |
| if ( sb.length() > 0 ) |
| sb.append( "and" ); |
| sb.append( " notifier.dateUpdated =:dateUpdated " ); |
| } |
| if ( this.hasModelEncoding() ) |
| { |
| whereClause.put( "modelEncoding", this.getModelEncoding() ); |
| if ( sb.length() > 0 ) |
| sb.append( "and" ); |
| sb.append( " notifier.modelEncoding =:modelEncoding " ); |
| } |
| if ( this.isDefinedOnProject() ) |
| { |
| // TODO: Implement! |
| // Need to check what property is setup on the Notifier. |
| // May need to add a property ORM mapping to persist. |
| } |
| if ( this.isUserDefined() ) |
| { |
| // TODO: Implement! |
| // Need to check what property is setup on the Notifier. |
| // May need to add a property ORM mapping to persist. |
| } |
| |
| if ( sb.length() > 0 ) |
| sb.insert( 0, " where " ); |
| sb.insert( 0, "select project from Project as project " ); |
| |
| return sb.toString(); |
| } |
| |
| } |