package org.jai.search.model;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Product {
private Long id;
private String title;
private String description;
private BigDecimal price;
private boolean soldOut;
private Date availableOn;
private float boostFactor = 1.0f;
private List<String> keywords = new ArrayList<String>();
private final List<Category> categories = new ArrayList<Category>();
private final List<ProductProperty> productProperties = new ArrayList<ProductProperty>();
private List<Specification> specifications = new ArrayList<Specification>();
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(final String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(final String description) {
this.description = description;
}
public List<String> getKeywords() {
return keywords;
}
public void setKeywords(final List<String> keywords) {
this.keywords = keywords;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(final BigDecimal price) {
this.price = price;
}
public boolean isSoldOut() {
return soldOut;
}
public void setSoldOut(final boolean soldOut) {
this.soldOut = soldOut;
}
public Date getAvailableOn() {
return availableOn;
}
public void setAvailableOn(final Date availableOn) {
this.availableOn = availableOn;
}
public void addKeyword(final String keyword) {
keywords.add(keyword);
}
public float getBoostFactor() {
return boostFactor;
}
public void setBoostFactor(final float boostFactor) {
this.boostFactor = boostFactor;
}
public void addCategory(final Category category) {
categories.add(category);
}
public List<Category> getCategories() {
return categories;
}
@Override
public String toString() {
return new ToStringBuilder(this).append(id).append(title)
.append(description).append(price).append(soldOut)
.append(availableOn).append(keywords).append(boostFactor)
.append(categories).toString();
}
public List<ProductProperty> getProductProperties() {
return productProperties;
}
public void addProductProperty(final ProductProperty productProperty) {
productProperties.add(productProperty);
}
public List<Specification> getSpecifications() {
return specifications;
}
public void setSpecifications(final List<Specification> specifications) {
this.specifications = specifications;
}
public void addSpecification(final Specification specification) {
specifications.add(specification);
}
public boolean categoryNameExists(final String catName) {
for (final Category category : categories) {
if (category.getName().equals(catName)) {
return true;
}
}
return false;
}
}