(no commit message)
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / MediaServiceImpl.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.cdm.api.service;
12
13 import java.io.IOException;
14 import java.net.MalformedURLException;
15 import java.net.ServerSocket;
16 import java.net.Socket;
17 import java.net.URI;
18 import java.net.URL;
19 import java.net.URLConnection;
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.Set;
24
25 import org.springframework.beans.factory.annotation.Autowired;
26 import org.springframework.stereotype.Service;
27 import org.springframework.transaction.annotation.Transactional;
28
29 import eu.etaxonomy.cdm.api.service.pager.Pager;
30 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
31 import eu.etaxonomy.cdm.common.mediaMetaData.MediaMetaData;
32 import eu.etaxonomy.cdm.model.description.MediaKey;
33 import eu.etaxonomy.cdm.model.location.NamedArea;
34 import eu.etaxonomy.cdm.model.media.Media;
35 import eu.etaxonomy.cdm.model.media.Rights;
36 import eu.etaxonomy.cdm.model.taxon.Taxon;
37 import eu.etaxonomy.cdm.persistence.dao.media.IMediaDao;
38 import eu.etaxonomy.cdm.persistence.query.OrderHint;
39
40 @Service
41 @Transactional(readOnly=true)
42 public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> implements IMediaService {
43
44 @Autowired
45 protected void setDao(IMediaDao dao) {
46 this.dao = dao;
47 }
48
49 public Pager<MediaKey> getMediaKeys(Set<Taxon> taxonomicScope, Set<NamedArea> geoScopes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
50 Integer numberOfResults = dao.countMediaKeys(taxonomicScope, geoScopes);
51
52 List<MediaKey> results = new ArrayList<MediaKey>();
53 if(numberOfResults > 0) { // no point checking again
54 results = dao.getMediaKeys(taxonomicScope, geoScopes, pageSize, pageNumber, propertyPaths);
55 }
56
57 return new DefaultPagerImpl<MediaKey>(pageNumber, numberOfResults, pageSize, results);
58 }
59
60 public Pager<Rights> getRights(Media t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
61 Integer numberOfResults = dao.countRights(t);
62
63 List<Rights> results = new ArrayList<Rights>();
64 if(numberOfResults > 0) { // no point checking again
65 results = dao.getRights(t, pageSize, pageNumber,propertyPaths);
66 }
67
68 return new DefaultPagerImpl<Rights>(pageNumber, numberOfResults, pageSize, results);
69 }
70
71 public Pager<Media> search(Class<? extends Media> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
72 Integer numberOfResults = dao.count(clazz,queryString);
73
74 List<Media> results = new ArrayList<Media>();
75 if(numberOfResults > 0) { // no point checking again
76 results = dao.search(clazz,queryString, pageSize, pageNumber, orderHints, propertyPaths);
77 }
78
79 return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);
80 }
81
82 public void generateTitleCache() {
83 // TODO Auto-generated method stub
84
85 }
86
87 public Map<String,String> getImageMetaData(URI uri, Integer timeOut){
88
89 Map <String,String> results ;
90 results = dao.getMediaMetaData(uri, timeOut);
91 return results;
92 }
93 }