Coverage Report - org.jtheque.films.view.impl.panels.search.JPanelFilmSearch
 
Classes in this File Line Coverage Branch Coverage Complexity
JPanelFilmSearch
0 %
0/76
0 %
0/16
1.727
 
 1  
 package org.jtheque.films.view.impl.panels.search;
 2  
 
 3  
 /*
 4  
  * This file is part of JTheque.
 5  
  *
 6  
  * JTheque is free software: you can redistribute it and/or modify
 7  
  * it under the terms of the GNU General Public License as published by
 8  
  * the Free Software Foundation, either version 3 of the License.
 9  
  *
 10  
  * JTheque is distributed in the hope that it will be useful,
 11  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 13  
  * GNU General Public License for more details.
 14  
  *
 15  
  * You should have received a copy of the GNU General Public License
 16  
  * along with JTheque.  If not, see <http://www.gnu.org/licenses/>.
 17  
  */
 18  
 
 19  
 import org.jtheque.core.managers.Managers;
 20  
 import org.jtheque.core.managers.language.ILanguageManager;
 21  
 import org.jtheque.core.utils.ui.PanelBuilder;
 22  
 import org.jtheque.films.services.able.IActorService;
 23  
 import org.jtheque.films.services.able.IRealizersService;
 24  
 import org.jtheque.films.services.impl.utils.search.DataSearcher;
 25  
 import org.jtheque.films.services.impl.utils.search.Searcher;
 26  
 import org.jtheque.films.services.impl.utils.search.filters.ActorFilter;
 27  
 import org.jtheque.films.services.impl.utils.search.filters.DurationFilter;
 28  
 import org.jtheque.films.services.impl.utils.search.filters.KindFilter;
 29  
 import org.jtheque.films.services.impl.utils.search.filters.LanguageFilter;
 30  
 import org.jtheque.films.services.impl.utils.search.filters.NoteFilter;
 31  
 import org.jtheque.films.services.impl.utils.search.filters.RealizerFilter;
 32  
 import org.jtheque.films.services.impl.utils.search.filters.TypeFilter;
 33  
 import org.jtheque.films.services.impl.utils.search.filters.YearFilter;
 34  
 import org.jtheque.films.utils.Constants.Properties.Film;
 35  
 import org.jtheque.films.view.impl.editors.DurationEditor;
 36  
 import org.jtheque.films.view.impl.models.spinner.SpinnerDurationModel;
 37  
 import org.jtheque.primary.od.able.Kind;
 38  
 import org.jtheque.primary.od.able.Language;
 39  
 import org.jtheque.primary.od.able.Person;
 40  
 import org.jtheque.primary.od.able.Type;
 41  
 import org.jtheque.primary.services.able.IKindsService;
 42  
 import org.jtheque.primary.services.able.ILanguagesService;
 43  
 import org.jtheque.primary.services.able.ITypesService;
 44  
 import org.jtheque.primary.view.impl.models.DataContainerCachedComboBoxModel;
 45  
 import org.jtheque.primary.view.impl.models.NotesComboBoxModel;
 46  
 import org.jtheque.utils.ui.GridBagUtils;
 47  
 
 48  
 import javax.annotation.PostConstruct;
 49  
 import javax.annotation.Resource;
 50  
 import javax.swing.JCheckBox;
 51  
 import javax.swing.JSpinner;
 52  
 import javax.swing.JTextField;
 53  
 
 54  
 /**
 55  
  * A search panel for films.
 56  
  *
 57  
  * @author Baptiste Wicht
 58  
  */
 59  0
 public final class JPanelFilmSearch extends JPanelSearch {
 60  
     private static final long serialVersionUID = 7108296888681550453L;
 61  
 
 62  
     private JCheckBox boxKind;
 63  
     private JCheckBox boxActor;
 64  
     private JCheckBox boxType;
 65  
     private JCheckBox boxYear;
 66  
     private JTextField fieldYearFrom;
 67  
     private JTextField fieldYearTo;
 68  
     private JCheckBox boxRealizer;
 69  
     private JCheckBox boxLanguage;
 70  
     private JCheckBox boxNote;
 71  
     private JCheckBox boxDuration;
 72  
     private JSpinner fieldDurationFrom;
 73  
     private JSpinner fieldDurationTo;
 74  
 
 75  
     private NotesComboBoxModel modelNotes;
 76  
     private DataContainerCachedComboBoxModel<Kind> modelKinds;
 77  
     private DataContainerCachedComboBoxModel<Person> modelActors;
 78  
     private DataContainerCachedComboBoxModel<Type> modelTypes;
 79  
     private DataContainerCachedComboBoxModel<Person> modelRealizers;
 80  
     private DataContainerCachedComboBoxModel<Language> modelLanguages;
 81  
 
 82  
     @Resource
 83  
     private ITypesService typesService;
 84  
 
 85  
     @Resource
 86  
     private ILanguagesService languagesService;
 87  
 
 88  
     @Resource
 89  
     private IRealizersService realizersService;
 90  
 
 91  
     @Resource
 92  
     private IKindsService kindsService;
 93  
 
 94  
     @Resource
 95  
     private IActorService actorService;
 96  
 
 97  
     /**
 98  
      * Build the panel.
 99  
      */
 100  
     @PostConstruct
 101  
     private void build() {
 102  0
         PanelBuilder builder = new PanelBuilder(this);
 103  
 
 104  0
         addKindChoice(builder);
 105  0
         addActorChoice(builder);
 106  0
         addTypeChoice(builder);
 107  0
         addYearChoice(builder);
 108  0
         addRealizerChoice(builder);
 109  0
         addLanguageChoice(builder);
 110  0
         addNoteChoice(builder);
 111  0
         addDurationChoice(builder);
 112  0
     }
 113  
 
 114  
     /**
 115  
      * Add the kind choice.
 116  
      *
 117  
      * @param builder The builder of the panel.
 118  
      */
 119  
     private void addKindChoice(PanelBuilder builder) {
 120  0
         boxKind = builder.add(new JCheckBox(), builder.gbcSet(0, 0));
 121  
 
 122  0
         builder.addI18nLabel(Film.KIND, builder.gbcSet(1, 0));
 123  
 
 124  0
         modelKinds = new DataContainerCachedComboBoxModel<Kind>(kindsService);
 125  
 
 126  0
         builder.addComboBox(modelKinds, builder.gbcSet(2, 0, GridBagUtils.NONE, 2, 1));
 127  0
     }
 128  
 
 129  
     /**
 130  
      * Add the actor choice.
 131  
      *
 132  
      * @param builder The builder of the panel.
 133  
      */
 134  
     private void addActorChoice(PanelBuilder builder) {
 135  0
         boxActor = builder.add(new JCheckBox(), builder.gbcSet(0, 1));
 136  
 
 137  0
         builder.addI18nLabel(Film.ACTORS, builder.gbcSet(1, 1));
 138  
 
 139  0
         modelActors = new DataContainerCachedComboBoxModel<Person>(actorService);
 140  
 
 141  0
         builder.addComboBox(modelActors, builder.gbcSet(2, 1, GridBagUtils.NONE, 2, 1));
 142  0
     }
 143  
 
 144  
     /**
 145  
      * Add the type choice.
 146  
      *
 147  
      * @param builder The builder of the panel.
 148  
      */
 149  
     private void addTypeChoice(PanelBuilder builder) {
 150  0
         boxType = builder.add(new JCheckBox(), builder.gbcSet(0, 2));
 151  
 
 152  0
         builder.addI18nLabel(Film.TYPE, builder.gbcSet(1, 2));
 153  
 
 154  0
         modelTypes = new DataContainerCachedComboBoxModel<Type>(typesService);
 155  
 
 156  0
         builder.addComboBox(modelTypes, builder.gbcSet(2, 2, GridBagUtils.NONE, 2, 1));
 157  0
     }
 158  
 
 159  
     /**
 160  
      * Add the realizer choice.
 161  
      *
 162  
      * @param builder The builder of the panel.
 163  
      */
 164  
     private void addRealizerChoice(PanelBuilder builder) {
 165  0
         boxRealizer = builder.add(new JCheckBox(), builder.gbcSet(0, 4));
 166  
 
 167  0
         builder.addI18nLabel(Film.REALIZER, builder.gbcSet(1, 4));
 168  
 
 169  0
         modelRealizers = new DataContainerCachedComboBoxModel<Person>(realizersService);
 170  
 
 171  0
         builder.addComboBox(modelRealizers, builder.gbcSet(2, 4, GridBagUtils.NONE, 2, 1));
 172  0
     }
 173  
 
 174  
     /**
 175  
      * Add the language choice.
 176  
      *
 177  
      * @param builder The builder of the panel.
 178  
      */
 179  
     private void addLanguageChoice(PanelBuilder builder) {
 180  0
         boxLanguage = builder.add(new JCheckBox(), builder.gbcSet(0, 5));
 181  
 
 182  0
         builder.addI18nLabel(Film.LANGUAGE, builder.gbcSet(1, 5));
 183  
 
 184  0
         modelLanguages = new DataContainerCachedComboBoxModel<Language>(languagesService);
 185  
 
 186  0
         builder.addComboBox(modelLanguages, builder.gbcSet(2, 5, GridBagUtils.NONE, 2, 1));
 187  0
     }
 188  
 
 189  
     /**
 190  
      * Add the note choice.
 191  
      *
 192  
      * @param builder The builder of the panel.
 193  
      */
 194  
     private void addNoteChoice(PanelBuilder builder) {
 195  0
         boxNote = builder.add(new JCheckBox(), builder.gbcSet(0, 6));
 196  
 
 197  0
         builder.addI18nLabel(Film.NOTE, builder.gbcSet(1, 6));
 198  
 
 199  0
         modelNotes = new NotesComboBoxModel();
 200  
 
 201  0
         builder.addComboBox(modelNotes, builder.gbcSet(2, 6, GridBagUtils.NONE, 2, 1));
 202  0
     }
 203  
 
 204  
     /**
 205  
      * Add the year choice.
 206  
      *
 207  
      * @param builder The builder of the panel.
 208  
      */
 209  
     private void addYearChoice(PanelBuilder builder) {
 210  0
         boxYear = builder.add(new JCheckBox(), builder.gbcSet(0, 3));
 211  
 
 212  0
         builder.addI18nLabel(Film.YEAR, builder.gbcSet(1, 3));
 213  
 
 214  0
         fieldYearFrom = builder.add(new JTextField(4), builder.gbcSet(2, 3));
 215  
 
 216  0
         builder.addI18nLabel("search.film.to", builder.gbcSet(3, 3));
 217  
 
 218  0
         fieldYearTo = builder.add(new JTextField(4), builder.gbcSet(4, 3));
 219  0
     }
 220  
 
 221  
     /**
 222  
      * Add the duration choice.
 223  
      *
 224  
      * @param builder The builder of the panel.
 225  
      */
 226  
     private void addDurationChoice(PanelBuilder builder) {
 227  0
         boxDuration = builder.add(new JCheckBox(), builder.gbcSet(0, 7));
 228  
 
 229  0
         builder.addI18nLabel(Film.DURATION, builder.gbcSet(1, 7));
 230  
 
 231  0
         fieldDurationFrom = new JSpinner(new SpinnerDurationModel("1:00"));
 232  0
         fieldDurationFrom.setEditor(new DurationEditor(fieldDurationFrom));
 233  0
         builder.add(fieldDurationFrom, builder.gbcSet(2, 7));
 234  
 
 235  0
         builder.addI18nLabel("search.film.to", builder.gbcSet(3, 7));
 236  
 
 237  0
         fieldDurationTo = new JSpinner(new SpinnerDurationModel("2:00"));
 238  0
         fieldDurationTo.setEditor(new DurationEditor(fieldDurationTo));
 239  0
         builder.add(fieldDurationTo, builder.gbcSet(4, 7));
 240  0
     }
 241  
 
 242  
     @Override
 243  
     public String getTitle() {
 244  0
         return Managers.getManager(ILanguageManager.class).getMessage("search.film.title");
 245  
     }
 246  
 
 247  
     @Override
 248  
     public Searcher<org.jtheque.films.persistence.od.able.Film> getSearcher() {
 249  0
         Searcher<org.jtheque.films.persistence.od.able.Film> searcher = new DataSearcher<org.jtheque.films.persistence.od.able.Film>();
 250  
 
 251  0
         if (boxActor.isSelected()) {
 252  0
             searcher.addFilter(new ActorFilter(modelActors.getSelectedData()));
 253  
         }
 254  
 
 255  0
         if (boxKind.isSelected()) {
 256  0
             searcher.addFilter(new KindFilter(modelKinds.getSelectedData()));
 257  
         }
 258  
 
 259  0
         if (boxType.isSelected()) {
 260  0
             searcher.addFilter(new TypeFilter(modelTypes.getSelectedData()));
 261  
         }
 262  
 
 263  0
         if (boxRealizer.isSelected()) {
 264  0
             searcher.addFilter(new RealizerFilter(modelRealizers.getSelectedData()));
 265  
         }
 266  
 
 267  0
         if (boxLanguage.isSelected()) {
 268  0
             searcher.addFilter(new LanguageFilter(modelLanguages.getSelectedData()));
 269  
         }
 270  
 
 271  0
         if (boxNote.isSelected()) {
 272  0
             searcher.addFilter(new NoteFilter<org.jtheque.films.persistence.od.able.Film>(modelNotes.getSelectedNote()));
 273  
         }
 274  
 
 275  0
         if (boxYear.isSelected()) {
 276  0
             searcher.addFilter(new YearFilter(Integer.parseInt(fieldYearFrom.getText()), Integer.parseInt(fieldYearTo.getText())));
 277  
         }
 278  
 
 279  0
         if (boxDuration.isSelected()) {
 280  0
             searcher.addFilter(new DurationFilter(
 281  
                     ((SpinnerDurationModel) fieldDurationFrom.getModel()).intValue(),
 282  
                     ((SpinnerDurationModel) fieldDurationTo.getModel()).intValue()));
 283  
         }
 284  
 
 285  0
         return searcher;
 286  
     }
 287  
 }