Advertisement
Guest User

Untitled

a guest
Aug 12th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.93 KB | None | 0 0
  1. package slaveniMovieland.wicket.app.admin.movies;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import org.apache.wicket.PageParameters;
  7. import org.apache.wicket.ajax.AjaxRequestTarget;
  8. import org.apache.wicket.ajax.markup.html.AjaxLink;
  9. import org.apache.wicket.ajax.markup.html.form.AjaxButton;
  10. import org.apache.wicket.behavior.SimpleAttributeModifier;
  11. import org.apache.wicket.markup.html.basic.Label;
  12. import org.apache.wicket.markup.html.form.Button;
  13. import org.apache.wicket.markup.html.form.ChoiceRenderer;
  14. import org.apache.wicket.markup.html.form.DropDownChoice;
  15. import org.apache.wicket.markup.html.form.Form;
  16. import org.apache.wicket.markup.html.form.TextArea;
  17. import org.apache.wicket.markup.html.form.TextField;
  18. import org.apache.wicket.markup.html.link.BookmarkablePageLink;
  19. import org.apache.wicket.markup.html.link.Link;
  20. import org.apache.wicket.markup.html.list.ListItem;
  21. import org.apache.wicket.markup.html.list.PageableListView;
  22. import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
  23. import org.apache.wicket.markup.html.panel.FeedbackPanel;
  24. import org.apache.wicket.model.PropertyModel;
  25. import org.apache.wicket.util.value.ValueMap;
  26. import slaveniMovieland.dal.ProviderManager;
  27. import slaveniMovieland.dal.entities.Genre;
  28. import slaveniMovieland.dal.entities.Movie;
  29. import slaveniMovieland.dal.interfaces.IGenreDal;
  30. import slaveniMovieland.dal.interfaces.IMovieDal;
  31. import slaveniMovieland.wicket.app.admin.AdminPage;
  32.  
  33. public class MoviesAdminPage extends AdminPage
  34. {
  35.     int languageId = getMovielandSession().getLanguage().getId();
  36.     List<Movie> moviesList = null;
  37.     PageableListView moviesListView = null;
  38.     EditMovieForm editForm = null;
  39.  
  40.     @SuppressWarnings("serial")
  41.     private class AddMovieForm extends Form
  42.     {
  43.         private static final long serialVersionUID = 1L;
  44.         private ValueMap properties = new ValueMap();
  45.         @SuppressWarnings("unchecked")
  46.         private List genres = null;
  47.         private TextField nameAdd;
  48.         private DropDownChoice genreAdd;
  49.         private TextField yearAdd;
  50.         private TextArea descriptionAdd;
  51.         private TextArea crewAdd;
  52.         private TextField priceAdd;
  53.         private Button resetAdd;
  54.        
  55.         private List getGenres(){
  56.             int languageId = getMovielandSession().getLanguage().getId();
  57.             List<Genre> genres = ProviderManager.getDal(IGenreDal.class)
  58.                                  .getByLanguageId(languageId);
  59.             List tmpGenereList = new ArrayList<String>();
  60.             for(Genre g : genres){
  61.                 tmpGenereList.add(g.getName());
  62.             }
  63.             return tmpGenereList;
  64.         }
  65.        
  66.         private FeedbackPanel feedback;
  67.         /* form */
  68.         public AddMovieForm(String id)
  69.         {
  70.             super(id);
  71.             setOutputMarkupId(true);
  72.            
  73.             /* fields */
  74.             nameAdd = new TextField("nameAdd", new PropertyModel(properties, "nameAdd"));
  75.             nameAdd.setRequired(true);
  76.             add(nameAdd);
  77.            
  78.             /* get Genres from DB */
  79.             List<Genre> genres = ProviderManager.getDal(IGenreDal.class).getAll();
  80.             ChoiceRenderer genreRender = new ChoiceRenderer("name");
  81.             genreAdd = new DropDownChoice("genreAdd", new PropertyModel(
  82.                     properties, "genreAdd"), genres, genreRender);
  83.             genreAdd.setRequired(true);
  84.             add(genreAdd);
  85.            
  86.             yearAdd = new TextField("yearAdd", new PropertyModel(
  87.                     properties, "yearAdd"), Integer.class);
  88.             yearAdd.setRequired(true);
  89.             add(yearAdd);
  90.            
  91.             descriptionAdd = new TextArea("descriptionAdd", new PropertyModel(
  92.                     properties, "descriptionAdd"));
  93.             descriptionAdd.setRequired(true);
  94.             add(descriptionAdd);
  95.            
  96.             crewAdd = new TextArea("crewAdd", new PropertyModel(properties, "crewAdd"));
  97.             add(crewAdd);
  98.            
  99.             priceAdd = new TextField("priceAdd", new PropertyModel(
  100.                     properties, "priceAdd"), Double.class);
  101.             priceAdd.setRequired(true);
  102.             add(priceAdd);
  103.            
  104.            
  105.            
  106.             /* panel */
  107.             feedback = new FeedbackPanel("feedback");
  108.             feedback.setOutputMarkupId(true);
  109.             add(feedback);
  110.            
  111.             AjaxButton addSave = new AjaxButton("addSave", this)
  112.             {
  113.                 private static final long serialVersionUID = 1L;
  114.  
  115.                 @Override
  116.                 protected void onSubmit(AjaxRequestTarget target, Form form)
  117.                 {
  118.                     onSubmitButton();
  119.                     target.appendJavascript("window.history.go(0);");
  120.                 }
  121.                
  122.                 @Override
  123.                 protected void onError(AjaxRequestTarget target, Form form)
  124.                 {
  125.                     target.addComponent(form);
  126.                 }
  127.             };
  128.             add(addSave);
  129.         }
  130.  
  131.         protected void onSubmitButton()
  132.         {
  133.             String nameAdd = properties.getString("nameAdd");
  134.             Genre genreAdd = (Genre)properties.get("genreAdd");
  135.             int yearAdd = properties.getInt("yearAdd");
  136.             String descriptionAdd = properties.getString("descriptionAdd");
  137.             String crewAdd = properties.getString("crewAdd");
  138.             double priceAdd = properties.getDouble("priceAdd");
  139.            
  140.             /* set fields */
  141.             Movie movie = new Movie();
  142.             movie.setName(nameAdd);
  143.             movie.setYear(yearAdd);
  144.             movie.setDescription(descriptionAdd);
  145.             movie.setPrice(priceAdd);
  146.             movie.setCrew(crewAdd);
  147.             movie.setGenre(genreAdd);
  148.            
  149.             try
  150.             {
  151.                 ProviderManager.getDal(IMovieDal.class).insert(movie);
  152.                 cleanInput();
  153.                 info("Successfully added a movie.");
  154.             }
  155.             catch (Exception e)
  156.             {
  157.                 System.out.print(e.getMessage());
  158.                 info("Error adding a movie.");
  159.             }
  160.         }
  161.  
  162.         public void cleanInput()
  163.         {
  164.             properties.clear();
  165.         }
  166.     }
  167.  
  168.     private class EditMovieForm extends Form
  169.     {
  170.         private static final long serialVersionUID = 1L;
  171.         private ValueMap properties = new ValueMap();
  172.  
  173.         private TextField nameEdit;
  174.         private DropDownChoice genreEdit;
  175.         private TextField yearEdit;
  176.         private TextArea descriptionEdit;
  177.         private TextArea crewEdit;
  178.         private TextField priceEdit;
  179.         private FeedbackPanel feedback;
  180.         Movie movie = null;
  181.  
  182.         private BookmarkablePageLink imageAddLink;
  183.         PageParameters params = null;
  184.        
  185.         private List getGenres(){
  186.             int languageId = getMovielandSession().getLanguage().getId();
  187.             List<Genre> genres = ProviderManager.getDal(IGenreDal.class)
  188.                                  .getByLanguageId(languageId);
  189.             List tmpGenereList = new ArrayList<String>();
  190.             for(Genre g : genres){
  191.                 tmpGenereList.add(g.getName());
  192.             }
  193.             return tmpGenereList;
  194.         }
  195.        
  196.         /* form */
  197.         public EditMovieForm(String id)
  198.         {
  199.             super(id);
  200.             setOutputMarkupId(true);
  201.            
  202.             /* fields */
  203.             nameEdit = new TextField("nameEdit", new PropertyModel(properties, "nameEdit"));
  204.             nameEdit.setRequired(true);
  205.             add(nameEdit);
  206.            
  207.             /* get Genres from DB */
  208.             List<Genre> genres = ProviderManager.getDal(IGenreDal.class).getAll();
  209.             ChoiceRenderer genreRender = new ChoiceRenderer("name");
  210.             genreEdit = new DropDownChoice("genreEdit", new PropertyModel(
  211.                     properties, "genreEdit"), genres, genreRender);
  212.             genreEdit.setRequired(true);
  213.             add(genreEdit);
  214.            
  215.             yearEdit = new TextField("yearEdit", new PropertyModel(
  216.                     properties, "yearEdit"), Integer.class);
  217.             yearEdit.setRequired(true);
  218.             add(yearEdit);
  219.            
  220.             descriptionEdit = new TextArea("descriptionEdit",
  221.                     new PropertyModel(properties, "descriptionEdit"));
  222.             descriptionEdit.setRequired(true);
  223.             add(descriptionEdit);
  224.            
  225.             crewEdit = new TextArea("crewEdit", new PropertyModel(properties, "crewEdit"));
  226.             add(crewEdit);
  227.            
  228.             priceEdit = new TextField("priceEdit", new PropertyModel(
  229.                     properties, "priceEdit"), Double.class);
  230.             priceEdit.setRequired(true);
  231.             add(priceEdit);
  232.            
  233.             params = new PageParameters();
  234.             /* test */
  235.             params.add("movieId", Integer.toString(33));
  236.            
  237.             imageAddLink = new BookmarkablePageLink("imageAddLink", MoviesImageUploadPage.class, params);
  238.             imageAddLink.add(new Label("imageAddLinkLabel","Add images"));
  239.             /* panel */
  240.             feedback = new FeedbackPanel("feedback");
  241.             feedback.setOutputMarkupId(true);
  242.             add(feedback);
  243.            
  244.             AjaxButton editSave = new AjaxButton("editSave", this)
  245.             {
  246.                 private static final long serialVersionUID = 1L;
  247.  
  248.                 @Override
  249.                 protected void onSubmit(AjaxRequestTarget target, Form form)
  250.                 {
  251.                     onSubmitButton();
  252.                     target.addComponent(form);
  253.                 }
  254.                
  255.                 @Override
  256.                 protected void onError(AjaxRequestTarget target, Form form)
  257.                 {
  258.                     target.addComponent(form);
  259.                 }
  260.             };
  261.             add(editSave);
  262.             add(imageAddLink);
  263.            
  264.         }
  265.  
  266.         protected void onSubmitButton()
  267.         {
  268.             if (movie == null)
  269.             {
  270.                 info("Please select movie.");
  271.                 return;
  272.             }
  273.            
  274.             int movieId = properties.getInt("movieId");
  275.             String nameEdit = properties.getString("nameEdit");
  276.             Genre genreEdit = (Genre)properties.get("genreEdit");
  277.             int yearEdit = properties.getInt("yearEdit");
  278.             String descriptionEdit = properties.getString("descriptionEdit");
  279.             String crewEdit = properties.getString("crewEdit");
  280.             double priceEdit = Double.valueOf(properties.getString("priceEdit"));
  281.            
  282.             /* set fields */
  283.             Movie newMovie = movie;
  284.             newMovie.setId(movieId);
  285.             newMovie.setName(nameEdit);
  286.             newMovie.setYear(yearEdit);
  287.             newMovie.setDescription(descriptionEdit);
  288.             newMovie.setPrice(priceEdit);
  289.             newMovie.setCrew(crewEdit);
  290.             newMovie.setGenre(genreEdit);
  291.            
  292.             try
  293.             {
  294.                 ProviderManager.getDal(IMovieDal.class).update(newMovie);
  295.                 moviesList.remove(movie);
  296.                 moviesList.add(newMovie);
  297.                 info("Edit successful.");
  298.             }
  299.             catch (Exception e)
  300.             {
  301.                 e.printStackTrace();
  302.                 info("Edit failed.");
  303.             }
  304.         }
  305.  
  306.         public void showMovieData(Movie m)
  307.         {
  308.             properties.put("nameEdit", m.getName());
  309.             properties.put("genreEdit", m.getGenre());
  310.             properties.put("yearEdit", m.getYear());
  311.             properties.put("descriptionEdit", m.getDescription());
  312.             properties.put("crewEdit", m.getCrew());
  313.             properties.put("priceEdit", m.getPrice());
  314.             properties.put("movieId", m.getId());
  315.             movie = m;
  316.             params.put("movieId", m.getId());
  317.         }
  318.     }
  319.  
  320.     @SuppressWarnings("rawtypes")
  321.     private class SearchMovieForm extends Form
  322.     {
  323.         private static final long serialVersionUID = 1L;
  324.         private ValueMap properties = new ValueMap();
  325.         private TextField keyword;
  326.         private DropDownChoice choice;
  327.         final List terms = Arrays.asList(new String[] { "Name", "Genre", "Year" });
  328.  
  329.         /* form */
  330.         public SearchMovieForm(String id)
  331.         {
  332.             super(id);
  333.             /* fields */
  334.             keyword = new TextField("keyword", new PropertyModel(properties, "keyword"));
  335.             add(keyword);
  336.            
  337.             choice = new DropDownChoice("choice", new PropertyModel(properties, "choice"), terms);
  338.             add(choice);
  339.         }
  340.  
  341.         @Override
  342.         protected void onSubmit()
  343.         {
  344.             String keyword = properties.getString("keyword");
  345.             String column = properties.getString("choice");
  346.             displayMovieSearchResults(keyword, column);
  347.             resetMovieList();
  348.         }
  349.     }
  350.  
  351.     public List<Movie> searchMovies(String keyword, String choice)
  352.     {
  353.         return ProviderManager.getDal(IMovieDal.class).searchMovies(keyword, choice);
  354.     }
  355.  
  356.     private void displayMovieSearchResults(String keyword, String column)
  357.     {
  358.         try
  359.         {
  360.             this.moviesListView = this.displaySearchResults(keyword, column);
  361.         }
  362.         catch (Exception e)
  363.         {
  364.             e.getMessage();
  365.         }
  366.     }
  367.  
  368.     public void removeMovieList()
  369.     {
  370.         try
  371.         {
  372.             this.remove(moviesListView);
  373.             this.remove("navigator");
  374.         }
  375.         catch (Exception e)
  376.         {
  377.             e.printStackTrace();
  378.         }
  379.     }
  380.  
  381.     public void addMovieList()
  382.     {
  383.         try
  384.         {
  385.             this.add(moviesListView);
  386.             PagingNavigator navigator = new PagingNavigator("navigator", moviesListView);
  387.             if (moviesList.size() > 20)
  388.                 navigator.setVisible(true);
  389.             else
  390.                 navigator.setVisible(false);
  391.             add(navigator);
  392.         }
  393.         catch (Exception e)
  394.         {
  395.             e.printStackTrace();
  396.         }
  397.     }
  398.  
  399.     public void resetMovieList()
  400.     {
  401.         removeMovieList();
  402.         addMovieList();
  403.     }
  404.  
  405.     private PageableListView displaySearchResults(String keyword, String choice)
  406.     {
  407.         if(moviesListView != null)
  408.             moviesListView.removeAll();
  409.         moviesList = searchMovies(keyword, choice);
  410.         moviesListView = new PageableListView("moviesListView", moviesList, 20)
  411.         {
  412.             public void populateItem(ListItem item)
  413.             {
  414.                 final Movie movie = (Movie) item.getModelObject();
  415.                 item.add(new Label("name", movie.getName()));
  416.                 item.add(new Label("genre", movie.getGenre().getName()));
  417.                 item.add(new Label("year", movie.getYear() + ""));
  418.                 item.add(new Label("price", movie.getPrice() + ""));
  419.  
  420.                 Link delete = new Link("delete", item.getModel())
  421.                 {
  422.                     @Override
  423.                     public void onClick()
  424.                     {
  425.                         try
  426.                         {
  427.                             Movie selectedMovie = (Movie) getModelObject();
  428.                             ProviderManager.getDal(IMovieDal.class).delete(
  429.                                     selectedMovie.getId());
  430.                             moviesList.remove(selectedMovie);
  431.                         }
  432.                         catch (Exception e)
  433.                         {
  434.                             e.printStackTrace();
  435.                         }
  436.  
  437.                     }
  438.                 };
  439.                 String message = "Do you want to delete this movie?";
  440.                 delete.add(new SimpleAttributeModifier("onclick", "return confirm(' " + message + " ');"));
  441.                 item.add(delete);
  442.  
  443.                 item.add(new AjaxLink("edit")
  444.                 {
  445.                     @Override
  446.                     public void onClick(AjaxRequestTarget target)
  447.                     {
  448.                         try
  449.                         {
  450.                             editForm.showMovieData(movie);
  451.                             target.addComponent(editForm);
  452.                             target.appendJavascript("$('#accordion').accordion('activate', 2);");
  453.                         }
  454.                         catch (Exception e)
  455.                         {
  456.                             e.printStackTrace();
  457.                         }
  458.                     }
  459.                 });
  460.             }
  461.         };
  462.         moviesListView.setOutputMarkupId(true);
  463.         return moviesListView;
  464.     }
  465.  
  466.     public MoviesAdminPage()
  467.     {
  468.         AddMovieForm addForm = new AddMovieForm("addMovieForm");
  469.         add(addForm);
  470.         editForm = new EditMovieForm("editMovieForm");
  471.         add(editForm);
  472.         SearchMovieForm searchForm = new SearchMovieForm("searchMoviesForm");
  473.         add(searchForm);
  474.         moviesListView = displaySearchResults("", "");
  475.         addMovieList();
  476.     }
  477. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement