11/*
22 * SysML v2 REST/HTTP Pilot Implementation
3- * Copyright (C) 2020 InterCAX LLC
4- * Copyright (C) 2020 California Institute of Technology ("Caltech")
3+ * Copyright (C) 2020 InterCAX LLC
4+ * Copyright (C) 2020 California Institute of Technology ("Caltech")
5+ * Copyright (C) 2021 Twingineer LLC
56 *
67 * This program is free software: you can redistribute it and/or modify
78 * it under the terms of the GNU Lesser General Public License as published by
2829import jackson .JacksonHelper ;
2930import jackson .filter .AllowedPropertyFilter ;
3031import jackson .filter .DynamicFilterMixin ;
32+ import jackson .jsonld .DataJsonLdAdorner ;
3133import jackson .jsonld .JsonLdAdorner ;
32- import jackson . jsonld . MofObjectJsonLdAdorner ;
34+ import org . omg . sysml . lifecycle . Data ;
3335import org .omg .sysml .metamodel .Element ;
34- import org .omg .sysml .metamodel .MofObject ;
3536import org .omg .sysml .query .Query ;
3637import play .Environment ;
3738import play .libs .Json ;
4546import java .util .function .UnaryOperator ;
4647import java .util .stream .StreamSupport ;
4748
48- public class QueryController extends JsonLdController <Element , MofObjectJsonLdAdorner .Parameters > {
49+ public class QueryController extends JsonLdController <Data , DataJsonLdAdorner .Parameters > {
4950
5051 private final QueryService queryService ;
5152 private final MetamodelProvider metamodelProvider ;
52- private final JsonLdAdorner <Element , MofObjectJsonLdAdorner .Parameters > adorner ;
53+ private final JsonLdAdorner <Data , DataJsonLdAdorner .Parameters > adorner ;
5354
5455 @ Inject
5556 public QueryController (QueryService queryService , MetamodelProvider metamodelProvider , Environment environment ) {
5657 this .queryService = queryService ;
5758 this .metamodelProvider = metamodelProvider ;
58- this .adorner = new MofObjectJsonLdAdorner <>(metamodelProvider , environment , INLINE_JSON_LD_CONTEXT );
59+ this .adorner = new DataJsonLdAdorner <>(metamodelProvider , environment , INLINE_JSON_LD_CONTEXT );
5960 }
6061
61- public Result createWithProjectId (UUID projectId , Request request ) {
62+ public Result postQueryByProject (UUID projectId , Request request ) {
6263 JsonNode requestBodyJson = request .body ().asJson ();
6364 Query requestedObject = Json .fromJson (requestBodyJson , metamodelProvider .getImplementationClass (Query .class ));
6465 Optional <Query > response = queryService .create (projectId , requestedObject );
6566 return response .map (e -> created (Json .toJson (e ))).orElseGet (Results ::internalServerError );
6667 }
6768
68- public Result byProject (UUID projectId , Request request ) {
69+ public Result getQueriesByProject (UUID projectId , Request request ) {
6970 PageRequest pageRequest = PageRequest .from (request );
7071 List <Query > queries = queryService .getByProjectId (projectId , pageRequest .getAfter (), pageRequest .getBefore (), pageRequest .getSize ());
7172 return Optional .of (queries )
@@ -81,11 +82,16 @@ public Result byProject(UUID projectId, Request request) {
8182 .orElseThrow ();
8283 }
8384
84- public Result byProjectAndId (UUID projectId , UUID queryId ) {
85+ public Result getQueryByProjectAndId (UUID projectId , UUID queryId ) {
8586 Optional <Query > query = queryService .getByProjectIdAndId (projectId , queryId );
8687 return query .map (e -> ok (Json .toJson (e ))).orElseGet (Results ::notFound );
8788 }
8889
90+ public Result deleteQueryByProjectAndId (UUID projectId , UUID queryId ) {
91+ Optional <Query > query = queryService .deleteByProjectIdAndId (projectId , queryId );
92+ return query .map (e -> ok (Json .toJson (e ))).orElseGet (Results ::notFound );
93+ }
94+
8995 public Result getQueryResultsByProjectIdQueryId (UUID projectId , UUID queryId , @ SuppressWarnings ("OptionalUsedAsFieldOrParameterType" ) Optional <UUID > commitId , Request request ) {
9096 QueryService .QueryResults result = queryService .getQueryResultsByProjectIdQueryId (projectId , queryId , commitId .orElse (null ));
9197 return buildResult (result , projectId , request );
@@ -99,17 +105,17 @@ public Result getQueryResultsByProjectIdQuery(UUID projectId, @SuppressWarnings(
99105 }
100106
101107 private Result buildResult (QueryService .QueryResults queryResults , UUID projectId , Request request ) {
102- List <Element > elements = queryResults .getElements ();
108+ List <Data > data = queryResults .getData ();
103109 AllowedPropertyFilter filter = queryResults .getPropertyFilter ();
104110 boolean ld = respondWithJsonLd (request );
105111 JsonNode json = buildJson (
106- new HashSet <>(elements ),
112+ new HashSet <>(data ),
107113 Set .class ,
108114 metamodelProvider .getImplementationClass (Element .class ),
109115 request ,
110- new MofObjectJsonLdAdorner .Parameters (projectId , queryResults .getCommit ().getId ()),
116+ new DataJsonLdAdorner .Parameters (projectId , queryResults .getCommit ().getId ()),
111117 ld ,
112- filter != null ? Json .mapper ().copy ().addMixIn (MofObject .class , DynamicFilterMixin .class ) : Json .mapper (),
118+ filter != null ? Json .mapper ().copy ().addMixIn (Data .class , DynamicFilterMixin .class ) : Json .mapper (),
113119 filter != null ? writer -> writer .with (new SimpleFilterProvider ().addFilter (DynamicFilterMixin .FILTER_NAME , filter )) : UnaryOperator .identity ()
114120 );
115121 // Workaround for JSON always containing "@type"
@@ -122,7 +128,7 @@ private Result buildResult(QueryService.QueryResults queryResults, UUID projectI
122128 }
123129
124130 @ Override
125- protected JsonLdAdorner <Element , MofObjectJsonLdAdorner .Parameters > getAdorner () {
131+ protected JsonLdAdorner <Data , DataJsonLdAdorner .Parameters > getAdorner () {
126132 return adorner ;
127133 }
128134}
0 commit comments