package com.idega.block.blog.business; import java.util.List; import java.util.Locale; import java.util.Vector; import javax.ejb.FinderException; import com.idega.block.blog.data.BlogEntity; import com.idega.block.blog.data.BlogEntityBMPBean; import com.idega.block.text.business.ContentFinder; import com.idega.block.text.business.ContentHelper; import com.idega.block.text.data.Content; import com.idega.block.text.data.ContentBMPBean; import com.idega.block.text.data.LocalizedText; import com.idega.block.text.data.LocalizedTextBMPBean; import com.idega.core.localisation.business.ICLocaleBusiness; import com.idega.data.IDOLookupException; import com.idega.data.query.AND; import com.idega.data.query.InCriteria; 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.util.IWTimestamp; import com.idega.util.ListUtil; /** * Title: Description: Copyright: Copyright (c) 2000-2001 idega.is All Rights * Reserved Company: idega * * @author <a href="mailto:aron@idega.is">Aron Birkir</a> * @version 1.1 * @deprecated replaced by BlogBusinessBean */ public class BlogFinder { public static final int PUBLISHISING = 1, UNPUBLISHED = 2, PUBLISHED = 3; public BlogFinder() { } public static List listOfAllBlogEntityInCategory(int[] blogCategoryId, int iLocaleId) { return listOfPublishingBlog(blogCategoryId, iLocaleId, true); } public static List listOfBlogEntityInCategory(int[] blogCategoryId, int iLocaleId) { return listOfPublishingBlog(blogCategoryId, iLocaleId, false); } public static List listOfBlogEntityInCategory(int blogCategoryId) { return listOfPublishingBlog(blogCategoryId, false); } public static List listOfPublishingBlog(int blogFolderId, boolean ignorePublishingDates) { Table blog = new Table(com.idega.block.blog.data.BlogEntityBMPBean.getEntityTableName(), "n"); Table content = new Table(com.idega.block.text.data.ContentBMPBean.getEntityTableName(), "c"); SelectQuery query = new SelectQuery(blog); query.addColumn(new WildCardColumn(blog)); query.addColumn(new WildCardColumn(content)); query.addJoin(blog, BlogEntityBMPBean.getColumnNameContentId(), content, ContentBMPBean.getEntityTableName() + "_ID"); query.addCriteria(new MatchCriteria(blog, BlogEntityBMPBean.getColumnNameFolderID(), MatchCriteria.EQUALS, blogFolderId)); if (!ignorePublishingDates) { IWTimestamp today = IWTimestamp.RightNow(); MatchCriteria from = new MatchCriteria(content, ContentBMPBean.getColumnNamePublishFrom(), MatchCriteria.LESSEQUAL, today.getTimestamp()); MatchCriteria to = new MatchCriteria(content, ContentBMPBean.getColumnNamePublishTo(), MatchCriteria.GREATEREQUAL, today.getTimestamp()); query.addCriteria(new AND(from, to)); } query.addOrder(content, ContentBMPBean.getColumnNameCreated(), false); try { return ListUtil.convertCollectionToList((((com.idega.block.blog.data.BlogEntityHome) com.idega.data.IDOLookup.getHome(BlogEntity.class))).findAll(query.toString())); } catch (IDOLookupException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FinderException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static List listOfPublishingBlog(int[] blogFolderIds, int iLocaleId, boolean ignorePublishingDates) { String middleTable = ((com.idega.block.text.data.ContentHome) com.idega.data.IDOLookup.getHomeLegacy(Content.class)).createLegacy().getLocalizedTextMiddleTableName(((com.idega.block.text.data.LocalizedTextHome) com.idega.data.IDOLookup.getHomeLegacy(LocalizedText.class)).createLegacy(), ((com.idega.block.text.data.ContentHome) com.idega.data.IDOLookup.getHomeLegacy(Content.class)).createLegacy()); Table blog = new Table(com.idega.block.blog.data.BlogEntityBMPBean.getEntityTableName(), "n"); Table content = new Table(com.idega.block.text.data.ContentBMPBean.getEntityTableName(), "c"); Table text = new Table(com.idega.block.text.data.LocalizedTextBMPBean.getEntityTableName(), "t"); Table middle = new Table(middleTable, "m"); SelectQuery query = new SelectQuery(blog); query.addColumn(new WildCardColumn(blog)); query.addColumn(new WildCardColumn(content)); query.addJoin(blog, BlogEntityBMPBean.getColumnNameContentId(), content, ContentBMPBean.getEntityTableName() + "_ID"); query.addJoin(content, ContentBMPBean.getEntityTableName() + "_ID", middle, ContentBMPBean.getEntityTableName() + "_ID"); query.addJoin(content, ContentBMPBean.getEntityTableName() + "_ID", middle, ContentBMPBean.getEntityTableName() + "_ID"); query.addJoin(middle, LocalizedTextBMPBean.getEntityTableName() + "_ID", text, LocalizedTextBMPBean.getEntityTableName() + "_ID"); query.addCriteria(new InCriteria(blog, BlogEntityBMPBean.getColumnNameFolderID(), blogFolderIds)); query.addCriteria(new MatchCriteria(text, LocalizedTextBMPBean.getColumnNameLocaleId(), MatchCriteria.EQUALS, iLocaleId)); if (!ignorePublishingDates) { IWTimestamp today = IWTimestamp.RightNow(); MatchCriteria from = new MatchCriteria(content, ContentBMPBean.getColumnNamePublishFrom(), MatchCriteria.LESSEQUAL, today.getTimestamp()); MatchCriteria to = new MatchCriteria(content, ContentBMPBean.getColumnNamePublishTo(), MatchCriteria.GREATEREQUAL, today.getTimestamp()); query.addCriteria(new AND(from, to)); } query.addOrder(content, ContentBMPBean.getColumnNameCreated(), false); try { return ListUtil.convertCollectionToList((((com.idega.block.blog.data.BlogEntityHome) com.idega.data.IDOLookup.getHome(BlogEntity.class))).findAll(query.toString())); } catch (IDOLookupException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FinderException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static List listOfBlogHelpersInCategory(int[] blogCategoryId, int maxNumberOfBlog, Locale locale) { return listOfBlogHelpersInCategory(blogCategoryId, maxNumberOfBlog, getLocaleId(locale)); } public static List listOfAllBlogHelpersInCategory(int[] blogCategoryId, int maxNumberOfBlog, Locale locale) { int iLocaleId = getLocaleId(locale); List L = listOfAllBlogEntityInCategory(blogCategoryId, iLocaleId); return listOfBlogHelpersInCategory(L, blogCategoryId, maxNumberOfBlog, iLocaleId); } public static List listOfBlogHelpersInCategory(int[] blogCategoryId, int maxNumberOfBlog, int iLocaleId) { List L = listOfBlogEntityInCategory(blogCategoryId, iLocaleId); return listOfBlogHelpersInCategory(L, blogCategoryId, maxNumberOfBlog, iLocaleId); } private static List listOfBlogHelpersInCategory(List L, int[] blogCategoryId, int maxNumberOfBlog, int iLocaleId) { if (L != null) { int len = L.size(); Vector V = new Vector(); for (int i = 0; i < len && i < maxNumberOfBlog; i++) { BlogEntity blog = (BlogEntity) L.get(i); BlogHelper nh = getBlogHelper(blog, iLocaleId); if (nh != null) { V.add(nh); } } return V; } return null; } public static BlogHelper getBlogHelper(BlogEntity blog) { BlogHelper NH = new BlogHelper(); BlogEntity N = blog; if (N != null) { ContentHelper ch = ContentFinder.getContentHelper(N.getContentId()); NH.setBlog(N); NH.setContentHelper(ch); return NH; } else { return null; } } public static BlogHelper getBlogHelper(BlogEntity blog, int iLocaleId) { BlogHelper NH = new BlogHelper(); BlogEntity N = blog; if (N != null) { ContentHelper ch = ContentFinder.getContentHelper(N.getContentId(), iLocaleId); NH.setBlog(N); NH.setContentHelper(ch); return NH; } else { return null; } } public static BlogHelper getBlogHelper(int iBlogEntityId) { BlogEntity N = getBlog(iBlogEntityId); return getBlogHelper(N); } public static BlogEntity getBlog(int iBlogId) { try { return ((com.idega.block.blog.data.BlogEntityHome) com.idega.data.IDOLookup.getHome(BlogEntity.class)).findByPrimaryKey(new Integer(iBlogId)); } catch (IDOLookupException e) { e.printStackTrace(); return null; } catch (FinderException e) { e.printStackTrace(); return null; } } public static int getLocaleId(Locale locale) { return ICLocaleBusiness.getLocaleId(locale); } public static Locale getLocale(int iLocaleId) { Locale L = ICLocaleBusiness.getLocale(iLocaleId); if (L == null) { L = new Locale("is", "IS"); } return L; } }