#5000 Add new metadata service
authorCherian Mathew <c.mathew@bgbm.org>
Fri, 20 Nov 2015 17:44:23 +0000 (18:44 +0100)
committerCherian Mathew <c.mathew@bgbm.org>
Fri, 20 Nov 2015 17:45:12 +0000 (18:45 +0100)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/ICdmApplicationConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IMetadataService.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IUserService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MetadataServiceImpl.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/UserService.java
cdmlib-services/src/main/resources/eu/etaxonomy/cdm/httpInvokerServices.xml
cdmlib-services/src/main/resources/eu/etaxonomy/cdm/remoting-services.xml

index a70cd41e96ce8a478d49953ee314076376bb00f3..bcfb631d79e7d8be3b08cb7d17269d6b65fcde70 100644 (file)
@@ -49,6 +49,7 @@ import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;
 import eu.etaxonomy.cdm.api.service.ILocationService;
 import eu.etaxonomy.cdm.api.service.IMediaService;
+import eu.etaxonomy.cdm.api.service.IMetadataService;
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
@@ -499,6 +500,12 @@ public class CdmApplicationController implements ICdmApplicationConfiguration {
        public final IMediaService getMediaService(){\r
                return configuration.getMediaService();\r
        }\r
+
+
+    @Override
+    public final IMetadataService getMetadataService(){
+        return configuration.getMetadataService();
+    }
 \r
 \r
        @Override\r
index 9208c3319730aff24899ec6dacfdf4573f39e0ba..8b605805aa1435fa97569c5667c1a5d9c81c4081 100644 (file)
@@ -47,6 +47,7 @@ import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
 import eu.etaxonomy.cdm.api.service.ILocationService;\r
 import eu.etaxonomy.cdm.api.service.IMediaService;\r
+import eu.etaxonomy.cdm.api.service.IMetadataService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;\r
@@ -122,6 +123,9 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
        @Autowired\r
        //@Qualifier("mediaService")\r
        private IMediaService mediaService;\r
+    @Autowired\r
+    //@Qualifier("mediaService")\r
+    private IMetadataService metadataService;\r
        @Autowired\r
        //@Qualifier("commonService")\r
        private ICommonService commonService;\r
@@ -275,6 +279,14 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
                return this.mediaService;\r
        }\r
 \r
+    /**\r
+     * {@inheritDoc}\r
+     */\r
+    @Override\r
+    public IMetadataService getMetadataService() {\r
+        return this.metadataService;\r
+    }\r
+\r
        @Override\r
        public ITermService getTermService(){\r
                return this.termService;\r
@@ -443,6 +455,4 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
                SecurityContext context = SecurityContextHolder.getContext();\r
                context.setAuthentication(authentication);\r
        }\r
-\r
-\r
 }\r
index 9f4478103c6afc4af13b71a415aa9f349a766e16..a8ae6f4f0c0dbef1ce3c790e991464029d8e28b9 100644 (file)
@@ -31,6 +31,7 @@ import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
 import eu.etaxonomy.cdm.api.service.ILocationService;\r
 import eu.etaxonomy.cdm.api.service.IMediaService;\r
