/* * $Id: MetaDataBMPBean.java,v 1.9 2008/06/05 20:42:14 eiki Exp $ * * Copyright (C) 2001-2006 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. Use is subject to * license terms. * */ package com.idega.data; import java.sql.SQLException; import java.util.Collection; import javax.ejb.FinderException; import com.idega.data.query.Column; import com.idega.data.query.MatchCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; /** * <p> * This entity class for a general Meta-data table. IDO Entities can easily add * a many-to-many relation to this entity and thus gaining the functionality to * store arbitary key/value pairs. * <p> * Last modified: $Date: 2008/06/05 20:42:14 $ by $Author: eiki $ * * @author <a href="eiki@idega.is">Eirikur S. Hrafnsson</a>,<a * href="mailto:tryggvil@idega.com">Tryggvi Larusson</a> * @version $Revision: 1.9 $ */ public class MetaDataBMPBean extends com.idega.data.GenericEntity implements com.idega.data.MetaData { private static final long serialVersionUID = 6936023370927884237L; public static final String COLUMN_META_KEY ="METADATA_NAME"; public static final String COLUMN_META_VALUE = "METADATA_VALUE"; public static final String COLUMN_META_TYPE = "META_DATA_TYPE"; public static final String TABLE_NAME="IC_METADATA"; protected MetaDataBMPBean() { super(); } protected MetaDataBMPBean(int id) throws SQLException { super(id); } @Override public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(COLUMN_META_KEY, "The key name", true, true, String.class, 255); addAttribute(COLUMN_META_VALUE, "The key's value", true, true, String.class, 2000); addAttribute(COLUMN_META_TYPE, "The value's type", true, true, String.class, 255); addIndex("IDX_IC_METADATA_1", new String[] { COLUMN_META_KEY, COLUMN_META_VALUE }); addIndex("IDX_IC_METADATA_2", new String[] { COLUMN_META_KEY }); addIndex("IDX_IC_METADATA_3", new String[] { COLUMN_META_VALUE }); addIndex("IDX_IC_METADATA_4", new String[] { COLUMN_META_KEY, COLUMN_META_VALUE, COLUMN_META_TYPE }); } @Override public String getEntityName() { return (TABLE_NAME); } @Override public String getName() { return (String) getColumnValue(COLUMN_META_KEY); } public String getMetaDataName() { return getName(); } public String getMetaDataValue() { return getValue(); } public String getValue() { return (String) getColumnValue(COLUMN_META_VALUE); } public String getMetaDataType() { return getType(); } public String getType() { return (String) getColumnValue(COLUMN_META_TYPE); } public void setValue(String value) { setColumn(COLUMN_META_VALUE, value); } public void setMetaDataValue(String value) { setValue(value); } public void setMetaDataName(String name) { setName(name); } public void setMetaDataNameAndValue(String name, String value) { setName(name); setValue(value); } @Override public void setName(String name) { setColumn(COLUMN_META_KEY, name); } public void setMetaDataType(String type) { setType(type); } public void setType(String type) { setColumn(COLUMN_META_TYPE, type); } @SuppressWarnings("unchecked") public Collection<Object> ejbFindAllByMetaDataNameAndType(String name, String type) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new Column(table, getIDColumnName())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_META_KEY), MatchCriteria.EQUALS, name)); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_META_TYPE), MatchCriteria.EQUALS, type)); return this.idoFindPKsByQuery(query); } public Object ejbFindByMetaDataNameAndValueAndType(String name, String value, String type) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new Column(table, getIDColumnName())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_META_KEY), MatchCriteria.EQUALS, name)); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_META_VALUE), MatchCriteria.EQUALS, value)); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_META_TYPE), MatchCriteria.EQUALS, type)); return this.idoFindOnePKByQuery(query); } }