This commit is contained in:
Francesco 2023-09-27 10:38:17 +02:00
parent 747f07e041
commit 63470ff412
9 changed files with 25 additions and 32 deletions

View File

@ -26,7 +26,7 @@ import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import tech.ailef.dbadmin.external.annotations.DisplayFormat;
import tech.ailef.dbadmin.external.dbmapping.AdvancedJpaRepository;
import tech.ailef.dbadmin.external.dbmapping.CustomJpaRepository;
import tech.ailef.dbadmin.external.dbmapping.DbField;
import tech.ailef.dbadmin.external.dbmapping.DbFieldType;
import tech.ailef.dbadmin.external.dbmapping.DbObjectSchema;
@ -126,7 +126,7 @@ public class DbAdmin {
try {
Class<?> klass = Class.forName(fullClassName);
DbObjectSchema schema = new DbObjectSchema(klass, this);
AdvancedJpaRepository simpleJpaRepository = new AdvancedJpaRepository(schema, entityManager);
CustomJpaRepository simpleJpaRepository = new CustomJpaRepository(schema, entityManager);
schema.setJpaRepository(simpleJpaRepository);
System.out.println("\n\n******************************************************");

View File

@ -88,7 +88,7 @@ public class DefaultDbAdminController {
model.addAttribute("schemas", schemas);
model.addAttribute("query", query);
model.addAttribute("counts", counts);
model.addAttribute("activePage", "home");
model.addAttribute("activePage", "entities");
model.addAttribute("title", "Entities | Index");
return "home";
@ -136,7 +136,7 @@ public class DefaultDbAdminController {
CompareOperator.valueOf(otherParams.get("remove_op").get(i).toUpperCase()),
otherParams.get("remove_value").get(i)
);
System.out.println("TOREMOVE = " + toRemove);
queryFilters.removeIf(f -> f.equals(toRemove));
}

View File

@ -26,14 +26,14 @@ import tech.ailef.dbadmin.external.dto.QueryFilter;
import tech.ailef.dbadmin.external.exceptions.DbAdminException;
@SuppressWarnings("rawtypes")
public class AdvancedJpaRepository extends SimpleJpaRepository {
public class CustomJpaRepository extends SimpleJpaRepository {
private EntityManager entityManager;
private DbObjectSchema schema;
@SuppressWarnings("unchecked")
public AdvancedJpaRepository(DbObjectSchema schema, EntityManager em) {
public CustomJpaRepository(DbObjectSchema schema, EntityManager em) {
super(schema.getJavaClass(), em);
this.entityManager = em;
this.schema = schema;

View File

@ -220,7 +220,7 @@ public class DbAdminRepository {
*/
public PaginatedResult<DbObject> search(DbObjectSchema schema, String query, int page, int pageSize, String sortKey,
String sortOrder, Set<QueryFilter> queryFilters) {
AdvancedJpaRepository jpaRepository = schema.getJpaRepository();
CustomJpaRepository jpaRepository = schema.getJpaRepository();
long maxElement = count(schema, query, queryFilters);
int maxPage = (int)(Math.ceil ((double)maxElement / pageSize));
@ -245,7 +245,7 @@ public class DbAdminRepository {
* @return
*/
public List<DbObject> search(DbObjectSchema schema, String query) {
AdvancedJpaRepository jpaRepository = schema.getJpaRepository();
CustomJpaRepository jpaRepository = schema.getJpaRepository();
return jpaRepository.search(query, 1, 50, null, null, null).stream()
.map(o -> new DbObject(o, schema))

View File

@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonIgnore;
@ -144,13 +145,10 @@ public class DbField {
}
public Set<DbFieldValue> getAllValues() {
List findAll = schema.getJpaRepository().findAll();
Set<DbFieldValue> allValues = new HashSet<>();
for (Object o : findAll) {
DbFieldValue val = new DbObject(o, schema).get(this);
allValues.add(val);
}
return allValues;
List<?> findAll = schema.getJpaRepository().findAll();
return findAll.stream()
.map(o -> new DbObject(o, schema).get(this))
.collect(Collectors.toSet());
}
@Override

View File

@ -39,7 +39,7 @@ public class DbObjectSchema {
/**
* A JPA repository to operate on the database
*/
private AdvancedJpaRepository jpaRepository;
private CustomJpaRepository jpaRepository;
private DbAdmin dbAdmin;
@ -113,11 +113,11 @@ public class DbObjectSchema {
fields.add(f);
}
public AdvancedJpaRepository getJpaRepository() {
public CustomJpaRepository getJpaRepository() {
return jpaRepository;
}
public void setJpaRepository(AdvancedJpaRepository jpaRepository) {
public void setJpaRepository(CustomJpaRepository jpaRepository) {
this.jpaRepository = jpaRepository;
}

View File

@ -130,6 +130,13 @@
<ul class="categorical-select">
<li th:each="categoricalValue : ${field.getAllValues()}">
<form action="" method="GET">
<!--/*--> Propagate queryParams containing other filters with hidden fields <!--*/-->
<th:block th:each="p : ${queryParams.keySet()}">
<input th:each="v : ${queryParams.get(p)}"
th:name="${p}" th:value="${v}" type="hidden"
th:if="${p.startsWith('filter_')}">
</th:block>
<!-- Reset page when applying filter to start back at page 1 -->
<input type="hidden" name="page" value="1">
<input type="hidden" name="pageSize" th:value="${page.getPagination().getPageSize()}">

View File

@ -43,18 +43,6 @@
<div class="sidebar-top">
<h6 class="fw-bold pt-2 ms-3 menu-subheading d-none d-md-block">MENU</h6>
<ul class="sidebar-menu pb-0 mb-0 ">
<li th:class="${#strings.equals(activePage, 'home') ? 'active' : ''}">
<a th:href="|/${baseUrl}|">
<div class="d-flex align-items-center">
<div class="menu-icon">
<i class="bi bi-house"></i>
</div>
<div class="menu-entry-text d-none d-md-block">
Home
</div>
</div>
</a>
</li>
<li th:class="${#strings.equals(activePage, 'entities') ? 'active' : ''}">
<a th:href="|/${baseUrl}|">
<div class="d-flex align-items-center">

View File

@ -8,8 +8,8 @@
<div class="d-flex">
<div th:replace="~{fragments/resources :: sidebar('entities')}"></div>
<div class="main-content bg-lighter">
<h1 class="fw-bold mb-4"><i class="align-middle bi bi-house"></i><span class="align-middle"> Home</span></h1>
<form th:action="${baseUrl}" method="GET">
<h1 class="fw-bold mb-4"><i class="align-middle bi bi-database"></i><span class="align-middle"> Entities</span></h1>
<form th:action="|/${baseUrl}|" method="GET">
<div class="input-group">
<input type="text" th:value="${query}"
placeholder="Type a class or a table name and press ENTER to search"