1 24 package org.riotfamily.pages.riot.dao; 25 26 import java.util.ArrayList ; 27 import java.util.Collection ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.Locale ; 31 32 import org.riotfamily.pages.Site; 33 import org.riotfamily.pages.dao.PageDao; 34 import org.riotfamily.riot.dao.ListParams; 35 import org.riotfamily.riot.dao.ParentChildDao; 36 import org.riotfamily.riot.dao.support.RiotDaoAdapter; 37 import org.springframework.beans.factory.InitializingBean; 38 import org.springframework.dao.DataAccessException; 39 import org.springframework.util.Assert; 40 import org.springframework.util.StringUtils; 41 42 46 public class LocaleRiotDao extends RiotDaoAdapter 47 implements ParentChildDao, InitializingBean { 48 49 private static final String ID_SEPARATOR = ","; 50 51 private PageDao pageDao; 52 53 public LocaleRiotDao() { 54 } 55 56 public void setPageDao(PageDao pageDao) { 57 this.pageDao = pageDao; 58 } 59 60 public void afterPropertiesSet() throws Exception { 61 Assert.notNull(pageDao, "A PageDao must be set."); 62 } 63 64 public Class getEntityClass() { 65 return SiteLocale.class; 66 } 67 68 public Collection list(Object parent, ListParams params) throws DataAccessException { 69 Site site = (Site) parent; 70 if (site == null) { 71 site = pageDao.getDefaultSite(); 72 } 73 List locales = pageDao.getLocales(); 74 ArrayList result = new ArrayList (locales.size()); 75 Iterator it = locales.iterator(); 76 while (it.hasNext()) { 77 Locale locale = (Locale ) it.next(); 78 result.add(new SiteLocale(site, locale)); 79 } 80 return result; 81 } 82 83 public String getObjectId(Object entity) { 84 SiteLocale siteLocale = (SiteLocale) entity; 85 return siteLocale.getSite().getId().toString() 86 + ID_SEPARATOR + siteLocale.getLocale().toString(); 87 } 88 89 public Object load(String id) throws DataAccessException { 90 String [] s = StringUtils.split(id, ID_SEPARATOR); 91 Site site = pageDao.loadSite(new Long (s[0])); 92 Locale locale = StringUtils.parseLocaleString(s[1]); 93 return new SiteLocale(site, locale); 94 } 95 96 public Object getParent(Object entity) { 97 SiteLocale siteLocale = (SiteLocale) entity; 98 return siteLocale.getSite(); 99 } 100 } 101 | Popular Tags |