From 87d345b679110e2c9e5ee9fd8ae31a0dc28a7bad Mon Sep 17 00:00:00 2001 From: Francesco Date: Wed, 27 Sep 2023 10:45:59 +0200 Subject: [PATCH] WIP --- .../tech/ailef/dbadmin/external/DbAdmin.java | 16 ++- .../rest/DefaultDbAdminRestController.java | 106 ------------------ .../external/dbmapping/DbAdminRepository.java | 2 +- .../dbadmin/external/dbmapping/DbField.java | 1 - .../external/dbmapping/DbObjectSchema.java | 8 +- 5 files changed, 10 insertions(+), 123 deletions(-) delete mode 100644 src/main/java/tech/ailef/dbadmin/external/controller/rest/DefaultDbAdminRestController.java diff --git a/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java b/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java index 6c37999..bbb888e 100644 --- a/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java +++ b/src/main/java/tech/ailef/dbadmin/external/DbAdmin.java @@ -7,8 +7,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; -import java.util.logging.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; @@ -44,9 +45,8 @@ import tech.ailef.dbadmin.external.misc.Utils; */ @Component public class DbAdmin { - private static final Logger logger = Logger.getLogger(DbAdmin.class.getName()); + private static final Logger logger = LoggerFactory.getLogger(DbAdmin.class.getName()); -// @PersistenceContext private EntityManager entityManager; private List schemas = new ArrayList<>(); @@ -128,23 +128,21 @@ public class DbAdmin { DbObjectSchema schema = new DbObjectSchema(klass, this); CustomJpaRepository simpleJpaRepository = new CustomJpaRepository(schema, entityManager); schema.setJpaRepository(simpleJpaRepository); - - System.out.println("\n\n******************************************************"); - System.out.println("* Class: " + klass + " - Table: " + schema.getTableName()); - System.out.println("******************************************************"); + + logger.debug("Processing class: " + klass + " - Table: " + schema.getTableName()); Field[] fields = klass.getDeclaredFields(); for (Field f : fields) { - System.out.println(" - Mapping field " + f); DbField field = mapField(f, schema); if (field == null) { throw new DbAdminException("Impossible to map field: " + f); } field.setSchema(schema); - schema.addField(field); } + logger.debug("Processed " + klass + ", extracted " + schema.getSortedFields().size() + " fields"); + return schema; } catch (ClassNotFoundException | IllegalArgumentException | SecurityException e) { diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/rest/DefaultDbAdminRestController.java b/src/main/java/tech/ailef/dbadmin/external/controller/rest/DefaultDbAdminRestController.java deleted file mode 100644 index 3b46bf3..0000000 --- a/src/main/java/tech/ailef/dbadmin/external/controller/rest/DefaultDbAdminRestController.java +++ /dev/null @@ -1,106 +0,0 @@ -package tech.ailef.dbadmin.external.controller.rest; - -import java.util.List; -import java.util.stream.Collectors; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import tech.ailef.dbadmin.external.DbAdmin; -import tech.ailef.dbadmin.external.DbAdminProperties; -import tech.ailef.dbadmin.external.dbmapping.DbAdminRepository; -import tech.ailef.dbadmin.external.dbmapping.DbObjectSchema; -import tech.ailef.dbadmin.external.dto.PaginatedResult; -import tech.ailef.dbadmin.external.exceptions.DbAdminException; - -@RestController -@RequestMapping(value = {"/${dbadmin.baseUrl}/api", "/${dbadmin.baseUrl}/api/"}) -public class DefaultDbAdminRestController { - @Autowired - public DbAdmin dbAdmin; - - @Autowired - private DbAdminProperties properties; - - @Autowired - private JdbcTemplate jdbcTemplate; - - // @Autowired -// @Qualifier("internalJdbc") -// private JdbcTemplate internalJdbc; - -// @GetMapping("/configuration") -// public ResponseEntity conf() { -// return ResponseEntity.ok(properties.toMap()); -// } - - @GetMapping - public ResponseEntity index(@RequestParam(required = false) String query) { - checkInit(); - - List schemas = dbAdmin.getSchemas(); - if (query != null && !query.isBlank()) { - schemas = schemas.stream().filter(s -> { - return s.getClassName().toLowerCase().contains(query.toLowerCase()) - || s.getTableName().toLowerCase().contains(query.toLowerCase()); - }).collect(Collectors.toList()); - } - - return ResponseEntity.ok(schemas); - } - - @GetMapping("/model/{className}") - public ResponseEntity list(@PathVariable String className, - @RequestParam(required=false) Integer page, @RequestParam(required=false) Integer pageSize, - @RequestParam(required=false) String sortKey, @RequestParam(required=false) String sortOrder) { - checkInit(); - DbAdminRepository repository = new DbAdminRepository(jdbcTemplate); - - if (page == null) page = 1; - if (pageSize == null) pageSize = 50; - - DbObjectSchema schema = dbAdmin.findSchemaByClassName(className); - PaginatedResult result = repository.findAll(schema, page, pageSize, sortKey, sortOrder); - - - return ResponseEntity.ok(result); - } - - @GetMapping("/model/{className}/schema") - public ResponseEntity schema(@PathVariable String className) { - checkInit(); - - DbObjectSchema schema = dbAdmin.findSchemaByClassName(className); - - return ResponseEntity.ok(schema); - } - -// @GetMapping("/model/{className}/show/{id}") -// public ResponseEntity show(@PathVariable String className, @PathVariable String id, -// @RequestParam(required = false) Boolean expand) { -// checkInit(); -// DbAdminRepository repository = new DbAdminRepository(jdbcTemplate); -// if (expand == null) expand = true; -// -// DbObjectSchema schema = dbAdmin.findSchemaByClassName(className); -// -// DbObject object = repository.findById(schema, id).orElseThrow(() -> { -// return new ResponseStatusException( -// HttpStatus.NOT_FOUND, "Object " + className + " with id " + id + " not found" -// ); -// }); -// -// return ResponseEntity.ok(new DbObjectDTO(object, expand)); -// } - - private void checkInit() { - if (dbAdmin == null) - throw new DbAdminException("Not initialized correctly: DB_ADMIN object is null."); - } -} diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java index 16ee477..d8d802d 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbAdminRepository.java @@ -81,7 +81,7 @@ public class DbAdminRepository { * @return */ @SuppressWarnings("rawtypes") - public PaginatedResult findAll(DbObjectSchema schema, int page, int pageSize, String sortKey, String sortOrder) { + public PaginatedResult findAll(DbObjectSchema schema, int page, int pageSize, String sortKey, String sortOrder) { SimpleJpaRepository repository = schema.getJpaRepository(); long maxElement = count(schema); diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java index 3f2b78b..6e5d4c5 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbField.java @@ -1,7 +1,6 @@ package tech.ailef.dbadmin.external.dbmapping; import java.lang.reflect.Field; -import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java index 31c9d48..6b389bd 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java @@ -187,12 +187,8 @@ public class DbObjectSchema { } public List findAll() { - List r = jpaRepository.findAll(); - List results = new ArrayList<>(); - for (Object o : r) { - results.add(new DbObject(o, this)); - } - return results; + List r = jpaRepository.findAll(); + return r.stream().map(o -> new DbObject(o, this)).toList(); } @Override