finalizing preferred refactoring
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / model / ImagesUtil.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.model;
12
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Set;
16
17 import eu.etaxonomy.cdm.model.description.DescriptionBase;
18 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
19 import eu.etaxonomy.cdm.model.description.Feature;
20 import eu.etaxonomy.cdm.model.description.TaxonDescription;
21 import eu.etaxonomy.cdm.model.description.TextData;
22 import eu.etaxonomy.cdm.model.media.ImageFile;
23 import eu.etaxonomy.cdm.model.media.Media;
24 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
25 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
26 import eu.etaxonomy.cdm.model.taxon.Taxon;
27
28 /**
29 * @author p.ciardelli
30 * @created 31.03.2009
31 * @version 1.0
32 */
33 public class ImagesUtil {
34
35 public static Set<ImageFile> getImages(TaxonDescription description){
36 Set<ImageFile> images = new HashSet<ImageFile>();
37
38 for (DescriptionElementBase element : description.getElements()){
39
40 Feature feature = element.getFeature();
41
42 if(feature.equals(Feature.IMAGE())){
43 List<Media> medias = element.getMedia();
44
45 for(Media media : medias){
46 Set<MediaRepresentation> representations = media.getRepresentations();
47
48 for(MediaRepresentation representation : representations){
49 List<MediaRepresentationPart> parts = representation.getParts();
50
51 for (MediaRepresentationPart part : parts){
52 if(part instanceof ImageFile){
53 images.add((ImageFile) part);
54 }
55 }
56 }
57 }
58 }
59 }
60
61 return images;
62 }
63
64 /**
65 * @param taxon
66 * @param imageFile
67 */
68 public static void addTaxonImage(Taxon taxon, DescriptionBase<?> imageGallery, ImageFile imageFile) {
69
70 DescriptionElementBase descriptionElement = TextData.NewInstance(Feature.IMAGE());
71
72 Media media = Media.NewInstance();
73 MediaRepresentation representation = MediaRepresentation.NewInstance();
74
75 representation.addRepresentationPart(imageFile);
76
77 media.addRepresentation(representation);
78
79 descriptionElement.addMedia(media);
80
81 imageGallery.addElement(descriptionElement);
82
83 }
84
85 /**
86 * @param taxon
87 * @param imageFile
88 */
89 public static void removeTaxonImage(Taxon taxon, DescriptionBase<?> imageGallery, ImageFile imageFile) {
90 Set<DescriptionElementBase> elementsToRemove = new HashSet<DescriptionElementBase>();
91
92 Set<DescriptionElementBase> images = imageGallery.getElements();
93
94 for(DescriptionElementBase descriptionElement : images){
95 for(Media media : descriptionElement.getMedia()){
96 for(MediaRepresentation representation : media.getRepresentations()){
97 for(MediaRepresentationPart part : representation.getParts()){
98 if(part.equals(imageFile)){
99 elementsToRemove.add(descriptionElement);
100 }
101 }
102 }
103 }
104 }
105
106 for(DescriptionElementBase descriptionElement : elementsToRemove){
107 imageGallery.removeElement(descriptionElement);
108 }
109 }
110 }