Skip to content

Commit f0ba4b4

Browse files
author
gustavnavar
committed
0.0.8 (fix annotations to support autoGenerateColumns)
1 parent 3b547be commit f0ba4b4

17 files changed

Lines changed: 141 additions & 56 deletions

File tree

.idea/artifacts/gridcore_jar.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111
<groupId>me.agno</groupId>
1212
<artifactId>demo</artifactId>
13-
<version>0.0.7</version>
13+
<version>0.0.8</version>
1414
<name>demo</name>
1515
<description>demo</description>
1616
<properties>
@@ -44,7 +44,7 @@
4444
<dependency>
4545
<groupId>me.agno.gridcore</groupId>
4646
<artifactId>gridcore</artifactId>
47-
<version>0.0.5</version>
47+
<version>0.0.8</version>
4848
<scope>compile</scope>
4949
</dependency>
5050
</dependencies>

demo/src/main/java/me/agno/demo/config/HibernateConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
@Configuration
1818
@EnableTransactionManagement
19-
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager", basePackages = { "com.grupoot.repository" })
19+
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager",
20+
basePackages = { "me.agno.demo.repositories" })
2021
public class HibernateConfig {
2122

2223
@Autowired

demo/src/main/java/me/agno/demo/controllers/SampleDataController.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ public ResponseEntity<ItemsDTO<Order>> getOrdersGrid(HttpServletRequest request)
5353
return ResponseEntity.ok(items);
5454
}
5555

