Сервер кулинарных рецептов

Автор: Пользователь скрыл имя, 18 Декабря 2012 в 17:28, курсовая работа

Краткое описание

Целью данного курсового проекта является создание сервиса кулинарной книги с возможностью поиска блюд по ингредиентам. Для достижения данной цели необходимо решить следующие задачи:
1) изучить и проанализировать особенности процесса создания кулинарной книги;
2) описать модели, определить основные требования к разрабатываемой системе;
3) разработать сервис кулинарной книги с возможностью поиска блюд по ингредиентам.

Файлы: 1 файл

записка.doc

— 1.26 Мб (Скачать)

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

1) Астахова И.Ф. SQL в примерах и задачах. М.: «Новое знание».-2002.

2) Басс Л., Клементс П., Кацман Р. Архитектура программного  обеспечения на практике. 2-е издание.  − СПб.:Птер, 2006.− 575с.

3) Верников Г. Методологии  организационного проектирования, стандарт IDEF0.

4) http://www.finances-analysis.ru/financial-maths/break-even-point.htm

5) http://www.mavriz.ru/articles/2004/4/3831.html

6) http://www.cis2000.ru/Budgeting/receivablesruAG.shtml

 

 

ПРИЛОЖЕНИЕ  А

Блок-схема  обобщенного алгоритма

 

 

 

ПРИЛОЖЕНИЕ  Б

БЛОК-СХЕМА  ПРОГРАММНОГО МОДУЛЯ

(удаление данных о категории)

 

ЛИСТИНГ

SQL-скрипт

 

CREATE TABLE dima.Bludo  ( 

id INTEGER DEFAULT AUTOINCREMENT,

name CHAR(150), 

recept CHAR(1150), 

 

PRIMARY KEY (id)  

);  

 

CREATE TABLE dima.Ingredient  ( 

id INTEGER DEFAULT AUTOINCREMENT, 

name CHAR(150), 

 

PRIMARY KEY (id)  

);  

 

CREATE TABLE dima.BludoIngredient( 

id INTEGER DEFAULT AUTOINCREMENT, 

PRIMARY KEY (id) 

 

); 

 

 CREATE TABLE dima.Category  ( 

id INTEGER DEFAULT AUTOINCREMENT, 

name CHAR(150), 

 

PRIMARY KEY (id)  

);  

 

 

ALTER TABLE dima.Bludo  ADD FK_B

FOREIGN KEY(categoryId) REFERENCES dima.Category(id)  

ON UPDATE CASCADE ON DELETE CASCADE;

 

ALTER TABLE dima.BludoIngredient  ADD FK_BI

FOREIGN KEY(bludoId) REFERENCES dima.Bludo(id)  

ON UPDATE CASCADE ON DELETE CASCADE;

 

ALTER TABLE dima.BludoIngredient  ADD FK_B

FOREIGN KEY(ingredientId) REFERENCES dima.Ingredient(id)  

ON UPDATE CASCADE ON DELETE CASCADE;

 

Фрагмент программного кода

 

package ent;

 

import java.util.List;

import javax.ejb.Stateless;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

 

 

@Stateless

public class KulinarFacadeBean implements KulinarFacadeLocal {

  @PersistenceContext

    private EntityManager em;

 

    public void createBludo(Bludo obj) {

        em.persist(obj);

    }

 

    public void editBludo(Bludo obj) {

       em.merge(obj);

    }

 

    public void removeBludo(Bludo obj) {

       em.remove(em.merge(obj));

    }

 

    public Bludo findBludo(Object id) {

         return em.find(ent.Bludo.class, id);

    }

 

    public List<Bludo> findAllBludo(int id) {

        List<Bludo> cust =(List<Bludo>) em.createQuery("SELECT c FROM Bludo c WHERE c.categoryId.id=:cust_id")

                              .setParameter("cust_id", id).getResultList();

 

        return cust;

    }

 

    public void createBludoIngredient(BludoIngredient obj) {

     em.persist(obj);

    }

 

    public void editBludoIngredient(BludoIngredient obj) {

       em.merge(obj);

    }

 

    public void removeBludoIngredient(BludoIngredient obj) {

         em.remove(em.merge(obj));

    }

public BludoIngredient findBIngredient(Object id) {

         return em.find(ent.BludoIngredient.class, id);

    }

  

 

