/* DemoWebAppInit.java {{IS_NOTE Purpose: Description: History: Nov 12, 2008 2:49:39 PM , Created by jumperchen }}IS_NOTE Copyright (C) 2008 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under GPL Version 3.0 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.zksandbox; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.ServletContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zkoss.zk.ui.WebApp; import org.zkoss.zk.ui.util.WebAppInit; /** * @author jumperchen * */ public class DemoWebAppInit implements WebAppInit { private static final Logger log = LoggerFactory.getLogger(DemoWebAppInit.class); final static String PATH = "/"; final static String CONFIG = "zksandbox.properties"; final static String CATEGORY_TYPE = "CATEGORY"; final static String LINK_TYPE = "LINK"; @SuppressWarnings("serial") private static Map<String, Category> _cateMap = new LinkedHashMap<String, Category> () { public Category remove(Object key) { throw new UnsupportedOperationException(); } public void clear() { throw new UnsupportedOperationException(); } }; @SuppressWarnings("serial") private static Map<String, Category> _mobileCateMap = new LinkedHashMap<String, Category> () { public Category remove(Object key) { throw new UnsupportedOperationException(); } public void clear() { throw new UnsupportedOperationException(); } }; public void init(WebApp wapp) throws Exception { loadProperites(wapp.getServletContext()); } static Map<String, Category> getCateMap() { return _cateMap; } static Map<String, Category> getMobilCateMap() { return _mobileCateMap; } private void loadProperites(ServletContext context) { try { BufferedReader bufReader = new BufferedReader( new InputStreamReader(context.getResourceAsStream(PATH + CONFIG))); String prop = null; while ((prop = bufReader.readLine()) != null) { int begin = prop.indexOf("="); if (prop.startsWith("#") || prop.startsWith("!") || begin == -1) continue; final String key = prop.substring(0, begin).trim(); final String values = prop.substring(begin + 1, prop.length()).trim(); final String[] vals = values.split(","); if (vals.length == 0) continue; final String arg0 = vals[0].trim(); if (CATEGORY_TYPE.equals(arg0)) { if (vals.length < 3) { log.error("This category has no enough argument: size less than 3, for example, CATEGORY,IconURL,Label"); continue; } _cateMap.put(key, new Category(key, vals[1].trim(), vals[2].trim(), null)); _mobileCateMap.put(key, new Category(key, vals[1].trim(), vals[2].trim(), null)); } else if (LINK_TYPE.equals(arg0) ) { if (vals.length < 4) { log.error("This category has no enough argument: size less than 4, for example, LINK,IconURL,Label,Href"); continue; } _cateMap.put(key, new Category(key, vals[1].trim(), vals[2].trim(), vals[3].trim())); _mobileCateMap.put(key, new Category(key, vals[1].trim(), vals[2].trim(), vals[3].trim())); } else { Category cate = _cateMap.get(arg0); if (cate == null) { log.error("This category is undefined: " + arg0); continue; } if (vals.length < 4) { log.error("This demo item has no enough argument: size less than 4, for example, categoryId,FileURL,IconURL,Label"); continue; } // [ItemId=CategoryId, Demo File URL, Icon URL, Label] DemoItem item = new DemoItem(key, arg0, vals[1].trim(), vals[2].trim(), vals[3].trim()); cate.addItem(item); //since ZK 6.5 //if item has the fifth val, ignore it on tablet if (vals.length == 4 || !"ignoreMobile".equals(vals[4].trim())) { _mobileCateMap.get(arg0).addItem(item); } } } bufReader.close(); } catch (IOException e) { log.error("Ingored: failed to load a properties file, \nCause: " + e.getMessage()); } } }