package is.idega.idegaweb.marathon.data;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.IDOAddRelationshipException;
import com.idega.data.IDORelationshipException;
import com.idega.data.IDORemoveRelationshipException;
import com.idega.data.query.Column;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
import com.idega.user.data.Group;
import com.idega.user.data.GroupBMPBean;
public class CharityBMPBean extends GenericEntity implements Charity {
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 6827105404436456030L;
protected static final String ENTITY_NAME = "run_charity_organization";
protected static final String COLUMN_NAME = "name";
protected static final String COLUMN_ORGANIZATIONAL_ID = "organizational_id";
private static final String COLUMN_DESCRIPTION = "description";
public String getEntityName() {
return ENTITY_NAME;
}
public void initializeAttributes() {
addAttribute(getIDColumnName());
addAttribute(COLUMN_NAME, "Name", String.class);
addAttribute(COLUMN_ORGANIZATIONAL_ID, "Organizational ID", String.class);
addAttribute(COLUMN_DESCRIPTION, "Description", String.class, 1000);
this.addManyToManyRelationShip(Group.class);
}
//getters
public String getName() {
return getStringColumnValue(COLUMN_NAME);
}
public String getOrganizationalID() {
return getStringColumnValue(COLUMN_ORGANIZATIONAL_ID);
}
public String getDescription() {
return getStringColumnValue(COLUMN_DESCRIPTION);
}
//setters
public void setName(String name) {
setColumn(COLUMN_NAME, name);
}
public void setOrganizationalID(String organizationalId) {
setColumn(COLUMN_ORGANIZATIONAL_ID, organizationalId);
}
public void setDescription(String description) {
setColumn(COLUMN_DESCRIPTION, description);
}
//ejb
public void removeFromGroup(Group group) {
try {
super.idoRemoveFrom(group);
} catch (IDORemoveRelationshipException e) {
e.printStackTrace();
}
}
public void addToGroup(Group group) {
try {
super.idoAddTo(group);
} catch (IDOAddRelationshipException e) {
e.printStackTrace();
}
}
public Collection ejbFindAllCharities() throws FinderException {
SelectQuery query = idoSelectPKQuery();
query.addOrder(new Table(this), COLUMN_NAME, true);
return idoFindPKsByQuery(query);
}
public Object ejbFindCharityByOrganizationalId(String organizationalId) throws FinderException {
Table table = new Table(this);
Column orgId = new Column(table, COLUMN_ORGANIZATIONAL_ID);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
query.addCriteria(new MatchCriteria(orgId, MatchCriteria.EQUALS, organizationalId));
return idoFindOnePKByQuery(query);
}
public Collection ejbFindCharitiesByRunYearID(Integer runYearID) throws IDORelationshipException, FinderException {
Table table = new Table(this);
Table runYearTable = new Table(Group.class);
Column charityIDColumn = new Column(table, getIDColumnName());
Column runYearIDColumn = new Column(runYearTable, GroupBMPBean.getColumnNameGroupID());
SelectQuery query = new SelectQuery(table);
query.addManyToManyJoin(table, runYearTable);
query.addColumn(charityIDColumn);
query.addCriteria(new MatchCriteria(runYearIDColumn, MatchCriteria.EQUALS, runYearID));
query.addOrder(table, COLUMN_NAME, true);
return this.idoFindPKsByQuery(query);
}
}