Skip to content

Commit

Permalink
refactor method arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
dmtkachenko committed Jun 18, 2019
1 parent 239c14b commit 66fef5f
Show file tree
Hide file tree
Showing 17 changed files with 956 additions and 144 deletions.
756 changes: 756 additions & 0 deletions lombok.config

Large diffs are not rendered by default.

19 changes: 12 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,11 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<raml-module-builder.version>24.0.0</raml-module-builder.version>
<ramlfiles_path>${basedir}/ramls</ramlfiles_path>
<jsonschema_paths>types/**,raml-util/schemas</jsonschema_paths>
<vertx-version>3.5.4</vertx-version>
<aspectj.version>1.9.1</aspectj.version>
<folio-service-tools.version>1.0.0</folio-service-tools.version>
</properties>

Expand Down Expand Up @@ -107,6 +106,12 @@
<artifactId>cloning</artifactId>
<version>1.9.11</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down Expand Up @@ -187,7 +192,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
Expand Down Expand Up @@ -294,10 +299,10 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.9</version>
<version>1.11</version>
<configuration>
<verbose>true</verbose>
<showWeaveInfo>false</showWeaveInfo>
<showWeaveInfo>true</showWeaveInfo>
<complianceLevel>1.8</complianceLevel>
<XaddSerialVersionUID>true</XaddSerialVersionUID>
<aspectLibraries>
Expand All @@ -318,12 +323,12 @@
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.9</version>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
Expand Down
15 changes: 9 additions & 6 deletions src/main/java/org/folio/links/NoteLinksRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,21 @@

import io.vertx.core.Future;

import org.folio.model.EntityLink;
import org.folio.model.Order;
import org.folio.model.OrderBy;
import org.folio.model.RowPortion;
import org.folio.model.Status;
import org.folio.rest.jaxrs.model.Link;
import org.folio.rest.jaxrs.model.NoteCollection;
import org.folio.rest.model.Order;
import org.folio.rest.model.OrderBy;
import org.folio.rest.model.Status;

public interface NoteLinksRepository {

Future<Void> updateNoteLinks(Link link, List<String> assignNotes, List<String> unAssignNotes, String tenantId);

Future<NoteCollection> findNotesByQuery(Status status, Order order, OrderBy orderBy, String domain, String title,
Link link, int limit, int offset, String tenantId);
Future<NoteCollection> findNotesByTitleAndStatus(EntityLink link, String title, Status status,
OrderBy orderBy, Order order,
RowPortion rowPortion, String tenantId);

Future<Integer> countNotes(Status status, String domain, String title, Link link, String tenantId);
Future<Integer> countNotesWithTitleAndStatus(EntityLink link, String title, Status status, String tenantId);
}
36 changes: 20 additions & 16 deletions src/main/java/org/folio/links/NoteLinksRepositoryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@
import org.springframework.stereotype.Component;

import org.folio.db.DbUtils;
import org.folio.model.EntityLink;
import org.folio.model.Order;
import org.folio.model.OrderBy;
import org.folio.model.RowPortion;
import org.folio.model.Status;
import org.folio.rest.jaxrs.model.Link;
import org.folio.rest.jaxrs.model.Note;
import org.folio.rest.jaxrs.model.NoteCollection;
import org.folio.rest.model.Order;
import org.folio.rest.model.OrderBy;
import org.folio.rest.model.Status;
import org.folio.rest.persist.PostgresClient;

@Component
Expand Down Expand Up @@ -70,21 +72,20 @@ public Future<Void> updateNoteLinks(Link link, List<String> assignNotes, List<St
}

@Override
public Future<NoteCollection> findNotesByQuery(Status status, Order order,
OrderBy orderBy, String domain, String title, Link link, int limit,
int offset, String tenantId) {
public Future<NoteCollection> findNotesByTitleAndStatus(EntityLink link, String title, Status status, OrderBy orderBy,
Order order, RowPortion rowPortion, String tenantId) {
JsonArray parameters = new JsonArray();
StringBuilder queryBuilder = new StringBuilder();

addSelectClause(parameters, queryBuilder, domain, title, tenantId);
addSelectClause(parameters, queryBuilder, link.getDomain(), title, tenantId);

String jsonLink = Json.encode(link);
String jsonLink = Json.encode(toLink(link));
addWhereClause(parameters, queryBuilder, status, jsonLink);

if (status == Status.ALL) {
addOrderByClause(parameters, queryBuilder, order, orderBy, jsonLink);
}
addLimitOffset(parameters, queryBuilder, limit, offset);
addLimitOffset(parameters, queryBuilder, rowPortion);

Future<ResultSet> future = Future.future();
pgClient(tenantId).select(queryBuilder.toString(), parameters, future);
Expand All @@ -93,14 +94,13 @@ public Future<NoteCollection> findNotesByQuery(Status status, Order order,
}

@Override
public Future<Integer> countNotes(Status status, String domain, String title, Link link,
String tenantId) {
public Future<Integer> countNotesWithTitleAndStatus(EntityLink link, String title, Status status, String tenantId) {
JsonArray parameters = new JsonArray();
StringBuilder queryBuilder = new StringBuilder();

addSelectCountClause(parameters, queryBuilder, domain, title, tenantId);
addSelectCountClause(parameters, queryBuilder, link.getDomain(), title, tenantId);

String jsonLink = Json.encode(link);
String jsonLink = Json.encode(toLink(link));
addWhereClause(parameters, queryBuilder, status, jsonLink);

Future<ResultSet> future = Future.future();
Expand Down Expand Up @@ -205,6 +205,10 @@ private Future<Void> endTransaction(PostgresClient postgresClient, AsyncResult<S
return future;
}

private Link toLink(EntityLink link) {
return new Link().withType(link.getType()).withId(link.getId());
}

private Integer mapCount(ResultSet resultSet) {
return resultSet.getRows().get(0).getInteger("count");
}
Expand Down Expand Up @@ -241,11 +245,11 @@ private JsonArray createUnAssignParameters(List<String> notesIds, Link link) {
return parameters;
}

private void addLimitOffset(JsonArray parameters, StringBuilder query, int limit, int offset) {
private void addLimitOffset(JsonArray parameters, StringBuilder query, RowPortion rowPortion) {
query.append(LIMIT_OFFSET);
parameters
.add(limit)
.add(offset);
.add(rowPortion.getLimit())
.add(rowPortion.getOffset());
}

private void addSelectClause(JsonArray parameters, StringBuilder query, String domain, String title, String tenantId) {
Expand Down
13 changes: 8 additions & 5 deletions src/main/java/org/folio/links/NoteLinksService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@

import io.vertx.core.Future;

import org.folio.model.EntityLink;
import org.folio.model.Order;
import org.folio.model.OrderBy;
import org.folio.model.RowPortion;
import org.folio.model.Status;
import org.folio.rest.jaxrs.model.Link;
import org.folio.rest.jaxrs.model.NoteCollection;
import org.folio.rest.jaxrs.model.NoteLinksPut;
import org.folio.rest.model.Order;
import org.folio.rest.model.OrderBy;
import org.folio.rest.model.Status;

public interface NoteLinksService {

Future<Void> updateNoteLinks(NoteLinksPut entity, Link link, String tenantId);

Future<NoteCollection> findNotesByQuery(Status parsedStatus, Order parsedOrder, OrderBy parsedOrderBy, String domain,
String title, Link link, int limit, int offset, String tenantId);
Future<NoteCollection> findNotesByTitleAndStatus(EntityLink link, String title, Status status,
OrderBy orderBy, Order order,
RowPortion rowPortion, String tenantId);
}
19 changes: 11 additions & 8 deletions src/main/java/org/folio/links/NoteLinksServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import org.folio.model.EntityLink;
import org.folio.model.Order;
import org.folio.model.OrderBy;
import org.folio.model.RowPortion;
import org.folio.model.Status;
import org.folio.rest.jaxrs.model.Link;
import org.folio.rest.jaxrs.model.NoteCollection;
import org.folio.rest.jaxrs.model.NoteLinkPut;
import org.folio.rest.jaxrs.model.NoteLinksPut;
import org.folio.rest.model.Order;
import org.folio.rest.model.OrderBy;
import org.folio.rest.model.Status;

@Component
public class NoteLinksServiceImpl implements NoteLinksService {
Expand All @@ -31,14 +33,15 @@ public Future<Void> updateNoteLinks(NoteLinksPut entity, Link link, String tenan
}

@Override
public Future<NoteCollection> findNotesByQuery(Status parsedStatus, Order parsedOrder,
OrderBy parsedOrderBy, String domain, String title, Link link, int limit, int offset, String tenantId) {
public Future<NoteCollection> findNotesByTitleAndStatus(EntityLink link, String title, Status status,
OrderBy orderBy, Order order, RowPortion rowPortion, String tenantId) {
MutableObject<Integer> mutableTotalRecords = new MutableObject<>();
return noteLinksRepository.countNotes(parsedStatus, domain, title, link, tenantId)

return noteLinksRepository.countNotesWithTitleAndStatus(link, title, status, tenantId)
.compose(count -> {
mutableTotalRecords.setValue(count);
return noteLinksRepository.findNotesByQuery(parsedStatus, parsedOrder, parsedOrderBy,
domain, title, link, limit, offset, tenantId);
return noteLinksRepository.findNotesByTitleAndStatus(link, title, status, orderBy, order, rowPortion,
tenantId);
})
.map(notes -> {
notes.setTotalRecords(mutableTotalRecords.getValue());
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/org/folio/model/EntityLink.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.folio.model;

import lombok.Value;

@Value
public class EntityLink {

private String domain;
private String type;
private String id;

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package org.folio.db.model;
package org.folio.model;

import java.util.ArrayList;
import java.util.List;

import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;

import org.folio.rest.jaxrs.model.Link;
import org.folio.rest.jaxrs.model.Metadata;
import org.folio.rest.jaxrs.model.UserDisplayInfo;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;

/**
* Database representation of a note
*/
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/org/folio/model/Order.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.folio.model;