    public List<BludoIngredient> findAllBludoIngredient(int id) {

           List<BludoIngredient> cust =(List<BludoIngredient>) em.createQuery("SELECT c FROM BludoIngredient c WHERE c.bludoId.id=:cust_id")

                              .setParameter("cust_id", id).getResultList();

 

        return cust;

    }

 

     public List<BludoIngredient> findBludoIngredient(int id) {

           List<BludoIngredient> cust =(List<BludoIngredient>) em.createQuery("SELECT c FROM BludoIngredient c WHERE c.ingredientId.id=:cust_id")

                              .setParameter("cust_id", id).getResultList();

 

        return cust;

    }

 

   

    public void createIngredient(Ingredient obj) {

        em.persist(obj);

    }

 

    public void editIngredient(Ingredient obj) {

       em.merge(obj);

    }

 

    public void removeIngredient(Ingredient obj) {

        em.remove(em.merge(obj));

    }

 

    public Ingredient findIngredient(Object id) {

      return em.find(ent.Ingredient.class, id);

    }

 

    public List<Ingredient> findAllIngredient() {

        List<Ingredient> cust =(List<Ingredient>) em.createQuery("SELECT c FROM Ingredient c ")

                             .getResultList();

 

        return cust;

    }

 

   

    public void createCategory(Category obj) {

       em.persist(obj);

    }

 

    public void editCategory(Category obj) {

      em.merge(obj);

    }

 

    public void removeCategory(Category obj) {

        em.remove(em.merge(obj));

    }

 

    public Category findCategory(Object id) {

         return em.find(ent.Category.class, id);

    }

 

    public List<Category> findAllCategory() {

          List<Category> cust =(List<Category>) em.createQuery("SELECT c FROM Category c ")

                             .getResultList();

 

        return cust;

    }

   

      public Ingredient findIngrByName(String l) {

       try{ Ingredient cust = (Ingredient) em.createQuery("SELECT c FROM Ingredient c WHERE c.name=:l ").setParameter("l", l).getSingleResult();

 

        return cust;

       } catch(Exception e){

         return null;

     }

    }

   

   

    // Add business logic below. (Right-click in editor and choose

    // "EJB Methods > Add Business Method" or "Web Service > Add Operation")

 

}

package del;

 

import com.sun.org.apache.xerces.internal.dom.DocumentImpl;

import ent.Bludo;

import ent.BludoIngredient;

import ent.Category;

import ent.Ingredient;

import ent.KulinarFacadeLocal;

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

import java.util.TreeSet;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.ejb.EJB;

import javax.ejb.Stateless;

import javax.jws.Oneway;

import javax.jws.WebMethod;

 

import javax.jws.WebService;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

 

@WebService

@Stateless

public class KulinarDelegateBean implements KulinarDelegateLocal {

 

    @EJB

    KulinarFacadeLocal loc;

 

    private final static String PATH = "d:\\xsl\\";

 

    public XmlXsl getXSL(String xslName) {

        FileDataSource sourceXSL = new FileDataSource(PATH + xslName);

 

        XmlXsl partMesXSL = new XmlXsl();

        try {

            DataHandler dhXSL = new DataHandler(sourceXSL);

            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

            DocumentBuilder builder = dbFactory.newDocumentBuilder();

            org.w3c.dom.Document docXSL = builder.parse(dhXSL.getInputStream());

            org.w3c.dom.Element el = docXSL.getDocumentElement();

            partMesXSL.part = el;

        } catch (Exception ex) {

            ex.printStackTrace();

        }

        return partMesXSL;

    }

   

   

      @WebMethod(operationName = "findBludoIngredient")

         public ServerResponse findBludoIngredient(int id) {

            long start = System.currentTimeMillis();

        Document doc = new DocumentImpl();

        Element rootEl = doc.createElement("message");

        doc.appendChild(rootEl);

        List<BludoIngredient> list = loc.findAllBludoIngredient(id);

       

        for (BludoIngredient giv : list) {

          

            Element userEl = doc.createElement("ingr");

            userEl.setAttribute("id", giv.getId().toString());

            userEl.setAttribute("name", giv.getIngredientId().getName());

 

 

            rootEl.appendChild(userEl);

        }

        long end = System.currentTimeMillis();

        Long res = end - start;

        Element el = doc.createElement("res");

        el.setAttribute("name", res.toString());

        rootEl.appendChild(el);

        ServerResponse xmlMes = new ServerResponse();

        XmlXsl partMesXML = new XmlXsl();

        partMesXML.part = doc.getDocumentElement();

        xmlMes.setXml(partMesXML);

 

        xmlMes.setXsl(getXSL("bingr.xsl"));

        return xmlMes;

      }

 

   

