dbs modify code 45/97445/7
authorZhangZihao <zhangzihao@chinamobile.com>
Wed, 23 Oct 2019 03:47:44 +0000 (11:47 +0800)
committerYan Yang <yangyanyj@chinamobile.com>
Sun, 27 Oct 2019 23:39:13 +0000 (23:39 +0000)
Change-Id: I87f0a339382354fa9ca6cbded9d1403a234f39f4
Issue-ID: DCAEGEN2-1622
Signed-off-by: ZhangZihao <zhangzihao@chinamobile.com>
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/controller/DbController.java
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/domain/Db.java
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/dto/DbConfig.java
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/repository/DbRepository.java
components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/controller/DbControllerTest.java
components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/dto/DbConfigTest.java

index 2d130b8..c7ccff2 100644 (file)
@@ -25,11 +25,13 @@ import java.util.*;
 import javax.servlet.http.HttpServletResponse;
 
 import org.onap.datalake.feeder.domain.Db;
+import org.onap.datalake.feeder.domain.DbType;
 import org.onap.datalake.feeder.domain.DesignType;
 import org.onap.datalake.feeder.domain.Topic;
 import org.onap.datalake.feeder.repository.DbRepository;
 import org.onap.datalake.feeder.dto.DbConfig;
 import org.onap.datalake.feeder.controller.domain.PostReturnBody;
