1 /** 2 * Copyright 2011-2014 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 package org.kuali.mobility.dining.dao; 16 17 import org.apache.log4j.Logger; 18 import org.kuali.mobility.dining.entity.DiningHall; 19 import org.kuali.mobility.dining.entity.Menu; 20 import org.kuali.mobility.dining.entity.MenuItem; 21 import org.kuali.mobility.dining.entity.MenuItemGroup; 22 import org.springframework.stereotype.Repository; 23 24 import java.util.ArrayList; 25 import java.util.List; 26 27 /** 28 * @author Kuali Mobility Team (mobility.dev@kuali.org) 29 */ 30 @Repository 31 public class DiningDaoImpl implements DiningDao { 32 private static final Logger LOG = Logger.getLogger(DiningDaoImpl.class); 33 34 private List<DiningHall> diningHalls; 35 36 public List<DiningHall> getDiningHalls() { 37 return diningHalls; 38 } 39 40 public List<Menu> getMenus() { 41 List<Menu> menus = new ArrayList<Menu>(); 42 for( DiningHall hall : getDiningHalls() ) { 43 menus.addAll( hall.getMenus() ); 44 } 45 return menus; 46 } 47 48 public List<MenuItem> getMenuItems() { 49 List<MenuItem> menuItems = new ArrayList<MenuItem>(); 50 for( DiningHall hall : getDiningHalls() ) { 51 for( Menu menu : hall.getMenus() ) { 52 for(MenuItemGroup group : menu.getItemGroups()) { 53 menuItems.addAll(group.getMenuItems()); 54 } 55 } 56 } 57 return menuItems; 58 } 59 60 public void setDiningHalls(List<DiningHall> diningHalls) { 61 this.diningHalls = diningHalls; 62 } 63 64 public void setMenus(List<Menu> menus) { 65 // do nothing 66 } 67 68 public void setMenuItems(List<MenuItem> menuItems) { 69 // do nothing 70 } 71 72 /* 73 private String getXmlUrl(String campusCode) { 74 String url = null; 75 List<String> urls = getDiningUrls().get(campusCode); 76 if (urls != null && urls.size() > 0) { 77 url = urls.get(0); 78 } 79 return url; 80 } 81 82 @SuppressWarnings("unchecked") 83 private List<Menu> parseUrl(String url){ 84 List<Menu> menus = new ArrayList<Menu>(); 85 try { 86 // Set up formatters 87 SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); 88 // Process the XML 89 Document doc = retrieveDocumentFromUrl(url, 5000, 5000); 90 Element root = doc.getRootElement(); 91 List<Element> xmlMenus = root.getChildren("menu"); 92 for (Iterator<Element> iterator = xmlMenus.iterator(); iterator.hasNext();) { 93 Element xmlMenu = iterator.next(); 94 // Make the date format configurable 95 String dateStr = xmlMenu.getChildText("date"); 96 Menu menu = new Menu(); 97 try { 98 Date date = sdf.parse(dateStr); 99 menu.setDate(date); 100 List<Element> items = xmlMenu.getChildren("item"); 101 for (Iterator<Element> itemItr = items.iterator(); itemItr.hasNext();) { 102 try { 103 Element xmlItem = itemItr.next(); 104 String name = xmlItem.getChildText("name"); 105 String priceStr = xmlItem.getChildText("price"); 106 double price = Double.parseDouble(priceStr); 107 MenuItem item = new MenuItem(name, price); 108 menu.getItems().add(item); 109 } catch (Exception e) {} 110 } 111 menus.add(menu); 112 } catch (ParseException e) {} 113 } 114 } catch (JDOMException e) { 115 LOG.error(e.getMessage(), e); 116 } catch (IOException e) { 117 LOG.error(e.getMessage(), e); 118 } 119 return menus; 120 } 121 122 private Document retrieveDocumentFromUrl(String urlStr, int connectTimeout, int readTimeout) throws IOException, JDOMException { 123 SAXBuilder builder = new SAXBuilder(); 124 Document doc = null; 125 URL urlObj = new URL(urlStr); 126 URLConnection urlConnection = urlObj.openConnection(); 127 urlConnection.setConnectTimeout(connectTimeout); 128 urlConnection.setReadTimeout(readTimeout); 129 doc = builder.build(urlConnection.getInputStream()); 130 return doc; 131 } 132 */ 133 }