    @WebMethod(operationName = "findAllBludo")

    public ServerResponse findAllBludo(int id) {

        long start = System.currentTimeMillis();

        Document doc = new DocumentImpl();

        Element rootEl = doc.createElement("message");

        doc.appendChild(rootEl);

        List<Bludo> list = loc.findAllBludo(id);

        for (Bludo giv : list) {

            Element userEl = doc.createElement("bl");

            userEl.setAttribute("id", giv.getId().toString());

            userEl.setAttribute("name", giv.getName());

  userEl.setAttribute("recept", giv.getRecept());

 

            rootEl.appendChild(userEl);

        }

        long end = System.currentTimeMillis();

        Long res = end - start;

        Element el = doc.createElement("res");

        el.setAttribute("name", res.toString());

        rootEl.appendChild(el);

        ServerResponse xmlMes = new ServerResponse();

        XmlXsl partMesXML = new XmlXsl();

        partMesXML.part = doc.getDocumentElement();

        xmlMes.setXml(partMesXML);

 

        xmlMes.setXsl(getXSL("bludo.xsl"));

        return xmlMes;

 

 

    }

 

    @WebMethod(operationName = "addBludo")

    public ServerResponse addBludo() {

 

        Document doc = new DocumentImpl();

        Element rootEl = doc.createElement("message");

        doc.appendChild(rootEl);

          List<Category> list = loc.findAllCategory();

        for (Category giv : list) {

            Element el = doc.createElement("cat");

            el.setAttribute("id", giv.getId().toString());

            el.setAttribute("name", giv.getName());

 

            rootEl.appendChild(el);

        }

        ServerResponse xmlMes = new ServerResponse();

        XmlXsl partMesXML = new XmlXsl();

        partMesXML.part = doc.getDocumentElement();

        xmlMes.setXml(partMesXML);

        xmlMes.setXsl(getXSL("editBludo.xsl"));

        return xmlMes;

    }

 

    @WebMethod(operationName = "editBludo")

    public ServerResponse editBludo(int id) {

        Document doc = new DocumentImpl();

       

        Element rootEl = doc.createElement("message");

        doc.appendChild(rootEl);

        Bludo g = loc.findBludo(id);

        Element userEl = doc.createElement("bl");

        userEl.setAttribute("id", g.getId().toString());

        userEl.setAttribute("name", g.getName());

userEl.setAttribute("recept", g.getRecept());

 

 

        rootEl.appendChild(userEl);

         List<Category> list = loc.findAllCategory();

        for (Category giv : list) {

            Element el = doc.createElement("cat");

            el.setAttribute("id", giv.getId().toString());

            el.setAttribute("name", giv.getName());

 

            rootEl.appendChild(el);

        }

 

        ServerResponse xmlMes = new ServerResponse();

        XmlXsl partMesXML = new XmlXsl();

        partMesXML.part = doc.getDocumentElement();

        xmlMes.setXml(partMesXML);

        xmlMes.setXsl(getXSL("editBludo.xsl"));

 

        return xmlMes;

    }

 

    @WebMethod(operationName = "saveBludo")

    @Oneway

    public void saveBludo(ServerResponse msg) {

 

        Element el = msg.xml.part;

        Element user = ((Element) el.getElementsByTagName("bl").item(0));

        String id = user.getAttribute("id");

        String name = user.getAttribute("name");

        String rec = user.getAttribute("rec");

  String cid = user.getAttribute("cid");

Category c=new Category();

c.setId(Integer.valueOf(cid));

        Bludo g = new Bludo();

        g.setName(name);

        g.setRecept(rec);

g.setCategoryId(c);

 

        if (!"0".equals(id)) {

            g.setId(Integer.valueOf(id));

            loc.editBludo(g);

        } else {

            loc.createBludo(g);

        }

 

    }

 

    @WebMethod(operationName = "deleteBludo")

    @Oneway

    public void deleteBludo(int id) {

        loc.removeBludo(loc.findBludo(id));

    }

Информация о работе Сервер кулинарных рецептов