use of net.geoprism.registry.view.Page in project geoprism-registry by terraframe.
the class Classification method getChildren.
public Page<Classification> getChildren(Integer pageSize, Integer pageNumber) {
StringBuilder cStatement = new StringBuilder();
cStatement.append("SELECT out('" + this.type.getMdEdge().getDBClassName() + "').size()");
cStatement.append(" FROM :rid");
GraphQuery<Integer> cQuery = new GraphQuery<Integer>(cStatement.toString());
cQuery.setParameter("rid", this.getVertex().getRID());
Integer count = cQuery.getSingleResult();
StringBuilder statement = new StringBuilder();
statement.append("SELECT EXPAND(out('" + this.type.getMdEdge().getDBClassName() + "')");
statement.append(") FROM :rid");
statement.append(" ORDER BY code");
if (pageSize != null && pageNumber != null) {
int first = pageSize * (pageNumber - 1);
int rows = pageSize;
statement.append(" SKIP " + first + " LIMIT " + rows);
}
GraphQuery<VertexObject> query = new GraphQuery<VertexObject>(statement.toString());
query.setParameter("rid", this.getVertex().getRID());
List<Classification> results = query.getResults().stream().map(vertex -> {
return new Classification(this.type, vertex);
}).collect(Collectors.toList());
return new Page<Classification>(count, pageNumber, pageSize, results);
}
use of net.geoprism.registry.view.Page in project geoprism-registry by terraframe.
the class Classification method getAncestorTree.
public ClassificationNode getAncestorTree(String rootCode, Integer pageSize) {
List<Classification> ancestors = this.getAncestors(rootCode);
ClassificationNode prev = null;
for (Classification ancestor : ancestors) {
Page<Classification> page = ancestor.getChildren(pageSize, 1);
List<ClassificationNode> transform = page.getResults().stream().map(r -> {
return new ClassificationNode(r);
}).collect(Collectors.toList());
if (prev != null) {
int index = transform.indexOf(prev);
if (index != -1) {
transform.set(index, prev);
} else {
transform.add(prev);
}
}
ClassificationNode node = new ClassificationNode();
node.setClassification(ancestor);
node.setChildren(new Page<ClassificationNode>(page.getCount(), page.getPageNumber(), page.getPageSize(), transform));
prev = node;
}
return prev;
}
use of net.geoprism.registry.view.Page in project geoprism-registry by terraframe.
the class AbstractBusinessPageQuery method getPage.
public Page<T> getPage() {
BusinessQuery query = this.getQuery();
int pageSize = 10;
int pageNumber = 1;
if (criteria.has("first") && criteria.has("rows")) {
int first = criteria.get("first").getAsInt();
pageSize = criteria.get("rows").getAsInt();
pageNumber = (first / pageSize) + 1;
}
long count = query.getCount();
try (OIterator<? extends Business> iterator = query.getIterator(pageSize, pageNumber)) {
return new Page<T>(count, pageNumber, pageSize, this.getResults(iterator.getAll()));
}
}
use of net.geoprism.registry.view.Page in project geoprism-registry by terraframe.
the class ChangeRequestService method getAllRequests.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Request(RequestType.SESSION)
public Page<ChangeRequest> getAllRequests(String sessionId, int pageSize, int pageNumber, String filter, String sort, String oid) {
ChangeRequestQuery query = new ChangeRequestQuery(new QueryFactory());
if (filter != null && filter.length() > 0 && !filter.equals("ALL")) {
query.WHERE(query.getApprovalStatus().containsAll(AllGovernanceStatus.valueOf(filter)));
}
filterQueryBasedOnPermissions(query);
if (oid != null && oid.length() > 0) {
pageNumber = this.findPageNumber(oid, query, pageSize);
}
query.restrictRows(pageSize, pageNumber);
if (sort != null && sort.length() > 0 && sort != "[]") {
JsonArray ja = JsonParser.parseString(sort).getAsJsonArray();
for (int i = 0; i < ja.size(); ++i) {
JsonObject jo = ja.get(i).getAsJsonObject();
boolean ascending = jo.get("ascending").getAsBoolean();
String attribute = jo.get("attribute").getAsString();
Selectable sel = query.get(attribute);
if (attribute.equals(ChangeRequest.GEOOBJECTLABEL) || attribute.equals(ChangeRequest.GEOOBJECTTYPELABEL)) {
sel = ((AttributeLocal) sel).localize();
} else if (attribute.equals(ChangeRequest.APPROVALSTATUS)) {
sel = query.getApprovalStatus().getEnumName();
}
query.ORDER_BY(sel, ascending ? SortOrder.ASC : SortOrder.DESC);
}
} else {
query.ORDER_BY_DESC(query.getCreateDate());
}
List<? extends ChangeRequest> list = query.getIterator().getAll();
for (ChangeRequest cr : list) {
if (!ServiceFactory.getMetadataCache().getGeoObjectType(cr.getGeoObjectTypeCode()).isPresent()) {
cr.lock();
cr.clearApprovalStatus();
cr.addApprovalStatus(AllGovernanceStatus.INVALID);
cr.apply();
}
}
return new Page(query.getCount(), pageNumber, pageSize, list);
}
Aggregations