blob: cc744ba93a4f0f70b53e3335d6a6d929c306bbcb [file] [log] [blame]
/**
*
*/
package org.apache.continuum.store.jpa;
import java.util.Date;
import java.util.Map;
import org.apache.continuum.store.api.Query;
/**
* Wraps up retrieval criteria for {@link Project}s.
*
* @author <a href='mailto:rinku@apache.org'>Rahul Thakur</a>
* @version $Id$
* @since 1.2
*/
public class ProjectQuery<Project> implements Query<Project>
{
/**
* Project artifactId criteria.
*/
private String artifactId;
/**
* Project groupId criteria.
*/
private String groupId;
/**
* Project id criteria.
*/
private Long id;
/**
* Project name criteria.
*/
private String name;
/**
* Project Artifact version criteria.
*/
private String version;
private int buildNumber;
private Date dateCreated;
private Date dateUpdated;
private String description;
private String modelEncoding;
/**
* @return the artifactId
*/
public String getArtifactId()
{
return this.artifactId;
}
/**
* @return build number as query critera
*/
public int getBuildNumber()
{
return this.buildNumber;
}
/**
* Determines if a build number criteria was specified in the Project query.
*
* @return
*/
public boolean hasBuildNumber()
{
return ( this.buildNumber > 0 );
}
/**
* @return creation date as query criteria
*/
public Date getDateCreated()
{
return this.dateCreated;
}
/**
* Determines if there was a creation date criteria specified in the ProjectQuery.
*
* @return <code>true</code> if a creation date was specified, else <code>false</code>.
*/
public boolean hasDateCreated()
{
return ( null != this.dateCreated );
}
/**
* @return last update date from query criteria.
*/
public Date getDateUpdated()
{
return this.dateUpdated;
}
/**
* Determine if there was a last update date criteria specified in the ProjectQuery.
*
* @return <code>true</code> if there was a last update date criteria specified, else <code>false</code>.
*/
public boolean hasDateUpdated()
{
return ( null != this.dateUpdated );
}
/**
* @return description criteria from the query.
*/
public String getDescription()
{
return this.description;
}
/**
* Determines if there was description criteria specified in the ProjectQuery.
*
* @return <code>true</code> if there was description criteria specified, else <code>false</code>.
*/
public boolean hasDescription()
{
return ( null != this.description && this.description.length() > 0 );
}
/**
* @return the groupId
*/
public String getGroupId()
{
return this.groupId;
}
/**
* @return the id
*/
public Long getId()
{
return this.id;
}
/**
* @return model encoding criteria from the query.
*/
public String getModelEncoding()
{
return this.modelEncoding;
}
/**
* Determine if there is a model encoding specified in the ProjectQuery.
*
* @return <code>true</code> if there is a model encoding specified, else <code>false</code>.
*/
public boolean hasModelEncoding()
{
return ( null != this.modelEncoding && this.modelEncoding.length() > 0 );
}
/**
* @return the name
*/
public String getName()
{
return this.name;
}
/**
* @return the version
*/
public String getVersion()
{
return this.version;
}
/**
* Determines if an artifact Id criteria was specified.
*
* @return
*/
public boolean hasArtifactId()
{
return ( null != this.artifactId );
}
/**
* Determines if a ProjectGroup Id criteria was specified.
*
* @return
*/
public boolean hasGroupId()
{
return ( null != this.groupId );
}
/**
* Determines if a Project id criteria was specified in the query.
*
* @return
*/
public boolean hasId()
{
return ( null != this.id && this.id >= 0 );
}
/**
* Determines if a project name criteria was specified.
*
* @return
*/
public boolean hasName()
{
return ( null != this.name );
}
/**
* Determines if a Version criteria was specified.
*
* @return
*/
public boolean hasVersion()
{
return ( null != this.version );
}
/**
* @param artifactId
* the artifactId to set
*/
public void setArtifactId( String artifactId )
{
this.artifactId = artifactId;
}
/**
* @param buildNumber
* criteria to set in the ProjectQuery
*/
public void setBuildNumber( int buildNumber )
{
this.buildNumber = buildNumber;
}
/**
* @param created
* criteria to set in the Project Query.
*/
public void setDateCreated( Date dateCreated )
{
this.dateCreated = dateCreated;
}
/**
* @param updated
* date criteria to set in the Project Query.
*/
public void setDateUpdated( Date dateUpdated )
{
this.dateUpdated = dateUpdated;
}
/**
* @param description
*/
public void setDescription( String description )
{
this.description = description;
}
/**
* @param groupId
* the groupId to set
*/
public void setGroupId( String groupId )
{
this.groupId = groupId;
}
/**
* @param id
* the id to set
*/
public void setId( Long id )
{
this.id = id;
}
/**
* @param name
* the name to set
*/
public void setName( String name )
{
this.name = name;
}
/**
* @param version
* the version to set
*/
public void setVersion( String version )
{
this.version = version;
}
/**
* @{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( " project.id =:id " );
}
if ( this.hasDateCreated() )
{
whereClause.put( "dateCreated", this.getDateCreated() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.dateCreated =:dateCreated " );
}
if ( this.hasDateUpdated() )
{
whereClause.put( "dateUpdated", this.getDateUpdated() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.dateUpdated =:dateUpdated " );
}
if ( this.hasDescription() )
{
whereClause.put( "description", this.getDescription() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.description =:description " );
}
if ( this.hasGroupId() )
{
whereClause.put( "groupId", this.getGroupId() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.groupId =:groupId " );
}
if ( this.hasModelEncoding() )
{
whereClause.put( "modelEncoding", this.getModelEncoding() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.modelEncoding =:modelEncoding " );
}
if ( this.hasName() )
{
whereClause.put( "name", this.getName() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.name =:name " );
}
if ( this.hasArtifactId() )
{
whereClause.put( "artifactId", this.getArtifactId() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.artifactId =:artifactId" );
}
if ( this.hasBuildNumber() )
{
whereClause.put( "buildNumber", this.getBuildNumber() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.buildNumber =:buildNumber" );
}
if ( this.hasVersion() )
{
whereClause.put( "version", this.getVersion() );
if ( sb.length() > 0 )
sb.append( "and" );
sb.append( " project.version =:version" );
}
if ( sb.length() > 0 )
sb.insert( 0, " where " );
sb.insert( 0, "select project from Project as project " );
return sb.toString();
}
}