Coverage Report - org.jtheque.films.services.impl.utils.file.backup.XMLBackupWriter
 
Classes in this File Line Coverage Branch Coverage Complexity
XMLBackupWriter
0 %
0/105
0 %
0/26
2.083
 
 1  
 package org.jtheque.films.services.impl.utils.file.backup;
 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.beans.IBeansManager;
 21  
 import org.jtheque.core.managers.file.able.BackupWriter;
 22  
 import org.jtheque.core.utils.file.XMLWriter;
 23  
 import org.jtheque.films.persistence.od.able.Film;
 24  
 import org.jtheque.films.services.able.IActorService;
 25  
 import org.jtheque.films.services.able.IFilmsService;
 26  
 import org.jtheque.films.services.able.IRealizersService;
 27  
 import org.jtheque.primary.od.able.Kind;
 28  
 import org.jtheque.primary.od.able.Language;
 29  
 import org.jtheque.primary.od.able.Lending;
 30  
 import org.jtheque.primary.od.able.Person;
 31  
 import org.jtheque.primary.od.able.Type;
 32  
 import org.jtheque.primary.services.able.IBorrowersService;
 33  
 import org.jtheque.primary.services.able.IKindsService;
 34  
 import org.jtheque.primary.services.able.ILanguagesService;
 35  
 import org.jtheque.primary.services.able.ILendingsService;
 36  
 import org.jtheque.primary.services.able.ITypesService;
 37  
 
 38  
 import javax.annotation.Resource;
 39  
 
 40  
 /**
 41  
  * A XML Backup Writer.
 42  
  *
 43  
  * @author Baptiste Wicht
 44  
  */
 45  
 public final class XMLBackupWriter implements BackupWriter {
 46  
     @Resource
 47  
     private ILendingsService lendingsService;
 48  
 
 49  
     @Resource
 50  
     private ITypesService typesService;
 51  
 
 52  
     @Resource
 53  
     private ILanguagesService languagesService;
 54  
 
 55  
     @Resource
 56  
     private IBorrowersService borrowersService;
 57  
 
 58  
     @Resource
 59  
     private IFilmsService filmsService;
 60  
 
 61  
     @Resource
 62  
     private IActorService actorService;
 63  
 
 64  
     @Resource
 65  
     private IRealizersService realizersService;
 66  
 
 67  
     @Resource
 68  
     private IKindsService kindsService;
 69  
 
 70  
     /**
 71  
      * Construct a new XMLBackupWriter.
 72  
      */
 73  
     public XMLBackupWriter() {
 74  0
         super();
 75  
 
 76  0
         Managers.getManager(IBeansManager.class).inject(this);
 77  0
     }
 78  
 
 79  
     @Override
 80  
     public void write(Object object) {
 81  0
         XMLWriter writer = (XMLWriter) object;
 82  
 
 83  0
         writeFilms(writer);
 84  0
         writePersons(writer, "actor", actorService.getActors());
 85  0
         writePersons(writer, "realizer", realizersService.getRealizers());
 86  0
         writeKinds(writer);
 87  0
         writeTypes(writer);
 88  0
         writeLanguages(writer);
 89  0
         writeCountries(writer);
 90  0
         writeBorrowers(writer);
 91  0
         writeLendings(writer);
 92  0
     }
 93  
 
 94  
     /**
 95  
      * Write all the films in the Document.
 96  
      *
 97  
      * @param writer The document in which add the header.
 98  
      */
 99  
     private void writeFilms(XMLWriter writer) {
 100  0
         writer.add("films");
 101  
 
 102  0
         for (Film film : filmsService.getFilms()) {
 103  0
             writer.add("film");
 104  
 
 105  0
             writer.addOnly("id", Integer.toString(film.getId()));
 106  0
             writer.addOnly("title", film.getTitle());
 107  
 
 108  0
             addKindsOfFilm(writer, film);
 109  
 
 110  0
             writer.addOnly("type", film.hasType() ? film.getTheType().getId() : -2);
 111  0
             writer.addOnly("realizer", film.hasRealizer() ? film.getTheRealizer().getId() : -2);
 112  0
             writer.addOnly("language", film.hasLanguage() ? film.getTheLanguage().getId() : -2);
 113  
 
 114  0
             writer.addOnly("year", film.getYear());
 115  0
             writer.addOnly("duration", film.getDuration());
 116  0
             writer.addOnly("note", film.getNote().getValue().intValue());
 117  0
             writer.addOnly("resume", film.getResume());
 118  0
             writer.addOnly("comment", film.getComment());
 119  
 
 120  0
             addActorsOfFilm(writer, film);
 121  
 
 122  0
             writer.switchToParent();
 123  
         }
 124  
 
 125  0
         writer.switchToParent();
 126  0
     }
 127  
 
 128  
     /**
 129  
      * Add the kinds of the film to the XML file.
 130  
      *
 131  
      * @param writer The XML writer.
 132  
      * @param film   The film to get the informations from.
 133  
      */
 134  
     private static void addKindsOfFilm(XMLWriter writer, Film film) {
 135  0
         writer.add("kinds");
 136  
 
 137  0
         for (Kind kind : film.getKinds()) {
 138  0
             writer.addOnly("kind", kind.getId());
 139  
         }
 140  
 
 141  0
         writer.switchToParent();
 142  0
     }
 143  
 
 144  
     /**
 145  
      * Add the actors of the film to the XML file.
 146  
      *
 147  
      * @param writer The XML writer.
 148  
      * @param film   The film to get the informations from.
 149  
      */
 150  
     private static void addActorsOfFilm(XMLWriter writer, Film film) {
 151  0
         writer.add("actors");
 152  
 
 153  0
         for (Person actor : film.getActors()) {
 154  0
             writer.addOnly("actor", actor.getId());
 155  
         }
 156  
 
 157  0
         writer.switchToParent();
 158  0
     }
 159  
 
 160  
     /**
 161  
      * Write all the actors in the Document.
 162  
      *
 163  
      * @param writer   The document in which we write.
 164  
      * @param category The category id.
 165  
      * @param persons  The persons to write.
 166  
      */
 167  
     private static void writePersons(XMLWriter writer, String category, Iterable<? extends Person> persons) {
 168  0
         writer.add(category + 's');
 169  
 
 170  0
         for (Person person : persons) {
 171  0
             writer.add(category);
 172  
 
 173  0
             writer.addOnly("id", person.getId());
 174  0
             writer.addOnly("name", person.getName());
 175  0
             writer.addOnly("firstname", person.getFirstName());
 176  0
             writer.addOnly("country", person.getTheCountry().getId());
 177  0
             writer.addOnly("note", person.getNote().getValue().intValue());
 178  
 
 179  0
             writer.switchToParent();
 180  
         }
 181  
 
 182  0
         writer.switchToParent();
 183  0
     }
 184  
 
 185  
     /**
 186  
      * Write all the languages to the Document.
 187  
      *
 188  
      * @param writer The Document in which we write
 189  
      */
 190  
     private void writeLanguages(XMLWriter writer) {
 191  0
         writer.add("languages");
 192  
 
 193  0
         for (Language language : languagesService.getLanguages()) {
 194  0
             writer.add("language");
 195  
 
 196  0
             writer.addOnly("id", language.getId());
 197  0
             writer.addOnly("name", language.getName());
 198  
 
 199  0
             writer.switchToParent();
 200  
         }
 201  
 
 202  0
         writer.switchToParent();
 203  0
     }
 204  
 
 205  
     /**
 206  
      * Write all the kinds to the Document.
 207  
      *
 208  
      * @param writer The Document in which we write
 209  
      */
 210  
     private void writeKinds(XMLWriter writer) {
 211  0
         writer.add("kinds");
 212  
 
 213  0
         for (Kind kind : kindsService.getKinds()) {
 214  0
             writer.add("kind");
 215  
 
 216  0
             writer.addOnly("id", kind.getId());
 217  0
             writer.addOnly("name", kind.getName());
 218  
 
 219  0
             writer.switchToParent();
 220  
         }
 221  
 
 222  0
         writer.switchToParent();
 223  0
     }
 224  
 
 225  
     /**
 226  
      * Write all the kinds to the Document.
 227  
      *
 228  
      * @param writer The Document in which we write
 229  
      */
 230  
     private void writeTypes(XMLWriter writer) {
 231  0
         writer.add("types");
 232  
 
 233  0
         for (Type type : typesService.getTypes()) {
 234  0
             writer.add("type");
 235  
 
 236  0
             writer.addOnly("id", type.getId());
 237  0
             writer.addOnly("name", type.getName());
 238  
 
 239  0
             writer.switchToParent();
 240  
         }
 241  
 
 242  0
         writer.switchToParent();
 243  0
     }
 244  
 
 245  
     /**
 246  
      * Write all the countries to the Document.
 247  
      *
 248  
      * @param writer The Document in which we write
 249  
      */
 250  
     private void writeCountries(XMLWriter writer) {
 251  0
         writer.add("countries");
 252  
 
 253  0
         for (Type type : typesService.getTypes()) {
 254  0
             writer.add("country");
 255  
 
 256  0
             writer.addOnly("id", type.getId());
 257  0
             writer.addOnly("name", type.getName());
 258  
 
 259  0
             writer.switchToParent();
 260  
         }
 261  
 
 262  0
         writer.switchToParent();
 263  0
     }
 264  
 
 265  
     /**
 266  
      * Write all borrowers in the Document.
 267  
      *
 268  
      * @param writer The document in which we write.
 269  
      */
 270  
     private void writeBorrowers(XMLWriter writer) {
 271  0
         writer.add("borrowers");
 272  
 
 273  0
         for (Person borrower : borrowersService.getBorrowers()) {
 274  0
             writer.add("borrower");
 275  
 
 276  0
             writer.addOnly("id", borrower.getId());
 277  0
             writer.addOnly("name", borrower.getName());
 278  0
             writer.addOnly("firstname", borrower.getFirstName());
 279  0
             writer.addOnly("email", borrower.getEmail());
 280  
 
 281  0
             writer.switchToParent();
 282  
         }
 283  
 
 284  0
         writer.switchToParent();
 285  0
     }
 286  
 
 287  
     /**
 288  
      * Write all lendings in the Document.
 289  
      *
 290  
      * @param writer The document in which we write.
 291  
      */
 292  
     private void writeLendings(XMLWriter writer) {
 293  0
         writer.add("lendings");
 294  
 
 295  0
         for (Lending lending : lendingsService.getLendings()) {
 296  0
             writer.add("lending");
 297  
 
 298  0
             writer.addOnly("id", lending.getId());
 299  0
             writer.addOnly("date", lending.getDate().intValue());
 300  0
             writer.addOnly("borrower", lending.getThePerson().getId());
 301  0
             writer.addOnly("email", lending.getTheOther());
 302  
 
 303  0
             writer.switchToParent();
 304  
         }
 305  
 
 306  0
         writer.switchToParent();
 307  0
     }
 308  
 }