public class org.finos.legend.engine.application.query.api.QueryStoreManager extends java.lang.Object
{
private static final java.util.regex.Pattern VALID_ARTIFACT_ID_PATTERN;
private static final int MAX_NUMBER_OF_QUERIES;
private static final int MAX_NUMBER_OF_EVENTS;
private final com.fasterxml.jackson.databind.ObjectMapper objectMapper;
private static final org.bson.Document EMPTY_FILTER;
private static final java.lang.String QUERY_PROFILE_PATH;
private static final java.lang.String QUERY_PROFILE_TAG_DATA_SPACE;
private static final java.util.List LIGHT_QUERY_PROJECTION;
private static final int GET_QUERIES_LIMIT;
private final com.mongodb.client.MongoClient mongoClient;
public void <init>(com.mongodb.client.MongoClient)
{
com.fasterxml.jackson.databind.ObjectMapper v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
com.mongodb.client.MongoClient v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: com.mongodb.client.MongoClient;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new com.fasterxml.jackson.databind.ObjectMapper;
specialinvoke v.<com.fasterxml.jackson.databind.ObjectMapper: void <init>()>();
v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.fasterxml.jackson.databind.ObjectMapper objectMapper> = v;
v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoClient mongoClient> = v;
return;
}
private com.mongodb.client.MongoDatabase getQueryDatabase()
{
com.mongodb.client.MongoClient v;
com.mongodb.client.MongoDatabase v;
java.lang.RuntimeException v;
org.finos.legend.engine.shared.core.vault.Vault v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v;
boolean v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: boolean hasValue(java.lang.String)>("query.mongo.database");
if v == 0 goto label;
v = v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoClient mongoClient>;
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: java.lang.String getValue(java.lang.String)>("query.mongo.database");
v = interfaceinvoke v.<com.mongodb.client.MongoClient: com.mongodb.client.MongoDatabase getDatabase(java.lang.String)>(v);
return v;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Query MongoDB database has not been configured properly");
throw v;
}
private com.mongodb.client.MongoCollection getQueryCollection()
{
com.mongodb.client.MongoCollection v;
com.mongodb.client.MongoDatabase v;
java.lang.RuntimeException v;
org.finos.legend.engine.shared.core.vault.Vault v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v;
boolean v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: boolean hasValue(java.lang.String)>("query.mongo.collection.query");
if v == 0 goto label;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoDatabase getQueryDatabase()>();
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: java.lang.String getValue(java.lang.String)>("query.mongo.collection.query");
v = interfaceinvoke v.<com.mongodb.client.MongoDatabase: com.mongodb.client.MongoCollection getCollection(java.lang.String)>(v);
return v;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Query MongoDB collection has not been configured properly");
throw v;
}
private com.mongodb.client.MongoCollection getQueryEventCollection()
{
com.mongodb.client.MongoCollection v;
com.mongodb.client.MongoDatabase v;
java.lang.RuntimeException v;
org.finos.legend.engine.shared.core.vault.Vault v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v;
boolean v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: boolean hasValue(java.lang.String)>("query.mongo.collection.queryEvent");
if v == 0 goto label;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoDatabase getQueryDatabase()>();
v = <org.finos.legend.engine.shared.core.vault.Vault: org.finos.legend.engine.shared.core.vault.Vault INSTANCE>;
v = virtualinvoke v.<org.finos.legend.engine.shared.core.vault.Vault: java.lang.String getValue(java.lang.String)>("query.mongo.collection.queryEvent");
v = interfaceinvoke v.<com.mongodb.client.MongoDatabase: com.mongodb.client.MongoCollection getCollection(java.lang.String)>(v);
return v;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Query event MongoDB collection has not been configured properly");
throw v;
}
private java.lang.Object documentToClass(org.bson.Document, java.lang.Class)
{
org.bson.Document v;
com.fasterxml.jackson.databind.ObjectMapper v;
java.lang.Exception v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v;
javax.ws.rs.core.Response$Status v;
java.lang.Class v;
java.lang.Object v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v, v, v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.bson.Document;
v := @parameter: java.lang.Class;
label:
v = v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.fasterxml.jackson.databind.ObjectMapper objectMapper>;
v = virtualinvoke v.<com.fasterxml.jackson.databind.ObjectMapper: java.lang.Object convertValue(java.lang.Object,java.lang.Class)>(v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Exception: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Unable to deserialize document to class \'\u0001\':\u0001");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status NOT_FOUND>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
catch java.lang.Exception from label to label with label;
}
public org.finos.legend.engine.application.query.model.Query documentToQuery(org.bson.Document)
{
org.bson.Document v;
java.lang.Object v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.bson.Document;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: java.lang.Object documentToClass(org.bson.Document,java.lang.Class)>(v, class "Lorg/finos/legend/engine/application/query/model/Query;");
return v;
}
private org.bson.Document queryToDocument(org.finos.legend.engine.application.query.model.Query) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v;
org.finos.legend.engine.application.query.model.Query v;
com.fasterxml.jackson.databind.ObjectMapper v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.finos.legend.engine.application.query.model.Query;
v = v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.fasterxml.jackson.databind.ObjectMapper objectMapper>;
v = virtualinvoke v.<com.fasterxml.jackson.databind.ObjectMapper: java.lang.String writeValueAsString(java.lang.Object)>(v);
v = staticinvoke <org.bson.Document: org.bson.Document parse(java.lang.String)>(v);
return v;
}
private static org.finos.legend.engine.application.query.model.QueryEvent createEvent(java.lang.String, org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType)
{
org.finos.legend.engine.application.query.model.QueryEvent v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
java.lang.Long v;
long v;
java.lang.String v;
java.time.Instant v;
v := @parameter: java.lang.String;
v := @parameter: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType;
v = new org.finos.legend.engine.application.query.model.QueryEvent;
specialinvoke v.<org.finos.legend.engine.application.query.model.QueryEvent: void <init>()>();
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.String queryId> = v;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
v.<org.finos.legend.engine.application.query.model.QueryEvent: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType eventType> = v;
return v;
}
public static org.finos.legend.engine.application.query.model.QueryEvent documentToQueryEvent(org.bson.Document)
{
org.bson.Document v;
java.lang.ClassCastException v;
java.lang.Integer v;
org.finos.legend.engine.application.query.model.QueryEvent v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
java.lang.Long v, v;
int v;
java.lang.String v, v;
v := @parameter: org.bson.Document;
v = new org.finos.legend.engine.application.query.model.QueryEvent;
specialinvoke v.<org.finos.legend.engine.application.query.model.QueryEvent: void <init>()>();
v = virtualinvoke v.<org.bson.Document: java.lang.String getString(java.lang.Object)>("queryId");
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.String queryId> = v;
label:
v = virtualinvoke v.<org.bson.Document: java.lang.Long getLong(java.lang.Object)>("timestamp");
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.bson.Document: java.lang.Integer getInteger(java.lang.Object)>("timestamp");
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
label:
v = virtualinvoke v.<org.bson.Document: java.lang.String getString(java.lang.Object)>("eventType");
v = staticinvoke <org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType valueOf(java.lang.String)>(v);
v.<org.finos.legend.engine.application.query.model.QueryEvent: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType eventType> = v;
return v;
catch java.lang.ClassCastException from label to label with label;
}
private org.bson.Document queryEventToDocument(org.finos.legend.engine.application.query.model.QueryEvent) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v;
org.finos.legend.engine.application.query.model.QueryEvent v;
com.fasterxml.jackson.databind.ObjectMapper v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
java.lang.String v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.finos.legend.engine.application.query.model.QueryEvent;
v = v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.fasterxml.jackson.databind.ObjectMapper objectMapper>;
v = virtualinvoke v.<com.fasterxml.jackson.databind.ObjectMapper: java.lang.String writeValueAsString(java.lang.Object)>(v);
v = staticinvoke <org.bson.Document: org.bson.Document parse(java.lang.String)>(v);
return v;
}
private static void validate(boolean, java.lang.String)
{
org.finos.legend.engine.application.query.api.ApplicationQueryException v;
javax.ws.rs.core.Response$Status v;
java.lang.String v;
boolean v;
v := @parameter: boolean;
v := @parameter: java.lang.String;
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status BAD_REQUEST>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
return;
}
private static void validateNonEmptyQueryField(java.lang.String, java.lang.String)
{
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validate(boolean,java.lang.String)>(v, v);
return;
}
public static void validateQuery(org.finos.legend.engine.application.query.model.Query)
{
java.util.regex.Matcher v;
org.finos.legend.engine.application.query.model.QueryExecutionContext v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
org.finos.legend.engine.application.query.model.Query v;
java.util.regex.Pattern v;
v := @parameter: org.finos.legend.engine.application.query.model.Query;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query ID is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String name>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query name is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String groupId>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query project group ID is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String artifactId>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query project artifact ID is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String versionId>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query project version is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: org.finos.legend.engine.application.query.model.QueryExecutionContext executionContext>;
v = v instanceof org.finos.legend.engine.application.query.model.QueryExplicitExecutionContext;
if v == 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.Query: org.finos.legend.engine.application.query.model.QueryExecutionContext executionContext>;
v = v.<org.finos.legend.engine.application.query.model.QueryExplicitExecutionContext: java.lang.String mapping>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query mapping is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.QueryExplicitExecutionContext: java.lang.String runtime>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query runtime is missing or empty");
goto label;
label:
v = v.<org.finos.legend.engine.application.query.model.Query: org.finos.legend.engine.application.query.model.QueryExecutionContext executionContext>;
v = v instanceof org.finos.legend.engine.application.query.model.QueryDataSpaceExecutionContext;
if v == 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.Query: org.finos.legend.engine.application.query.model.QueryExecutionContext executionContext>;
v = v.<org.finos.legend.engine.application.query.model.QueryDataSpaceExecutionContext: java.lang.String dataSpacePath>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query data Space execution context dataSpace path is missing or empty");
goto label;
label:
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String mapping>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query mapping is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String runtime>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query runtime is missing or empty");
label:
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String content>;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateNonEmptyQueryField(java.lang.String,java.lang.String)>(v, "Query content is missing or empty");
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String groupId>;
v = staticinvoke <javax.lang.model.SourceVersion: boolean isName(java.lang.CharSequence)>(v);
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validate(boolean,java.lang.String)>(v, "Query project group ID is invalid");
v = <org.finos.legend.engine.application.query.api.QueryStoreManager: java.util.regex.Pattern VALID_ARTIFACT_ID_PATTERN>;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String artifactId>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validate(boolean,java.lang.String)>(v, "Query project artifact ID is invalid");
return;
}
public java.util.List searchQueries(org.finos.legend.engine.application.query.model.QuerySearchSpecification, java.lang.String)
{
org.bson.Document v;
java.lang.Integer v, v;
javax.ws.rs.core.Response$Status v;
java.util.stream.Collector v;
com.mongodb.client.AggregateIterable v;
java.util.stream.Stream v, v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
com.mongodb.client.MongoCollection v;
org.eclipse.collections.api.block.function.Function v, v, v;
java.util.ArrayList v, v, v;
org.bson.conversions.Bson v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
com.mongodb.client.model.Field v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
org.finos.legend.engine.application.query.model.QuerySearchTermSpecification v, v;
org.finos.legend.engine.application.query.model.QuerySearchSortBy v, v;
org.finos.legend.engine.application.query.model.QuerySearchSpecification v;
org.eclipse.collections.api.list.MutableList v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v;
java.util.function.Predicate v;
java.util.List v, v, v, v, v, v, v, v, v, v, v, v, v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v;
java.lang.String[] v, v, v, v;
java.util.function.Function v;
com.mongodb.client.MongoCursor v;
int v, v;
java.lang.Boolean v, v, v, v, v, v, v, v, v, v;
org.finos.legend.engine.application.query.model.Query v;
org.bson.conversions.Bson[] v, v, v, v, v;
com.mongodb.client.model.Field[] v;
java.lang.Object v, v, v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.finos.legend.engine.application.query.model.QuerySearchSpecification;
v := @parameter: java.lang.String;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: org.finos.legend.engine.application.query.model.QuerySearchTermSpecification searchTermSpecification>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: org.finos.legend.engine.application.query.model.QuerySearchTermSpecification searchTermSpecification>;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
if v != null goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status INTERNAL_SERVER_ERROR>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Query search spec expecting a search term", v);
throw v;
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean exactMatchName>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean exactMatchName>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("name", v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean includeOwner>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean includeOwner>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = newarray (org.bson.conversions.Bson)[2];
v[0] = v;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("owner", v);
v[1] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(org.bson.conversions.Bson[])>(v);
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
v = staticinvoke <java.util.regex.Pattern: java.lang.String quote(java.lang.String)>(v);
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson regex(java.lang.String,java.lang.String,java.lang.String)>("name", v, "i");
v = newarray (org.bson.conversions.Bson)[2];
v[0] = v;
v[1] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(org.bson.conversions.Bson[])>(v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean includeOwner>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.Boolean includeOwner>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = newarray (org.bson.conversions.Bson)[3];
v[0] = v;
v[1] = v;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchTermSpecification: java.lang.String searchTerm>;
v = staticinvoke <java.util.regex.Pattern: java.lang.String quote(java.lang.String)>(v);
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson regex(java.lang.String,java.lang.String,java.lang.String)>("owner", v, "i");
v[2] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(org.bson.conversions.Bson[])>(v);
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Boolean showCurrentUserQueriesOnly>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Boolean showCurrentUserQueriesOnly>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = newarray (java.lang.String)[2];
v[0] = v;
v[1] = null;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson in(java.lang.String,java.lang.Object[])>("owner", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List projectCoordinates>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List projectCoordinates>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List projectCoordinates>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_searchQueries_a6a7089c_1__5: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = staticinvoke <org.eclipse.collections.impl.utility.ListIterate: org.eclipse.collections.api.list.MutableList collect(java.util.List,org.eclipse.collections.api.block.function.Function)>(v, v);
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(java.lang.Iterable)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List taggedValues>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List taggedValues>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List taggedValues>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_searchQueries_103fd80b_1__2: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = staticinvoke <org.eclipse.collections.impl.utility.ListIterate: org.eclipse.collections.api.list.MutableList collect(java.util.List,org.eclipse.collections.api.block.function.Function)>(v, v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Boolean combineTaggedValuesCondition>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Boolean combineTaggedValuesCondition>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(java.lang.Iterable)>(v);
goto label;
label:
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(java.lang.Iterable)>(v);
label:
v = v;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List taggedValues>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List taggedValues>;
v = interfaceinvoke v.<java.util.List: java.util.stream.Stream stream()>();
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_searchQueries_0__3: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_searchQueries_1__4: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector toList()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
goto label;
label:
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
label:
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = newarray (org.bson.conversions.Bson)[2];
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("executionContext._type", "dataSpaceExecutionContext");
v[0] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson in(java.lang.String,java.lang.Iterable)>("executionContext.dataSpacePath", v);
v[1] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(org.bson.conversions.Bson[])>(v);
v = newarray (org.bson.conversions.Bson)[2];
v[0] = v;
v[1] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(org.bson.conversions.Bson[])>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List stereotypes>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List stereotypes>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.util.List stereotypes>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_searchQueries_a6a7089c_2__1: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = staticinvoke <org.eclipse.collections.impl.utility.ListIterate: org.eclipse.collections.api.list.MutableList collect(java.util.List,org.eclipse.collections.api.block.function.Function)>(v, v);
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson or(java.lang.Iterable)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = newarray (com.mongodb.client.model.Field)[1];
v = new com.mongodb.client.model.Field;
v = new org.bson.Document;
v = newarray (java.lang.String)[2];
v[0] = "$owner";
v[1] = v;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<org.bson.Document: void <init>(java.lang.String,java.lang.Object)>("$eq", v);
specialinvoke v.<com.mongodb.client.model.Field: void <init>(java.lang.String,java.lang.Object)>("isCurrentUser", v);
v[0] = v;
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson addFields(com.mongodb.client.model.Field[])>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = <org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document EMPTY_FILTER>;
goto label;
label:
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(java.lang.Iterable)>(v);
label:
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson match(org.bson.conversions.Bson)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = newarray (java.lang.String)[1];
v[0] = "isCurrentUser";
v = staticinvoke <com.mongodb.client.model.Sorts: org.bson.conversions.Bson descending(java.lang.String[])>(v);
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson sort(org.bson.conversions.Bson)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: org.finos.legend.engine.application.query.model.QuerySearchSortBy sortByOption>;
if v == null goto label;
v = newarray (java.lang.String)[1];
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: org.finos.legend.engine.application.query.model.QuerySearchSortBy sortByOption>;
v = virtualinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: java.lang.String getSortByField(org.finos.legend.engine.application.query.model.QuerySearchSortBy)>(v);
v[0] = v;
v = staticinvoke <com.mongodb.client.model.Sorts: org.bson.conversions.Bson descending(java.lang.String[])>(v);
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson sort(org.bson.conversions.Bson)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = <org.finos.legend.engine.application.query.api.QueryStoreManager: java.util.List LIGHT_QUERY_PROJECTION>;
v = staticinvoke <com.mongodb.client.model.Projections: org.bson.conversions.Bson include(java.util.List)>(v);
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson project(org.bson.conversions.Bson)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Integer limit>;
if v != null goto label;
v = 2147483647;
goto label;
label:
v = v.<org.finos.legend.engine.application.query.model.QuerySearchSpecification: java.lang.Integer limit>;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
label:
v = staticinvoke <java.lang.Math: int min(int,int)>(100, v);
v = staticinvoke <com.mongodb.client.model.Aggregates: org.bson.conversions.Bson limit(int)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.AggregateIterable aggregate(java.util.List)>(v);
v = interfaceinvoke v.<com.mongodb.client.AggregateIterable: com.mongodb.client.MongoCursor iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.Query documentToQuery(org.bson.Document)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public java.lang.String getSortByField(org.finos.legend.engine.application.query.model.QuerySearchSortBy)
{
int[] v;
org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType v;
int v, v;
org.finos.legend.engine.shared.core.operational.errorManagement.EngineException v;
org.finos.legend.engine.application.query.model.QuerySearchSortBy v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.finos.legend.engine.application.query.model.QuerySearchSortBy;
v = <org.finos.legend.engine.application.query.api.QueryStoreManager$1: int[] $SwitchMap$org$finos$legend$engine$application$query$model$QuerySearchSortBy>;
v = virtualinvoke v.<org.finos.legend.engine.application.query.model.QuerySearchSortBy: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
return "createdAt";
label:
return "lastOpenAt";
label:
return "lastUpdatedAt";
label:
v = new org.finos.legend.engine.shared.core.operational.errorManagement.EngineException;
v = <org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType: org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType COMPILATION>;
specialinvoke v.<org.finos.legend.engine.shared.core.operational.errorManagement.EngineException: void <init>(java.lang.String,org.finos.legend.engine.protocol.pure.v.model.context.EngineErrorType)>("Fail to understand sort-by value", v);
throw v;
}
public java.util.List getQueries(java.util.List)
{
java.lang.IllegalStateException v;
com.mongodb.client.MongoCollection v;
org.eclipse.collections.api.block.function.Function v;
org.eclipse.collections.api.list.MutableList v;
org.bson.conversions.Bson v;
org.eclipse.collections.api.LazyIterable v;
int v, v, v;
javax.ws.rs.core.Response$Status v, v;
java.lang.String v, v;
org.eclipse.collections.api.factory.set.sorted.MutableSortedSetFactory v, v;
java.util.function.Consumer v;
org.eclipse.collections.api.set.sorted.MutableSortedSet v, v;
java.util.List v;
com.mongodb.client.FindIterable v, v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 50 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status BAD_REQUEST>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Can\'t fetch more than 50 queries", v);
throw v;
label:
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson in(java.lang.String,java.lang.Iterable)>("id", v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
v = interfaceinvoke v.<com.mongodb.client.FindIterable: com.mongodb.client.FindIterable limit(int)>(50);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQuery__6: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.application.query.api.QueryStoreManager)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
v = <org.eclipse.collections.api.factory.SortedSets: org.eclipse.collections.api.factory.set.sorted.MutableSortedSetFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.set.sorted.MutableSortedSetFactory: org.eclipse.collections.api.set.sorted.MutableSortedSet empty()>();
v = <org.eclipse.collections.api.factory.SortedSets: org.eclipse.collections.api.factory.set.sorted.MutableSortedSetFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.set.sorted.MutableSortedSetFactory: org.eclipse.collections.api.set.sorted.MutableSortedSet empty()>();
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$lambda_getQueries_2__7: java.util.function.Consumer bootstrap$(org.eclipse.collections.api.list.MutableList,org.eclipse.collections.api.set.sorted.MutableSortedSet,org.eclipse.collections.api.set.sorted.MutableSortedSet)>(v, v, v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = interfaceinvoke v.<org.eclipse.collections.api.set.sorted.MutableSortedSet: int size()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = interfaceinvoke v.<org.eclipse.collections.api.set.sorted.MutableSortedSet: java.lang.String makeString(java.lang.String,java.lang.String,java.lang.String)>("Found multiple queries with duplicated ID for the following ID(s):\\n", "\\n", "");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<org.eclipse.collections.api.set.sorted.MutableSortedSet: int size()>();
if v == 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = interfaceinvoke v.<org.eclipse.collections.api.set.sorted.MutableSortedSet: java.lang.String makeString(java.lang.String,java.lang.String,java.lang.String)>("Can\'t find queries for the following ID(s):\\n", "\\n", "");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status INTERNAL_SERVER_ERROR>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
return v;
}
public org.finos.legend.engine.application.query.model.Query getQuery(java.lang.String) throws com.fasterxml.jackson.core.JsonProcessingException
{
java.lang.IllegalStateException v;
com.mongodb.client.MongoCollection v, v;
org.eclipse.collections.api.block.function.Function v;
long v, v;
org.eclipse.collections.api.list.MutableList v;
org.bson.conversions.Bson v, v, v;
org.eclipse.collections.api.LazyIterable v;
java.lang.Long v, v;
int v, v;
javax.ws.rs.core.Response$Status v;
java.lang.String v, v, v;
java.time.Instant v, v;
com.mongodb.client.FindIterable v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v;
java.lang.Object v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQuery__8: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.application.query.api.QueryStoreManager)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Found multiple queries with ID \'\u0001\'");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t find query with ID \'\u0001\'");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status NOT_FOUND>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastOpenAt> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = staticinvoke <com.mongodb.client.model.Updates: org.bson.conversions.Bson set(java.lang.String,java.lang.Object)>("lastOpenAt", v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.result.UpdateResult updateOne(org.bson.conversions.Bson,org.bson.conversions.Bson)>(v, v);
return v;
}
public org.finos.legend.engine.application.query.model.QueryStoreStats getQueryStoreStats() throws com.fasterxml.jackson.core.JsonProcessingException
{
com.mongodb.client.MongoCollection v, v;
org.bson.conversions.Bson[] v;
long v, v;
java.util.ArrayList v;
org.bson.conversions.Bson v, v, v, v;
org.finos.legend.engine.application.query.model.QueryStoreStats v;
java.lang.Long v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: long countDocuments()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = new org.finos.legend.engine.application.query.model.QueryStoreStats;
specialinvoke v.<org.finos.legend.engine.application.query.model.QueryStoreStats: void <init>()>();
virtualinvoke v.<org.finos.legend.engine.application.query.model.QueryStoreStats: void setQueryCount(java.lang.Long)>(v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = newarray (org.bson.conversions.Bson)[2];
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("taggedValues.tag.profile", "meta::pure::profiles::query");
v[0] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("taggedValues.tag.value", "dataSpace");
v[1] = v;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(org.bson.conversions.Bson[])>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(java.lang.Iterable)>(v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: long countDocuments(org.bson.conversions.Bson)>(v);
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
virtualinvoke v.<org.finos.legend.engine.application.query.model.QueryStoreStats: void setQueryCreatedFromDataSpaceCount(java.lang.Long)>(v);
return v;
}
public org.finos.legend.engine.application.query.model.Query createQuery(org.finos.legend.engine.application.query.model.Query, java.lang.String) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v, v;
com.mongodb.client.MongoCollection v, v, v;
org.eclipse.collections.api.block.function.Function v;
long v;
org.eclipse.collections.api.list.MutableList v;
org.bson.conversions.Bson v;
org.eclipse.collections.api.LazyIterable v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
java.lang.Long v, v, v, v;
int v;
javax.ws.rs.core.Response$Status v;
java.lang.String v, v, v, v, v;
org.finos.legend.engine.application.query.model.Query v;
java.time.Instant v;
org.finos.legend.engine.application.query.model.QueryEvent v;
com.mongodb.client.FindIterable v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: org.finos.legend.engine.application.query.model.Query;
v := @parameter: java.lang.String;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateQuery(org.finos.legend.engine.application.query.model.Query)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQuery__9: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.application.query.api.QueryStoreManager)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v < 1 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Query with ID \'\u0001\' already existed");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status BAD_REQUEST>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt> = v;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt>;
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastUpdatedAt> = v;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt>;
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastOpenAt> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryToDocument(org.finos.legend.engine.application.query.model.Query)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: void insertOne(java.lang.Object)>(v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
v = <org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType CREATED>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.QueryEvent createEvent(java.lang.String,org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType)>(v, v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt>;
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryEventCollection()>();
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryEventToDocument(org.finos.legend.engine.application.query.model.QueryEvent)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: void insertOne(java.lang.Object)>(v);
return v;
}
public org.finos.legend.engine.application.query.model.Query updateQuery(java.lang.String, org.finos.legend.engine.application.query.model.Query, java.lang.String) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v, v;
java.lang.IllegalStateException v;
org.eclipse.collections.api.list.MutableList v;
java.lang.Long v, v, v, v;
javax.ws.rs.core.Response$Status v, v, v;
boolean v, v;
java.time.Instant v, v;
org.finos.legend.engine.application.query.model.QueryEvent v;
com.mongodb.client.FindIterable v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v, v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
com.mongodb.client.MongoCollection v, v, v;
org.eclipse.collections.api.block.function.Function v;
long v, v;
org.bson.conversions.Bson v, v;
org.eclipse.collections.api.LazyIterable v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
org.finos.legend.engine.application.query.model.Query v;
java.lang.Object v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.lang.String;
v := @parameter: org.finos.legend.engine.application.query.model.Query;
v := @parameter: java.lang.String;
staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: void validateQuery(org.finos.legend.engine.application.query.model.Query)>(v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQuery__10: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.application.query.api.QueryStoreManager)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status BAD_REQUEST>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Updating query ID is not supported", v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Found multiple queries with ID \'\u0001\'");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t find query with ID \'\u0001\'");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status NOT_FOUND>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status FORBIDDEN>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Only owner can update the query", v);
throw v;
label:
v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner> = v;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt>;
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long createdAt> = v;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastUpdatedAt> = v;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastOpenAt> = v;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String originalVersionId>;
v.<org.finos.legend.engine.application.query.model.Query: java.lang.String originalVersionId> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryToDocument(org.finos.legend.engine.application.query.model.Query)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: java.lang.Object findOneAndReplace(org.bson.conversions.Bson,java.lang.Object)>(v, v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String id>;
v = <org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType UPDATED>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.QueryEvent createEvent(java.lang.String,org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType)>(v, v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastUpdatedAt>;
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryEventCollection()>();
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryEventToDocument(org.finos.legend.engine.application.query.model.QueryEvent)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: void insertOne(java.lang.Object)>(v);
return v;
}
public org.finos.legend.engine.application.query.model.Query patchQuery(java.lang.String, org.finos.legend.engine.application.query.model.Query, java.lang.String) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v, v;
java.lang.Long v, v, v;
javax.ws.rs.core.Response$Status v, v;
boolean v;
java.lang.IllegalAccessException v;
java.time.Instant v, v;
org.finos.legend.engine.application.query.model.QueryEvent v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v, v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
com.mongodb.client.MongoCollection v, v;
long v, v;
org.bson.conversions.Bson v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
int v, v;
java.lang.String v, v, v, v, v, v;
org.finos.legend.engine.application.query.model.Query v, v;
java.lang.reflect.Field v;
java.lang.reflect.Field[] v;
java.lang.Class v;
java.lang.Object v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.lang.String;
v := @parameter: org.finos.legend.engine.application.query.model.Query;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.Query getQuery(java.lang.String)>(v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status FORBIDDEN>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Only owner can update the query", v);
throw v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field[] getDeclaredFields()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
label:
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
virtualinvoke v.<java.lang.reflect.Field: void set(java.lang.Object,java.lang.Object)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t modify query field\u0001");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status BAD_REQUEST>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
v = v + 1;
goto label;
label:
v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner> = v;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastUpdatedAt> = v;
v = staticinvoke <java.time.Instant: java.time.Instant now()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastOpenAt> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryToDocument(org.finos.legend.engine.application.query.model.Query)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: java.lang.Object findOneAndReplace(org.bson.conversions.Bson,java.lang.Object)>(v, v);
v = <org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType UPDATED>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.QueryEvent createEvent(java.lang.String,org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType)>(v, v);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.Long lastUpdatedAt>;
v.<org.finos.legend.engine.application.query.model.QueryEvent: java.lang.Long timestamp> = v;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryEventCollection()>();
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryEventToDocument(org.finos.legend.engine.application.query.model.QueryEvent)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: void insertOne(java.lang.Object)>(v);
return v;
catch java.lang.IllegalAccessException from label to label with label;
}
public void deleteQuery(java.lang.String, java.lang.String) throws com.fasterxml.jackson.core.JsonProcessingException
{
org.bson.Document v;
java.lang.IllegalStateException v;
com.mongodb.client.MongoCollection v, v, v;
org.eclipse.collections.api.block.function.Function v;
org.eclipse.collections.api.list.MutableList v;
org.bson.conversions.Bson v, v;
org.eclipse.collections.api.LazyIterable v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
int v, v;
javax.ws.rs.core.Response$Status v, v;
java.lang.String v, v, v, v, v, v;
boolean v;
org.finos.legend.engine.application.query.model.QueryEvent v;
com.mongodb.client.FindIterable v;
org.finos.legend.engine.application.query.api.ApplicationQueryException v, v;
java.lang.Object v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQuery__11: org.eclipse.collections.api.block.function.Function bootstrap$(org.finos.legend.engine.application.query.api.QueryStoreManager)>(v);
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Found multiple queries with ID \'\u0001\'");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t find query with ID \'\u0001\'");
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status NOT_FOUND>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>(v, v);
throw v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
if v == null goto label;
v = v.<org.finos.legend.engine.application.query.model.Query: java.lang.String owner>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new org.finos.legend.engine.application.query.api.ApplicationQueryException;
v = <javax.ws.rs.core.Response$Status: javax.ws.rs.core.Response$Status FORBIDDEN>;
specialinvoke v.<org.finos.legend.engine.application.query.api.ApplicationQueryException: void <init>(java.lang.String,javax.ws.rs.core.Response$Status)>("Only owner can delete the query", v);
throw v;
label:
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryCollection()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("id", v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: java.lang.Object findOneAndDelete(org.bson.conversions.Bson)>(v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryEventCollection()>();
v = <org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType DELETED>;
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager: org.finos.legend.engine.application.query.model.QueryEvent createEvent(java.lang.String,org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType)>(v, v);
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document queryEventToDocument(org.finos.legend.engine.application.query.model.QueryEvent)>(v);
interfaceinvoke v.<com.mongodb.client.MongoCollection: void insertOne(java.lang.Object)>(v);
return;
}
public java.util.List getQueryEvents(java.lang.String, org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType, java.lang.Long, java.lang.Long, java.lang.Integer)
{
com.mongodb.client.MongoCollection v;
org.eclipse.collections.api.block.function.Function v;
java.lang.Integer v;
org.eclipse.collections.api.list.MutableList v;
java.util.ArrayList v;
org.bson.conversions.Bson v, v, v, v;
org.eclipse.collections.api.LazyIterable v;
org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType v;
java.lang.Long v, v;
int v, v;
java.lang.String v, v;
boolean v;
com.mongodb.client.FindIterable v, v;
java.lang.Object v;
org.finos.legend.engine.application.query.api.QueryStoreManager v;
v := @this: org.finos.legend.engine.application.query.api.QueryStoreManager;
v := @parameter: java.lang.String;
v := @parameter: org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType;
v := @parameter: java.lang.Long;
v := @parameter: java.lang.Long;
v := @parameter: java.lang.Integer;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
if v == null goto label;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("queryId", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
if v == null goto label;
v = virtualinvoke v.<org.finos.legend.engine.application.query.model.QueryEvent$QueryEventType: java.lang.String toString()>();
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson eq(java.lang.String,java.lang.Object)>("eventType", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
if v == null goto label;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson gte(java.lang.String,java.lang.Object)>("timestamp", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
if v == null goto label;
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson lte(java.lang.String,java.lang.Object)>("timestamp", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = specialinvoke v.<org.finos.legend.engine.application.query.api.QueryStoreManager: com.mongodb.client.MongoCollection getQueryEventCollection()>();
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = <org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document EMPTY_FILTER>;
goto label;
label:
v = staticinvoke <com.mongodb.client.model.Filters: org.bson.conversions.Bson and(java.lang.Iterable)>(v);
label:
v = interfaceinvoke v.<com.mongodb.client.MongoCollection: com.mongodb.client.FindIterable find(org.bson.conversions.Bson)>(v);
if v != null goto label;
v = 2147483647;
goto label;
label:
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
label:
v = staticinvoke <java.lang.Math: int min(int,int)>(1000, v);
v = interfaceinvoke v.<com.mongodb.client.FindIterable: com.mongodb.client.FindIterable limit(int)>(v);
v = staticinvoke <org.finos.legend.engine.application.query.api.QueryStoreManager$documentToQueryEvent__12: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = staticinvoke <org.eclipse.collections.impl.utility.LazyIterate: org.eclipse.collections.api.LazyIterable collect(java.lang.Iterable,org.eclipse.collections.api.block.function.Function)>(v, v);
v = interfaceinvoke v.<org.eclipse.collections.api.LazyIterable: org.eclipse.collections.api.list.MutableList toList()>();
return v;
}
static void <clinit>()
{
org.bson.Document v;
java.util.List v;
java.lang.String[] v;
java.util.regex.Pattern v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("^[a-z][a-z0-9_]*+(-[a-z][a-z0-9_]*+)*+$");
<org.finos.legend.engine.application.query.api.QueryStoreManager: java.util.regex.Pattern VALID_ARTIFACT_ID_PATTERN> = v;
v = staticinvoke <org.bson.Document: org.bson.Document parse(java.lang.String)>("{}");
<org.finos.legend.engine.application.query.api.QueryStoreManager: org.bson.Document EMPTY_FILTER> = v;
v = newarray (java.lang.String)[10];
v[0] = "id";
v[1] = "name";
v[2] = "versionId";
v[3] = "originalVersionId";
v[4] = "groupId";
v[5] = "artifactId";
v[6] = "owner";
v[7] = "createdAt";
v[8] = "lastUpdatedAt";
v[9] = "lastOpenAt";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
<org.finos.legend.engine.application.query.api.QueryStoreManager: java.util.List LIGHT_QUERY_PROJECTION> = v;
return;
}
}