package se.cubecon.bun24.viewpoint.data;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.IDOLookup;
import com.idega.data.IDOQuery;
import com.idega.user.data.Group;
import com.idega.user.data.GroupHome;
/**
* Last modified: $Date: 2004/02/23 14:36:06 $ by $Author: staffan $
*
* @author <a href="http://www.staffannoteberg.com">Staffan N�teberg</a>
* @version $Revision: 1.16 $
*/
public class SubCategoryBMPBean extends GenericEntity implements SubCategory {
private static final String ENTITY_NAME = "vp_subcategory";
private static final String COLUMN_ID = ENTITY_NAME + "_id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_TOPCATEGORY_ID = "topcategory_id";
private static final String COLUMN_HANDLERGROUP_ID = "handlergroup_id";
public String getEntityName() {
return ENTITY_NAME;
}
public void insertStartData () throws Exception {
super.insertStartData ();
log ("��� Invoked " + ENTITY_NAME + ".insertStartData ()");
final String [][] startData = {
{ "Anordnare", "Barnomsorg", "Myndighetsgruppen" },
{ "Betalningar", "Barnomsorg", "Ekonomi" },
{ "K�tid", "Barnomsorg", "Kundvalsgruppen" },
{ "Regelverk", "Barnomsorg", "Kundvalsgruppen" },
{ "Taxan", "Barnomsorg", "Kundvalsgruppen" },
{ "�vrigt", "Barnomsorg", "Kundvalsgruppen" },
{ "Fritids", "Skola", "Kundvalsgruppen" },
{ "F�rskoleklass", "Skola", "Kundvalsgruppen" },
{ "Likv�rdighetsgaranti", "Skola", "Myndighetsgruppen" },
{ "Modersm�l", "Skola", "Myndighetsgruppen" },
{ "Regelverk", "Skola", "Kundvalsgruppen" },
{ "Skolskjuts", "Skola", "Myndighetsgruppen" },
{ "Skolval", "Skola", "Kundvalsgruppen" },
{ "�vrigt", "Skola", "Kundvalsgruppen" },
{ "Elevv�rd", "Gymnasieskola", "Myndighetsgruppen" },
{ "Inackorderingsbidrag", "Gymnasieskola", "Myndighetsgruppen" },
{ "Intagning", "Gymnasieskola", "Intagningsgruppen" },
{ "Programval", "Gymnasieskola", "Kundvalsgruppen" },
{ "Skolh�lsov�rd", "Gymnasieskola", "Myndighetsgruppen" },
{ "Studiebidrag", "Gymnasieskola", "Myndighetsgruppen" },
{ "�vrigt", "Gymnasieskola", "Kundvalsgruppen" },
{ "Anordnare", "Komvux", "Myndighetsgruppen" },
{ "Kurser/utbud", "Komvux", "Kundvalsgruppen" },
{ "SFI", "Komvux", "Kundvalsgruppen" },
{ "Studiebidrag", "Komvux", "Myndighetsgruppen" },
{ "Studiev�gledning", "Komvux", "Kundvalsgruppen" },
{ "�vrigt", "Komvux", "Kundvalsgruppen" },
{ "Beslut i n�mnden", "Politiker", "Namndsekreterare" },
{ "Enskilt �rende", "Politiker", "Myndighetsgruppen" },
{ "F�rslag", "Politiker", "Namndsekreterare" },
{ "Kundvalet", "Politiker", "Kundvalsgruppen" },
{ "�vrigt", "Politiker", "Namndsekreterare" },
{ "Denna sajt", "Myndigheten", "Kundvalsgruppen" },
{ "Barnomsorgscheck", "Myndigheten", "Finansgruppen" },
{ "Handikapp", "Myndigheten", "Myndighetsgruppen" },
{ "Likv�rdighetsgaranti", "Myndigheten", "Myndighetsgruppen" },
{ "Service", "Myndigheten", "Kundvalsgruppen" },
{ "Skolpeng", "Myndigheten", "Finansgruppen" },
{ "�vrigt", "Myndigheten", "Myndighetsgruppen" },
};
final TopCategoryHome topCategoryHome
= (TopCategoryHome) IDOLookup.getHome (TopCategory.class);
final TopCategory [] topCategories = topCategoryHome.findAll ();
final Map topCategoriesMap = new HashMap ();
for (int i = 0; i < topCategories.length; i++) {
topCategoriesMap.put (topCategories [i].getName (),
topCategories [i].getPrimaryKey ());
}
final Map groupsMap = new HashMap ();
SubCategoryHome subCategoryHome
= (SubCategoryHome) IDOLookup.getHome(SubCategory.class);
for (int i = 0; i < startData.length; i++) {
final String subCategoryName = startData [i][0];
final String topCategoryName = startData [i][1];
final String groupName = startData [i][2];
final Integer topCategoryId
= (Integer) topCategoriesMap.get (topCategoryName);
if (!groupsMap.containsKey (groupName)) {
addGroupToDatabaseAndMap (groupName, groupsMap);
}
final Integer handlerGroupId = (Integer) groupsMap.get (groupName);
if (topCategoryId != null && handlerGroupId != null) {
final SubCategory subCategory = subCategoryHome.create ();
subCategory.setName (subCategoryName);
subCategory.setHandlerGroupId (handlerGroupId.intValue ());
subCategory.setTopCategoryId (topCategoryId.intValue ());
subCategory.store ();
} else {
logWarning ("Couldn't store sub category ("
+ subCategoryName + ", " + topCategoryName
+ ", " + groupName + ") with ids (" +
topCategoryId + ", " + handlerGroupId + ")");
}
}
}
public void initializeAttributes () {
addAttribute(COLUMN_ID, "Id", Integer.class);
setAsPrimaryKey (COLUMN_ID, true);
addAttribute (COLUMN_NAME, "Name", String.class);
addManyToOneRelationship (COLUMN_TOPCATEGORY_ID, TopCategory.class);
addManyToOneRelationship (COLUMN_HANDLERGROUP_ID, Group.class);
}
public String getName () {
return getStringColumnValue (COLUMN_NAME);
}
public Group getHandlerGroup () {
return (Group) getColumnValue (COLUMN_HANDLERGROUP_ID);
}
public TopCategory getTopCategory () {
return (TopCategory) getColumnValue (COLUMN_TOPCATEGORY_ID);
}
public void setName (final String name) {
setColumn (COLUMN_NAME, name);
}
public void setTopCategoryId (final int id) {
setColumn (COLUMN_TOPCATEGORY_ID, id);
}
public void setHandlerGroupId (final int id) {
setColumn (COLUMN_HANDLERGROUP_ID, id);
}
public Collection ejbFindSubCategories (final int topCategoryId)
throws FinderException {
final String sql = "select * from " + ENTITY_NAME + " where "
+ COLUMN_TOPCATEGORY_ID + " = '" + topCategoryId + "'";
return idoFindPKsBySQL (sql);
}
public Collection ejbFindAllSubCategories () throws FinderException {
final String sql = "select * from " + ENTITY_NAME;
return idoFindPKsBySQL (sql);
}
public Integer ejbFindSubCategoryByName(String name) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this).appendWhereEqualsQuoted(COLUMN_NAME, name);
return (Integer) super.idoFindOnePKByQuery(query);
}
private void addGroupToDatabaseAndMap (final String groupName,
final Map groupsMap) {
try {
final GroupHome home = (GroupHome) IDOLookup.getHome(Group.class);
final Group group = home.create ();
group.setName (groupName);
group.store ();
groupsMap.put (groupName, group.getPrimaryKey ());
} catch (final Exception e) {
e.printStackTrace ();
}
}
}