56+
@GetMapping(value = {"getordersgridordersautogeneratecolumns", "GetOrdersGridordersAutoGenerateColumns"}, produces = MediaType.APPLICATION_JSON_VALUE)
57+
public ResponseEntity<ItemsDTO<Order>> getOrdersGridordersAutoGenerateColumns(HttpServletRequest request) {
58+
59+
EntityManager em = entityManagerFactory.createEntityManager();
60+
61+
IGridServer<Order> server = new GridServer<Order>(em, Order.class, null, null,
62+
request.getParameterMap(), null)
63+
.autoGenerateColumns()
64+
.sortable()
65+
.filterable();
66+
67+
var items = server.getItemsToDisplay();
68+
return ResponseEntity.ok(items);
69+
}
70+
5671
@GetMapping(value = {"getordersgridwithtotals", "GetOrdersGridWithTotals"}, produces = MediaType.APPLICATION_JSON_VALUE)
5772
public ResponseEntity<ItemsDTO<Order>> getOrdersGridWithTotals(HttpServletRequest request) {
5873

demo/src/main/java/me/agno/demo/model/Order.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
import jakarta.persistence.*;
55
import lombok.Getter;
66
import lombok.Setter;
7+
import me.agno.gridcore.annotations.GridColumn;
8+
import me.agno.gridcore.annotations.GridTable;
9+
import me.agno.gridcore.pagination.PagingType;
10+
import me.agno.gridcore.sorting.GridSortDirection;
711
import org.hibernate.annotations.Nationalized;
8-
import org.hibernate.annotations.OnDelete;
9-
import org.hibernate.annotations.OnDeleteAction;
12+
1013

1114
import java.math.BigDecimal;
1215
import java.time.Instant;
@@ -17,67 +20,82 @@
1720
@Setter
1821
@Entity
1922
@Table(name = "orders")
23+
@GridTable(pagingType = PagingType.PAGINATION, pageSize = 20)
2024
public class Order {
2125
@Id
2226
@GeneratedValue(strategy = GenerationType.IDENTITY)
2327
@Column(name = "orderid", nullable = false)
28+
@GridColumn(position = 0, type = Integer.class)
2429
private Integer orderID;
2530

2631
@Column(name = "customerid", insertable = false, updatable = false, nullable = false)
32+
@GridColumn(position = 5, type = String.class)
2733
private String customerID;
2834

2935
@ManyToOne(fetch = FetchType.EAGER)
3036
@JoinColumn(name = "customerid")
3137
private Customer customer;
3238

3339
@Column(name = "employeeid", columnDefinition = "int", insertable = false, updatable = false, nullable = false)
40+
@GridColumn(position = 4, type = String.class)
3441
private String employeeID;
3542

3643
@ManyToOne(fetch = FetchType.EAGER)
3744
@JoinColumn(name = "employeeid")
3845
private Employee employee;
3946

4047
@Column(name = "orderdate")
48+
@GridColumn(position = 1, type = Instant.class, sortEnabled = true, filterEnabled = true, sortInitialDirection = GridSortDirection.ASCENDING)
4149
private Instant orderDate;
4250

4351
@Column(name = "requireddate")
52+
@GridColumn(position = 2, type = Instant.class)
4453
private Instant requiredDate;
4554

4655
@Column(name = "shippeddate")
56+
@GridColumn(position = 3, type = Instant.class)
4757
private Instant shippedDate;
4858

4959
@Column(name = "shipVia", columnDefinition = "int", insertable = false, updatable = false, nullable = false)
60+
@GridColumn(position = 6, type = String.class)
5061
private String shipVia;
5162

5263
@ManyToOne(fetch = FetchType.EAGER)
5364
@JoinColumn(name = "shipVia")
5465
private Shipper shipper;
5566

5667
@Column(name = "freight")
68+
@GridColumn(position = 7, type = BigDecimal.class, sortEnabled = true, filterEnabled = true)
5769
private BigDecimal freight;
5870

5971
@Nationalized
6072
@Column(name = "shipname", length = 40)
73+
@GridColumn(position = 8, type = String.class)
6174
private String shipName;
6275

6376
@Nationalized
6477
@Column(name = "shipaddress", length = 60)
78+
@GridColumn(position = 9, type = String.class)
6579
private String shipAddress;
6680

6781
@Nationalized
6882
@Column(name = "shipcity", length = 15)
83+
@GridColumn(position = 10, type = String.class)
6984
private String shipCity;
7085

7186
@Nationalized
7287
@Column(name = "shipregion", length = 15)
88+
@GridColumn(position = 11, type = String.class)
7389
private String shipRegion;
7490

7591
@Nationalized
7692
@Column(name = "shippostalcode", length = 10)
93+
@GridColumn(position = 12, type = String.class)
7794
private String shipPostalCode;
7895

7996
@Nationalized
8097
@Column(name = "shipcountry", length = 15)
98+
@GridColumn(position = 13, type = String.class)
8199
private String shipCountry;
82100

83101
@JsonIgnore
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package me.agno.demo.repositories;
2+
3+
import me.agno.demo.model.Order;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
import java.util.Optional;
8+
9+
@Repository
10+
public interface OrderRepository extends JpaRepository<Order, Integer> {
11+
12+
Optional<Order> findByOrderID(int id);
13+
}

demo/src/main/resources/application.properties

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
spring.datasource.url=jdbc:sqlserver://localhost:1433;database=NorthWind;integratedSecurity=true;trustServerCertificate=true;
22
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
3+
spring.datasource.type=com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource
4+
35
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
4-
spring.jpa.show-sql=true
56
spring.jpa.properties.hibernate.format_sql=true
7+
8+
spring.jpa.hibernate.ddl-auto=none
9+
spring.jpa.show-sql=true
610
spring.jpa.open-in-view=false
11+
712
logging.level.org.hibernate.SQL=DEBUG
813
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
914
spring.jackson.serialization.fail-on-empty-beans=false

gridcore/pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
<groupId>me.agno.gridcore</groupId>
88
<artifactId>gridcore</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010

1111
<properties>
12-
<maven.compiler.source>20</maven.compiler.source>
13-
<maven.compiler.target>20</maven.compiler.target>
12+
<maven.compiler.source>17</maven.compiler.source>
13+
<maven.compiler.target>17</maven.compiler.target>
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1515
</properties>
1616

@@ -19,7 +19,7 @@
1919
<groupId>org.projectlombok</groupId>
2020
<artifactId>lombok</artifactId>
2121
<optional>true</optional>
22-
<version>1.18.28</version>
22+
<version>[1.18,)</version>
2323
</dependency>
2424
<dependency>
2525
<groupId>jakarta.persistence</groupId>
@@ -30,13 +30,13 @@
3030
<dependency>
3131
<groupId>com.fasterxml.jackson.core</groupId>
3232
<artifactId>jackson-annotations</artifactId>
33-
<version>2.15.3</version>
33+
<version>[2.12,]</version>
3434
<scope>compile</scope>
3535
</dependency>
3636
<dependency>
3737
<groupId>org.hibernate.orm</groupId>
3838
<artifactId>hibernate-core</artifactId>
39-
<version>6.4.1.Final</version>
39+
<version>[6.0,)</version>
4040
<scope>compile</scope>
4141
</dependency>
4242
</dependencies>

gridcore/src/main/java/me/agno/gridcore/Grid.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ public Grid(EntityManager entityManager, Class<T> targetType, Predicate predicat
194194
noTotalsParameter != null && ! noTotalsParameter.isEmpty() &&
195195
noTotalsParameter.get(0) != null && ! noTotalsParameter.get(0).trim().isEmpty()) {
196196

197-
this.pagingType = PagingType.VIRTUALIZATION;
197+
setPagingType(PagingType.VIRTUALIZATION);
198198
try {
199199
startIndex = Integer.parseInt(startIndexParameter.get(0).trim());
200200
}
@@ -280,9 +280,9 @@ protected void prepareItemsToDisplay() {
280280
void applyGridSettings() {
281281
GridTable opt = this.annotations.getAnnotationForTable(getTargetType());
282282
if (opt == null) return;
283-
this.pagingType = opt.pagingType();
283+
setPagingType(opt.pagingType());
284284

285-
if (this.pagingType == PagingType.PAGINATION)
285+
if (getPagingType() == PagingType.PAGINATION)
286286
{
287287
if (opt.pageSize() > 0)
288288
this.getPager().setPageSize(opt.pageSize());
@@ -294,17 +294,16 @@ void applyGridSettings() {
294294

295295
public void autoGenerateColumns() {
296296

297-
var tuples = this.annotations.getAnnotationsForTableColumns(this.targetType);
297+
var annotationsList = this.annotations.getAnnotationsForTableColumns(this.targetType);
298298

299-
for (var tuple : tuples) {
300-
String name = tuple.getFirst();
301-
Boolean isKey = tuple.getSecond();
302-
GridColumn annotations = tuple.getThird();
299+
for (var item : annotationsList) {
300+
String name = item.getKey();
301+
GridColumn annotation = item.getValue();
303302

304-
if(isKey)
305-
this.columns.add(name, annotations.type()).setPrimaryKey(true);
303+
if(annotation.key())
304+
this.columns.add(name, annotation.type()).setPrimaryKey(true);
306305
else
307-
this.columns.add(name, annotations.type());
306+
this.columns.add(name, annotation.type());
308307
}
309308
}
310309

0 commit comments

Comments
 (0)