fixed a bug that occurred when executing operations on taxon nodes on root level
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / MediaServiceImpl.java
index 984f332236955b57093d1855da02fc1ae40fbd3c..bc32fa2a04a4309ffb498f93b9dc882f86107e79 100644 (file)
@@ -1,11 +1,26 @@
+// $Id$\r
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
 package eu.etaxonomy.cdm.api.service;\r
 \r
+import java.io.IOException;\r
+import java.net.MalformedURLException;\r
+import java.net.ServerSocket;\r
+import java.net.Socket;\r
+import java.net.URI;\r
+import java.net.URL;\r
+import java.net.URLConnection;\r
 import java.util.ArrayList;\r
-import java.util.Collection;\r
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.Set;\r
-import java.util.UUID;\r
 \r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Service;\r
@@ -13,58 +28,66 @@ import org.springframework.transaction.annotation.Transactional;
 \r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
-import eu.etaxonomy.cdm.model.description.IdentificationKey;\r
+import eu.etaxonomy.cdm.common.mediaMetaData.MediaMetaData;\r
+import eu.etaxonomy.cdm.model.description.MediaKey;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
-import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
-import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
+import eu.etaxonomy.cdm.model.media.Rights;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.persistence.dao.media.IMediaDao;\r
-import eu.etaxonomy.cdm.persistence.dao.media.IMediaRepresentationDao;\r
-import eu.etaxonomy.cdm.persistence.dao.media.IMediaRepresentationPartDao;\r
+import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 \r
 @Service\r
-@Transactional\r
-public class MediaServiceImpl extends AnnotatableServiceBase<Media,IMediaDao> implements IMediaService {\r
-       \r
-       @Autowired\r
-       private IMediaRepresentationDao mediaRepresentationDao;\r
-       \r
-       @Autowired\r
-       private IMediaRepresentationPartDao mediaRepresentationPartDao; \r
-       \r
-       @Transactional(readOnly = false)\r
-       public Map<UUID, Media> saveMediaAll(Collection<Media> mediaCollection){\r
-               return saveCdmObjectAll(mediaCollection);\r
-           //TODO: Fix saveAll() types\r
-//             return mediaDao.saveAll(mediaCollection);\r
-       }\r
-\r
-       public List<Media> getAllMedia(int limit, int start){\r
-               return dao.list(limit, start);\r
-       }\r
-\r
-       public List<MediaRepresentation> getAllMediaRepresentations(int limit, int start){\r
-               return mediaRepresentationDao.list(limit, start);\r
-       }\r
-\r
-       public List<MediaRepresentationPart> getAllMediaRepresentationParts(int limit, int start){\r
-               return mediaRepresentationPartDao.list(limit, start);\r
-       }\r
+@Transactional(readOnly=true)\r
+public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> implements IMediaService {\r
 \r
        @Autowired\r
        protected void setDao(IMediaDao dao) {\r
                this.dao = dao;\r
        }\r
 \r
-       public Pager<IdentificationKey> getIdentificationKeys(Set<Taxon> taxonomicScope, Set<NamedArea> geoScopes,      Integer pageSize, Integer pageNumber) {\r
-        Integer numberOfResults = dao.countIdentificationKeys(taxonomicScope, geoScopes);\r
+       public Pager<MediaKey> getMediaKeys(Set<Taxon> taxonomicScope, Set<NamedArea> geoScopes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {\r
+        Integer numberOfResults = dao.countMediaKeys(taxonomicScope, geoScopes);\r
                \r
-               List<IdentificationKey> results = new ArrayList<IdentificationKey>();\r
+               List<MediaKey> results = new ArrayList<MediaKey>();\r
                if(numberOfResults > 0) { // no point checking again\r
-                       results = dao.getIdentificationKeys(taxonomicScope, geoScopes, pageSize, pageNumber); \r
+                       results = dao.getMediaKeys(taxonomicScope, geoScopes, pageSize, pageNumber, propertyPaths); \r
                }\r
                \r
-               return new DefaultPagerImpl<IdentificationKey>(pageNumber, numberOfResults, pageSize, results);\r
+               return new DefaultPagerImpl<MediaKey>(pageNumber, numberOfResults, pageSize, results);\r
+       }\r
+       \r
+       public Pager<Rights> getRights(Media t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {\r
+        Integer numberOfResults = dao.countRights(t);\r
+               \r
+               List<Rights> results = new ArrayList<Rights>();\r
+               if(numberOfResults > 0) { // no point checking again\r
+                       results = dao.getRights(t, pageSize, pageNumber,propertyPaths); \r
+               }\r
+               \r
+               return new DefaultPagerImpl<Rights>(pageNumber, numberOfResults, pageSize, results);\r
+       }\r
+       \r
+       public Pager<Media> search(Class<? extends Media> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+        Integer numberOfResults = dao.count(clazz,queryString);\r
+               \r
+               List<Media> results = new ArrayList<Media>();\r
+               if(numberOfResults > 0) { // no point checking again\r
+                       results = dao.search(clazz,queryString, pageSize, pageNumber, orderHints, propertyPaths); \r
+               }\r
+               \r
+               return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);\r
+       }\r
+\r
+       public void generateTitleCache() {\r
+               // TODO Auto-generated method stub\r
+               \r
+       }\r
+       \r
+       public Map<String,String> getImageMetaData(URI uri, Integer timeOut){\r
+               \r
+               Map <String,String> results ;\r
+               results = dao.getMediaMetaData(uri, timeOut);\r
+               return results;\r
        }\r
 }\r