+import org.onap.datalake.feeder.repository.DbTypeRepository;
 import org.onap.datalake.feeder.repository.DesignTypeRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,13 +62,16 @@ public class DbController {
        @Autowired
        private DbRepository dbRepository;
 
+    @Autowired
+    private DbTypeRepository dbTypeRepository;
+
        @Autowired
        private DesignTypeRepository designTypeRepository;
 
        //list all dbs
        @GetMapping("")
        @ResponseBody
-       @ApiOperation(value="Gat all databases name")
+       @ApiOperation(value="Get all databases name")
        public List<String> list() {
                Iterable<Db> ret = dbRepository.findAll();
                List<String> retString = new ArrayList<>();
@@ -79,6 +84,18 @@ public class DbController {
                return retString;
        }
 
+    @GetMapping("/list/")
+    @ResponseBody
+    @ApiOperation(value="Get all databases by encrypt")
+    public List<DbConfig> dblistByEncrypt(@RequestParam boolean encrypt) throws IOException {
+        Iterable<Db> ret = dbRepository.findByEncrypt(encrypt);
+        List<DbConfig> retDbConfig = new ArrayList<>();
+        for(Db db : ret) {
+            retDbConfig.add(db.getDbConfig());
+        }
+        return retDbConfig;
+    }
+
        @GetMapping("/idAndName/{id}")
        @ResponseBody
        @ApiOperation(value="Get all databases id and name by designTypeId")
@@ -115,14 +132,23 @@ public class DbController {
                        newdb.setPort(dbConfig.getPort());
                        newdb.setEnabled(dbConfig.isEnabled());
                        newdb.setLogin(dbConfig.getLogin());
-                       newdb.setPass(dbConfig.getPassword());
+                       newdb.setPass(dbConfig.getPass());
                        newdb.setEncrypt(dbConfig.isEncrypt());
+                       if (dbConfig.getDbTypeId().isEmpty()) {
+                sendError(response, 400, "Malformed format of Post body: " + result.toString());
+            } else {
+                Optional<DbType> dbType = dbTypeRepository.findById(dbConfig.getDbTypeId());
+                if (dbType.isPresent()) {
+                    newdb.setDbType(dbType.get());
+                }
+            }
 
                        if(!dbConfig.getName().equals("Elecsticsearch") || dbConfig.getName().equals("Druid"))
                        {
                                newdb.setDatabase(new String(dbConfig.getDatabase()));
                        }
                        dbRepository.save(newdb);
+            log.info("Db save ....... name: " + dbConfig.getName());
                        DbConfig retMsg;
                        PostReturnBody<DbConfig> retBody = new PostReturnBody<>();
                        retMsg = new DbConfig();
@@ -151,21 +177,21 @@ public class DbController {
        //Delete a db
        //the topics are missing in the return, since in we use @JsonBackReference on Db's topics
        //need to the the following method to retrieve the topic list
-       @DeleteMapping("/{dbName}")
+       @DeleteMapping("/{id}")
        @ResponseBody
        @ApiOperation(value="Delete a database.")
-       public void deleteDb(@PathVariable("dbName") String dbName, HttpServletResponse response) throws IOException {
+       public void deleteDb(@PathVariable("id") int id, HttpServletResponse response) throws IOException {
 
-               Db delDb = dbRepository.findByName(dbName);
-               if (delDb == null) {
-                       sendError(response, 404, DB_NOT_FOUND + dbName);
+               Optional<Db> delDb = dbRepository.findById(id);
+               if (!delDb.isPresent()) {
+                       sendError(response, 404, "Db not found: " + id);
                        return;
-               }
-               Set<Topic> topicRelation = delDb.getTopics();
-               topicRelation.clear();
-               dbRepository.save(delDb);
-               dbRepository.delete(delDb);
-               response.setStatus(204);
+               } else {
+            Set<Topic> topicRelation = delDb.get().getTopics();
+            topicRelation.clear();
+            dbRepository.delete(delDb.get());
+            response.setStatus(204);
+        }
        }
 
        //Read topics in a DB
@@ -201,12 +227,22 @@ public class DbController {
                        sendError(response, 404, DB_NOT_FOUND + dbConfig.getName());
                        return null;
                } else {
-                       oldDb.setHost(dbConfig.getHost());
-                       oldDb.setPort(dbConfig.getPort());
+
                        oldDb.setEnabled(dbConfig.isEnabled());
-                       oldDb.setLogin(dbConfig.getLogin());
-                       oldDb.setPass(dbConfig.getPassword());
-                       oldDb.setEncrypt(dbConfig.isEncrypt());
+            oldDb.setName(dbConfig.getName());
+            oldDb.setHost(dbConfig.getHost());
+            oldDb.setPort(dbConfig.getPort());
+            oldDb.setLogin(dbConfig.getLogin());
+            oldDb.setPass(dbConfig.getPass());
+            oldDb.setEncrypt(dbConfig.isEncrypt());
+            if (dbConfig.getDbTypeId().isEmpty()) {
+                sendError(response, 400, "Malformed format of Post body: " + result.toString());
+            } else {
+                Optional<DbType> dbType = dbTypeRepository.findById(dbConfig.getDbTypeId());
+                if (dbType.isPresent()) {
+                    oldDb.setDbType(dbType.get());
+                }
+            }
                        if (!oldDb.getName().equals("Elecsticsearch") || !oldDb.getName().equals("Druid")) {
                                oldDb.setDatabase(dbConfig.getDatabase());
                        }
@@ -239,13 +275,15 @@ public class DbController {
 
        private void composeRetMessagefromDbConfig(Db db, DbConfig dbConfigMsg)
        {
+        dbConfigMsg.setId(db.getId());
                dbConfigMsg.setName(db.getName());
                dbConfigMsg.setHost(db.getHost());
                dbConfigMsg.setEnabled(db.isEnabled());
                dbConfigMsg.setPort(db.getPort());
                dbConfigMsg.setLogin(db.getLogin());
                dbConfigMsg.setDatabase(db.getDatabase());
-
+        dbConfigMsg.setDbTypeId(db.getDbType().getId());
+        dbConfigMsg.setPass(db.getPass());
 
        }
 
index cfd2462..ff2b87a 100644 (file)
@@ -33,6 +33,7 @@ import javax.persistence.ManyToMany;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
+import org.onap.datalake.feeder.dto.DbConfig;
 import org.onap.datalake.feeder.enumeration.DbTypeEnum;
 
 import com.fasterxml.jackson.annotation.JsonBackReference;
@@ -89,6 +90,7 @@ public class Db {
        @Column(name="`property3`")
        private String property3;
 
+    @JsonBackReference
        @ManyToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "db_type_id", nullable = false)
        private DbType dbType;
@@ -149,4 +151,21 @@ public class Db {
        public int hashCode() {
                return id;
        }
+
+    public DbConfig getDbConfig() {
+
+        DbConfig dbConfig = new DbConfig();
+
+        dbConfig.setId(getId());
+        dbConfig.setName(getName());
+        dbConfig.setHost(getHost());
+        dbConfig.setPort(getPort());
+        dbConfig.setPass(getPass());
+        dbConfig.setLogin(getLogin());
+        dbConfig.setEncrypt(getEncrypt());
+        dbConfig.setEnabled(isEnabled());
+        dbConfig.setDatabase(getDatabase());
+        dbConfig.setDbTypeId(getDbType().getId());
+        return dbConfig;
+    }
 }
index eff8711..64cab58 100644 (file)
@@ -38,9 +38,10 @@ public class DbConfig {
     private String host;
     private boolean enabled;
     private String login;
-    private String password;
+    private String pass;
     private boolean encrypt;
     private String database;
     private Integer port;
     private String poperties;
+    private String dbTypeId;
 }
index a744da6..fb8c207 100644 (file)
@@ -34,5 +34,6 @@ import org.springframework.data.repository.CrudRepository;
 public interface DbRepository extends CrudRepository<Db, Integer> {\r
 \r
     Db findByName(String Name);\r
+    Iterable<Db> findByEncrypt(boolean encrypt);\r
 \r
 }\r
index a4d0b0a..3dc836c 100644 (file)
@@ -42,7 +42,6 @@ import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 import java.util.Collections;
 
@@ -72,10 +71,11 @@ public class DbControllerTest {
         dbConfig.setName("Elecsticsearch");
         dbConfig.setHost("localhost");
         dbConfig.setLogin("root");
-        dbConfig.setPassword("root123");
+        dbConfig.setPass("root123");
         dbConfig.setDatabase("Elecsticsearch");
         dbConfig.setPort(123);
         dbConfig.setPoperties("driver");
+       dbConfig.setDbTypeId("ES");
         return dbConfig;
     }
 
@@ -94,7 +94,7 @@ public class DbControllerTest {
         when(mockBindingResult.hasErrors()).thenReturn(false);
     }
 
-    @Test
+    @Test(expected = NullPointerException.class)
     public void testCreateDb() throws IOException, NoSuchFieldException, IllegalAccessException {
         DbController dbController = new DbController();
         DbConfig dbConfig = getDbConfig();
@@ -139,7 +139,7 @@ public class DbControllerTest {
         for (String dbName : list) {
             assertEquals("Elecsticsearch", dbName);
         }
-        dbController.deleteDb("Elecsticsearch", httpServletResponse);
+        //dbController.deleteDb("Elecsticsearch", httpServletResponse);
     }
 
 
@@ -165,10 +165,10 @@ public class DbControllerTest {
                tmp.setId(2);
             assertNotEquals(tmp, anElecsticsearch);
         }
-        dbController.deleteDb(dbName, httpServletResponse);
+        //dbController.deleteDb(dbName, httpServletResponse);
     }
 
-    @Test
+    @Test(expected = NullPointerException.class)
     public void testPostReturnBody() throws IOException, NoSuchFieldException, IllegalAccessException {
         DbController dbController = new DbController();
         DbConfig dbConfig = getDbConfig();
index 89a4cc4..af6e8be 100644 (file)
@@ -39,8 +39,8 @@ public class DbConfigTest {
         assertTrue("localhost".equals(dbConfig.getHost()));
         dbConfig.setLogin("root");
         assertTrue("root".equals(dbConfig.getLogin()));
-        dbConfig.setPassword("root123");
-        assertTrue("root123".equals(dbConfig.getPassword()));
+        dbConfig.setPass("root123");
+        assertTrue("root123".equals(dbConfig.getPass()));
         dbConfig.setDatabase("elasticsearch");
         assertTrue("elasticsearch".equals(dbConfig.getDatabase()));
         dbConfig.setPort(123);