Search in sources :

Example 6 with Page

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);
}
Also used : JsonObject(com.google.gson.JsonObject) Term(org.commongeoregistry.adapter.Term) AbstractClassification(com.runwaysdk.system.AbstractClassification) GraphQuery(com.runwaysdk.business.graph.GraphQuery) Transaction(com.runwaysdk.dataaccess.transaction.Transaction) VertexObject(com.runwaysdk.business.graph.VertexObject) AttributeClassificationType(org.commongeoregistry.adapter.metadata.AttributeClassificationType) CannotDeleteClassificationWithChildrenException(net.geoprism.registry.CannotDeleteClassificationWithChildrenException) IOException(java.io.IOException) LocalizedValue(org.commongeoregistry.adapter.dataaccess.LocalizedValue) JsonParser(com.google.gson.JsonParser) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) VertexObjectDAO(com.runwaysdk.dataaccess.graph.VertexObjectDAO) ApplicationResource(com.runwaysdk.resource.ApplicationResource) AbstractVertexRestriction(net.geoprism.registry.query.graph.AbstractVertexRestriction) Page(net.geoprism.registry.view.Page) JsonElement(com.google.gson.JsonElement) List(java.util.List) JsonArray(com.google.gson.JsonArray) LocalizedValueConverter(net.geoprism.registry.conversion.LocalizedValueConverter) JsonSerializable(net.geoprism.registry.view.JsonSerializable) EdgeObject(com.runwaysdk.business.graph.EdgeObject) InputStream(java.io.InputStream) VertexObject(com.runwaysdk.business.graph.VertexObject) AbstractClassification(com.runwaysdk.system.AbstractClassification) Page(net.geoprism.registry.view.Page) GraphQuery(com.runwaysdk.business.graph.GraphQuery)

Example 7 with Page

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;
}
Also used : JsonObject(com.google.gson.JsonObject) Term(org.commongeoregistry.adapter.Term) AbstractClassification(com.runwaysdk.system.AbstractClassification) GraphQuery(com.runwaysdk.business.graph.GraphQuery) Transaction(com.runwaysdk.dataaccess.transaction.Transaction) VertexObject(com.runwaysdk.business.graph.VertexObject) AttributeClassificationType(org.commongeoregistry.adapter.metadata.AttributeClassificationType) CannotDeleteClassificationWithChildrenException(net.geoprism.registry.CannotDeleteClassificationWithChildrenException) IOException(java.io.IOException) LocalizedValue(org.commongeoregistry.adapter.dataaccess.LocalizedValue) JsonParser(com.google.gson.JsonParser) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) VertexObjectDAO(com.runwaysdk.dataaccess.graph.VertexObjectDAO) ApplicationResource(com.runwaysdk.resource.ApplicationResource) AbstractVertexRestriction(net.geoprism.registry.query.graph.AbstractVertexRestriction) Page(net.geoprism.registry.view.Page) JsonElement(com.google.gson.JsonElement) List(java.util.List) JsonArray(com.google.gson.JsonArray) LocalizedValueConverter(net.geoprism.registry.conversion.LocalizedValueConverter) JsonSerializable(net.geoprism.registry.view.JsonSerializable) EdgeObject(com.runwaysdk.business.graph.EdgeObject) InputStream(java.io.InputStream) AbstractClassification(com.runwaysdk.system.AbstractClassification)

Example 8 with Page

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()));
    }
}
Also used : BusinessQuery(com.runwaysdk.business.BusinessQuery) Page(net.geoprism.registry.view.Page)

Example 9 with Page

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);
}
Also used : JsonArray(com.google.gson.JsonArray) QueryFactory(com.runwaysdk.query.QueryFactory) Selectable(com.runwaysdk.query.Selectable) ChangeRequestQuery(net.geoprism.registry.action.ChangeRequestQuery) JsonObject(com.google.gson.JsonObject) Page(net.geoprism.registry.view.Page) ChangeRequest(net.geoprism.registry.action.ChangeRequest) Request(com.runwaysdk.session.Request) ChangeRequest(net.geoprism.registry.action.ChangeRequest)

Aggregations

Page (net.geoprism.registry.view.Page)9 JsonObject (com.google.gson.JsonObject)8 JsonArray (com.google.gson.JsonArray)6 List (java.util.List)5 Collectors (java.util.stream.Collectors)5 JsonParser (com.google.gson.JsonParser)4 GraphQuery (com.runwaysdk.business.graph.GraphQuery)4 Transaction (com.runwaysdk.dataaccess.transaction.Transaction)4 SortOrder (com.runwaysdk.query.OrderBy.SortOrder)4 QueryFactory (com.runwaysdk.query.QueryFactory)4 Request (com.runwaysdk.session.Request)4 IOException (java.io.IOException)4 InputStream (java.io.InputStream)4 RoleDAOIF (com.runwaysdk.business.rbac.RoleDAOIF)3 ProgrammingErrorException (com.runwaysdk.dataaccess.ProgrammingErrorException)3 Condition (com.runwaysdk.query.Condition)3 OIterator (com.runwaysdk.query.OIterator)3 RequestType (com.runwaysdk.session.RequestType)3 Session (com.runwaysdk.session.Session)3 JsonElement (com.google.gson.JsonElement)2