Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множественное сохранение сущности в хранилище, не поместилось 
:(
    Опции темы
dim9999
Дата 27.8.2010, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.2.2010

Репутация: нет
Всего: нет



Здравствуйте!

Я попробовал переделать "студенческий отдел кадров" Антона Сабурова из http://www.java-course.ru/, с реализацией хранилища данных для google app engine...
Вроде бы заработало, но не совсем... При сохранении объекта в датастор (google app engine datastore)  создается аж по 2-3 копии объекта.
Вот пример ManagementSystem со вставкой объекта:
Код

package students.logic;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;

import com.google.appengine.api.datastore.Key;

import students.logic.EMF;

import students.entity.Groups;
import students.entity.Students;

public class Students_ManagementSystem {
    private static final Students_ManagementSystem ms = new Students_ManagementSystem();
        
    public static Students_ManagementSystem getInstance(){
        return ms;
    }
    
    public synchronized void insertStudent(Students student){

        EntityManager em = EMF.get().createEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        try {
            em.persist(student);
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }
        em.close();
    }

вот пример из сервлета:
Код

package students.logic;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

import students.entity.Groups;
import students.entity.Students;
import students.web.forms.MainFrameForm;

public class Students_Groups_FrameServlet extends HttpServlet {
    private Students_ManagementSystem ms  = Students_ManagementSystem.getInstance();
    private   Groups_ManagementSystem msg = Groups_ManagementSystem.getInstance();

    private static final SimpleDateFormat sdf = new SimpleDateFormat(
            "dd.MM.yyyy");

    protected void processRequest(HttpServletRequest req,
            HttpServletResponse resp) throws ServletException, IOException {
        Long sId = null;
        Long gId = null;
        if(req.getParameter("studentId")!=null){
            if(!req.getParameter("studentId").isEmpty())
                sId = Long.parseLong(req.getParameter("studentId"));
        }
        if(req.getParameter("groupId")!=null){
            if(!req.getParameter("groupId").isEmpty())
                gId = Long.parseLong(req.getParameter("groupId"));
        }
        
        if (gId!=null && sId != null  && req.getParameter("OK") != null) {
            try {
                updateGroups(req);
                updateStudent(req);
                
            } catch (SQLException sql_e) {
                sql_e.printStackTrace();
                throw new IOException(sql_e.getMessage());
            } catch (ParseException p_e) {
                throw new IOException(p_e.getMessage());
            }
        }
        else {
            try {
                insertGroups(req);
                insertStudent(req);
            } catch (SQLException sql_e) {
                sql_e.printStackTrace();
                throw new IOException(sql_e.getMessage());
            } catch (ParseException p_e) {
                throw new IOException(p_e.getMessage());
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        
        Integer ys = Integer.parseInt(req.getParameter("educationYear"));
        
        int year = Calendar.getInstance().get(Calendar.YEAR);
        if (ys != null) {
            year = ys;
        }
        MainFrameForm form = new MainFrameForm();
        List<Groups> groups = msg.getGroups();
        //Students st = new Students();
        if (gId == null) {
            Iterator<Groups> i = groups.iterator();
            gId = i.next().getGroupId();
            
        }
        
        Collection<Students> students = ms.getStudentsFromGroup(gId, year);
        form.setGroupId(gId);
        form.setYear(year);
        form.setGroups(groups);
        form.setStudents(students);
        req.setAttribute("form", form);
        getServletContext().getRequestDispatcher("/MainFrame.jsp").forward(req,
                resp);
    }

    private synchronized void updateStudent(HttpServletRequest req) throws SQLException,
            ParseException {
        Students st = prepareStudent(req);
        Groups gr = prepareGroups(req);
        msg.updateGroup(gr);
        st.setGroupId(gr.getGroupId());
        ms.updateStudent(st);
    }

    private synchronized void insertStudent(HttpServletRequest req) throws SQLException,
            ParseException, InterruptedException {
        Students st = prepareStudent(req);
        Groups gr = prepareGroups(req);
        msg.insertGroup(gr);
        Long grId = gr.getGroupId();
        st.setGroupId(grId);
        
        ms.insertStudent(st);
    }

    private Students prepareStudent(HttpServletRequest req)
            throws ParseException {
        Students s = new Students();
        
        if (req.getParameter("studentId")!=null) {
            if(!req.getParameter("studentId").isEmpty()){
                s.setStudentId(Long.parseLong(req.getParameter("studentId")));
            }
        }
        if(req.getParameter("groupId")!=null){
            if(!req.getParameter("groupId").isEmpty()){
                s.setGroupId(Long.parseLong(req.getParameter("groupId")));
            }
        }
        
        s.setFirstName(req.getParameter("firstName").trim());
        s.setSurName(req.getParameter("surName").trim());
        s.setPatronymic(req.getParameter("patronymic").trim());
        s.setDateOfBirth(sdf.parse(req.getParameter("dateOfBirth").trim()));
        if (req.getParameter("sex").equals("0")) {
            s.setSex('М');
        } else {
            s.setSex('Ж');
        }
        //s.setGroupId(Long.parseLong(req.getParameter("groupId").trim())); //it is null
        s.setEducationYear(Integer.parseInt(req.getParameter("educationYear")
                .trim()));
        
        return s;
    }
    private Groups prepareGroups(HttpServletRequest req)
    throws ParseException {
        Groups gr = new Groups();
        if(req.getParameter("groupId")!=null){
            if(!req.getParameter("groupId").isEmpty()){
            gr.setGroupId(Long.parseLong(req.getParameter("groupId")));
            }
        }
        gr.setCurator(req.getParameter("curator").trim());
        gr.setGroupName(req.getParameter("groupName").trim());
        gr.setSpeciality(req.getParameter("speciality").trim());
        return gr;
    }
    private synchronized void insertGroups(HttpServletRequest req) throws ParseException{
        Groups gr = prepareGroups(req);
        msg.insertGroup(gr);
    }
    private synchronized void updateGroups(HttpServletRequest req) throws ParseException{
        Groups gr = prepareGroups(req);
        msg.updateGroup(gr);
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        processRequest(req, resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        processRequest(req, resp);

    }

}


код: http://narod.ru/disk/24138759000/StuffTest.zip.html. хотелось бы понять где я что-то пропускаю... делеал в эклипсе.
ссылка на работающее, но недоделанное приложение: http://www.studentstufftest.appspot.com/

Это сообщение отредактировал(а) dim9999 - 27.8.2010, 02:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.