import static org.apache.commons.lang3.StringUtils.defaultString;

import org.apache.commons.lang3.EnumUtils;

public enum Order {

ASC("asc"), DESC("desc");

private String value;


Order(String value) {
this.value = value;
}

public String getValue() {
return value;
}

@Override
public String toString() {
return value;
}

public static boolean contains(String value) {
return EnumUtils.isValidEnum(Order.class, defaultString(value).toUpperCase());
}

public static Order enumOf(String value) {
return valueOf(defaultString(value).toUpperCase());
}
}
33 changes: 33 additions & 0 deletions src/main/java/org/folio/model/OrderBy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.folio.model;

import static org.apache.commons.lang3.StringUtils.defaultString;

import org.apache.commons.lang3.EnumUtils;

public enum OrderBy {

STATUS("status"), TITLE("title");

private String value;

OrderBy(String value) {
this.value = value;
}

public String getValue() {
return value;
}

@Override
public String toString() {
return value;
}

public static boolean contains(String value) {
return EnumUtils.isValidEnum(OrderBy.class, defaultString(value).toUpperCase());
}

public static OrderBy enumOf(String value) {
return valueOf(defaultString(value).toUpperCase());
}
}
10 changes: 10 additions & 0 deletions src/main/java/org/folio/model/RowPortion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.folio.model;

import lombok.Value;

@Value
public class RowPortion {

private int offset;
private int limit;
}
21 changes: 21 additions & 0 deletions src/main/java/org/folio/model/Status.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.folio.model;


import static org.apache.commons.lang3.StringUtils.defaultString;

import org.apache.commons.lang3.EnumUtils;

public enum Status {

ASSIGNED,
UNASSIGNED,
ALL;

public static boolean contains(String value) {
return EnumUtils.isValidEnum(Status.class, defaultString(value).toUpperCase());
}

public static Status enumOf(String value) {
return valueOf(defaultString(value).toUpperCase());
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/folio/note/NoteRepositoryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.springframework.stereotype.Component;

import org.folio.db.CqlQuery;
import org.folio.db.model.NoteView;
import org.folio.model.NoteView;
import org.folio.rest.jaxrs.model.Note;
import org.folio.rest.jaxrs.model.NoteCollection;
import org.folio.rest.persist.PostgresClient;
Expand Down
Loading

0 comments on commit 66fef5f

Please sign in to comment.