1
package com.bean;
import java.util.HashMap;
import java.util.Map;

public class Cheese extends Item {
    public CheeseType cheeseType ;
    public Map<Ingred,Float> calorieTable = new HashMap<Ingred,Float>();


    public Cheese() {
    }
    public CheeseType getCheeseType() {
        return cheeseType;
    }

    public void setCheeseType(CheeseType cheeseType) {
        this.cheeseType = cheeseType;
    }

    public Map<Ingred, Float> getCalorieTable() {
        return calorieTable;
    }

    public void setCalorieTable(Map<Ingred, Float> calorieTable) {
        this.calorieTable = calorieTable;
    }
 }

This is the class which is present in the database. I am not knowing how to take the value of fat, protein, and vitamin which are there in enum of Ingred.

Hierarchy is

Cheese.java
-Cheese
--calorieTable
--cheeseType
--Cheese()
--getCalorieTable():Map<Ingred,Float>
--getCheeseType():CheeseType
--setCalorieTable(Map<Ingred,Float>)
--setCheeseType(CheeseType)

CheeType.java
-CheeseType(Enum)

--Cheddar
-Cottage
--Easy_spread
--Mozzarella

Ingred.java
-Ingred(Enum)
---fat
--protein
--vitamin


-

what I have tried is

    public List<Item> readAllItemsFromDb() {
        // TODO Auto-generated method stub
        con=(Connection)DatabaseConnectionManager.conn;
        Statement st = null;
        try {
            st = con.createStatement();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        ResultSet srs = null;
        try {
            srs = st.executeQuery("SELECT * FROM cheese_tbl");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            while (srs.next()) {

                Cheese cheese = new Cheese();


                cheese.setId(srs.getInt("SrNo"));
                cheese.setDescription(srs.getString("description"));
                cheese.setWeight(srs.getFloat("weight"));
                cheese.setPrice(srs.getFloat("price"));
                cheese.setManufacturingDate(srs.getDate("mfg_date"));
                cheese.setUseBeforeMonths(srs.getInt("UsebeforeInmonths"));

                if(srs.getString("CheeseType").equals("Mozzarella"))
                       cheese.setCheeseType(CheeseType.Mozzarella);             
                   else if(srs.getString("CheeseType").equals("Easy_Spread"))
                   cheese.setCheeseType(CheeseType.Mozzarella);
                     else if(srs.getString("CheeseType").equals("Cottage"))
                       cheese.setCheeseType(CheeseType.Mozzarella);            
                   else if(srs.getString("CheeseType").equals("Cheddar"))
                       cheese.setCheeseType(CheeseType.Mozzarella);




          }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;

}

But I am not getting how to retrieve values of protein, fat and vitamin.

I am able to retrive other values from database. The database has the following fields

CREATE TABLE `cheese_tbl` (
  `id` int(10) DEFAULT NULL,
  `description` varchar(100) DEFAULT NULL,
  `weight` float DEFAULT NULL,
  `price` float DEFAULT NULL,
  `mfg_date` date DEFAULT NULL,
  `UseBeforeInMonths` int(3) DEFAULT NULL,
  `cheeseType` varchar(20) DEFAULT NULL,
  `protein` float DEFAULT NULL,
  `vitaminB1` float DEFAULT NULL,
  `fat` float DEFAULT NULL
) 

INSERT INTO `cheese_tbl` VALUES 
(1001,'Mozzarella Cheese - Best for Pizza Preparation',200,200,'2014-01-09',12,'Mozzarella',30,0.57,0.33),
(1002,'Goat Cheese Low calories -Easy Spread',300,300,'2014-01-10',3,'Easy_Spread',0.33,33.99,0.57),
(1003,'Cottage Cheese High Protine and Energy',400,400,'2014-05-28',6,'Cottage',0.33,20.2,0.57);
200_success
  • 7,286
  • 1
  • 43
  • 74
sss
  • 49
  • 8

1 Answers1

0

There is a map filled from database:

Map<Ingred,Float> map = cheese.getCalorieTable();
map.put(Ingred.protein,srs.getFloat("protein"));
map.put(Ingred.vitamin,srs.getFloat("vitaminB1"));
map.put(Ingred.fat,srs.getFloat("fat"));

In case HashMap doesnt exists:

Map<Ingred,Float> map = new HashMap<Ingred,Float>();
map.put(Ingred.protein,srs.getFloat("protein"));
map.put(Ingred.vitamin,srs.getFloat("vitaminB1"));
map.put(Ingred.fat,srs.getFloat("fat"));
cheese.setCalorieTable(map);

Then I advise you to correct this:

if(srs.getString("CheeseType").equals("Mozzarella"))
    cheese.setCheeseType(CheeseType.Mozzarella);             
else if(srs.getString("CheeseType").equals("Easy_Spread"))
    cheese.setCheeseType(CheeseType.Mozzarella);
else if(srs.getString("CheeseType").equals("Cottage"))
    cheese.setCheeseType(CheeseType.Mozzarella);            
else if(srs.getString("CheeseType").equals("Cheddar"))
    cheese.setCheeseType(CheeseType.Mozzarella);

to

if(srs.getString("CheeseType").equals("Mozzarella"))
    cheese.setCheeseType(CheeseType.Mozzarella);             
else if(srs.getString("CheeseType").equals("Easy_Spread"))
    cheese.setCheeseType(CheeseType.Easy_Spread);
else if(srs.getString("CheeseType").equals("Cottage"))
    cheese.setCheeseType(CheeseType.Cottage);            
else if(srs.getString("CheeseType").equals("Cheddar"))
    cheese.setCheeseType(CheeseType.Cheddar);

and much better is

cheese.setCheeseType(CheeseType.valueOf(srs.getString("CheeseType")));

Lookup enum by string value

Community
  • 1
  • 1
maskacovnik
  • 3,080
  • 5
  • 20
  • 26