/*
* Created on Oct 19, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.idega.block.favorites.data;
import java.sql.Timestamp;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.query.Column;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.OR;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.user.data.User;
/**
* @author Anna
*/
public class FavoriteBMPBean extends GenericEntity implements Favorite {
public static final String ENTITY_NAME = "fav_favorites";
public static final String COLUMN_FAVORITE_ID = "favorite_id";
public static final String COLUMN_USER_ID = "user_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_CREATED_DATE = "created_date";
public static final String COLUMN_URL = "URL";
public static final String COLUMN_IS_QUICKLINK = "is_quicklink";
public static final String COLUMN_IS_DELETED = "is_deleted";
public static final String COLUMN_FAVORITE_TYPE = "favorite_type";
public String getEntityName() {
return ENTITY_NAME;
}
public void initializeAttributes() {
addAttribute(COLUMN_FAVORITE_ID);
setAsPrimaryKey(COLUMN_FAVORITE_ID, true);
addAttribute(COLUMN_NAME, "Name", String.class);
addAttribute(COLUMN_CREATED_DATE, "Date", Timestamp.class);
addAttribute(COLUMN_URL, "URL", String.class);
addAttribute(COLUMN_IS_QUICKLINK, "Is quicklink", Boolean.class);
addAttribute(COLUMN_IS_DELETED, "Is deleted", Boolean.class);
addAttribute(COLUMN_FAVORITE_TYPE,"Favorite type", String.class, 1);
addManyToOneRelationship(COLUMN_USER_ID, User.class);
}
///////////////////////////////////////////////////
// getters
///////////////////////////////////////////////////
public User getOwner() {
return (User) getColumnValue(COLUMN_USER_ID);
}
public String getName(){
return getStringColumnValue(COLUMN_NAME);
}
public Timestamp getTimestamp() {
return (Timestamp) getColumnValue(COLUMN_CREATED_DATE);
}
public String getURL() {
return getStringColumnValue(COLUMN_URL);
}
public boolean isQuickLink() {
return getBooleanColumnValue(COLUMN_IS_QUICKLINK, false);
}
public boolean isDeleted() {
return getBooleanColumnValue(COLUMN_IS_DELETED, false);
}
public String getFavoriteType() {
return getStringColumnValue(COLUMN_FAVORITE_TYPE);
}
///////////////////////////////////////////////////
// setters
///////////////////////////////////////////////////
public void setOwner(User user_id) {
setColumn(COLUMN_USER_ID, user_id);
}
public void setName(String name){
setColumn(COLUMN_NAME, name);
}
public void setTimestamp(Timestamp created_date) {
setColumn(COLUMN_CREATED_DATE, created_date);
}
public void setURL(String URL) {
setColumn(COLUMN_URL, URL);
}
public void setAsQuickLink(boolean is_quicklink) {
setColumn(COLUMN_IS_QUICKLINK, is_quicklink);
}
public void setDeleted(boolean is_deleted) {
setColumn(COLUMN_IS_DELETED, is_deleted);
}
public void setFavoriteType(String type) {
setColumn(COLUMN_FAVORITE_TYPE, type);
}
///////////////////////////////////////////////////
// finders
///////////////////////////////////////////////////
public Integer ejbFindByUserAndURL(User user, String URL) throws FinderException {
return ejbFindByUserAndURL(user, URL, null);
}
public Integer ejbFindByUserAndURL(User user, String URL, String favoriteType) throws FinderException {
Table favorites = new Table(this);
SelectQuery query = new SelectQuery(favorites);
query.addColumn(favorites, COLUMN_FAVORITE_ID);
query.addCriteria(new MatchCriteria(favorites, COLUMN_USER_ID, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(favorites, COLUMN_URL, MatchCriteria.EQUALS, URL));
if (favoriteType != null) {
query.addCriteria(new MatchCriteria(favorites, COLUMN_FAVORITE_TYPE, MatchCriteria.EQUALS, favoriteType));
}
MatchCriteria isNotDeleted = new MatchCriteria(favorites, COLUMN_IS_DELETED, MatchCriteria.EQUALS, false);
MatchCriteria isNull = new MatchCriteria(new Column(favorites, COLUMN_IS_DELETED), false);
query.addCriteria(new OR(isNotDeleted, isNull));
return (Integer) idoFindOnePKBySQL(query.toString());
}
public Integer ejbFindByUserAndName(User user, String name) throws FinderException {
return ejbFindByUserAndName(user, name, null);
}
public Integer ejbFindByUserAndName(User user, String name, String favoriteType) throws FinderException {
Table favorites = new Table(this);
SelectQuery query = new SelectQuery(favorites);
query.addColumn(favorites, COLUMN_FAVORITE_ID);
query.addCriteria(new MatchCriteria(favorites, COLUMN_USER_ID, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(favorites, COLUMN_NAME, MatchCriteria.EQUALS, name));
if (favoriteType != null) {
query.addCriteria(new MatchCriteria(favorites, COLUMN_FAVORITE_TYPE, MatchCriteria.EQUALS, favoriteType));
}
MatchCriteria isNotDeleted = new MatchCriteria(favorites, COLUMN_IS_DELETED, MatchCriteria.EQUALS, false);
MatchCriteria isNull = new MatchCriteria(new Column(favorites, COLUMN_IS_DELETED), false);
query.addCriteria(new OR(isNotDeleted, isNull));
return (Integer) idoFindOnePKBySQL(query.toString());
}
public Collection ejbFindAllByUser(User user) throws FinderException {
return ejbFindAllByUser(user, null);
}
public Collection ejbFindAllByUser(User user, String favoriteType) throws FinderException {
Table favorites = new Table(this);
SelectQuery query = new SelectQuery(favorites);
query.addColumn(favorites, COLUMN_FAVORITE_ID);
query.addCriteria(new MatchCriteria(favorites, COLUMN_USER_ID, MatchCriteria.EQUALS, user));
if (favoriteType != null) {
query.addCriteria(new MatchCriteria(favorites, COLUMN_FAVORITE_TYPE, MatchCriteria.EQUALS, favoriteType));
}
MatchCriteria isNotDeleted = new MatchCriteria(favorites, COLUMN_IS_DELETED, MatchCriteria.EQUALS, false);
MatchCriteria isNull = new MatchCriteria(new Column(favorites, COLUMN_IS_DELETED), false);
query.addCriteria(new OR(isNotDeleted, isNull));
query.addOrder(favorites, COLUMN_CREATED_DATE, true);
return idoFindPKsBySQL(query.toString());
}
public Collection ejbFindAllQuickLinksByUser(User user) throws FinderException {
Table favorites = new Table(this);
SelectQuery query = new SelectQuery(favorites);
query.addColumn(favorites, COLUMN_FAVORITE_ID);
query.addCriteria(new MatchCriteria(favorites, COLUMN_USER_ID, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(favorites, COLUMN_IS_QUICKLINK, MatchCriteria.EQUALS, true));
MatchCriteria isNotDeleted = new MatchCriteria(favorites, COLUMN_IS_DELETED, MatchCriteria.EQUALS, false);
MatchCriteria isNull = new MatchCriteria(new Column(favorites, COLUMN_IS_DELETED), false);
query.addCriteria(new OR(isNotDeleted, isNull));
query.addOrder(favorites, COLUMN_CREATED_DATE, true);
return idoFindPKsBySQL(query.toString());
}
}