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 (); } } }