/** * Import seed data when Seam Servlet fires an event notifying observers that the web application * is being initialized. */ public void importData(@Observes @Initialized WebApplication webapp) { log.info("Importing seed data for application " + webapp.getName()); // use manual transaction control since this is a managed bean try { utx.begin(); if (entityManager.createQuery("select g from Genre g").getResultList().size() == 0) { // AS7-2045 // entityManager.createQuery("delete from User").executeUpdate(); // // entityManager.createQuery("delete from Content").executeUpdate(); // entityManager.createQuery("delete from Genre").executeUpdate(); persist(users); for (TwoTuple<String, String> genre : genres) { if ("ИСТОРИИ".equals(genre.getFirst())) { createGenre( new Genre(genre.getFirst(), genre.getSecond()), Arrays.asList( new TwoTuple<Genre, List<Content>>( new Genre( "ЛИЧНЫЙ ОПЫТ", "Рассказ читателям о результатах собственных экспериментов."), new ArrayList<Content>()))); } else if ("ОБЗОРЫ".equals(genre.getFirst())) { createGenre( new Genre(genre.getFirst(), genre.getSecond()), Arrays.asList( new TwoTuple<Genre, List<Content>>( new Genre("ГАДЖЕТЫ", "Обзор гаджетов."), new ArrayList<Content>()))); } else if ("РАЗВЛЕЧЕНИЯ".equals(genre.getFirst())) { createGenre( new Genre(genre.getFirst(), genre.getSecond()), Arrays.asList( new TwoTuple<Genre, List<Content>>( new Genre("Юмор", "Анекдоты, шутки..."), new ArrayList<Content>()))); } else if ("ПРОЧЕЕ".equals(genre.getFirst())) { createGenre( new Genre(genre.getFirst(), genre.getSecond()), Arrays.asList( new TwoTuple<Genre, List<Content>>( new Genre("ВИДЕО", "Любительское видео"), new ArrayList<Content>()), new TwoTuple<Genre, List<Content>>( new Genre("ВИДЕО-КЛИПЫ", "Музыкальные видео клипы"), new ArrayList<Content>()))); } else { createGenre( new Genre(genre.getFirst(), genre.getSecond()), new ArrayList<TwoTuple<Genre, List<Content>>>()); } } } indextData(); utx.commit(); log.info("Seed data successfully imported"); } catch (Exception e) { log.error("Import failed. Seed data will not be available.", e); try { if (utx.getStatus() == Status.STATUS_ACTIVE) { try { utx.rollback(); } catch (Exception rbe) { log.error("Error rolling back transaction", rbe); } } } catch (Exception se) { } } }