+import eu.etaxonomy.cdm.api.service.IMetadataService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;\r
@@ -145,6 +146,11 @@ public interface ICdmApplicationConfiguration{
         */\r
        public IMediaService getMediaService();\r
 \r
+   /**\r
+     * @return\r
+     */\r
+    public IMetadataService getMetadataService();\r
+\r
 \r
        /**\r
         * @return\r
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IMetadataService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IMetadataService.java
new file mode 100644 (file)
index 0000000..bd00aa2
--- /dev/null
@@ -0,0 +1,49 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.api.service;
+
+import java.util.Map;
+
+import eu.etaxonomy.cdm.config.CdmSourceException;
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
+
+/**
+ * @author cmathew
+ * @date 20 Nov 2015
+ *
+ */
+public interface IMetadataService {
+
+
+    /**
+     * Returns the CDM model schema version number
+     *
+     * @return the CDM model schema version number
+     * @throws CdmSourceException , incase of an underlying SQL error
+     */
+    public String getDbSchemaVersion() throws CdmSourceException;
+
+    /**
+     * Returns a boolean flag to indicate whether the database is empty
+     *
+     * @return boolean flag to indicate whether the database is empty
+     * @throws CdmSourceException , incase of an underlying SQL error
+     */
+    public boolean isDbEmpty() throws CdmSourceException;
+
+    /**
+     * Returns metadata corresponding to the underlying data source
+     *
+     * @return
+     * @throws CdmSourceException
+     */
+    public Map<MetaDataPropertyName, String> getCdmMetadataMap() throws CdmSourceException;
+
+}
index ff3e219edaff5df284ca7bb87879a4b4ad1a7053..65f34f94fd1b3050029a42d8de77fb673de55549 100644 (file)
@@ -10,7 +10,6 @@
 package eu.etaxonomy.cdm.api.service;\r
 \r
 import java.util.List;\r
-import java.util.Map;\r
 import java.util.UUID;\r
 \r
 import org.hibernate.criterion.Criterion;\r
@@ -20,9 +19,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.security.provisioning.GroupManager;\r
 import org.springframework.security.provisioning.UserDetailsManager;\r
 \r
-import eu.etaxonomy.cdm.config.CdmSourceException;\r
 import eu.etaxonomy.cdm.model.common.User;\r
-import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;\r
 import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
@@ -55,23 +52,6 @@ public interface IUserService extends IService<User>, UserDetailsManager, GroupM
      */\r
     public List<User> listByUsername(String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
 \r
-    /**\r
-     * @return\r
-     * @throws CdmSourceException\r
-     */\r
-    public String getDbSchemaVersion() throws CdmSourceException;\r
-\r
-    /**\r
-     * @return\r
-     * @throws CdmSourceException\r
-     */\r
-    public boolean isDbEmpty() throws CdmSourceException;\r
-\r
-    /**\r
-     * @return\r
-     * @throws CdmSourceException\r
-     */\r
-    public Map<MetaDataPropertyName, String> getCdmMetadataMap() throws CdmSourceException;\r
 \r
 \r
 }\r
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MetadataServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MetadataServiceImpl.java
new file mode 100644 (file)
index 0000000..84364c7
--- /dev/null
@@ -0,0 +1,65 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.api.service;
+
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.etaxonomy.cdm.config.CdmSourceException;
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
+
+/**
+ * Provides metadata information corresponding ti the underlying CDM Datasource.
+ *
+ * @author cmathew
+ * @date 20 Nov 2015
+ *
+ */
+@Service
+@Transactional(readOnly = true)
+public class MetadataServiceImpl implements IMetadataService {
+
+
+    private IDatabaseService databaseService;
+
+    @Autowired
+    public void setDatabaseService(IDatabaseService databaseService) {
+        this.databaseService = databaseService;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public  String getDbSchemaVersion() throws CdmSourceException  {
+        return databaseService.getDbSchemaVersion();
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isDbEmpty() throws CdmSourceException {
+        return databaseService.isDbEmpty();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Map<MetaDataPropertyName, String> getCdmMetadataMap() throws CdmSourceException {
+        return databaseService.getCdmMetadataMap();
+    }
+
+}
index c21de5a78623cbcbd3837b847eec0d7e0aeea8c3..4600e5eda618f6f67b270d2f593e0273d6f7f125 100644 (file)
@@ -38,11 +38,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;\r
 import org.springframework.util.Assert;\r
 \r
-import eu.etaxonomy.cdm.config.CdmSourceException;\r
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
 import eu.etaxonomy.cdm.model.common.Group;\r
 import eu.etaxonomy.cdm.model.common.User;\r
-import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IGrantedAuthorityDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IGroupDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IUserDao;\r
@@ -67,7 +65,6 @@ public class UserService extends ServiceBase<User,IUserDao> implements IUserServ
 \r
     private AuthenticationManager authenticationManager;\r
 \r
-    private IDatabaseService databaseService;\r
 \r
     private UserCache userCache = new NullUserCache();\r
 \r
@@ -109,10 +106,6 @@ public class UserService extends ServiceBase<User,IUserDao> implements IUserServ
         this.grantedAuthorityDao = grantedAuthorityDao;\r
     }\r
 \r
-    @Autowired\r
-    public void setDatabaseService(IDatabaseService databaseService) {\r
-        this.databaseService = databaseService;\r
-    }\r
 \r
     /**\r
      * Changes the own password of in the database of the user which is\r
@@ -542,27 +535,4 @@ public class UserService extends ServiceBase<User,IUserDao> implements IUserServ
         return super.saveOrUpdate(transientInstances);\r
     }\r
 \r
-\r
-    /* (non-Javadoc)\r
-     * @see eu.etaxonomy.cdm.api.service.IUserService#getDbSchemaVersion()\r
-     */\r
-    @Override\r
-    public  String getDbSchemaVersion() throws CdmSourceException  {\r
-        return databaseService.getDbSchemaVersion();\r
-\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see eu.etaxonomy.cdm.api.service.IUserService#isDbEmpty()\r
-     */\r
-    @Override\r
-    public boolean isDbEmpty() throws CdmSourceException {\r
-        return databaseService.isDbEmpty();\r
-    }\r
-\r
-    @Override\r
-    public Map<MetaDataPropertyName, String> getCdmMetadataMap() throws CdmSourceException {\r
-        return databaseService.getCdmMetadataMap();\r
-    }\r
-\r
 }\r
index 86913493b3573f626804c7f58af28aa2b817d207..0d6284901c76987964284aa6b8dd90c194fe169c 100644 (file)
       <value>eu.etaxonomy.cdm.api.service.IMediaService</value>\r
     </property>\r
   </bean>\r
+  \r
+    <bean id="httpMetadataService"\r
+    class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">\r
+    <property name="service">\r
+      <ref bean="metadataServiceImpl" />\r
+    </property>\r
+    <property name="serviceInterface">\r
+      <value>eu.etaxonomy.cdm.api.service.IMetadataService</value>\r
+    </property>\r
+  </bean>\r
 \r
   <bean id="httpNameService"\r
     class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">\r
index 1ba78b03e1f68c71e18c0eebcec7c37c94fbcd46..840047a7d8ef134f692104256f942ec841529183 100644 (file)
@@ -59,6 +59,7 @@
         <prop key="/remoting/entityvalidation.service">httpEntityValidationService</prop>
         <prop key="/remoting/entityconstraintviolation.service">httpEntityConstraintViolationService</prop>
         <prop key="/remoting-public/user.service">httpUserService</prop>
+        <prop key="/remoting-public/metadata.service">httpMetadataService</prop>
         <prop key="/remoting/vocabulary.service">httpVocabularyService</prop>
         <prop key="/remoting/authenticationManager.service">httpAuthenticationManager</prop>
         <prop key="/remoting/io.service">httpIOService</prop>