package com.idega.block.boxoffice.business; import java.sql.SQLException; import java.util.List; import com.idega.block.boxoffice.data.BoxCategory; import com.idega.block.boxoffice.data.BoxEntity; import com.idega.block.boxoffice.data.BoxLink; import com.idega.block.text.business.TextFinder; import com.idega.block.text.data.LocalizedText; import com.idega.core.component.data.ICObjectInstance; import com.idega.data.GenericEntity; import com.idega.data.IDOLegacyEntity; import com.idega.presentation.ui.DropdownMenu; import com.idega.util.IWTimestamp; /** * Title: * Description: * Copyright: Copyright (c) 2001 * Company: * @author * @version 1.0 */ public class BoxBusiness { public static final String PARAMETER_BOX_VIEW = "box_view"; public static final String PARAMETER_BOX_ID = "box_id"; public static final String PARAMETER_CATEGORY_ID = "category_id"; public static final String PARAMETER_CATEGORY_DROPDOWN_ID = "category_dropdown_id"; public static final String PARAMETER_CATEGORY_NAME = "category_name"; public static final String PARAMETER_CLOSE = "close"; public static final String PARAMETER_DELETE = "delete"; public static final String PARAMETER_DETACH = "detach"; public static final String PARAMETER_FALSE = "false"; public static final String PARAMETER_FILE_ID = "file_id"; public static final String PARAMETER_LINK_ID = "link_id"; public static final String PARAMETER_LINK_NAME = "link_name"; public static final String PARAMETER_LINK_URL = "link_url"; public static final String PARAMETER_LOCALE_DROP = "locale_drop"; public static final String PARAMETER_LOCALE_ID = "locale_id"; public static final String PARAMETER_MODE = "mode"; public static final String PARAMETER_NEW_ATTRIBUTE = "new_attribute"; public static final String PARAMETER_NEW_OBJECT_INSTANCE = "new_obj_inst"; public static final String PARAMETER_PAGE_ID = "page_id"; public static final String PARAMETER_SAVE = "save"; public static final String PARAMETER_TARGET = "target"; public static final String PARAMETER_TRUE = "true"; public static final String PARAMETER_TYPE = "type"; public static final String CATEGORY_SELECTION = "related_groups"; public static final int LINK = 1; public static final int FILE = 2; public static final int PAGE = 3; public static void saveBox(int boxID,int InstanceId,String attribute){ try { boolean update = false; BoxEntity box = ((com.idega.block.boxoffice.data.BoxEntityHome)com.idega.data.IDOLookup.getHomeLegacy(BoxEntity.class)).createLegacy(); if ( boxID != -1 ) { update = true; box = BoxFinder.getBox(boxID); if ( box == null ) { box = ((com.idega.block.boxoffice.data.BoxEntityHome)com.idega.data.IDOLookup.getHomeLegacy(BoxEntity.class)).createLegacy(); update = false; } } if(attribute != null){ BoxEntity boxAttribute = BoxFinder.getBox(attribute); if ( boxAttribute != null ) { box = boxAttribute; update = true; } box.setAttribute(attribute); } if ( update ) { try { box.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } else { box.insert(); if(InstanceId > 0){ ICObjectInstance objIns = ((com.idega.core.component.data.ICObjectInstanceHome)com.idega.data.IDOLookup.getHomeLegacy(ICObjectInstance.class)).findByPrimaryKeyLegacy(InstanceId); box.addTo(objIns); } } } catch(Exception e) { e.printStackTrace(); } } public static void addToBox(BoxEntity box, int boxCategoryID) { try { BoxCategory category = BoxFinder.getCategory(boxCategoryID); if ( category != null ) { BoxCategory[] categories = (BoxCategory[]) box.findRelated(category); if ( categories == null || categories.length == 0 ) { box.addTo(category); } } } catch (Exception e) { e.printStackTrace(System.err); } } public static boolean deleteBox(BoxEntity box) { try { if ( box != null ) { box.delete(); } return true; } catch (SQLException e) { e.printStackTrace(System.err); return false; } } public static boolean deleteBox(int iObjectInstanceId) { BoxEntity box = BoxFinder.getObjectInstanceFromID(iObjectInstanceId); if(box !=null){ return deleteBox(box,iObjectInstanceId); } return false; } public static boolean deleteBox(int iBoxId,int iObjectInstanceId) { try{ BoxEntity box= ((com.idega.block.boxoffice.data.BoxEntityHome)com.idega.data.IDOLookup.getHomeLegacy(BoxEntity.class)).findByPrimaryKeyLegacy(iBoxId); if(box !=null){ return deleteBox(box,iObjectInstanceId); } } catch(SQLException ex){ } return false; } public static boolean deleteBox(BoxEntity box,int iObjectInstanceId) { try { if (box !=null ) { disconnectBox(box,iObjectInstanceId); box.delete(); } return true; } catch (SQLException e) { e.printStackTrace(System.err); return false; } } public static boolean disconnectBox(int instanceid){ BoxEntity box = BoxFinder.getObjectInstanceFromID(instanceid); if(box!= null){ return disconnectBox(box,instanceid); } return false; } public static boolean disconnectBox(BoxEntity box,int iObjectInstanceId){ try { if(iObjectInstanceId > 0 ){ ICObjectInstance obj = ((com.idega.core.component.data.ICObjectInstanceHome)com.idega.data.IDOLookup.getHomeLegacy(ICObjectInstance.class)).findByPrimaryKeyLegacy(iObjectInstanceId); box.removeFrom(obj); } return true; } catch (SQLException ex) { } return false; } public static int saveLink(int userID,int boxID,int boxCategoryID,int linkID,String boxLinkName,int fileID,int pageID,String boxLinkURL,String target,int iLocaleID) { boolean update = false; boolean newLocText = false; int _linkID = -1; if ( linkID != -1 ) { update = true; } BoxLink boxLink = BoxFinder.getLink(linkID); if ( boxLink != null ) { if ( boxLinkURL != null ) { if ( update ) { try { //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNamePageID()); //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameFileID()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNamePageID()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameFileID()); boxLink.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } } else if ( fileID != -1 ) { if ( update ) { try { //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNamePageID()); //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameURL()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNamePageID()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameURL()); boxLink.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } } else if ( pageID != -1 ) { if ( update ) { try { //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameFileID()); //boxLink.setColumnAsNull(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameURL()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameFileID()); boxLink.removeFromColumn(com.idega.block.boxoffice.data.BoxLinkBMPBean.getColumnNameURL()); boxLink.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } } } BoxLink link = ((com.idega.block.boxoffice.data.BoxLinkHome)com.idega.data.IDOLookup.getHomeLegacy(BoxLink.class)).createLegacy(); if ( update ) { link = BoxFinder.getLink(linkID); if ( link == null ) { link = ((com.idega.block.boxoffice.data.BoxLinkHome)com.idega.data.IDOLookup.getHomeLegacy(BoxLink.class)).createLegacy(); update = false; } } if ( boxCategoryID != -1 ) { link.setBoxCategoryID(boxCategoryID); } if ( target != null ) { link.setTarget(target); } if ( boxLinkURL != null ) { link.setURL(boxLinkURL); } else if ( fileID != -1 ) { link.setFileID(fileID); } else if ( pageID != -1 ) { link.setPageID(pageID); } if ( !update ) { try { link.setCreationDate(IWTimestamp.getTimestampRightNow()); link.setBoxID(boxID); link.setUserID(userID); link.insert(); _linkID = link.getID(); } catch (SQLException e) { e.printStackTrace(System.err); } } else { try { link.update(); _linkID = link.getID(); } catch (SQLException e) { e.printStackTrace(System.err); } } LocalizedText locText = TextFinder.getLocalizedText(link,iLocaleID); if ( locText == null ) { locText = ((com.idega.block.text.data.LocalizedTextHome)com.idega.data.IDOLookup.getHomeLegacy(LocalizedText.class)).createLegacy(); newLocText = true; } locText.setHeadline(boxLinkName); if ( newLocText ) { locText.setLocaleId(iLocaleID); try { locText.insert(); locText.addTo(link); } catch (SQLException e) { e.printStackTrace(System.err); } } else { try { locText.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } return _linkID; } public static void deleteLink(BoxLink link) { try { if ( link != null ) { link.removeFrom(GenericEntity.getStaticInstance(LocalizedText.class)); link.delete(); } } catch (SQLException e) { e.printStackTrace(System.err); } } public static void deleteLink(int linkID) { deleteLink(BoxFinder.getLink(linkID)); } public static int saveCategory(int userID,int boxCategoryID,String categoryName,int iLocaleID) { boolean update = false; boolean newLocText = false; int _boxCategoryID = -1; if ( boxCategoryID != -1 ) { update = true; } BoxCategory category = ((com.idega.block.boxoffice.data.BoxCategoryHome)com.idega.data.IDOLookup.getHomeLegacy(BoxCategory.class)).createLegacy(); if ( update ) { category = BoxFinder.getCategory(boxCategoryID); if ( category == null ) { category = ((com.idega.block.boxoffice.data.BoxCategoryHome)com.idega.data.IDOLookup.getHomeLegacy(BoxCategory.class)).createLegacy(); update = false; } } if ( !update ) { try { category.setUserID(userID); category.insert(); _boxCategoryID = category.getID(); } catch (SQLException e) { e.printStackTrace(System.err); } } else { try { category.update(); _boxCategoryID = category.getID(); } catch (SQLException e) { e.printStackTrace(System.err); } } LocalizedText locText = TextFinder.getLocalizedText(category,iLocaleID); if ( locText == null ) { locText = ((com.idega.block.text.data.LocalizedTextHome)com.idega.data.IDOLookup.getHomeLegacy(LocalizedText.class)).createLegacy(); newLocText = true; } locText.setHeadline(categoryName); locText.setBody(""); locText.setCreated(com.idega.util.IWTimestamp.getTimestampRightNow()); if ( newLocText ) { locText.setLocaleId(iLocaleID); try { locText.insert(); locText.addTo(category); } catch (SQLException e) { e.printStackTrace(System.err); } } else { try { locText.update(); } catch (SQLException e) { e.printStackTrace(System.err); } } return _boxCategoryID; } public static void deleteCategory(int boxCategoryID) { try { BoxCategory category = BoxFinder.getCategory(boxCategoryID); if ( category != null ) { deleteLinks(category); category.delete(); } } catch (SQLException e) { e.printStackTrace(System.err); } } public static DropdownMenu getCategories(String name, int iLocaleId, BoxEntity box, int userID) { DropdownMenu drp = new DropdownMenu(name); List list = BoxFinder.getCategoriesInBox(box,userID); if( list != null ) { for ( int a = 0; a < list.size(); a++) { LocalizedText locText = TextFinder.getLocalizedText((BoxCategory)list.get(a),iLocaleId); String locString = "$language$"; if ( locText != null ) { locString = locText.getHeadline(); } drp.addMenuElement(((BoxCategory)list.get(a)).getID(),locString); } } return drp; } public static void detachCategory(int boxID, int boxCategoryID) { try { BoxEntity boxEntity = BoxFinder.getBox(boxID); BoxCategory boxCategory = BoxFinder.getCategory(boxCategoryID); if ( boxEntity != null && boxCategory != null ) { boxEntity.removeFrom(boxCategory); } } catch (Exception e) { e.printStackTrace(System.err); } } public static void deleteLinks(BoxCategory boxCategory) { try { BoxLink[] links = BoxFinder.getLinksInCategory(boxCategory); if ( links != null ) { for ( int a = 0; a < links.length; a++ ) { deleteLink(links[a]); } } } catch (Exception e) { e.printStackTrace(System.err); } } public static String getLocalizedString(IDOLegacyEntity entity, int iLocaleID) { String locString = null; if ( entity != null ) { LocalizedText locText = TextFinder.getLocalizedText(entity,iLocaleID); if ( locText != null ) { locString = locText.getHeadline(); } } return locString; } }