/** * Copyright (c) 2006-2011 Floggy Open Source Group. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sourceforge.floggy.barbecuecalculator.core; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.List; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import net.sourceforge.floggy.barbecuecalculator.persistence.Barbecue; import net.sourceforge.floggy.persistence.FloggyException; import net.sourceforge.floggy.persistence.ObjectSet; import net.sourceforge.floggy.persistence.PersistableManager; /** * DOCUMENT ME! * * @author <a href="mailto:thiago.moreira@floggy.org">Thiago Moreira</a> * @version $Revision$ */ public class FlowManager { private static FlowManager instance; private Barbecue barbecue; private MIDlet midlet; private Barbecue[] savedBarbecues; private FlowManager(MIDlet midlet) { this.midlet = midlet; } /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws FlowManagerNotStartedException DOCUMENT ME! */ public static FlowManager getInstance() throws FlowManagerNotStartedException { if (instance == null) throw new FlowManagerNotStartedException(); return instance; } /** * DOCUMENT ME! * * @param midlet DOCUMENT ME! * * @return DOCUMENT ME! * * @throws FlowManagerAlreadyStartedException DOCUMENT ME! */ public static FlowManager startFlowManager(MIDlet midlet) throws FlowManagerAlreadyStartedException { if (instance != null) throw new FlowManagerAlreadyStartedException( "FlowManager already exists at " + instance); instance = new FlowManager(midlet); return instance; } /** * DOCUMENT ME! * * @param selectedIndex DOCUMENT ME! */ public void apagarChurrasSalvo(int selectedIndex) { try { PersistableManager.getInstance().delete(savedBarbecues[selectedIndex]); DisplayManager.getInstance().removeFromToShowStack(); this.exibirListaChurrasSalvos(); } catch (FloggyException e) { } catch (DisplayManagerException e) { } } /** * DOCUMENT ME! */ public void calculateBarbecue() { Form barbecueForm = null; try { barbecueForm = (Form) DisplayManager.getInstance().getCurrent(); } catch (DisplayManagerNotStartedException e) { } int men = 0; int women = 0; try { String value = ((TextField) barbecueForm.get(0)).getString(); men = Integer.parseInt(value); value = ((TextField) barbecueForm.get(1)).getString(); women = Integer.parseInt(value); } catch (NumberFormatException nfe) { } boolean withCaipirinha = ((ChoiceGroup) barbecueForm.get(2)).isSelected(0); int alchoolLevel = ((Gauge) barbecueForm.get(3)).getValue(); int foodQuantity = ((Gauge) barbecueForm.get(4)).getValue(); if ((men == 0) && (women == 0)) { try { DisplayManager.getInstance() .show(new Alert("Warn!", "# of men and woman required!", null, AlertType.ERROR)); } catch (DisplayManagerException e) { } } else if ((alchoolLevel <= 0) || (foodQuantity <= 0)) { try { DisplayManager.getInstance() .show(new Alert("Warn!", "Every barbecue has to have drink and food!!!", null, AlertType.ERROR)); } catch (DisplayManagerException e) { } } else { barbecue = new Barbecue(men, women, alchoolLevel, foodQuantity, withCaipirinha); barbecue.calculateBarbecue(); showBarbecue(); } } /** * DOCUMENT ME! */ public void endApplication() { this.midlet.notifyDestroyed(); } /** * DOCUMENT ME! * * @param selectedIndex DOCUMENT ME! */ public void exibirChurrasSalvo(int selectedIndex) { this.barbecue = this.savedBarbecues[selectedIndex]; this.showBarbecue(); } /** * DOCUMENT ME! */ public void exibirDadosChurrasForm() { Form barbecueForm = new Form("Churras Calculator"); barbecueForm.append(new TextField("# men", "", 3, TextField.NUMERIC)); barbecueForm.append(new TextField("# woman", "", 3, TextField.NUMERIC)); barbecueForm.append(new ChoiceGroup("", Choice.MULTIPLE, new String[] { " With Caipirinha" }, new Image[] { null })); barbecueForm.append(new Gauge("Alchool level", true, 5, 3)); barbecueForm.append(new Gauge("Food level", true, 5, 3)); barbecueForm.addCommand(CommandHandler.CALCULATE_CMD); barbecueForm.addCommand(CommandHandler.BACK_CMD); barbecueForm.setCommandListener(CommandHandler.getInstance()); try { DisplayManager.getInstance().show(barbecueForm, true); } catch (DisplayManagerNotStartedException e) { } } /** * DOCUMENT ME! */ public void exibirListaChurrasSalvos() { List churrasSalvosList = new List("Saved barbecues", List.EXCLUSIVE | List.IMPLICIT); churrasSalvosList.setFitPolicy(Choice.TEXT_WRAP_OFF); try { Barbecue temp = new Barbecue(); ObjectSet os = PersistableManager.getInstance().find(temp.getClass(), null, null); int size = os.size(); savedBarbecues = new Barbecue[size]; for (int i = 0; i < size; i++) { savedBarbecues[i] = (Barbecue) os.get(i); } } catch (FloggyException e) { e.printStackTrace(); } if (savedBarbecues.length == 0) { try { DisplayManager.getInstance() .show(new Alert("Warn", "There isn't barbecues saved.", null, AlertType.INFO)); } catch (DisplayManagerException e) { } } else { for (int i = 0; i < savedBarbecues.length; i++) churrasSalvosList.append(savedBarbecues[i].getDescription(), null); churrasSalvosList.addCommand(CommandHandler.SHOW_BARBECUE_CMD); churrasSalvosList.addCommand(CommandHandler.DELETE_BARBECUE_CMD); churrasSalvosList.addCommand(CommandHandler.BACK_CMD); churrasSalvosList.setCommandListener(CommandHandler.getInstance()); try { DisplayManager.getInstance().show(churrasSalvosList, true); } catch (DisplayManagerNotStartedException e) { } } } /** * DOCUMENT ME! */ public void finalizarPersistenciaChurras() { Form dadosChurras = null; try { dadosChurras = (Form) DisplayManager.getInstance().getCurrent(); } catch (DisplayManagerNotStartedException e) { } barbecue.setDescription(((TextField) dadosChurras.get(0)).getString()); try { PersistableManager.getInstance().save(barbecue); } catch (Exception e) { e.printStackTrace(); } try { DisplayManager.getInstance().backToTheFirst(); DisplayManager.getInstance() .show(new Alert("Success", "Barbecue saved!", null, AlertType.CONFIRMATION)); } catch (DisplayManagerException e) { } } /** * DOCUMENT ME! */ public void salvarChurrasco() { Form salvarChurrasForm = new Form("Save barbecue"); salvarChurrasForm.append(new TextField( "Give a name to the barbecue to save: ", "", 30, TextField.ANY)); salvarChurrasForm.addCommand(CommandHandler.SAVE_BARBECUE_CMD); salvarChurrasForm.addCommand(CommandHandler.BACK_CMD); salvarChurrasForm.setCommandListener(CommandHandler.getInstance()); try { DisplayManager.getInstance().show(salvarChurrasForm, true); } catch (DisplayManagerNotStartedException e) { } } /** * DOCUMENT ME! */ public void showAboutForm() { Form aboutForm = new Form("About"); aboutForm.append(new StringItem("Barbecue Calculator Floggynized", "Calculator of itens to do a barbecue.")); aboutForm.append(new StringItem("Author: ", "Neto Marin")); aboutForm.append(new StringItem("Contatc: ", "netomarin@gmail.com")); aboutForm.append(new StringItem("Floggynizer: ", "Thiago Moreira")); aboutForm.append(new StringItem("Contatc: ", "thiago.moreira@floggy.org")); aboutForm.addCommand(CommandHandler.BACK_CMD); aboutForm.setCommandListener(CommandHandler.getInstance()); try { DisplayManager.getInstance().show(aboutForm, true); } catch (DisplayManagerNotStartedException e) { } } /** * DOCUMENT ME! */ public void showBarbecue() { Form listaChurras = new Form("Show barbecue"); listaChurras.append("\nMens: " + barbecue.getMen()); listaChurras.append("\nWomen: " + barbecue.getWomen()); listaChurras.append("\nSalsague: " + barbecue.getSalsague() + " kg"); listaChurras.append("\nMeat: " + barbecue.getMeat() + " kg"); listaChurras.append("\nBeer: " + barbecue.getBeer() + " cans"); listaChurras.append("\nSoda: " + barbecue.getSoda() + " 2 litters bottle"); listaChurras.append("\nBread: " + barbecue.getBread() + " un"); listaChurras.append("\nFarofa: " + barbecue.getFarofa() + " un"); listaChurras.append("\nCoal: " + barbecue.getCoal() + " bags"); listaChurras.append("\nNapkins: " + barbecue.getNapkin() + " emb. c/50"); listaChurras.append("\nAlchool: " + barbecue.getAlchool() + " L"); listaChurras.append("\nPano de Prato: " + barbecue.getPanoDePrato() + " un"); listaChurras.append("\nBarbecue knife: " + barbecue.getBarbecueKnife() + " un"); listaChurras.append("\nPlates: " + barbecue.getPlate() + " un"); listaChurras.append("\nForks: " + barbecue.getFork() + " un"); listaChurras.append("\nPlastic cups: " + barbecue.getPlasticCup() + " emb. c/20"); listaChurras.append("\nSalt: " + barbecue.getBulkedSalt() + " kg"); if (barbecue.isWithCaipirinha()) { listaChurras.append("\nLimon: " + barbecue.getLimon() + " un"); listaChurras.append("\nCachaça: " + barbecue.getCachaca() + " L"); listaChurras.append("\nSugar: " + barbecue.getSugar() + " kg"); } listaChurras.addCommand(CommandHandler.SET_BARBECUE_NAME_CMD); listaChurras.addCommand(CommandHandler.BACK_CMD); listaChurras.addCommand(CommandHandler.EXIT_CMD); listaChurras.setCommandListener(CommandHandler.getInstance()); try { DisplayManager.getInstance().show(listaChurras, true); } catch (DisplayManagerNotStartedException e) { } } }