From fd86de46bbd0719040ad582ad26de777989c2bda Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 28 Jun 2023 10:37:49 +0100 Subject: [PATCH 01/27] Add CTI example Change Main README.md --- README.md | 7 + .../cyber_threat_intelligence/README.md | 129 ++ .../cyber_threat_intelligence/pom.xml | 100 + .../Configuration/AppConfiguration.java | 86 + .../Configuration/GraphQlConfiguration.java | 37 + .../src/main/java/org/example/Main.java | 39 + .../org/example/controllers/Controller.java | 490 +++++ .../java/org/example/db/AttributedToDAO.java | 61 + .../main/java/org/example/db/ClassDAO.java | 107 ++ .../java/org/example/db/CreatedByDAO.java | 61 + .../org/example/db/ExternalReferencesDAO.java | 61 + .../src/main/java/org/example/db/FileDAO.java | 107 ++ .../main/java/org/example/db/GroupDAO.java | 108 ++ .../main/java/org/example/db/HashesDAO.java | 50 + .../java/org/example/db/IdUnknownDAO.java | 107 ++ .../main/java/org/example/db/IdentityDAO.java | 107 ++ .../java/org/example/db/ImpersonatesDAO.java | 62 + .../java/org/example/db/IndicatesDAO.java | 61 + .../java/org/example/db/IndicatorDAO.java | 108 ++ .../java/org/example/db/IndividualDAO.java | 107 ++ .../org/example/db/KillChainPhaseDAO.java | 107 ++ .../org/example/db/KillChainPhasesDAO.java | 60 + .../main/java/org/example/db/MalwareDAO.java | 105 ++ .../main/java/org/example/db/SchemaDAO.java | 44 + .../main/java/org/example/db/SightingDAO.java | 61 + .../main/java/org/example/db/SystemDAO.java | 107 ++ .../main/java/org/example/db/TargetsDAO.java | 62 + .../java/org/example/db/ThreatActorDAO.java | 114 ++ .../org/example/db/TypeDBSessionWrapper.java | 350 ++++ .../src/main/java/org/example/db/UsesDAO.java | 61 + .../java/org/example/model/AttributedTo.java | 78 + .../main/java/org/example/model/Class.java | 27 + .../java/org/example/model/CreatedBy.java | 40 + .../org/example/model/ExternalReferences.java | 40 + .../src/main/java/org/example/model/File.java | 108 ++ .../main/java/org/example/model/Group.java | 27 + .../main/java/org/example/model/Hashes.java | 51 + .../java/org/example/model/IdUnknown.java | 27 + .../main/java/org/example/model/Identity.java | 91 + .../java/org/example/model/Impersonates.java | 41 + .../java/org/example/model/Indicates.java | 42 + .../java/org/example/model/Indicator.java | 107 ++ .../java/org/example/model/Individual.java | 27 + .../org/example/model/KillChainPhase.java | 48 + .../org/example/model/KillChainPhases.java | 40 + .../main/java/org/example/model/Malware.java | 146 ++ .../main/java/org/example/model/Sighting.java | 50 + .../org/example/model/StixCoreObject.java | 61 + .../example/model/StixCoreRelationship.java | 78 + .../model/StixCyberObservableObject.java | 54 + .../org/example/model/StixDomainObject.java | 104 ++ .../java/org/example/model/StixSubObject.java | 51 + .../main/java/org/example/model/System.java | 27 + .../main/java/org/example/model/Targets.java | 41 + .../java/org/example/model/ThreatActor.java | 184 ++ .../src/main/java/org/example/model/Uses.java | 41 + .../main/java/org/example/web/CTIBean.java | 83 + .../src/main/resources/application.properties | 28 + .../main/resources/graphql/schema.graphqls | 283 +++ .../src/main/resources/schema_CTI.tql | 1641 +++++++++++++++++ .../src/main/resources/small_dataset.tql | 518 ++++++ .../src/test/java/org/example/MainTests.java | 34 + 62 files changed, 7284 insertions(+) create mode 100644 cybersecurity/cyber_threat_intelligence/README.md create mode 100644 cybersecurity/cyber_threat_intelligence/pom.xml create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/resources/application.properties create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/resources/schema_CTI.tql create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/resources/small_dataset.tql create mode 100644 cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java diff --git a/README.md b/README.md index 83e5fd2c..2e18e3a3 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,13 @@ Read the [README](commerce/bookstore/README.md) file for instructions. Check [th or the initial [dataset](commerce/bookstore/python/data) for additional information. All logic accessible in the script files in the [python](commerce/bookstore/python) directory. +### [Cybersecurity: Cyber Threat Intellingence](cybersecurity/cyber_threat_intelligence) + +The Cyber Threat Intelligence example uses Spring Boot to showcase usage of CTI dataset into TypeDB and executing queries on this data. +In this project, we use TypeDB to represent a queryable database of relevant CTI data about some threat actors and their targets. +We can query the database either with a REST API or a GraphQL API through the dedicated web interface. + + ### [Finance: Fraud Detection](finance/fraud_detection) The Fraud Detection example uses Quarkus, the Supersonic Subatomic Java Framework in order to let us present results with GraphQL. diff --git a/cybersecurity/cyber_threat_intelligence/README.md b/cybersecurity/cyber_threat_intelligence/README.md new file mode 100644 index 00000000..6b9da462 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/README.md @@ -0,0 +1,129 @@ +# Fraud Detection TypeDB Example + +This project utilizes Spring Boot and GraphQL to access a TypeDB database filled with Cyber Threat Intelligence (CTI) related dataset. +The application provides a GraphQL API to interact with the CTI data stored in the TypeDB database. + + +## Introduction + +We have a MITRE ATTACK dataset and our application implements some research functions: + +- Search entities +- Search relations +- Search schema + + +We are demonstrating sub-typing, powerful rules and rule combination in our schema. +#### +We can also see how easy it is to create complex queries using query composition. +#### +We are using the DAO design pattern, we have the following components on which our design depends: + +- The model which is transferred from one layer to the other. +- The interfaces which provide a flexible design. +- The interface implementation which is a concrete implementation of the persistence logic. + +The query composition can be observed in all DAOs. +```java +String search = "$ta has " + type + " = " + name + ";"; +String getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; +``` + +## Running the application in dev mode + +1. Checkout this repository: `git clone https://github.com/vaticle/typedb-driver-examples && cd typedb-driver-examples/cybersecurity/cyber_threat_intelligence`. +2. Start the [TypeDB Server](http://docs.vaticle.com/docs/running-typedb/install-and-run#start-the-typedb-server). Check that it's listening to address: `0.0.0.0:1729`. +3. You can run your application in dev mode that enables live coding using (you will need at least Java19): +```shell script +mvn clean install +``` +4. Run the Spring Boot application: +``` +mvn spring-boot:run. +``` +5. The GraphQL API will be available at http://localhost:8080/graphiql. +6. The REST API will be available at ```{{base_url}}``` +7. You can now use the chosen interface to query the database. + +## TypeDB Description + +### Schema + +The schema is stored in the `schema_CTI.tql` file under [src/main/resources/](src/main/resources/schema_CTI.tql). + +#### Entities + +The schema has the following entities: + +- stix_core_object + - stix_sub_object + - kill_chain_phase + - stix_cyber_observable_object + - file + - stix_domain_object + - identity + - class + - group + - idUnknown + - individual + - system + - indicator + - malware + - threat_actor + +#### Relations + +The schema has the following relations: +- stix_core_relationship + - attributed_to + - created_by + - hashes + - impersonates + - indicates + - kill_chain_phases + - sightings + - targets + - uses + +#### Rules + +The fraudDetection schema has three rules to demonstrate rules usability. + +The first one is here to create a transitive uses relation between three stix_domain_object linked by uses relations. + +``` +rule transitive_use: + when { + $x isa stix_domain_object, has name $name1; + $y isa stix_domain_object, has name $name2; + $z isa stix_domain_object, has name $name3; + $use1 (used_by: $x, used: $y) isa uses; + $use2 (used_by: $y, used: $z) isa uses; + } then { + (used_by: $x, used: $z) isa uses; + }; +``` +The second one works to create a uses relation between two stix_domain_object that are linked by an attributed_to relation and a uses relation. + +``` +rule attributed_to_when_using: + when { + (attributing: $x, attributed: $y) isa attributed_to; + (used_by: $y, used: $z) isa uses; + } then { + (used_by: $x, used: $z) isa uses; + }; +``` + + +The second one works to create a targets relation between two stix_domain_object that are linked by an attributed_to relation and a targets relation. +``` +rule attributed_to_when_targeting: + when { + (attributing: $x, attributed: $y) isa attributed_to; + (targeting: $y, targeted: $z) isa targets; + } then { + (targeting: $x, targeted: $z) isa targets; + }; +``` + diff --git a/cybersecurity/cyber_threat_intelligence/pom.xml b/cybersecurity/cyber_threat_intelligence/pom.xml new file mode 100644 index 00000000..0aca7365 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.0.6 + + + com.example + demo + 0.0.1-SNAPSHOT + demo + Demo project for Spring Boot + + 20 + + + + repo.vaticle.com + https://repo.vaticle.com/repository/maven/ + + + + + com.vaticle.typedb + typedb-client + 2.17.1 + + + org.springframework.boot + spring-boot-starter-web + 2.6.3 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.4.0 + + + org.springframework + spring-context + + + javax.inject + javax.inject + 1 + + + javax.enterprise + cdi-api + 1.2 + + + org.springframework.boot + spring-boot-starter-test + 2.6.3 + test + + + com.graphql-java + graphql-spring-boot-starter + 3.9.2 + + + com.graphql-java + graphql-java-tools + 4.3.0 + + + org.springframework.boot + spring-boot-starter-graphql + + + com.tailrocks.graphql + graphql-datetime-spring-boot-starter + 6.0.0 + + + org.projectlombok + lombok + + + com.graphql-java + graphql-java-extended-scalars + 20.2 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java new file mode 100644 index 00000000..8a63400c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.Configuration; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.graphql.execution.RuntimeWiringConfigurer; + +@Configuration +public class AppConfiguration { + + @Value("${typedb.host}") + String address; + + @Value("${typedb.port}") + String port; + + @Value("${typedb.db}") + String database; + + @Value("${typedb.schema}") + String schema; + + @Value("${typedb.dataset}") + String dataset; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public String getDatabase() { + return database; + } + + public void setDatabase(String database) { + this.database = database; + } + + public String getSchema() { + return schema; + } + + public void setSchema(String schema) { + this.schema = schema; + } + + public String getDataset() { + return dataset; + } + + public void setDataset(String dataset) { + this.dataset = dataset; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java new file mode 100644 index 00000000..409621e8 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.Configuration; + +import graphql.scalars.ExtendedScalars; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.graphql.execution.RuntimeWiringConfigurer; + +@Configuration +public class GraphQlConfiguration { + + @Bean + public RuntimeWiringConfigurer runtimeWiringConfigurer() { + return wiringBuilder -> wiringBuilder.scalar(ExtendedScalars.Json); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java new file mode 100644 index 00000000..20550a3b --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example; + +import org.example.Configuration.AppConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +//@EnableConfigurationProperties(AppConfiguration.class) +public class Main { + + @Autowired + private AppConfiguration appConfiguration; + + public static void main(String[] args) { + SpringApplication.run(Main.class, args); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java new file mode 100644 index 00000000..4ddc5aee --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -0,0 +1,490 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.controllers; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.example.Configuration.AppConfiguration; +import org.example.db.*; +import org.example.model.*; +import org.example.model.Class; +import org.example.model.System; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.web.bind.annotation.*; +import org.springframework.graphql.data.method.annotation.QueryMapping; + +import java.util.Set; +import java.util.logging.Logger; + +@RestController +public class Controller { + private static final Logger LOGGER = Logger.getLogger("Controller"); + private final TypeDBSessionWrapper wrapper; + + @Autowired + public Controller(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getMalware") + @GetMapping(value = "/getMalware", produces = "application/json") + public ObjectNode getMalwareJSON(){ + MalwareDAO malwareDAO = new MalwareDAO(wrapper); + return malwareDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getMalwareBeans") + public Set getMalwareBeans() throws JsonProcessingException { + MalwareDAO malwareDAO = new MalwareDAO(wrapper); + return malwareDAO.getAllBeans(); + } + + @QueryMapping(value = "getThreatActor") + @GetMapping(value = "/getThreatActor", produces = "application/json") + public ObjectNode getThreatActorJSON(){ + ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + return threatActorDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getThreatActorBeans") + public Set getThreatActorBeans() throws JsonProcessingException { + ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + return threatActorDAO.getAllBeans(); + } + + @QueryMapping(value = "getFile") + @GetMapping(value = "/getFile", produces = "application/json") + public ObjectNode getFileJSON(){ + FileDAO fileDAO = new FileDAO(wrapper); + return fileDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getFileBeans") + public Set getFileBeans() throws JsonProcessingException { + FileDAO fileDAO = new FileDAO(wrapper); + return fileDAO.getAllBeans(); + } + + + @QueryMapping(value = "getIdentity") + @GetMapping(value = "/getIdentity", produces = "application/json") + public ObjectNode getIdentityJSON(){ + IdentityDAO identityDAO = new IdentityDAO(wrapper); + return identityDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getIdentityBeans") + public Set getIdentityBeans() throws JsonProcessingException { + IdentityDAO identityDAO = new IdentityDAO(wrapper); + return identityDAO.getAllBeans(); + } + + @QueryMapping(value = "getIndicator") + @GetMapping(value = "/getIndicator", produces = "application/json") + public ObjectNode getIndicatorJSON(){ + IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + return indicatorDAO.getAllJSON(); + } + + + @QueryMapping + @GetMapping("/getIndicatorBeans") + public Set getIndicatorBeans() throws JsonProcessingException { + IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + return indicatorDAO.getAllBeans(); + } + + @QueryMapping(value = "getClass") + @GetMapping(value = "/getClass", produces = "application/json") + public ObjectNode get_ClassJSON(){ + ClassDAO classDAO = new ClassDAO(wrapper); + return classDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getClassBeans") + public Set get_ClassBeans() throws JsonProcessingException { + ClassDAO classDAO = new ClassDAO(wrapper); + return classDAO.getAllBeans(); + } + + @QueryMapping(value = "getGroup") + @GetMapping(value = "/getGroup", produces = "application/json") + public ObjectNode getGroupJSON(){ + GroupDAO groupDAO = new GroupDAO(wrapper); + return groupDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getGroupBeans") + public Set getGroupBeans() throws JsonProcessingException { + GroupDAO groupDAO = new GroupDAO(wrapper); + return groupDAO.getAllBeans(); + } + + @QueryMapping(value = "getIdUnknown") + @GetMapping(value = "/getIdUnknown", produces = "application/json") + public ObjectNode getIdUnknownJSON(){ + IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + return idUnknownDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getIdUnknownBeans") + public Set getIdUnknownBeans() throws JsonProcessingException { + IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + return idUnknownDAO.getAllBeans(); + } + + @QueryMapping(value = "getIndividual") + @GetMapping(value = "/getIndividual", produces = "application/json") + public ObjectNode getIndividualJSON(){ + IndividualDAO individualDAO = new IndividualDAO(wrapper); + return individualDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getIndividualBeans") + public Set getIndividualBeans() throws JsonProcessingException { + IndividualDAO individualDAO = new IndividualDAO(wrapper); + return individualDAO.getAllBeans(); + } + + @QueryMapping(value = "getSystem") + @GetMapping(value = "/getSystem", produces = "application/json") + public ObjectNode getSystemJSON(){ + SystemDAO systemDAO = new SystemDAO(wrapper); + return systemDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getSystemBeans") + public Set getSystemBeans() throws JsonProcessingException { + SystemDAO systemDAO = new SystemDAO(wrapper); + return systemDAO.getAllBeans(); + } + + @QueryMapping(value = "getKillChainPhase") + @GetMapping(value = "/getKillChainPhase", produces = "application/json") + public ObjectNode getKillChainPhaseJSON(){ + KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + return killChainPhaseDAO.getAllJSON(); + } + + @QueryMapping + @GetMapping("/getKillChainPhaseBeans") + public Set getKillChainPhaseBeans() throws JsonProcessingException { + KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + return killChainPhaseDAO.getAllBeans(); + } + + @QueryMapping(value = "getAttributedTo") + @GetMapping(value = "/getAttributedTo", produces = "application/json") + public ObjectNode getAttributedToJSON(){ + AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); + return attributedToDAO.getAllJSON(); + } + + @QueryMapping(value = "getIndicates") + @GetMapping(value = "/getIndicates", produces = "application/json") + public ObjectNode getIndicatesJSON(){ + IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); + return indicatesDAO.getAllJSON(); + } + + @QueryMapping(value = "getSighting") + @GetMapping(value = "/getSighting", produces = "application/json") + public ObjectNode getSightingJSON(){ + SightingDAO sightingDAO = new SightingDAO(wrapper); + return sightingDAO.getAllJSON(); + } + + @QueryMapping(value = "getUses") + @GetMapping(value = "/getUses", produces = "application/json") + public ObjectNode getUsesJSON(){ + UsesDAO usesDAO = new UsesDAO(wrapper); + return usesDAO.getAllJSON(); + } + + @QueryMapping(value = "getTargets") + @GetMapping(value = "/getTargets", produces = "application/json") + public ObjectNode getTargetsJSON(){ + TargetsDAO targetsDAO = new TargetsDAO(wrapper); + return targetsDAO.getAllJSON(); + } + + @QueryMapping(value = "getImpersonates") + @GetMapping(value = "/getImpersonates", produces = "application/json") + public ObjectNode getImpersonatesJSON(){ + ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); + return impersonatesDAO.getAllJSON(); + } + + @QueryMapping(value = "getKillChainPhases") + @GetMapping(value = "/getKillChainPhases", produces = "application/json") + public ObjectNode getKillChainPhasesJSON(){ + KillChainPhasesDAO killChainPhasesDAO = new KillChainPhasesDAO(wrapper); + return killChainPhasesDAO.getAllJSON(); + } + + @QueryMapping(value = "getExternalReferences") + @GetMapping(value = "/getExternalReferences", produces = "application/json") + public ObjectNode getExternalReferencesJSON(){ + ExternalReferencesDAO externalReferencesDAO = new ExternalReferencesDAO(wrapper); + return externalReferencesDAO.getAllJSON(); + } + + @QueryMapping(value = "getCreatedBy") + @GetMapping(value = "/getCreatedBy", produces = "application/json") + public ObjectNode getCreatedByJSON(){ + CreatedByDAO createdByDAO = new CreatedByDAO(wrapper); + return createdByDAO.getAllJSON(); + } + + @QueryMapping(value = "getHashes") + @GetMapping(value = "/getHashes", produces = "application/json") + public ObjectNode getHashesJSON(){ + HashesDAO hashesDAO = new HashesDAO(wrapper); + return hashesDAO.getAllJSON(); + } + + @QueryMapping(value = "getThreatActorSearch") + @GetMapping(value = "/getThreatActor/{type}/{name}", produces = "application/json") + public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + return threatActorDAO.getSearchJSON(type, name); + } + + + @QueryMapping(value = "getThreatActorSearchBeans") + @GetMapping("/getThreatActorBeans/{type}/{name}") + public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + return threatActorDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getMalwareSearch") + @GetMapping(value = "/getMalware/{type}/{name}", produces = "application/json") + public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + MalwareDAO malwareDAO = new MalwareDAO(wrapper); + return malwareDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getMalwareSearchBeans") + @GetMapping("/getMalwareBeans/{type}/{name}") + public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + MalwareDAO malwareDAO = new MalwareDAO(wrapper); + return malwareDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getFileSearch") + @GetMapping(value = "/getFile/{type}/{name}", produces = "application/json") + public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + FileDAO fileDAO = new FileDAO(wrapper); + return fileDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getFileSearchBeans") + @GetMapping("/getFileBeans/{type}/{name}") + public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + FileDAO fileDAO = new FileDAO(wrapper); + return fileDAO.getSearchBeans(type, name); + } + + + @QueryMapping(value = "getIdentitySearch") + @GetMapping(value = "/getIdentity/{type}/{name}", produces = "application/json") + public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + IdentityDAO identityDAO = new IdentityDAO(wrapper); + return identityDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getIdentitySearchBeans") + @GetMapping("/getIdentityBeans/{type}/{name}") + public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + IdentityDAO identityDAO = new IdentityDAO(wrapper); + return identityDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getIndicatorSearch") + @GetMapping(value = "/getIndicator/{type}/{name}", produces = "application/json") + public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + return indicatorDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getIndicatorSearchBeans") + @GetMapping("/getIndicatorBeans/{type}/{name}") + public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + return indicatorDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getClassSearch") + @GetMapping(value = "/getClass/{type}/{name}", produces = "application/json") + public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + ClassDAO classDAO = new ClassDAO(wrapper); + return classDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getClassSearchBeans") + @GetMapping("/getClassBeans/{type}/{name}") + public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + ClassDAO classDAO = new ClassDAO(wrapper); + return classDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getGroupSearch") + @GetMapping(value = "/getGroup/{type}/{name}", produces = "application/json") + public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + GroupDAO groupDAO = new GroupDAO(wrapper); + return groupDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getGroupSearchBeans") + @GetMapping("/getGroupBeans/{type}/{name}") + public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + GroupDAO groupDAO = new GroupDAO(wrapper); + return groupDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getIdUnknownSearch") + @GetMapping(value = "/getIdUnknown/{type}/{name}", produces = "application/json") + public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + return idUnknownDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getIdUnknownSearchBeans") + @GetMapping("/getIdUnknownBeans/{type}/{name}") + public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + return idUnknownDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getIndividualSearch") + @GetMapping(value = "/getIndividual/{type}/{name}", produces = "application/json") + public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + IndividualDAO individualDAO = new IndividualDAO(wrapper); + return individualDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getIndividualSearchBeans") + @GetMapping("/getIndividualBeans/{type}/{name}") + public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + IndividualDAO individualDAO = new IndividualDAO(wrapper); + return individualDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getSystemSearch") + @GetMapping(value = "/getSystem/{type}/{name}", produces = "application/json") + public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + SystemDAO systemDAO = new SystemDAO(wrapper); + return systemDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getSystemSearchBeans") + @GetMapping("/getSystemBeans/{type}/{name}") + public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + SystemDAO systemDAO = new SystemDAO(wrapper); + return systemDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getKillChainPhaseSearch") + @GetMapping(value = "/getKillChainPhase/{type}/{name}", produces = "application/json") + public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + return killChainPhaseDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getKillChainPhaseSearchBeans") + @GetMapping("/getKillChainPhaseBeans/{type}/{name}") + public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + return killChainPhaseDAO.getSearchBeans(type, name); + } + + @QueryMapping(value = "getAttributedToSearch") + @GetMapping(value = "/getAttributedTo/{type}/{name}", produces = "application/json") + public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); + return attributedToDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getIndicatesSearch") + @GetMapping(value = "/getIndicates/{type}/{name}", produces = "application/json") + public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); + return indicatesDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getSightingSearch") + @GetMapping(value = "/getSighting/{type}/{name}", produces = "application/json") + public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + SightingDAO sightingDAO = new SightingDAO(wrapper); + return sightingDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getUsesSearch") + @GetMapping(value = "/getUses/{type}/{name}", produces = "application/json") + public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + UsesDAO usesDAO = new UsesDAO(wrapper); + return usesDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getTargetsSearch") + @GetMapping(value = "/getTargets/{type}/{name}", produces = "application/json") + public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + TargetsDAO targetsDAO = new TargetsDAO(wrapper); + return targetsDAO.getSearchJSON(type, name); + } + + @QueryMapping(value = "getImpersonatesSearch") + @GetMapping(value = "/getImpersonates/{type}/{name}", produces = "application/json") + public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); + return impersonatesDAO.getSearchJSON(type, name); + } + + @QueryMapping + @GetMapping(value = "/getSchema", produces = "application/json") + public ObjectNode getSchema(){ + SchemaDAO schemaDAO = new SchemaDAO(wrapper); + return schemaDAO.getSchemaAllJSON(); + } + + @QueryMapping + @GetMapping(value = "/getSchemaCurrent", produces = "application/json") + public ObjectNode getSchemaCurrent(){ + SchemaDAO schemaDAO = new SchemaDAO(wrapper); + return schemaDAO.getSchemaCurrentJSON(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java new file mode 100644 index 00000000..96c78a05 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.AttributedTo; + +public class AttributedToDAO { + private final TypeDBSessionWrapper db; + private final AttributedTo attributed_to; + + private final String nameRel = "attributed_to"; + private final String typeString; + + protected static final String ATTRIBUTED_TO_MATCH = + "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public AttributedToDAO(TypeDBSessionWrapper db) { + this.db = db; + attributed_to = new AttributedTo(); + typeString = attributed_to.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,attributed_to.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, attributed_to.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java new file mode 100644 index 00000000..fd059d96 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Class; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class ClassDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String CLASS_MATCH = + " $class isa class, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public ClassDAO(TypeDBSessionWrapper db) { + this.db = db; + Class tempClass = new Class(); + typeString = tempClass.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + CLASS_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + CLASS_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$class has " + type + " = " + name + ";"; + var getQueryStr = "match " + CLASS_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$class has " + type + " = " + name + ";"; + + String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java new file mode 100644 index 00000000..7e42da2c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.CreatedBy; + +public class CreatedByDAO { + + private final TypeDBSessionWrapper db; + private final CreatedBy created_by; + + private final String nameRel = "created_by"; + private final String typeString; + + protected static final String CREATED_BY_MATCH = + "$ta (creator: $AAA, created: $BBB) isa created_by;"; + + public CreatedByDAO(TypeDBSessionWrapper db) { + this.db = db; + created_by = new CreatedBy(); + typeString = created_by.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + CREATED_BY_MATCH + "group $ta; "; + return db.getListJSON(getQueryStr, nameRel ,created_by.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + CREATED_BY_MATCH + search + "group $ta;"; + + return db.getListJSON(getQueryStr, nameRel, created_by.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java new file mode 100644 index 00000000..b75be5b2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.ExternalReferences; + +public class ExternalReferencesDAO { + private final TypeDBSessionWrapper db; + private final ExternalReferences external_references; + + private final String nameRel = "external_references"; + private final String typeString; + + protected static final String EXTERNAL_REFERENCES_MATCH = + "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; + + public ExternalReferencesDAO(TypeDBSessionWrapper db) { + this.db = db; + external_references = new ExternalReferences(); + typeString = external_references.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + "group $ta; "; + return db.getListJSON(getQueryStr, nameRel ,external_references.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + search + "group $ta;"; + + return db.getListJSON(getQueryStr, nameRel, external_references.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java new file mode 100644 index 00000000..50b656d0 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.File; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class FileDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String FILE_MATCH = + " $file isa file, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public FileDAO(TypeDBSessionWrapper db) { + this.db = db; + File tempFile = new File(); + typeString = tempFile.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + FILE_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + FILE_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$file has " + type + " = " + name + ";"; + var getQueryStr = "match " + FILE_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$file has " + type + " = " + name + ";"; + + String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java new file mode 100644 index 00000000..e1494bf2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Group; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class GroupDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String GROUP_MATCH = + " $group isa group, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public GroupDAO(TypeDBSessionWrapper db) { + this.db = db; + Group tempGroup = new Group(); + typeString = tempGroup.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + GROUP_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + GROUP_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$group has " + type + " = " + name + ";"; + var getQueryStr = "match " + GROUP_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$group has " + type + " = " + name + ";"; + + String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java new file mode 100644 index 00000000..a51cad4d --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Hashes; + +public class HashesDAO { + + private final TypeDBSessionWrapper db; + private final Hashes hashes; + + private final String nameRel = "hashes"; + private final String typeString; + + protected static final String HASHES_MATCH = + "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; + + public HashesDAO(TypeDBSessionWrapper db) { + this.db = db; + hashes = new Hashes(); + typeString = hashes.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + HASHES_MATCH + "group $ta; "; + return db.getListAttrJSON(getQueryStr, nameRel ,hashes.getRolePlayers(), true); + } + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java new file mode 100644 index 00000000..445933b7 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.IdUnknown; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class IdUnknownDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String IDUNKNOWN_MATCH = + " $idUnknown isa id_unknown, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public IdUnknownDAO(TypeDBSessionWrapper db) { + this.db = db; + IdUnknown tempIdUnknown = new IdUnknown(); + typeString = tempIdUnknown.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$idUnknown has " + type + " = " + name + ";"; + var getQueryStr = "match " + IDUNKNOWN_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$idUnknown has " + type + " = " + name + ";"; + + String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java new file mode 100644 index 00000000..bc8e3209 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Identity; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class IdentityDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String IDENTITY_MATCH = + " $identity isa identity, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public IdentityDAO(TypeDBSessionWrapper db) { + this.db = db; + Identity tempIdentity = new Identity(); + typeString = tempIdentity.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + IDENTITY_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$identity has " + type + " = " + name + ";"; + var getQueryStr = "match " + IDENTITY_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$identity has " + type + " = " + name + ";"; + + String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java new file mode 100644 index 00000000..91409c4c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Impersonates; + +public class ImpersonatesDAO { + private final TypeDBSessionWrapper db; + private final Impersonates impersonates; + + private final String nameRel = "impersonates"; + private final String typeString; + + protected static final String IMPERSONATES_MATCH = + "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public ImpersonatesDAO(TypeDBSessionWrapper db) { + this.db = db; + impersonates = new Impersonates(); + typeString = impersonates.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + IMPERSONATES_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,impersonates.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + IMPERSONATES_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, impersonates.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java new file mode 100644 index 00000000..999a4d05 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Indicates; + +public class IndicatesDAO { + private final TypeDBSessionWrapper db; + private final Indicates indicates; + + private final String nameRel = "indicates"; + private final String typeString; + + protected static final String INDICATES_MATCH = + "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public IndicatesDAO(TypeDBSessionWrapper db) { + this.db = db; + indicates = new Indicates(); + typeString = indicates.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + INDICATES_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,indicates.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + INDICATES_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, indicates.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java new file mode 100644 index 00000000..b8acf481 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Indicator; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class IndicatorDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String INDICATOR_MATCH = + " $indicator isa indicator, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public IndicatorDAO(TypeDBSessionWrapper db) { + this.db = db; + Indicator tempIndicator = new Indicator(); + typeString = tempIndicator.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + INDICATOR_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$indicator has " + type + " = " + name + ";"; + var getQueryStr = "match " + INDICATOR_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$indicator has " + type + " = " + name + ";"; + + String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java new file mode 100644 index 00000000..b4c1f854 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Individual; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class IndividualDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String INDIVIDUAL_MATCH = + " $individual isa individual, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public IndividualDAO(TypeDBSessionWrapper db) { + this.db = db; + Individual tempIndividual = new Individual(); + typeString = tempIndividual.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$individual has " + type + " = " + name + ";"; + var getQueryStr = "match " + INDIVIDUAL_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$individual has " + type + " = " + name + ";"; + + String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java new file mode 100644 index 00000000..266b8e09 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.KillChainPhase; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class KillChainPhaseDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String KILL_CHAIN_PHASE_MATCH = + " $kill_chain_phase isa kill_chain_phase, has kill_chain_name $id, has $attribute;" + + "$attribute isa! $j; "; + + public KillChainPhaseDAO(TypeDBSessionWrapper db) { + this.db = db; + KillChainPhase tempKillChainPhase = new KillChainPhase(); + typeString = tempKillChainPhase.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$kill_chain_phase has " + type + " = " + name + ";"; + var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$kill_chain_phase has " + type + " = " + name + ";"; + + String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java new file mode 100644 index 00000000..ec4328d9 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.KillChainPhases; + +public class KillChainPhasesDAO { + private final TypeDBSessionWrapper db; + private final KillChainPhases kill_chain_phases; + + private final String nameRel = "kill_chain_phases"; + private final String typeString; + + protected static final String KILL_CHAIN_PHASES_MATCH = + "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; + + public KillChainPhasesDAO(TypeDBSessionWrapper db) { + this.db = db; + kill_chain_phases = new KillChainPhases(); + typeString = kill_chain_phases.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + "group $ta; "; + return db.getListJSON(getQueryStr, nameRel ,kill_chain_phases.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + search + "group $ta;"; + + return db.getListJSON(getQueryStr, nameRel, kill_chain_phases.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java new file mode 100644 index 00000000..28c36803 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Malware; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class MalwareDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String MALWARE_MATCH = + " $malware isa malware, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public MalwareDAO(TypeDBSessionWrapper db) { + this.db = db; + Malware tempMalware = new Malware(); + typeString = tempMalware.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + MALWARE_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$malware has " + type + " = " + name + ";"; + var getQueryStr = "match " + MALWARE_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$malware has " + type + " = " + name + ";"; + + String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java new file mode 100644 index 00000000..2f7e705e --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; + +public class SchemaDAO { + private final TypeDBSessionWrapper db; + + private final String queryAll = "match $z sub thing;"; + private final String queryCurrent = "match $x isa $y; get $y;"; + + public SchemaDAO(TypeDBSessionWrapper db) { + this.db = db; + } + + public ObjectNode getSchemaAllJSON(){ + return db.getSchemaJSON(queryAll); + } + + public ObjectNode getSchemaCurrentJSON(){ + return db.getSchemaJSON(queryCurrent); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java new file mode 100644 index 00000000..484ac259 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Sighting; + +public class SightingDAO { + private final TypeDBSessionWrapper db; + private final Sighting sighting; + + private final String nameRel = "sighting"; + private final String typeString; + + protected static final String SIGHTING_MATCH = + "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public SightingDAO(TypeDBSessionWrapper db) { + this.db = db; + sighting = new Sighting(); + typeString = sighting.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + SIGHTING_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,sighting.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + SIGHTING_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, sighting.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java new file mode 100644 index 00000000..1ddb08f9 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.System; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class SystemDAO { + TypeDBSessionWrapper db; + String typeString; + + protected static final String SYSTEM_MATCH = + " $system isa system, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public SystemDAO(TypeDBSessionWrapper db) { + this.db = db; + System tempSystem = new System(); + typeString = tempSystem.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + SYSTEM_MATCH + "group $id; "; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$system has " + type + " = " + name + ";"; + var getQueryStr = "match " + SYSTEM_MATCH + search + "group $id;"; + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$system has " + type + " = " + name + ";"; + + String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + +} + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java new file mode 100644 index 00000000..ee023cc8 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Targets; + +public class TargetsDAO { + private final TypeDBSessionWrapper db; + private final Targets targets; + + private final String nameRel = "targets"; + private final String typeString; + + protected static final String TARGETS_MATCH = + "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public TargetsDAO(TypeDBSessionWrapper db) { + this.db = db; + targets = new Targets(); + typeString = targets.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + TARGETS_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,targets.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + TARGETS_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, targets.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java new file mode 100644 index 00000000..9c3b5773 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.ThreatActor; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class ThreatActorDAO { + @Autowired + private TypeDBSessionWrapper db; + + private String typeString; + + protected static final String TA_MATCH = + " $ta isa threat_actor, has stix_id $id ,has $attribute;" + + "$attribute isa! $j; "; + + public ThreatActorDAO(){ + System.out.println("CONSTRUCTEUR DEFAULT"); + } + public ThreatActorDAO(TypeDBSessionWrapper db) { + System.out.println("CONSTRUCTEUR DB"); + this.db = db; + ThreatActor tempThreatActor = new ThreatActor(); + typeString = tempThreatActor.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + TA_MATCH + "group $id;"; + return db.getAllJSON(getQueryStr); + } + + public String getAllString() { + return getAllJSON().toString(); + } + + public Set getAllBeans() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String getQueryStr = "match " + TA_MATCH + " group $id;"; + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + TA_MATCH + search + "group $id;"; + System.out.println(getQueryStr); + + return db.getAllJSON(getQueryStr); + } + + public String getSearchString(String type, String name) { + return getSearchJSON(type, name).toString(); + } + + public Set getSearchBeans(String type, String name) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + + String getQueryStr = "match " + TA_MATCH + search + " group $id;"; + System.out.println(getQueryStr); + + ObjectNode json = db.getAllJSON(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + Set result = new HashSet<>(test.values()); + + return result; + } + + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java new file mode 100644 index 00000000..4a195e0c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -0,0 +1,350 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.vaticle.typedb.client.api.TypeDBClient; +import com.vaticle.typedb.client.api.TypeDBOptions; +import com.vaticle.typedb.client.api.TypeDBSession; +import com.vaticle.typedb.client.api.TypeDBTransaction; +import org.example.Configuration.AppConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Hashtable; +import java.util.List; +import java.util.logging.Logger; + +public class TypeDBSessionWrapper { + + private final AppConfiguration appConfiguration; + private static final Logger LOGGER = Logger.getLogger("TypeDBSessionWrapper"); + private final TypeDBClient client; + private TypeDBSession session; + + public Hashtable> getAll(String query) { + newSession(); + Hashtable> result = new Hashtable>(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + String key = e.owner().asEntity().getIID(); + result.put(key, new Hashtable()); + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + LOGGER.info(json); + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + result.get(key).put(key2, value2); + }); + }); + } + + return result; + } + + public ObjectNode getAllJSON(String query) { + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + String key = e.owner().toJSON().toString().split("\"")[11]; + ObjectNode childNode = mapper.createObjectNode(); + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + key2 = key2.replaceAll("^\"|\"$", ""); + value2 = value2.replaceAll("^\"|\"$", ""); + childNode.put(key2, value2); + }); + rootNode.set(key, childNode); + }); + } + return rootNode; + } + + public ObjectNode getIIDJSON(String query) { + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + String key = e.owner().asEntity().getIID(); + ObjectNode childNode = mapper.createObjectNode(); + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + key2 = key2.replaceAll("^\"|\"$", ""); + value2 = value2.replaceAll("^\"|\"$", ""); + childNode.put(key2, value2); + }); + rootNode.set(key, childNode); + }); + } + return rootNode; + } + + public ObjectNode getSchemaJSON(String query){ + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + System.out.println("QUERY -> " + query); + var dbResults = readTx.query().match(query); + ArrayNode rel = mapper.createArrayNode(); + ArrayNode ent = mapper.createArrayNode(); + ArrayNode att = mapper.createArrayNode(); + + dbResults.forEach(e -> { + String key = e.map().toString().split(" ")[0]; + String value = e.map().toString().split(" ")[1]; + value = value.substring(0, value.length() - 2); + if(key.charAt(3) == 'E'){ + ent.add(value); + } + if(key.charAt(3) == 'A'){ + att.add(value); + } + if(key.charAt(3) == 'R'){ + rel.add(value); + } + + }); + rootNode.set("Entities", ent); + rootNode.set("Relations", rel); + rootNode.set("Attributes", att); + + } + return rootNode; + } + + + public ObjectNode getListJSON(String query, String relName, String rolePlayers){ + return getListJSON(query, relName, rolePlayers, false); + } + + public ObjectNode getListJSON(String query, String relName, String rolePlayers, boolean asAttribute){ + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + + String key = e.owner().asRelation().getIID(); + ObjectNode childNode = mapper.createObjectNode(); + if(asAttribute){ + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + key2 = key2.replaceAll("^\"|\"$", ""); + value2 = value2.replaceAll("^\"|\"$", ""); + childNode.put(key2, value2); + }); + } + + String[] rolePlayersTmp = rolePlayers.split(";"); + + String queryBegin = "match $rel ("; + for(int i = 0; i < rolePlayersTmp.length; i++){ + queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; + } + queryBegin = removeLastChar(queryBegin); + queryBegin += ") isa " + relName +"; $rel iid " + key + ";"; + + + for(int i = 0; i < rolePlayersTmp.length; i++){ + String queryTmp = queryBegin; + queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r"+ i +";"; + var nodeTmp = getIIDJSON(queryTmp); + childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); + } + + rootNode.set(key, childNode); + }); + + } + return rootNode; + } + + public ObjectNode getListAttrJSON(String query, String relName, String rolePlayers, boolean asAttribute){ + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + + String key = e.owner().asRelation().getIID(); + ObjectNode childNode = mapper.createObjectNode(); + if(asAttribute){ + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + key2 = key2.replaceAll("^\"|\"$", ""); + value2 = value2.replaceAll("^\"|\"$", ""); + childNode.put(key2, value2); + }); + } + + String[] rolePlayersTmp = rolePlayers.split(";"); + + String queryBegin = "match $rel ("; + for(int i = 0; i < rolePlayersTmp.length; i++){ + queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; + } + queryBegin = removeLastChar(queryBegin); + queryBegin += ") isa " + relName +"; $rel iid " + key + ";"; + + + for(int i = 0; i < rolePlayersTmp.length; i++){ + String queryTmp = queryBegin; + if(i != 0){ + queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r"+ i +";"; + var nodeTmp = getIIDJSON(queryTmp); + childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); + } + else{ + queryTmp += " group $r"+ i +";"; + var dbResults2 = readTx.query().matchGroup(query); + dbResults2.forEach(w -> { + + + ObjectNode childNode2 = mapper.createObjectNode(); + w.conceptMaps().forEach(m -> { + String value3 = m.map().get("AAA").asAttribute().toString(); + value3 = removeLastChar(value3.split(":")[1]); + childNode.put(rolePlayersTmp[0], value3); + + }); + + }); + + } + + } + + rootNode.set(key, childNode); + }); + + } + return rootNode; + } + + public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ + newSession(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode rootNode = mapper.createObjectNode(); + + try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { + var dbResults = readTx.query().matchGroup(query); + dbResults.forEach(e -> { + + String key = e.owner().toJSON().toString().split("\"")[11]; + ObjectNode childNode = mapper.createObjectNode(); + e.conceptMaps().forEach(m -> { + var json = m.toJSON().get("attribute").toString(); + + var array = json.split(","); + String key2 = array[0].split("\":")[1]; + String value2 = array[2].split("\":")[1].split("}")[0]; + key2 = key2.replaceAll("^\"|\"$", ""); + value2 = value2.replaceAll("^\"|\"$", ""); + childNode.put(key2, value2); + }); + + String[] rolePlayersTmp = rolePlayers.split(";"); + + String queryBegin = "match $rel ("; + for(int i = 0; i < rolePlayersTmp.length; i++){ + queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; + } + queryBegin = removeLastChar(queryBegin); + queryBegin += ") isa " + relName +", has stix_id \"" + key + "\";"; + for(int i = 0; i < rolePlayersTmp.length; i++){ + String queryTmp = queryBegin; + queryTmp += "$r" + i + " has $attribute, has stix_id $id; $attribute isa! $i; group $id;"; + var nodeTmp = getAllJSON(queryTmp); + childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); + } + + rootNode.set(key, childNode); + }); + + } + return rootNode; + } + + public void newSession(){ + session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, + TypeDBOptions.core().infer(true)); + } + + public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfiguration) { + this.appConfiguration = appConfiguration; + this.client = client; + if(this.client.databases().contains(appConfiguration.getDatabase())){ + session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, + TypeDBOptions.core().infer(true)); + } + } + + private String removeLastChar(String str) { + if (str == null || str.length() == 0) { + return str; + } + return str.substring(0, str.length() - 1); + } + + private String removeFirstChar(String str) { + if (str == null || str.length() == 0) { + return str; + } + return str.substring(1); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java new file mode 100644 index 00000000..6e2e555f --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.example.model.Uses; + +public class UsesDAO { + private final TypeDBSessionWrapper db; + private final Uses uses; + + private final String nameRel = "uses"; + private final String typeString; + + protected static final String USES_MATCH = + "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + public UsesDAO(TypeDBSessionWrapper db) { + this.db = db; + uses = new Uses(); + typeString = uses.getTypeString(); + } + + public ObjectNode getAllJSON() { + var getQueryStr = "match " + USES_MATCH + "group $id; "; + return db.getRelJSON(getQueryStr, nameRel ,uses.getRolePlayers()); + } + + public ObjectNode getSearchJSON(String type, String name) { + + if (typeString.contains(" " + type + ";")){ + name = "\"" + name + "\""; + } + + String search = "$ta has " + type + " = " + name + ";"; + var getQueryStr = "match " + USES_MATCH + search + "group $id;"; + + return db.getRelJSON(getQueryStr, nameRel, uses.getRolePlayers()); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java new file mode 100644 index 00000000..d5e178fb --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; + +public class AttributedTo { + private String stix_id; + private String spec_version; + private Date created; + + private Date modified; + + @JsonIgnore + private String typeString = " stix_id; spec_version;"; + + @JsonIgnore + private String rolePlayers = " attributing; attributed;"; + + + public String getSpec_version() { + return spec_version; + } + + public String getRolePlayers() { + return rolePlayers; + } + + public String getStix_id() { + return stix_id; + } + + public void setStix_id(String stix_id) { + this.stix_id = stix_id; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public String getTypeString() { + return typeString; + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java new file mode 100644 index 00000000..8ca2b09a --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +public class Class extends Identity{ + public Class() { + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java new file mode 100644 index 00000000..3a112f82 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class CreatedBy { + @JsonIgnore + private String typeString = ""; + + @JsonIgnore + private String rolePlayers = " creator; created;"; + + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java new file mode 100644 index 00000000..ff149c5e --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class ExternalReferences { + @JsonIgnore + private String typeString = ""; + + @JsonIgnore + private String rolePlayers = " referencing; referenced;"; + + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java new file mode 100644 index 00000000..fd4cf9ac --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; + +public class File extends StixCyberObservableObject{ + private Integer size; + private String name; + private String name_enc; + private String magic_number_hex; + private String mime_type; + private Date ctime; + private Date mtime; + private Date atime; + @JsonIgnore + private String typeString = super.getTypeString() + " name; name_enc; magic_number_hex; mime_type;"; + + @Override + public String getTypeString() { + return typeString; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getName_enc() { + return name_enc; + } + + public void setName_enc(String name_enc) { + this.name_enc = name_enc; + } + + public String getMagic_number_hex() { + return magic_number_hex; + } + + public void setMagic_number_hex(String magic_number_hex) { + this.magic_number_hex = magic_number_hex; + } + + public String getMime_type() { + return mime_type; + } + + public void setMime_type(String mime_type) { + this.mime_type = mime_type; + } + + public Date getCtime() { + return ctime; + } + + public void setCtime(Date ctime) { + this.ctime = ctime; + } + + public Date getMtime() { + return mtime; + } + + public void setMtime(Date mtime) { + this.mtime = mtime; + } + + public Date getAtime() { + return atime; + } + + public void setAtime(Date atime) { + this.atime = atime; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java new file mode 100644 index 00000000..9c500412 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +public class Group extends Identity{ + public Group() { + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java new file mode 100644 index 00000000..7116c1b2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Hashes { + + private String hash_algorithm; + + @JsonIgnore + private String typeString = " hash_algorithm;"; + + @JsonIgnore + private String rolePlayers = " hash_value; hashes_owner;"; + + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } + + public String getHash_algorithm() { + return hash_algorithm; + } + + public void setHash_algorithm(String hash_algorithm) { + this.hash_algorithm = hash_algorithm; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java new file mode 100644 index 00000000..8a641ad6 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +public class IdUnknown extends Identity{ + public IdUnknown() { + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java new file mode 100644 index 00000000..5a28c2a2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Identity extends StixDomainObject { + private String name; + private String description; + private String stix_role; + private String identity_class; + private String sector; + private String contact_information; + + @JsonIgnore + private String typeString = super.getTypeString() + " name; description; stix_role; identity_class; sector; contact_information;"; + + public Identity(){} + + @Override + public String getTypeString() { + return typeString; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getStix_role() { + return stix_role; + } + + public void setStix_role(String stix_role) { + this.stix_role = stix_role; + } + + public String getIdentity_class() { + return identity_class; + } + + public void setIdentity_class(String identity_class) { + this.identity_class = identity_class; + } + + public String getSector() { + return sector; + } + + public void setSector(String sector) { + this.sector = sector; + } + + public String getContact_information() { + return contact_information; + } + + public void setContact_information(String contact_information) { + this.contact_information = contact_information; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java new file mode 100644 index 00000000..b72f4763 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Impersonates extends StixCoreRelationship{ + @JsonIgnore + private String typeString = super.getTypeString(); + + @JsonIgnore + private String rolePlayers = " impersonating; impersonated;"; + + @Override + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java new file mode 100644 index 00000000..6f72e95c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Indicates extends StixCoreRelationship{ + + @JsonIgnore + private String typeString = super.getTypeString(); + + @JsonIgnore + private String rolePlayers = " indicating; indicated;"; + + @Override + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java new file mode 100644 index 00000000..3331b7ec --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +public class Indicator extends StixDomainObject { + + private String name; + private String description; + private String pattern; + private String pattern_type; + private String pattern_version; + private Date valid_from; + private Date valid_until; + + @JsonIgnore + private final String typeString = super.getTypeString() + " name; description; pattern; pattern_type; pattern_version;"; + + + public Indicator() { + } + + @Override + public String getTypeString() { + return typeString; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getPattern() { + return pattern; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } + + public String getPattern_type() { + return pattern_type; + } + + public void setPattern_type(String pattern_type) { + this.pattern_type = pattern_type; + } + + public String getPattern_version() { + return pattern_version; + } + + public void setPattern_version(String pattern_version) { + this.pattern_version = pattern_version; + } + + public Date getValid_from() { + return valid_from; + } + + public void setValid_from(Date valid_from) { + this.valid_from = valid_from; + } + + public Date getValid_until() { + return valid_until; + } + + public void setValid_until(Date valid_until) { + this.valid_until = valid_until; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java new file mode 100644 index 00000000..3a198754 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +public class Individual extends Identity{ + public Individual() { + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java new file mode 100644 index 00000000..85842370 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class KillChainPhase extends StixSubObject{ + private String kill_chain_name; + private String kill_chain_phase_name; + + @JsonIgnore + private final String typeString = super.getTypeString() + " kill_chain_name; kill_chain_phase_name;"; + + public String getKill_chain_name() { + return kill_chain_name; + } + + public void setKill_chain_name(String kill_chain_name) { + this.kill_chain_name = kill_chain_name; + } + + public String getKill_chain_phase_name() { + return kill_chain_phase_name; + } + + public void setKill_chain_phase_name(String kill_chain_phase_name) { + this.kill_chain_phase_name = kill_chain_phase_name; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java new file mode 100644 index 00000000..50e30eb3 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class KillChainPhases { + @JsonIgnore + private String typeString = ""; + + @JsonIgnore + private String rolePlayers = " using; used;"; + + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java new file mode 100644 index 00000000..5c9cc506 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; +import java.util.Set; + +public class Malware extends StixDomainObject { + private String name; + private String description; + private String malware_types; + private Boolean is_family; + private Set aliases; + private Date first_seen; + private Date last_seen; + private Set architecture_execution_envs; + private Set implementation_languages; + private Set capabilities; + + @JsonIgnore + private String typeList = super.getTypeList() + " aliases; architecture_execution_envs; implementation_languages; capabilities;"; + @JsonIgnore + private String typeString = super.getTypeString() + " name; description; malware_types; architecture_execution_envs; implementation_languages; capabilities;"; + + //sample_refs_file + //sample_refs_artifact + + + @Override + public String getTypeList() { + return typeList; + } + + @Override + public String getTypeString() { + return typeString; + } + + @Override + public void setTypeString(String typeString) { + this.typeString = typeString; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getMalware_types() { + return malware_types; + } + + public void setMalware_types(String malware_types) { + this.malware_types = malware_types; + } + + public Boolean getIs_family() { + return is_family; + } + + public void setIs_family(Boolean is_family) { + this.is_family = is_family; + } + + public Set getAliases() { + return aliases; + } + + public void setAliases(Set aliases) { + this.aliases = aliases; + } + + public Date getFirst_seen() { + return first_seen; + } + + public void setFirst_seen(Date first_seen) { + this.first_seen = first_seen; + } + + public Date getLast_seen() { + return last_seen; + } + + public void setLast_seen(Date last_seen) { + this.last_seen = last_seen; + } + + public Set getArchitecture_execution_envs() { + return architecture_execution_envs; + } + + public void setArchitecture_execution_envs(Set architecture_execution_envs) { + this.architecture_execution_envs = architecture_execution_envs; + } + + public Set getImplementation_languages() { + return implementation_languages; + } + + public void setImplementation_languages(Set implementation_languages) { + this.implementation_languages = implementation_languages; + } + + public Set getCapabilities() { + return capabilities; + } + + public void setCapabilities(Set capabilities) { + this.capabilities = capabilities; + } + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java new file mode 100644 index 00000000..90742fa7 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; + +public class Sighting extends StixCoreRelationship{ + + private Date first_seen; + private Date last_seen; + + private Double count; + private String summary; + + @JsonIgnore + private String typeString = super.getTypeString() + " summary;"; + + @JsonIgnore + private String rolePlayers = " sighting_of; observed_data;"; + + @Override + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java new file mode 100644 index 00000000..224c51e5 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class StixCoreObject { + + private String spec_version; + + @JsonIgnore + private String typeList = ""; + @JsonIgnore + private String typeString = " spec_version;"; + + public StixCoreObject() { + } + + public String getTypeList() { + return typeList; + } + + public String getTypeString() { + return typeString; + } + + public void setTypeString(String typeString) { + this.typeString = typeString; + } + + public StixCoreObject(String spec_version) { + this.spec_version = spec_version; + } + + public String getSpec_version() { + return spec_version; + } + + public void setSpec_version(String spec_version) { + this.spec_version = spec_version; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java new file mode 100644 index 00000000..9c5eb36e --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import java.util.Date; + +public class StixCoreRelationship { + private String spec_version; + private String stix_id; + private String stix_type; + private Date created; + private Date modified; + + private final String typeString = " stix_id; stix_version; stix_type;"; + + public String getTypeString() { + return typeString; + } + + public String getSpec_version() { + return spec_version; + } + + public void setSpec_version(String spec_version) { + this.spec_version = spec_version; + } + + public String getStix_id() { + return stix_id; + } + + public void setStix_id(String stix_id) { + this.stix_id = stix_id; + } + + public String getStix_type() { + return stix_type; + } + + public void setStix_type(String stix_type) { + this.stix_type = stix_type; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java new file mode 100644 index 00000000..cfafa3fd --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class StixCyberObservableObject extends StixCoreObject { + private String defanged; + + @JsonIgnore + private String typeList = super.getTypeList(); + @JsonIgnore + private String typeString = super.getTypeString() + " defanged;"; + + @Override + public String getTypeList() { + return typeList; + } + + @Override + public String getTypeString() { + return typeString; + } + + public StixCyberObservableObject() { + } + + public String getDefanged() { + return defanged; + } + + public void setDefanged(String defanged) { + this.defanged = defanged; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java new file mode 100644 index 00000000..9e98b4df --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; +import java.util.Set; + +public class StixDomainObject extends StixCoreObject { + + private Date created; + + private Date modified; + + private Boolean revoked; + + private Set labels; + + private int confidence; + + private String langs; + + @JsonIgnore + private String typeList = super.getTypeList() + " labels;"; + @JsonIgnore + private String typeString = super.getTypeString() + " labels; langs;"; + + @Override + public String getTypeList() { + return typeList; + } + @Override + public String getTypeString() { + return typeString; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public Boolean getRevoked() { + return revoked; + } + + public void setRevoked(Boolean revoked) { + this.revoked = revoked; + } + + public Set getLabels() { + return labels; + } + + public void setLabels(Set labels) { + this.labels = labels; + } + + public int getConfidence() { + return confidence; + } + + public void setConfidence(int confidence) { + this.confidence = confidence; + } + + public String getLangs() { + return langs; + } + + public void setLangs(String langs) { + this.langs = langs; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java new file mode 100644 index 00000000..0c19cf3a --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import java.util.Date; + +public class StixSubObject { + private Date created; + private Date modified; + + private final String typeString = ""; + + public String getTypeString() { + return typeString; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java new file mode 100644 index 00000000..31f945e2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +public class System extends Identity{ + public System() { + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java new file mode 100644 index 00000000..10ebf3d4 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Targets extends StixCoreRelationship{ + @JsonIgnore + private String typeString = super.getTypeString(); + + @JsonIgnore + private String rolePlayers = " targeting; targeted;"; + + @Override + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java new file mode 100644 index 00000000..94d81c52 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Date; +public class ThreatActor extends StixDomainObject { + private String name; + private String description; + private String aliases; + private String stix_role; + private Date first_seen; + private Date last_seen; + private String goals; + private String resource_level; + private String primary_motivation; + private String secondary_motivation; + private String sophistication; + private String personal_characteristics; + private String roles; + private String threat_actor_types; + @JsonIgnore + private String typeString = super.getTypeString() + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; + + public ThreatActor() { + + } + + public String getTypeString() { + return typeString; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getAliases() { + return aliases; + } + + public void setAliases(String aliases) { + this.aliases = aliases; + } + + public String getStix_role() { + return stix_role; + } + + public void setStix_role(String stix_role) { + this.stix_role = stix_role; + } + + public Date getFirst_seen() { + return first_seen; + } + + public void setFirst_seen(Date first_seen) { + this.first_seen = first_seen; + } + + public Date getLast_seen() { + return last_seen; + } + + public void setLast_seen(Date last_seen) { + this.last_seen = last_seen; + } + + public String getGoals() { + return goals; + } + + public void setGoals(String goals) { + this.goals = goals; + } + + public String getResource_level() { + return resource_level; + } + + public void setResource_level(String resource_level) { + this.resource_level = resource_level; + } + + public String getPrimary_motivation() { + return primary_motivation; + } + + public void setPrimary_motivation(String primary_motivation) { + this.primary_motivation = primary_motivation; + } + + public String getSecondary_motivation() { + return secondary_motivation; + } + + public void setSecondary_motivation(String secondary_motivation) { + this.secondary_motivation = secondary_motivation; + } + + public String getSophistication() { + return sophistication; + } + + public void setSophistication(String sophistication) { + this.sophistication = sophistication; + } + + public String getPersonal_characteristics() { + return personal_characteristics; + } + + public void setPersonal_characteristics(String personal_characteristics) { + this.personal_characteristics = personal_characteristics; + } + + public String getRoles() { + return roles; + } + + public void setRoles(String roles) { + this.roles = roles; + } + + public String getThreat_actor_types() { + return threat_actor_types; + } + + public void setThreat_actor_types(String threat_actor_types) { + this.threat_actor_types = threat_actor_types; + } + + @Override + public String toString() { + return "ThreatActor{" + + "name='" + name + '\'' + + ", description='" + description + '\'' + + ", aliases='" + aliases + '\'' + + ", stix_role='" + stix_role + '\'' + + ", first_seen=" + first_seen + + ", last_seen=" + last_seen + + ", goals='" + goals + '\'' + + ", resource_level='" + resource_level + '\'' + + ", primary_motivation='" + primary_motivation + '\'' + + ", secondary_motivation='" + secondary_motivation + '\'' + + ", sophistication='" + sophistication + '\'' + + ", personal_characteristics='" + personal_characteristics + '\'' + + ", roles='" + roles + '\'' + + ", threat_actor_types='" + threat_actor_types + '\'' + + '}'; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java new file mode 100644 index 00000000..85d00765 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Uses extends StixCoreRelationship{ + @JsonIgnore + private String typeString = super.getTypeString(); + + @JsonIgnore + private String rolePlayers = " used_by; used;"; + + @Override + public String getTypeString() { + return typeString; + } + + public String getRolePlayers() { + return rolePlayers; + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java new file mode 100644 index 00000000..57f197d3 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java @@ -0,0 +1,83 @@ +package org.example.web; + +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import com.vaticle.typedb.client.api.TypeDBSession; +import com.vaticle.typedb.client.api.TypeDBTransaction; +import com.vaticle.typeql.lang.TypeQL; +import org.example.Configuration.AppConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.logging.Logger; + +@Component +public class CTIBean implements ApplicationListener { + private TypeDBClient client; + private static final Logger LOGGER = Logger.getLogger("AppSpringWeb"); + + @Autowired + private AppConfiguration appConfiguration; + + @Override + public void onApplicationEvent(ApplicationReadyEvent event) { + String address = appConfiguration.getAddress() + ":" + appConfiguration.getPort(); + String database = appConfiguration.getDatabase(); + String dataset = appConfiguration.getDataset(); + String schema = appConfiguration.getSchema(); + client = TypeDB.coreClient(address); + LOGGER.info("Deleting Database"); + if(client.databases().contains(database)) { + client.databases().get(database).delete(); + } + LOGGER.info("Creating Database"); + client.databases().create(database); + LOGGER.info("Inserting Schema"); + + try (TypeDBSession session = client.session(database, TypeDBSession.Type.SCHEMA)) { + try (TypeDBTransaction tx = session.transaction(TypeDBTransaction.Type.WRITE)) { + URL file = this.getClass().getClassLoader().getResource(schema); + + if (file == null) { + throw new AssertionError(); + } + + String query = Files.readString(Paths.get(file.toURI())); + tx.query().define(TypeQL.parseQuery(query).asDefine()); + tx.commit(); + } catch (Exception ex) { + + ex.printStackTrace(System.err); + } + + } + + LOGGER.info("Inserting data"); + + try (TypeDBSession session = client.session(database, TypeDBSession.Type.DATA)) { + try (TypeDBTransaction tx = session.transaction(TypeDBTransaction.Type.WRITE)) { + URL file = this.getClass().getClassLoader().getResource(dataset); + + if (file == null) { + throw new AssertionError(); + } + + String query = Files.readString(Paths.get(file.toURI())); + tx.query().insert(TypeQL.parseQuery(query).asInsert()); + tx.commit(); + } catch (Exception ex) { + + ex.printStackTrace(System.err); + } + } + + LOGGER.info("Ready to use"); + } + +} \ No newline at end of file diff --git a/cybersecurity/cyber_threat_intelligence/src/main/resources/application.properties b/cybersecurity/cyber_threat_intelligence/src/main/resources/application.properties new file mode 100644 index 00000000..d1460ef9 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/resources/application.properties @@ -0,0 +1,28 @@ +# +# Copyright (C) 2023 Vaticle +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +typedb.host = localhost +typedb.port = 1729 +typedb.db = CTI_SPRING +typedb.schema = schema_CTI.tql +typedb.dataset = small_dataset.tql + +spring.graphql.graphiql.enabled=true diff --git a/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls b/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls new file mode 100644 index 00000000..54b679f4 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls @@ -0,0 +1,283 @@ +""" +* Copyright (C) 2023 Vaticle +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +""" + +scalar Date +scalar JSON + +type Malware{ + name: String + description: String + spec_version: String + malware_types: String + langs: String + is_family: Boolean + revoked: Boolean + created: Date + modified: Date + confidence: Int + aliases: [String] + labels: [String] + architecture_execution_envs: [String] + implementation_languages: [String] + capabilities: [String] +} + +type ThreatActor{ + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + aliases: String + stix_role: String + goals: String + resource_level: String + primary_motivation: String + secondary_motivation: String + sophistication: String + personal_characteristics: String + roles: String + threat_actor_types: String + first_seen: Date + last_seen: Date +} + +type File{ + spec_version: String + + defanged: String + + size: Int + name: String + name_enc: String + magic_number_hex: String + mime_type: String + ctime: Date + mtime: Date + atime: Date +} + +type Identity{ + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type Indicator { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + pattern: String + pattern_type: String + pattern_version: String + valid_from: String + valid_until: String +} + +type Class { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type Group { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type IdUnknown { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type Individual { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type System { + spec_version: String + + created: Date + modified: Date + revoked: Boolean + langs: String + confidence: Int + labels: [String] + + name: String + description: String + stix_role: String + identity_class: String + sector: String + contact_information: String +} + +type KillChainPhase{ + created: Date + modified: Date + kill_chain_name: String + kill_chain_phase_name: String +} + +type Query{ + getMalware: JSON + getMalwareBeans: [Malware] + getThreatActor: JSON + getThreatActorBeans: [ThreatActor] + getFile: JSON + getFileBeans: [File] + getIdentity: JSON + getIdentityBeans: [Identity] + getIndicator: JSON + getIndicatorBeans: [Indicator] + getClass: JSON + getClassBeans: [Class] + getGroup: JSON + getGroupBeans: [Group] + cenIdUnknown: JSON + getIdUnknownBeans: [IdUnknown] + getIndividual: JSON + getIndividualBeans: [Individual] + getSystem: JSON + getSystemBeans: [System] + getKillChainPhase: JSON + getKillChainPhaseBeans: [KillChainPhase] + + getThreatActorSearch(type: String, name: String): JSON + getThreatActorSearchBeans(type: String, name: String): [ThreatActor] + getMalwareSearch(type: String, name: String): JSON + getMalwareSearchBeans(type: String, name: String): [Malware] + getFileSearch(type: String, name: String): JSON + getFileSearchBeans(type: String, name: String): [File] + getIdentitySearch(type: String, name: String): JSON + getIdentitySearchBeans(type: String, name: String): [Identity] + getIndicatorSearch(type: String, name: String): JSON + getIndicatorSearchBeans(type: String, name: String): [Indicator] + getClassSearch(type: String, name: String): JSON + getClassSearchBeans(type: String, name: String): [Class] + getGroupSearch(type: String, name: String): JSON + getGroupSearchBeans(type: String, name: String): [Group] + getIdUnknownSearch(type: String, name: String): JSON + getIdUnknownSearchBeans(type: String, name: String): [IdUnknown] + getIndividualSearch(type: String, name: String): JSON + getIndividualSearchBeans(type: String, name: String): [Individual] + getSystemSearch(type: String, name: String): JSON + getSystemSearchBeans(type: String, name: String): [System] + getKillChainPhaseSearch(type: String, name: String): JSON + getKillChainPhaseSearchBeans(type: String, name: String): [KillChainPhase] + getAttributedToSearch(type: String, name: String): JSON + getIndicatesSearch(type: String, name: String): JSON + getSightingSearch(type: String, name: String): JSON + getUsesSearch(type: String, name: String): JSON + getTargetsSearch(type: String, name: String): JSON + getImpersonatesSearch(type: String, name: String): JSON + + getAttributedTo: JSON + getIndicates: JSON + getSighting: JSON + getUses: JSON + getTargets: JSON + getImpersonates: JSON + getKillChainPhases: JSON + getExternalReferences: JSON + getCreatedBy: JSON + getHashes: JSON + getSchema: JSON + getSchemaCurrent: JSON +} \ No newline at end of file diff --git a/cybersecurity/cyber_threat_intelligence/src/main/resources/schema_CTI.tql b/cybersecurity/cyber_threat_intelligence/src/main/resources/schema_CTI.tql new file mode 100644 index 00000000..506785b2 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/resources/schema_CTI.tql @@ -0,0 +1,1641 @@ +# +# Copyright (C) 2023 Vaticle +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Based on https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_disnqa06jm5 + + +define + +### 1 Base Entities ### + +stix_entity sub entity, + abstract; + +stix_object sub stix_entity, + owns stix_type, + owns stix_id @key, + owns custom_attribute, + + plays granular_marking:marking; + +stix_core_object sub stix_object, + owns spec_version, + + plays object_marking:marked, + plays created_by:created, + plays derivation:derived_from, + plays derivation:deriving, + plays duplicate_of:duplicated_object; + + +stix_domain_object sub stix_core_object, + owns created, + owns modified, + owns revoked, + owns labels, + owns confidence, + owns langs, + + # Rel + plays sighting:sighting_of, + plays external_references:referencing, + + # RRel + plays kill_chain_phases:used, + plays sighting:observed_data, + plays external_references:referenced; + + +stix_cyber_observable_object sub stix_core_object, + owns defanged, + + # Rel + plays external_references:referencing, + plays contains_ref:containing, + + # RRel + plays external_references:referenced; + +stix_sub_object sub stix_entity, + owns created, + owns modified, + + plays granular_marking:marking; + + +### 2 Data Types ### + +external_reference sub stix_sub_object, + owns source_name, + owns description, + owns url_link, + owns external_id, + + plays hashes:hashes_owner, + plays external_references:referenced; + +kill_chain_phase sub stix_sub_object, + owns kill_chain_name, + owns kill_chain_phase_name, + + plays kill_chain_phases:using; + +### 3 SDOs ### + +attack_pattern sub stix_domain_object, + owns name, + owns description, + owns aliases, + + # Rel + plays delivers:delivering, + plays targets:targeting, + plays uses:used_by, + + # RRel + plays indicates:indicated, + plays uses:used, + plays mitigates:mitigated; + +campaign sub stix_domain_object, + owns name, + owns description, + owns aliases, + owns first_seen, + owns last_seen, + owns objective, + + # Rel + plays targets:targeting, + plays attributed_to:attributing, + plays uses:used_by, + plays compromises:compromising, + plays originates_from:originating, + + # RRel + plays indicates:indicated; + +course_of_action sub stix_domain_object, + owns name, + owns description, + owns action, + + # Rel + plays investigates:investigating, + plays mitigates:mitigating, + plays remediates:remediating; + +grouping sub stix_domain_object, + owns name, + owns description, + owns context; + +identity sub stix_domain_object, + owns name, + owns description, + owns stix_role, + owns identity_class, + owns sector, + owns contact_information, + + # Rel + plays located_at:locating, + plays created_by:creator, + + # RRel + plays targets:targeted, + plays attributed_to:attributed, + plays impersonates:impersonated; + +individual sub identity; +group sub identity; +system sub identity; +organization sub identity; +class sub identity; +id_unknown sub identity; + +incident sub stix_domain_object, + owns name, + owns description; + +indicator sub stix_domain_object, + owns name, + owns description, + owns indicator_type, + owns pattern, + owns pattern_type, + owns pattern_version, + owns valid_from, + owns valid_until, + + # Rel + plays indicates:indicating, + plays based_on:basing, + + # RRel + plays investigates:investigated, + plays mitigates:mitigated; + +infrastructure sub stix_domain_object, + owns name, + owns description, + owns infrastructure_types, + owns aliases, + owns first_seen, + owns last_seen, + + # Rel + plays delivers:delivering, + plays uses:used_by, + plays located_at:locating, + plays communicates_with:communicating, + plays consist_of:consisting, + plays controls:controlling, + plays have:having, + plays hosts:hosting, + + # RRel + plays controls:controlled, + plays communicates_with:communicated, + plays compromises:compromised, + plays indicates:indicated, + plays uses:used, + plays targets:targeted, + plays hosts:hosted, + plays beacons_to:beaconed_to, + plays exfiltrates_to:exfiltrated_to, + plays ownerships:owned; + +intrusion_set sub stix_domain_object, + owns name, + owns description, + owns aliases, + owns first_seen, + owns last_seen, + owns goals, + owns sophistication, + owns resource_level, + owns primary_motivation, + owns secondary_motivations, + + # Rel + plays targets:targeting, + plays uses:used_by, + plays attributed_to:attributing, + plays compromises:compromising, + plays originates_from:originating, + plays hosts:hosting, + plays ownerships:owning, + + # RRel + plays indicates:indicated, + plays attributed_to:attributed, + plays authored_by:authored; + +malware sub stix_domain_object, + owns name, + owns description, + owns malware_types, + owns is_family, + owns aliases, + owns first_seen, + owns last_seen, + owns architecture_execution_envs, + owns implementation_languages, + owns capabilities, + + # Rel + plays targets:targeting, + plays uses:used_by, + plays originates_from:originating, + plays controls:controlling, + plays hosts:hosting, + plays authored_by:authoring, + plays beacons_to:beaconing_to, + plays exfiltrates_to:exfiltrating_to, + plays downloads:downloading, + plays drops:dropping, + plays exploits:exploiting, + plays variant_of:varianted_from, + plays communicates_with:communicating, + + # RRel + plays controls:controlled, + plays remediates:remediated, + plays mitigates:mitigated, + plays uses:used, + plays delivers:delivered, + plays indicates:indicated, + plays downloads:downloaded, + plays drops:dropped, + plays variant_of:varianted, + plays characterizes:characterized, + plays analysis_of:analysed, + plays static_analysis_of:analysed, + plays dynamic_analysis_of:analysed; + +location sub stix_domain_object, + owns name, + owns description, + owns latitude, + owns longitude, + owns precision, + owns region, + owns country, + owns administrative_area, + owns city, + owns street_address, + owns postal_code, + + # RRel + plays targets:targeted, + plays originates_from:originated, + plays located_at:located; + +malware_analysis sub stix_domain_object, + owns product, + owns version, + owns configuration_version, + owns module, + owns analysis_engine_version, + owns analysis_definition_version, + owns submitted, + owns analysis_started, + owns analysis_ended, + owns result_name, + owns result, + + # Rel + plays characterizes:characterizing, + plays analysis_of:analysing, + plays static_analysis_of:analysing, + plays dynamic_analysis_of:analysing; + +note sub stix_domain_object, + owns note_abstract, + owns content, + owns authors; + +opinion sub stix_domain_object, + owns explanation, + owns authors, + owns opinion_enum; + +observed_data sub stix_domain_object, + owns first_observed, + owns last_observed, + owns number_observed, + + # RRel + plays based_on:based, + plays consist_of:consisted; + +report sub stix_domain_object, + owns name, + owns description, + owns report_type, + owns published; + +threat_actor sub stix_domain_object, + owns name, + owns description, + owns aliases, + owns stix_role, + owns first_seen, + owns last_seen, + owns goals, + owns resource_level, + owns primary_motivation, + owns secondary_motivations, + owns sophistication, + owns personal_characteristics, + owns roles, + owns threat_actor_types, + + # Rel + plays targets:targeting, + plays uses:used_by, + plays attributed_to:attributing, + plays compromises:compromising, + plays located_at:locating, + plays impersonates:impersonating, + plays hosts:hosting, + plays ownerships:owning, + + # RRel + plays attributed_to:attributed, + plays indicates:indicated, + plays authored_by:authored; + +tool sub stix_domain_object, + owns name, + owns description, + owns tool_types, + owns aliases, + owns first_seen, + owns last_seen, + owns tool_version, + + # Rel + plays delivers:delivering, + plays targets:targeting, + plays uses:used_by, + plays have:having, + plays drops:dropping, + + # RRel + plays uses:used, + plays indicates:indicated, + plays mitigates:mitigated, + plays hosts:hosted, + plays downloads:downloaded, + plays drops:dropped; + +custom_object sub stix_domain_object, + owns name, + owns description, + owns aliases, + owns first_seen, + owns last_seen, + owns objective, + + # Rel + plays delivers:delivering, + plays targets:targeting, + plays uses:used_by, + + # RRel + plays uses:used, + plays mitigates:mitigated; + +vulnerability sub stix_domain_object, + owns name, + owns description, + + # RRel + plays targets:targeted, + plays mitigates:mitigated, + plays remediates:remediated, + plays have:had, + plays exploits:exploited; + +### 5 SROs ### +stix_core_relationship sub relation, + # Required + owns spec_version, + owns stix_id @key, + owns created, + owns modified, + owns stix_type, + + # Optional + owns description, + owns revoked, + owns labels, + owns confidence, + owns langs, + owns custom_attribute, + + relates source, + relates target, + + plays created_by:created, + plays granular_marking:marking, + plays external_references:referenced; + +delivers sub stix_core_relationship, + relates delivering as source, + relates delivered as target; + +targets sub stix_core_relationship, + relates targeting as source, + relates targeted as target; + +attributed_to sub stix_core_relationship, + relates attributing as source, + relates attributed as target; + +uses sub stix_core_relationship, + relates used_by as source, + relates used as target; + +indicates sub stix_core_relationship, + relates indicating as source, + relates indicated as target; + +compromises sub stix_core_relationship, + relates compromising as source, + relates compromised as target; + +originates_from sub stix_core_relationship, + relates originating as source, + relates originated as target; + +investigates sub stix_core_relationship, + relates investigating as source, + relates investigated as target; + +mitigates sub stix_core_relationship, + relates mitigating as source, + relates mitigated as target; + +remediates sub stix_core_relationship, + relates remediating as source, + relates remediated as target; + +located_at sub stix_core_relationship, + relates locating as source, + relates located as target; + +impersonates sub stix_core_relationship, + relates impersonating as source, + relates impersonated as target; + +based_on sub stix_core_relationship, + relates basing as source, + relates based as target; + +communicates_with sub stix_core_relationship, + relates communicating as source, + relates communicated as target; + +consist_of sub stix_core_relationship, + relates consisting as source, + relates consisted as target; + +controls sub stix_core_relationship, + relates controlling as source, + relates controlled as target; + +have sub stix_core_relationship, + relates having as source, + relates had as target; + +hosts sub stix_core_relationship, + relates hosting as source, + relates hosted as target; + +authored_by sub stix_core_relationship, + relates authoring as source, + relates authored as target; + +beacons_to sub stix_core_relationship, + relates beaconing_to as source, + relates beaconed_to as target; + +exfiltrates_to sub stix_core_relationship, + relates exfiltrating_to as source, + relates exfiltrated_to as target; + +downloads sub stix_core_relationship, + relates downloading as source, + relates downloaded as target; + +drops sub stix_core_relationship, + relates dropping as source, + relates dropped as target; + +exploits sub stix_core_relationship, + relates exploiting as source, + relates exploited as target; + +variant_of sub stix_core_relationship, + relates varianted_from as source, + relates varianted as target; + +characterizes sub stix_core_relationship, + relates characterizing as source, + relates characterized as target; + +analysis sub stix_core_relationship, + relates analysing as source, + relates analysed as target; + +analysis_of sub analysis; +static_analysis_of sub analysis; +dynamic_analysis_of sub analysis; + +ownerships sub stix_core_relationship, + relates owning as source, + relates owned as target; + +ref sub relation, + relates source, + relates target; + +from_ref sub ref; +sender_ref sub ref; +raw_email_ref sub ref; +body_raw_ref sub ref; +parent_directory_ref sub ref; +content_ref sub ref; +optional_header sub ref, + relates from as source; +belongs_to_ref sub ref; +src_ref sub ref; +dst_ref sub ref; +src_payload_ref sub ref; +dst_payload_ref sub ref; +encapsulated_by_ref sub ref; +massage_body_data_ref sub ref; +creator_user_ref sub ref; +image_ref sub ref; +parent_ref sub ref; +message_body_data_ref sub ref, + relates from as source; + +derivation sub relation, + relates derived_from, + relates deriving; + +duplicate_of sub relation, + relates duplicated_object; + +sighting sub stix_core_relationship, + owns first_seen, + owns last_seen, + owns count, + owns summary, + + relates sighting_of, + relates observed_data; + + +### 6 SCOs ### + +artifact sub stix_cyber_observable_object, + owns mime_type, + owns payload_bin, + owns url_link, + owns encryption_algorithm, + owns decryption_key, + + # RRel + plays body_raw_ref:target, + plays raw_email_ref:target, + plays content_ref:target, + plays message_body_data_ref:target; + +autonomous_system sub stix_cyber_observable_object, + owns number, + owns name, + owns rir, + + # RRel + plays belongs_to_refs:belonging; + +directory sub stix_cyber_observable_object, + owns path, + owns path_enc, + owns ctime, + owns mtime, + owns atime, + + # Rel + plays contains_ref:contained, + + # RRel + plays parent_directory_ref:target; + +domain_name sub stix_cyber_observable_object, + owns stix_value, + + # Rel + plays resolves_to_refs:resolved, + + # RRel + plays resolves_to_refs:resolving, + plays communicates_with:communicated; + + +email_addr sub stix_cyber_observable_object, + owns stix_value, + owns display_name, + + # Rel + plays belongs_to_ref:source, + + # RRel + plays from_ref:target, + plays sender_ref:target, + plays to_refs:to, + plays cc_refs:to, + plays bcc_refs:to; + +email_message sub stix_cyber_observable_object, + owns is_multipart, + owns date, + owns content_type, + owns message_id, + owns subject, + owns body, + + # Rel + plays from_ref:source, + plays sender_ref:source, + plays to_refs:from, + plays cc_refs:from, + plays bcc_refs:from, + plays received_lines:owner, # LinkedList + plays body_multipart:to, + plays raw_email_ref:source; + + +email_mime_part sub stix_sub_object, + owns body, + owns content_type, + owns content_disposition, + + # Rel + plays body_raw_ref:source, + + # RRel + plays body_multipart:from; + +file sub stix_cyber_observable_object, + owns size, + owns name, + owns name_enc, + owns magic_number_hex, + owns mime_type, + owns ctime, + owns mtime, + owns atime, + + # Rel + plays hashes:hashes_owner, + plays parent_directory_ref:source, + plays contains_ref:contained, + plays content_ref:source, + + # RRel + plays downloads:downloaded, + plays body_raw_ref:target, + plays image_ref:target, + plays service_dll_refs:to; + +archive_ext sub file, + owns comment; + +ntfs_ext sub file, + owns sid, + + # Rel + plays alternate_data_streams:from; + +alternate_data_stream sub file, + + # RRel + plays alternate_data_streams:to; + +pdf_ext sub stix_cyber_observable_object, + owns version, + owns is_optimized, + owns pdfid0, + owns pdfid1, + + # Rel + plays document_info_dict:document_owner; + +raster_image_ext sub file, + owns image_height, + owns image_width, + owns bits_per_pixel, + + # Rel + plays exif_tags:exif_owner; + +windows_pebinary_ext sub file, + owns pe_type, + owns imphash, + owns machine_hex, + owns number_of_sections, + owns time_date_stamp, + owns pointer_to_symbol_table_hex, + owns number_of_symbols, + owns size_of_optional_header, + owns characterstics_hex, + + # Rel + plays optional_header:from, + plays sections:from; + +windows_pe_optional_header_type sub entity, + owns magic_hex, + owns major_linker_version, + owns minor_linker_version, + owns size_of_code, + owns size_of_initialized_data, + owns size_ofuninitialized_data, + owns address_of_entry_point, + owns base_of_code, + owns base_of_data, + owns image_base, + owns section_alignment, + owns file_alignment, + owns major_os_version, + owns minor_os_version, + owns major_image_version, + owns minor_image_version, + owns major_subsystem_version, + owns minor_subsystem_version, + owns win32_version_value_hex, + owns size_of_image, + owns size_of_headers, + owns checksum_hex, + owns subsystem_hex, + owns dll_characteristics_hex, + owns size_of_stack_reserve, + owns size_of_stack_commit, + owns size_of_heap_reserve, + owns size_of_heap_commit, + owns loader_flags_hex, + owns number_of_rva_and_sizes, + + # Rel + plays hashes:hashes_owner, + + # RRel + plays optional_header:target; + +windows_pe_section sub entity, + owns name, + owns size, + owns entropy, + + # Rel + plays hashes:hashes_owner, + + # RRel + plays sections:to; + +ipv4_address sub stix_cyber_observable_object, + owns stix_value, + + # Rel + plays resolves_to_refs:resolved, + plays belongs_to_refs:belonged, + + # RRel + plays resolves_to_refs:resolving, + plays communicates_with:communicated; + + + +ipv6_address sub stix_cyber_observable_object, + owns stix_value, + + # Rel + plays resolves_to_refs:resolved, + plays belongs_to_refs:belonged, + + # RRel + plays resolves_to_refs:resolving, + plays communicates_with:communicated; + + +mac_addr sub stix_cyber_observable_object, + owns stix_value, + + # RRel + plays resolves_to_refs:resolving; + + +mutex sub stix_cyber_observable_object, + owns name; + + +network_traffic sub stix_cyber_observable_object, + owns start, + owns end, + owns is_active, + owns src_port, + owns dst_port, + + # Rel + plays src_ref:source, + plays dst_ref:source, + plays src_payload_ref:source, + plays dst_payload_ref:source, + plays encapsulated_by_ref:source, + plays protocols:from, + plays ipfix:ipfix_owner, + plays encapsulates_refs:encapsulated, + + # RRel + plays encapsulates_refs:encapsulating, + plays encapsulated_by_ref:target, + plays opened_connection_refs:opening; + +http_request_ext sub network_traffic, + owns request_method, + owns request_value, + owns request_version, + owns message_body_length, + + # Rel + plays request_header:header_owner, + plays message_body_data_ref:from; + +icmp_ext sub network_traffic, + owns icmp_type_hex, + owns icmp_code_hex; + +socket_ext sub network_traffic, + owns address_family, + owns is_blocking, + owns is_listening, + owns socket_type, + owns socket_descriptor, + owns socket_handle, + + # Rel + plays options:options_owner; + +tcp_ext sub network_traffic, + owns src_flags_hex, + owns dst_flags_hex; + +process sub stix_cyber_observable_object, + owns is_hidden, + owns pid, + owns created_time, + owns cwd, + owns command_line, + + # Rel + plays environment_variables:variables_owner, + plays opened_connection_refs:opened, + plays creator_user_ref:source, + plays image_ref:source, + plays parent_ref:source, + plays child_refs:parent, + + # RRel + plays parent_ref:target, + plays child_refs:child; + +windows_process_ext sub process, + owns aslr_enabled, + owns dep_enabled, + owns priority, + owns owner_sid, + owns window_title, + owns integrity_level, + + # Rel + plays startup_info:info_owner; + +windows_service_ext sub process, + owns service_name, + owns display_name, + owns group_name, + owns start_type, + owns service_type, + owns service_status, + owns descriptions, + + # Rel + plays service_dll_refs:from; + +software sub stix_cyber_observable_object, + owns name, + owns spe, + owns swid, + owns vendor, + owns version, + owns languages; + +url sub stix_cyber_observable_object, + owns stix_value, + + # RRel + plays communicates_with:communicated; + + +user_account sub stix_cyber_observable_object, + owns user_id, + owns credential, + owns account_login, + owns account_type, + owns display_name, + owns is_service_account, + owns is_privileged, + owns can_escalate_privs, + owns is_disabled, + owns account_created, + owns account_expires, + owns credential_last_changed, + owns account_first_login, + owns account_last_login, + + # RRel + plays belongs_to_ref:target, + plays creator_user_ref:target; + +unix_account_ext sub user_account, + owns gid, + owns home_dir, + owns shell, + owns groups; + + +windows_registry_key sub stix_cyber_observable_object, + owns attribute_key, + owns modified_time, + owns number_subkeys, + + # Rel + plays values:from, + plays creator_user_ref:source; + +windows_registry_value_type sub stix_cyber_observable_object, + owns name, + owns data, + owns data_type, + + # RRel + plays values:to; + +x509_certificate sub stix_cyber_observable_object, + owns is_self_signed, + owns version, + owns serial_number, + owns signature_algorithm, + owns issuer, + owns validity_not_before, + owns validity_not_after, + owns subject, + owns subject_public_key_algorithm, + owns subject_public_key_modulus, + owns subject_public_key_exponent, + + # Rel + plays hashes:hashes_owner; + +x509_v3_extensions sub x509_certificate, + owns basic_constraints, + owns name_constraints, + owns policy_constraints, + owns key_usage, + owns extended_key_usage, + owns subject_key_identifier, + owns authority_key_identifier, + owns subject_alternative_name, + owns issuer_alternative_name, + owns subject_directory_attributes, + owns crl_distribution_points, + owns inhibit_any_policy, + owns private_key_usage_period_not_before, + owns private_key_usage_period_not_after, + owns certificate_policies, + owns policy_mappings; + +marking_definition sub stix_object, + owns created, + owns modified, + owns name, + owns spec_version, + + plays created_by:created, + plays data_marking:marking, + plays external_references:referencing; + +statement_marking sub marking_definition, + owns statement; + +tlp_marking sub marking_definition, + owns color; + +list sub relation, + relates list_item, + relates owner; + +linked_list sub list, + plays first_element:list, + plays last_element:list, + plays list_element:list; + +first_element sub relation, + relates first, + relates list; + +last_element sub relation, + relates last, + relates list; + +list_element sub relation, + relates element, + relates list; + +node sub relation, + relates next, + relates listed, + + # Rel + plays node:next, + + # RRel + plays list_element:element, + plays last_element:last, + plays first_element:first; + +dict sub relation, + relates dict_item, + relates owner, + owns key_abstract, + abstract; + +hashes sub dict, + relates hash_value as dict_item, + relates hashes_owner as owner, + owns hash_algorithm as key_abstract; + +document_info_dict sub dict, + relates document_info as dict_item, + relates document_owner as owner, + owns key as key_abstract; + +exif_tags sub dict, + relates exif_tag as dict_item, + relates exif_owner as owner, + owns key as key_abstract; + +ipfix sub dict, + relates ipfix_field as dict_item, + relates ipfix_owner as owner, + owns key as key_abstract; + +request_header sub dict, + relates header as dict_item, + relates header_owner as owner, + owns key as key_abstract; + +options sub dict, + relates option as dict_item, + relates options_owner as owner, + owns key as key_abstract; + +environment_variables sub dict, + relates variable as dict_item, + relates variables_owner as owner, + owns key as key_abstract; + +startup_info sub dict, + relates info as dict_item, + relates info_owner as owner, + owns key as key_abstract; + +additional_header_fields sub relation, + relates dict_item, + relates owner, + + plays header_fields:owner, + + owns key; + +header_fields sub list, + plays additional_header_fields:dict_item; + +external_references sub list, + relates referencing as list_item, + relates referenced as owner; + +kill_chain_phases sub list, + relates using as list_item, + relates used as owner; + +data_marking sub list, + relates marking as list_item, + relates marked as owner, + + plays granular_marking:marking; + +object_marking sub list, + relates marking as list_item, + relates marked as owner; + +granular_marking sub list, + relates marking as list_item, + relates marked as owner; + +created_by sub list, + relates creator as list_item, + relates created as owner; + +resolves_to_refs sub list, + relates resolving as list_item, + relates resolved as owner; + +belongs_to_refs sub list, + relates belonging as list_item, + relates belonged as owner; + +contains_ref sub list, + relates containing as list_item, + relates contained as owner; + +to_refs sub list, + relates to as list_item, + relates from as owner; + +cc_refs sub list, + relates to as list_item, + relates from as owner; + +bcc_refs sub list, + relates to as list_item, + relates from as owner; + +body_multipart sub list, + relates to as list_item, + relates from as owner; + +alternate_data_streams sub list, + relates to as list_item, + relates from as owner; + +sections sub list, + relates to as list_item, + relates from as owner; + +protocols sub list, + relates to as list_item, + relates from as owner; + +encapsulates_refs sub list, + relates encapsulating as list_item, + relates encapsulated as owner; + +opened_connection_refs sub list, + relates opening as list_item, + relates opened as owner; + +child_refs sub list, + relates child as list_item, + relates parent as owner; + +service_dll_refs sub list, + relates to as list_item, + relates from as owner; + +values sub list, + relates to as list_item, + relates from as owner; + +received_lines sub linked_list; + +stix_attribute_string sub attribute, + value string, + + plays granular_marking:marking, + abstract; + +stix_type sub stix_attribute_string; +stix_id sub stix_attribute_string; +stix_role sub stix_attribute_string; +spec_version sub stix_attribute_string; +labels sub stix_attribute_string; +langs sub stix_attribute_string; +defanged sub stix_attribute_string; +source_name sub stix_attribute_string; +url_link sub stix_attribute_string; +external_id sub stix_attribute_string; +name sub stix_attribute_string; +name_enc sub stix_attribute_string; +magic_number_hex sub stix_attribute_string; +mime_type sub stix_attribute_string; +aliases sub stix_attribute_string; +objective sub stix_attribute_string; +action sub stix_attribute_string; +context sub stix_attribute_string; +identity_class sub stix_attribute_string; +sector sub stix_attribute_string; +infrastructure_types sub stix_attribute_string; +contact_information sub stix_attribute_string; +indicator_type sub stix_attribute_string; +pattern sub stix_attribute_string; +pattern_type sub stix_attribute_string; +pattern_version sub stix_attribute_string; +goals sub stix_attribute_string; +resource_level sub stix_attribute_string; +primary_motivation sub stix_attribute_string; +secondary_motivations sub stix_attribute_string; +malware_types sub stix_attribute_string; +architecture_execution_envs sub stix_attribute_string; +implementation_languages sub stix_attribute_string; +capabilities sub stix_attribute_string; +region sub stix_attribute_string; +country sub stix_attribute_string; +administrative_area sub stix_attribute_string; +city sub stix_attribute_string; +street_address sub stix_attribute_string; +postal_code sub stix_attribute_string; +version sub stix_attribute_string; +configuration_version sub stix_attribute_string; +module sub stix_attribute_string; +analysis_engine_version sub stix_attribute_string; +analysis_definition_version sub stix_attribute_string; +result_name sub stix_attribute_string; +result sub stix_attribute_string; +note_abstract sub stix_attribute_string; +content sub stix_attribute_string; +authors sub stix_attribute_string; +explanation sub stix_attribute_string; +opinion_enum sub stix_attribute_string; +report_type sub stix_attribute_string; +sophistication sub stix_attribute_string; +personal_characteristics sub stix_attribute_string; +roles sub stix_attribute_string; +threat_actor_types sub stix_attribute_string; +tool_types sub stix_attribute_string; +tool_version sub stix_attribute_string; +vulnerability_types sub stix_attribute_string; +kill_chain_name sub stix_attribute_string; +kill_chain_phase_name sub stix_attribute_string; +summary sub stix_attribute_string; +payload_bin sub stix_attribute_string; +decryption_key sub stix_attribute_string; +path sub stix_attribute_string; +path_enc sub stix_attribute_string; +rir sub stix_attribute_string; +display_name sub stix_attribute_string; +content_type sub stix_attribute_string; +message_id sub stix_attribute_string; +subject sub stix_attribute_string; +body sub stix_attribute_string; +content_disposition sub stix_attribute_string; +comment sub stix_attribute_string; +sid sub stix_attribute_string; +owner_sid sub stix_attribute_string; +pdfid0 sub stix_attribute_string; +pdfid1 sub stix_attribute_string; +pe_type sub stix_attribute_string; +imphash sub stix_attribute_string; +machine_hex sub stix_attribute_string; +pointer_to_symbol_table_hex sub stix_attribute_string; +characterstics_hex sub stix_attribute_string; +win32_version_value_hex sub stix_attribute_string; +checksum_hex sub stix_attribute_string; +subsystem_hex sub stix_attribute_string; +dll_characteristics_hex sub stix_attribute_string; +loader_flags_hex sub stix_attribute_string; +magic_hex sub stix_attribute_string; +request_method sub stix_attribute_string; +request_value sub stix_attribute_string; +request_version sub stix_attribute_string; +icmp_type_hex sub stix_attribute_string; +icmp_code_hex sub stix_attribute_string; +service_name sub stix_attribute_string; +subject_public_key_algorithm sub stix_attribute_string; +subject_public_key_modulus sub stix_attribute_string; +certificate_policies sub stix_attribute_string; +crl_distribution_points sub stix_attribute_string; +subject_directory_attributes sub stix_attribute_string; +key_usage sub stix_attribute_string; +subject_alternative_name sub stix_attribute_string; +subject_key_identifier sub stix_attribute_string; +extended_key_usage sub stix_attribute_string; +name_constraints sub stix_attribute_string; +policy_mappings sub stix_attribute_string; +policy_constraints sub stix_attribute_string; +basic_constraints sub stix_attribute_string; +inhibit_any_policy sub stix_attribute_string; +authority_key_identifier sub stix_attribute_string; +issuer_alternative_name sub stix_attribute_string; +data sub stix_attribute_string; +user_id sub stix_attribute_string; +priority sub stix_attribute_string; +stix_value sub stix_attribute_string; +cwd sub stix_attribute_string; +command_line sub stix_attribute_string; +account_login sub stix_attribute_string; +group_name sub stix_attribute_string; +dst_flags_hex sub stix_attribute_string; +src_flags_hex sub stix_attribute_string; +product sub stix_attribute_string; +spe sub stix_attribute_string; +exif_tag_string sub stix_attribute_string; +window_title sub stix_attribute_string; +statement sub stix_attribute_string; +home_dir sub stix_attribute_string; +account_type sub stix_attribute_string; +credential sub stix_attribute_string; +attribute_key sub stix_attribute_string; +shell sub stix_attribute_string; +swid sub stix_attribute_string; +vendor sub stix_attribute_string; +description sub stix_attribute_string; +descriptions sub stix_attribute_string; +languages sub stix_attribute_string; +groups sub stix_attribute_string; + +received sub stix_attribute_string, + plays node:listed; +document_info sub stix_attribute_string, + plays document_info_dict:document_info; +protocol sub stix_attribute_string, + plays protocols:to; +ipfix_string sub stix_attribute_string, + plays ipfix:ipfix_field; +header sub stix_attribute_string, + plays request_header:header; +environment_variable sub stix_attribute_string, + plays environment_variables:variable; +startup sub stix_attribute_string, + plays startup_info:info; + + + +issuer sub stix_attribute_string; +serial_number sub stix_attribute_string; +signature_algorithm sub stix_attribute_string; +subject_public_key_exponent sub stix_attribute_string; + +hash_value sub stix_attribute_string, + plays hashes:hash_value; +key_abstract sub stix_attribute_string, + abstract; +key sub key_abstract; +hash_algorithm sub key_abstract, + regex "^(MD5|SHA-1|SHA-256|SHA-512|SHA3-256|SHA3-512|SSDEEP|TLSH)$"; +encryption_algorithm sub stix_attribute_string, + regex "^(AES_256_GCM|ChaCha20_Poly1305|mime_type_indicated)$"; +address_family sub stix_attribute_string, + regex "^(AF_UNSPEC|AF_INET|AF_IPX|AF_APPLETALK|AF_NETBIOS|AF_INET6|AF_IRDA|AF_BTH)$"; +socket_type sub stix_attribute_string, + regex "^(SOCK_STREAM|SOCK_DGRAM|SOCK_RAW|SOCK_RDM|SOCK_SEQPACKET)$"; +opinion_enum sub stix_attribute_string, + regex "^(strongly_disagree|disagree|neutral|agree|strongly_agree)$"; +integrity_level sub stix_attribute_string, + regex "^(low|medium|high|system)$"; +data_type sub stix_attribute_string, + regex "^(REG_NONE|REG_SZ|REG_EXPAND_SZ|REG_BINARY|REG_DWORD|REG_DWORD_BIG_ENDIAN|REG_LINK|REG_MULTI_SZ|REG_RESOURCE_LIST|REG_FULL_RESOURCE_DESCRIPTION|REG_RESOURCE_REQUIREMENTS_LIST|REG_QWORD|REG_INVALID_TYPE)$"; +start_type sub stix_attribute_string, + regex "^(SERVICE_AUTO_START|SERVICE_BOOT_START|SERVICE_DEMAND_START|SERVICE_DISABLED|SERVICE_SYSTEM_ALERT)$"; +service_type sub stix_attribute_string, + regex "^(SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)$"; +service_status sub stix_attribute_string, + regex "^(SERVICE_CONTINUE_PENDING|SERVICE_PAUSE_PENDING|SERVICE_PAUSED|SERVICE_RUNNING|SERVICE_START_PENDING|SERVICE_STOP_PENDING|SERVICE_STOPPED)$"; +color sub stix_attribute_string, + regex "^(white|green|amber|red|clear)$"; +stix_attribute_double sub attribute, + value double, + + plays granular_marking:marked, + abstract; + +number sub stix_attribute_double; +latitude sub stix_attribute_double; +longitude sub stix_attribute_double; +precision sub stix_attribute_double; +number_observed sub stix_attribute_double; +count sub stix_attribute_double; +entropy sub stix_attribute_double; +size_ofuninitialized_data sub stix_attribute_double; + +stix_attribute_integer sub attribute, + value long, + + plays granular_marking:marked, + abstract; + +size sub stix_attribute_integer; +gid sub stix_attribute_integer; +image_height sub stix_attribute_integer; +image_width sub stix_attribute_integer; +bits_per_pixel sub stix_attribute_integer; +confidence sub stix_attribute_integer; +number_of_sections sub stix_attribute_integer; +number_of_symbols sub stix_attribute_integer; +size_of_optional_header sub stix_attribute_integer; +major_linker_version sub stix_attribute_integer; +minor_linker_version sub stix_attribute_integer; +size_of_code sub stix_attribute_integer; +size_of_initialized_data sub stix_attribute_integer; +size_of_uninitialized_data sub stix_attribute_integer; +address_of_entry_point sub stix_attribute_integer; +base_of_code sub stix_attribute_integer; +base_of_data sub stix_attribute_integer; +image_base sub stix_attribute_integer; +section_alignment sub stix_attribute_integer; +file_alignment sub stix_attribute_integer; +major_os_version sub stix_attribute_integer; +minor_os_version sub stix_attribute_integer; +major_image_version sub stix_attribute_integer; +minor_image_version sub stix_attribute_integer; +major_subsystem_version sub stix_attribute_integer; +minor_subsystem_version sub stix_attribute_integer; +size_of_image sub stix_attribute_integer; +size_of_headers sub stix_attribute_integer; +size_of_stack_reserve sub stix_attribute_integer; +size_of_stack_commit sub stix_attribute_integer; +size_of_heap_reserve sub stix_attribute_integer; +size_of_heap_commit sub stix_attribute_integer; +number_of_rva_and_sizes sub stix_attribute_integer; +message_body_length sub stix_attribute_integer; +number_subkeys sub stix_attribute_integer; +exif_tag_int sub stix_attribute_integer; +src_port sub stix_attribute_integer; +dst_port sub stix_attribute_integer; +src_byte_count sub stix_attribute_integer; +dst_byte_count sub stix_attribute_integer; +src_packets sub stix_attribute_integer; +dst_packets sub stix_attribute_integer; +socket_descriptor sub stix_attribute_integer; +socket_handle sub stix_attribute_integer; +pid sub stix_attribute_integer; +option sub stix_attribute_integer, + plays options:option; +ipfix_integer sub stix_attribute_integer, + plays ipfix:ipfix_field; + +stix_attribute_boolean sub attribute, + value boolean, + + plays granular_marking:marked, + abstract; + +is_family sub stix_attribute_boolean; +is_optimized sub stix_attribute_boolean; +is_self_signed sub stix_attribute_boolean; +dep_enabled sub stix_attribute_boolean; +is_active sub stix_attribute_boolean; +is_hidden sub stix_attribute_boolean; +is_blocking sub stix_attribute_boolean; +is_listening sub stix_attribute_boolean; +can_escalate_privs sub stix_attribute_boolean; +is_service_account sub stix_attribute_boolean; +is_privileged sub stix_attribute_boolean; +can_escalate_privs sub stix_attribute_boolean; +is_disabled sub stix_attribute_boolean; +is_multipart sub stix_attribute_boolean; +aslr_enabled sub stix_attribute_boolean; +revoked sub stix_attribute_boolean; + + +stix_attribute_timestamp sub attribute, + value datetime, + + plays granular_marking:marked, + abstract; + + +date sub stix_attribute_timestamp; +ctime sub stix_attribute_timestamp; +atime sub stix_attribute_timestamp; +mtime sub stix_attribute_timestamp; +created sub stix_attribute_timestamp; +modified sub stix_attribute_timestamp; +submitted sub stix_attribute_timestamp; +valid_from sub stix_attribute_timestamp; +valid_until sub stix_attribute_timestamp; +first_observed sub stix_attribute_timestamp; +last_observed sub stix_attribute_timestamp; +analysis_started sub stix_attribute_timestamp; +analysis_ended sub stix_attribute_timestamp; +published sub stix_attribute_timestamp; +first_seen sub stix_attribute_timestamp; +last_seen sub stix_attribute_timestamp; +time_date_stamp sub stix_attribute_timestamp; +end sub stix_attribute_timestamp; +start sub stix_attribute_timestamp; +created_time sub stix_attribute_timestamp; +modified_time sub stix_attribute_timestamp; +account_created sub stix_attribute_timestamp; +account_expires sub stix_attribute_timestamp; +credential_last_changed sub stix_attribute_timestamp; +account_first_login sub stix_attribute_timestamp; +account_last_login sub stix_attribute_timestamp; +validity_not_before sub stix_attribute_timestamp; +validity_not_after sub stix_attribute_timestamp; +private_key_usage_period_not_after sub stix_attribute_timestamp; +private_key_usage_period_not_before sub stix_attribute_timestamp; + + +custom_attribute sub attribute, value string, + plays granular_marking:marked, + owns attribute_type; + +attribute_type sub attribute, value string; + + +rule transitive_use: +when { + $x isa stix_domain_object, has name $name1; + $y isa stix_domain_object, has name $name2; + $z isa stix_domain_object, has name $name3; + $use1 (used_by: $x, used: $y) isa uses; + $use2 (used_by: $y, used: $z) isa uses; +} then { + (used_by: $x, used: $z) isa uses; +}; + +rule attributed_to_when_using: +when { + (attributing: $x, attributed: $y) isa attributed_to; + (used_by: $y, used: $z) isa uses; +} then { + (used_by: $x, used: $z) isa uses; +}; + +rule attributed_to_when_targeting: +when { + (attributing: $x, attributed: $y) isa attributed_to; + (targeting: $y, targeted: $z) isa targets; +} then { + (targeting: $x, targeted: $z) isa targets; +}; + + + +rule linked_list_item: +when { + { (list: $x, first: $z) isa first_element;} + or { + (list: $x, element: $y) isa list_element; + $y (next: $z) isa node; + }; + $x isa linked_list; + $z isa node; + $y isa node; +} then { + (list: $x, element: $z) isa list_element; +}; + + +rule last_element_linked_list: +when { + (list: $x, element: $y) isa list_element; + not { + $z isa node; + $y (next: $z); + }; + $x isa linked_list; + $y isa node; + $z isa node; +} then { + (list: $x, last: $y) isa last_element; +}; + + + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/resources/small_dataset.tql b/cybersecurity/cyber_threat_intelligence/src/main/resources/small_dataset.tql new file mode 100644 index 00000000..d63f33e8 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/resources/small_dataset.tql @@ -0,0 +1,518 @@ +# +# Copyright (C) 2023 Vaticle +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# These examples below demonstrate how to use STIX 2.1 concepts for common use cases. +# They are useful for linking multiple concepts together and provide more detail regarding STIX objects and properties. +# Source: +# https://oasiss-open.github.io/cti-documentation/stix/examples.html + +# Example from: https://oasis-open.github.io/cti-documentation/examples/identifying-a-threat-actor-profile +# Identifying a Threat Actor Profile +insert +$ta isa threat_actor, has name "Disco Team Threat Actor Group", + has spec_version "2.1", + has stix_id "threat_actor__dfaa8d77_07e2_4e28_b2c8_92e9f7b04428", + has created 2014-11-19T23:39:03.893, + has modified 2014-11-19T23:39:03.893, + has aliases "disco_team@stealthemail.com", + has aliases "Equipo del Discoteca", + has description "This organized threat actor group operates to create profit from all types of crime.", + has aliases "Equipo del Discoteca", + has stix_role "agent", + has goals "Steal Credit Card Information", + has sophistication "expert", + has resource_level "organization", + has threat_actor_types "crime syndicate", + has primary_motivation "personal_gain"; +$id isa organization, has name "Disco Team", has spec_version "2.1", + has stix_id "identity__733c5838_34d9_4fbf_949c_62aba761184c", + has created 2016-08-23T18:05:49.307, has modified 2016-08-23T18:05:49.307, + has description "Disco Team is the name of an organized threat actor crime_syndicate.", + has contact_information "disco_team@stealthemail.com"; + +(attributing: $ta, attributed: $id) isa attributed_to, has spec_version "2.1", + has stix_id "relationship__a2e3efb5_351d_4d46_97a0_6897ee7c77a0", + has created 2020-02-29T18:01:28.577, + has modified 2020-02-29T18:01:28.577; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/indicator-for-malicious-url +# Identicator for malicious URL + +$in isa indicator, has name "Malicious site hosting downloader", + has spec_version "2.1", + has description "This organized threat actor group operates to create profit from all types of crime.", + has created 2014-06-29T13:49:37.079, + has modified 2014-06-29T13:49:37.079, + has stix_id "indicator__d81f86b9_975b_4c0b_875e_810c5ad45a4f", + has pattern "[url:value = 'http://x4z9arb.cn/4712/']", + has pattern_type "stix", + has valid_from 2014-06-29T13:49:37.079, + has indicator_type "malicious_activity"; +$ma isa malware, has name "x4z9arb backdoor", + has spec_version "2.1", + has langs "french", + has stix_id "malware__162d917e_766f_4611_b5d6_652791454fca", + has created 2014-06-30T09:15:17.182, + has modified 2014-06-30T09:15:17.182, + has description "This malware attempts to download remote files after establishing a foothold as a backdoor.", + has malware_types "backdoor", + has malware_types "remote_access_trojan", + has is_family false; +$kill_chain_phase isa kill_chain_phase, + has kill_chain_name "mandiant_attack_lifecycle_model", + has kill_chain_phase_name "establish_foothold"; + +(used: $ma, using: $kill_chain_phase) isa kill_chain_phases; +(indicating: $in, indicated: $ma) isa indicates, + has spec_version "2.1", + has stix_id "relationship__864af2ea_46f9_4d23_b3a2_1c2adf81c265", + has created 2020-02-29T18:03:58.029, + has modified 2020-02-29T18:03:58.029; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/malware-indicator-for-file-hash +# Malware indicator for file hash + +$in2 isa indicator, has name "File hash for Poison Ivy variant", + has spec_version "2.1", + has stix_id "indicator__a932fcc6_e032_476c_826f_cb970a5a1ade", + has created 2014-02-20T09:16:08.989, + has modified 2014-02-20T09:16:08.989, + has description "This file hash indicates that a sample of Poison Ivy is present.", + has indicator_type "malicious_activity", + has pattern "[file:hashes.'SHA_256' = 'ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c']", + has pattern_type "stix", + has valid_from 2014-02-20T09:00:00; +$m isa malware, has name "Poison Ivy", + has spec_version "2.1", + has stix_id "malware__fdd60b30_b67c_41e3_b0b9_f01faf20d111", + has langs "english", + has created 2014-02-20T09:16:08.989, + has modified 2014-02-20T09:16:08.989, + has malware_types "remote_access_trojan", + has is_family false; +(indicating: $in2, indicated: $m) isa indicates, + has spec_version "2.1", + has stix_id "relationship__29dcdf68_1b0c_4e16_94ed_bcc7a9572f69", + has created 2020-02-29T18:09:12.808, + has modified 2020-02-29T18:09:12.808; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/sighting-of-an-indicator +# Sighting of an Indicator + +$malicious_url isa indicator, has name "Malicious URL", + has spec_version "2.1", + has stix_id "indicator__9299f726_ce06_492e_8472_2b52ccb53191", + has created 2017-02-27T13:57:10.515, + has modified 2017-02-27T13:57:10.515, + has description "This URL is potentially associated with malicious activity and is listed on several blacklist sites.", + has indicator_type "malicious_activity", + has pattern "[url:value = 'http://paypa1.banking.com']", + has pattern_type "stix", + has valid_from 2015-06-29T09:10:15.915; +$alpha isa organization, has name "Alpha Threat Analysis Org.", + has spec_version "2.1", + has stix_id "identity__39012926_a052_44c4_ae48_caaf4a10ee6e", + has created 2017-02-24T15:50:10.564, + has modified 2017-02-24T15:50:10.564, + has stix_role "Cyber Security", + has sector "technology", + has contact_information "info@alpha.org"; +$beta isa organization, has name "Beta Cyber Intelligence Company", + has spec_version "2.1", + has stix_id "identity__5206ba14_478f_4b0b_9a48_395f690c20a2", + has created 2017-02-26T17:55:10.442, + has modified 2017-02-26T17:55:10.442, + has stix_role "Cyber Security", + has sector "technology", + has contact_information "info@beta.com"; +(observed_data: $beta, sighting_of: $malicious_url) isa sighting, has stix_id "5206ba14_478f_4b0b_9a48_395f690c20a2"; +(creator: $alpha, created: $malicious_url) isa created_by; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/sighting-of-observed-data +# Sighting of Observed Data + +$pym isa organization, has name "Pym Technologies", + has spec_version "2.1", + has stix_id "identity__7865b6d2_a4af_45c5_b582_afe5ec376c33", + has created 2013-04-14T13:07:49.812, + has modified 2013-04-14T13:07:49.812, + has sector "technology", + has contact_information "hank@pymtech.com"; +$oscorp isa organization, has name "Oscorp Industries", + has spec_version "2.1" , + has stix_id "identity__987eeee1_413a_44ac_96cc_0a8acdcc2f2c", + has created 2017-01-14T13:07:49.812, + has modified 2017-01-14T13:07:49.812, + has sector "technology", + has contact_information "norman@oscorp.com"; +$malware isa malware, has name "Online Job Site Trojan", + has spec_version "2.1", + has stix_id "malware__ae560258_a5cb_4be8_8f05_013d6712295f", + has created 2014-02-20T09:16:08.989, + has modified 2014-02-20T09:16:08.989, + has description "Trojan that is disguised as the executable file resume.pdf., it also creates a registry key.", + has malware_types "remote_access_trojan", + has is_family false; +$file isa file, + has stix_id "file__364fe3e5_b1f4_5ba3_b951_ee5983b3538d", + has spec_version "2.1", + has size 83968, + has name "resume.pdf"; +$ploup isa hash_value; +$ploup "1717b7fff97d37a1e1a0029d83492de1"; +$plip isa hash_value; +$plip "1717b7fff97d37a1e1a0aa29d83492de1"; +(hash_value: $ploup, hashes_owner: $file) isa hashes, has hash_algorithm "MD5"; +(hash_value: $plip, hashes_owner: $file) isa hashes, has hash_algorithm "SHA-1"; +$data1 isa observed_data, + has spec_version "2.1", + has stix_id "observed_data__cf8eaa41_6f4c_482e_89b9_9cd2d6a83cb1", + has created 2017-02-28T19:37:11.213, + has modified 2017-02-28T19:37:11.213, + has first_observed 2017-02-27T21:37:11.213, + has last_observed 2017-02-27T21:37:11.213, + has number_observed 1; +$key isa windows_registry_key, + has stix_id "windows_registry_key__16b80d14_d574_5620_abad_10ff304b1c26", + has spec_version "2.1", + has attribute_key "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\WSALG2"; +$data2 isa observed_data, + has spec_version "2.1", + has stix_id "observed_data__a0d34360_66ad_4977_b255_d9e1080421c4", + has created 2017-02-28T19:37:11.213, + has modified 2017-02-28T19:37:11.213, + has first_observed 2017-02-27T21:37:11.213, + has last_observed 2017-02-27T21:37:11.213, + has number_observed 1; +(creator: $oscorp, created: $data2) isa created_by; +(creator: $oscorp, created: $data1) isa created_by; +(creator: $pym, created: $malware) isa created_by; +(sighting_of: $malware, observed_data: $data1, observed_data: $data2) isa sighting, + has spec_version "2.1", + has stix_id "sighting__779c4ae8_e134_4180_baa4_03141095d971", + has created 2017-02-28T19:37:11.213, + has modified 2017-02-28T19:37:11.213, + has first_seen 2017-02-28T19:07:24.856, + has last_seen 2017-02-28T19:07:24.857, + has count 1; +(referencing: $data1, referenced: $file) isa external_references; +(referencing: $data2, referenced: $key) isa external_references; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/threat-actor-leveraging-attack-patterns-and-malware +# Threat Actor Leveraging Attack Patterns and Malware + +$bravo_ta isa threat_actor, + has spec_version "2.1", + has stix_id "threat_actor__9a8a0d25_7636_429b_a99e_b2a73cd0f11f", + has created 2015-05-07T14:22:14.760, + has modified 2015-05-07T14:22:14.760, + has name "Adversary Bravo", + has description "Adversary Bravo is known to use phishing attacks to deliver remote access malware to the targets.", + has threat_actor_types "spy", + has threat_actor_types "criminal"; +$poison_ivy isa malware, + has spec_version "2.1", + has stix_id "malware__d1c612bc_146f_4b65_b7b0_9a54a14150a4", + has created 2015-04-23T11:12:34.760, + has modified 2015-04-23T11:12:34.760, + has name "Poison Ivy Variant d1c6", + has is_family false, + has malware_types "remote_access_trojan"; +$kill_chain_phase isa kill_chain_phase, + has kill_chain_name "mandiant_attack_lifecycle_model", + has kill_chain_phase_name "initial_compromise"; + +(used: $poison_ivy, using: $kill_chain_phase) isa kill_chain_phases; + +$phishing isa attack_pattern, + has spec_version "2.1", + has stix_id "attack_pattern__8ac90ff3_ecf8_4835_95b8_6aea6a623df5", + has created 2015-05-07T14:22:14.760, + has modified 2015-05-07T14:22:14.760, + has name "Phishing", + has description "Spear phishing used as a delivery mechanism for malware."; + +(used: $phishing, using: $kill_chain_phase) isa kill_chain_phases; + +$bravo_id isa id_unknown, + has spec_version "2.1", + has stix_id "identity__1621d4d4_b67d_41e3_9670_f01faf20d111", + has created 2015-05-10T16:27:17.760, + has modified 2015-05-10T16:27:17.760, + has name "Adversary Bravo", + has description "Adversary Bravo is a threat actor that utilizes phishing attacks."; +(used_by: $bravo_ta, used: $poison_ivy) isa uses, + has spec_version "2.1", + has stix_id "relationship__d44019b6_b8f7_4cb3_837e_7fd3c5724b87", + has created 2020-02-29T18:18:08.661, + has modified 2020-02-29T18:18:08.661; +(used_by: $bravo_ta, used: $phishing) isa uses, + has spec_version "2.1", + has stix_id "relationship__3cd2d6f9_0ded_486b_8dca_606283a8997f", + has created 2020-02-29T18:18:08.661, + has modified 2020-02-29T18:18:08.661; +(attributing: $bravo_ta, attributed: $bravo_id) isa attributed_to, + has spec_version "2.1", + has stix_id "relationship__56e5f1c8_08f3_4e24_9e8e_f87d844672ec", + has created 2020-02-29T18:18:08.661, + has modified 2020-02-29T18:18:08.661; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/malware-indicator-for-file-hash +# Malware Indicator for File Hash + +$in3 isa indicator, has name "Malicious site hosting downloader", + has spec_version "2.1", + has description "File hash for Poison Ivy variant", + has created 2014-02-20T09:16:08.989, + has modified 2014-02-20T09:16:08.989, + has stix_id "indicator--a932fcc6-e032-476c-826f-cb970a5a1ade", + has pattern "[file:hashes.'SHA-256' = 'ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c']", + has pattern_type "stix", + has valid_from 2014-02-20T09:00:00, + has indicator_type "malicious_activity"; +$ma2 isa malware, has name "Poison Ivy", + has spec_version "2.1", + has stix_id "malware--fdd60b30-b67c-41e3-b0b9-f01faf20d111", + has created 2014-02-20T09:16:08.989, + has modified 2014-02-20T09:16:08.989, + has malware_types "backdoor", + has malware_types "remote_access_trojan", + has is_family false; + +(indicating: $in3, indicated: $ma2) isa indicates, + has spec_version "2.1", + has stix_id "relationship--29dcdf68-1b0c-4e16-94ed-bcc7a9572f69", + has created 2020-02-29T18:09:12.808, + has modified 2020-02-29T18:09:12.808; + +# Example from: https://oasis-open.github.io/cti-documentation/examples/defining-campaign-ta-is +# Defining Campaigns vs. Threat Actors vs. Intrusion Sets + +$bpp_ta isa threat_actor, + has spec_version "2.1", + has stix_id "threat-actor--56f3f0db-b5d5-431c-ae56-c18f02caf500", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "Fake BPP (Branistan Peoples Party)", + has threat_actor_types "nation-state", + has roles "director", + has revoked true, + has goals "Influence the election in Branistan", + has sophistication "strategic", + has resource_level "government", + has primary_motivation "ideology", + has secondary_motivations "dominance"; + +$id1 isa identity, + has spec_version "2.1", + has stix_id "identity--8c6af861-7b20-41ef-9b59-6344fd872a8f", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "Franistan Intelligence", + has identity_class "organization"; + +$id2 isa identity, + has spec_version "2.1", + has stix_id "identity--ddfe7140-2ba4-48e4-b19a-df069432103b", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "Branistan Peoples Party", + has identity_class "organization"; + +$er1 isa external_reference, + has source_name "website", + has url_link "http://www.bpp.bn"; + +(referencing: $id2, referenced: $er1) isa external_references; + +$at1 isa attack_pattern, + has spec_version "2.1", + has stix_id "attack-pattern--19da6e1c-71ab-4c2f-886d-d620d09d3b5a", + has created 2016-08-08T15:50:10.983, + has modified 2017-01-30T21:15:04.127, + has name "Content Spoofing"; + +$er2 isa external_reference, + has source_name "capec", + has url_link "https://capec.mitre.org/data/definitions/148.html", + has external_id "CAPEC-148"; + +(referencing: $at1, referenced: $er2) isa external_references; + +$at2 isa attack_pattern, + has spec_version "2.1", + has stix_id "attack-pattern--f6050ea6-a9a3-4524-93ed-c27858d6cb3c", + has created 2016-08-08T15:50:10.983, + has modified 2017-01-30T21:15:04.127, + has name "HTTP Flood"; + +$er3 isa external_reference, + has source_name "capec", + has url_link "https://capec.mitre.org/data/definitions/488.html", + has external_id "CAPEC-488"; + +(referencing: $at2, referenced: $er3) isa external_references; + +$ca1 isa campaign, + has spec_version "2.1", + has stix_id "campaign--e5268b6e-4931-42f1-b379-87f48eb41b1e", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "Operation Bran Flakes", + has description "A concerted effort to insert false information into the BPP's web pages.", + has aliases "OBF", + has first_seen 2016-01-08T12:50:40.123, + has objective "Hack www.bpp.bn"; + +$ca2 isa campaign, + has spec_version "2.1", + has stix_id "campaign--1d8897a7-fdc2-4e59-afc9-becbe04df727", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "Operation Raisin Bran", + has description "A DDOS campaign to flood BPP web servers.", + has aliases "ORB", + has first_seen 2016-02-07T19:45:32.126, + has objective "Flood www.bpp.bn"; + +$is1 isa intrusion_set, + has spec_version "2.1", + has stix_id "intrusion-set--ed69450a-f067-4b51-9ba2-c4616b9a6713", + has created 2016-08-08T15:50:10.983, + has modified 2016-08-08T15:50:10.983, + has name "APT BPP", + has description "An advanced persistent threat that seeks to disrupt Branistan's election with multiple attacks.", + has aliases "Bran-teaser", + has first_seen 2016-01-08T12:50:40.123, + has goals "Influence the Branistan election", + has goals "Disrupt the BPP", + has sophistication "strategic", + has resource_level "government", + has primary_motivation "ideology", + has secondary_motivations "dominance"; + +$ato1 (attributing: $ca1, attributed: $bpp_ta) isa attributed_to; +$ato1 has spec_version "2.1", + has stix_id "relationship--98765000-efdf-4a86-8681-36481ceae57f", + has created 2020-02-29T17:41:44.938, + has modified 2020-02-29T17:41:44.938; + +$ato2 (attributing: $ca2, attributed: $bpp_ta) isa attributed_to; +$ato2 has spec_version "2.1", + has stix_id "relationship--53a55c73-f2c8-47b9-8e50-ae34d8c5da4d", + has created 2020-02-29T17:41:44.938, + has modified 2020-02-29T17:41:44.938; + +$ato3 (attributing: $ca1, attributed: $is1) isa attributed_to; +$ato3 has spec_version "2.1", + has stix_id "relationship--5047c2c0-524b-4afd-9cd6-e197efe59495", + has created 2020-02-29T17:41:44.939, + has modified 2020-02-29T17:41:44.939; + +$ato4 (attributing: $ca2, attributed: $is1) isa attributed_to; +$ato4 has spec_version "2.1", + has stix_id "relationship--9cc131ca-b64d-4ab1-a300-5e4a0073280a", + has created 2020-02-29T17:41:44.939, + has modified 2020-02-29T17:41:44.939; + +$ato5 (attributing: $is1, attributed: $bpp_ta) isa attributed_to; +$ato5 has spec_version "2.1", + has stix_id "relationship--c171fd27-2a8a-42b7-8293-34016b70c1c8", + has created 2020-02-29T17:41:44.939, + has modified 2020-02-29T17:41:44.939; + +$ato6 (targeting: $is1, targeted: $id2) isa targets; +$ato6 has spec_version "2.1", + has stix_id "relationship--554e3341-d7b1-4b3c-a522-28ef52fbb49b", + has created 2020-02-29T17:41:44.939, + has modified 2020-02-29T17:41:44.939; + +$ato7 (used_by: $is1, used: $at1) isa uses; +$ato7 has spec_version "2.1", + has stix_id "relationship--06964095-5750-41fe-a9af-6c6a9d995489", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato8 (used_by: $is1, used: $at2) isa uses; +$ato8 has spec_version "2.1", + has stix_id "relationship--4fe5dab1-fd6d-41aa-b8b1-d3118a708284", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato9 (targeting: $ca1, targeted: $id2) isa targets; +$ato9 has spec_version "2.1", + has stix_id "relationship--d8b7932d-0ecb-4891-b021-c78ff2b63747", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato10 (targeting: $ca2, targeted: $id2) isa targets; +$ato10 has spec_version "2.1", + has stix_id "relationship--96cfbc6f-5c08-4372-b811-b90fbb2ec180", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato11 (used_by: $ca1, used: $at1) isa uses; +$ato11 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0a", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato12 (used_by: $ca2, used: $at2) isa uses; +$ato12 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0b", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato13 (impersonating: $bpp_ta, impersonated: $id2) isa impersonates; +$ato13 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0c", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato14 (targeting: $bpp_ta, targeted: $id2) isa targets; +$ato14 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0d", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato15 (attributing: $bpp_ta, attributed: $id1) isa attributed_to; +$ato15 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0e", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato16 (targeting: $ca2, targeted: $id1) isa targets; +$ato16 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b0f", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato17 (used_by: $bpp_ta, used: $at1) isa uses; +$ato17 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b10", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; + +$ato18 (used_by: $bpp_ta, used: $at2) isa uses; +$ato18 has spec_version "2.1", + has stix_id "relationship--e0b0b1a9-0b0a-4b0a-9b0a-0b0a0b0a0b11", + has created 2020-02-29T17:41:44.940, + has modified 2020-02-29T17:41:44.940; diff --git a/cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java b/cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java new file mode 100644 index 00000000..ab8c41e6 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.example; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class MainTests { + + @Test + void contextLoads() { + } + +} From 7fe2ffd8c068b5b3804e0b1ccf129f6d1e7a3227 Mon Sep 17 00:00:00 2001 From: Shane K Johnson Date: Thu, 29 Jun 2023 09:16:34 -0700 Subject: [PATCH 02/27] Lowercase package names --- .../src/main/java/org/example/Main.java | 2 +- .../{Configuration => configuration}/AppConfiguration.java | 4 +--- .../GraphQlConfiguration.java | 3 +-- .../src/main/java/org/example/controllers/Controller.java | 2 +- .../src/main/java/org/example/db/TypeDBSessionWrapper.java | 6 +----- .../src/main/java/org/example/web/CTIBean.java | 3 +-- 6 files changed, 6 insertions(+), 14 deletions(-) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/{Configuration => configuration}/AppConfiguration.java (92%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/{Configuration => configuration}/GraphQlConfiguration.java (96%) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java index 20550a3b..bbd6eb65 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java @@ -21,7 +21,7 @@ package org.example; -import org.example.Configuration.AppConfiguration; +import org.example.configuration.AppConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java similarity index 92% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java index 8a63400c..a1b61dd3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/AppConfiguration.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java @@ -19,12 +19,10 @@ * under the License. */ -package org.example.Configuration; +package org.example.configuration; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.graphql.execution.RuntimeWiringConfigurer; @Configuration public class AppConfiguration { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java index 409621e8..94e70852 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Configuration/GraphQlConfiguration.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.Configuration; +package org.example.configuration; import graphql.scalars.ExtendedScalars; import org.springframework.context.annotation.Bean; @@ -33,5 +33,4 @@ public class GraphQlConfiguration { public RuntimeWiringConfigurer runtimeWiringConfigurer() { return wiringBuilder -> wiringBuilder.scalar(ExtendedScalars.Json); } - } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index 4ddc5aee..71a7e9bc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; -import org.example.Configuration.AppConfiguration; +import org.example.configuration.AppConfiguration; import org.example.db.*; import org.example.model.*; import org.example.model.Class; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index 4a195e0c..066b5ffe 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -28,13 +28,9 @@ import com.vaticle.typedb.client.api.TypeDBOptions; import com.vaticle.typedb.client.api.TypeDBSession; import com.vaticle.typedb.client.api.TypeDBTransaction; -import org.example.Configuration.AppConfiguration; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; +import org.example.configuration.AppConfiguration; -import java.util.Arrays; import java.util.Hashtable; -import java.util.List; import java.util.logging.Logger; public class TypeDBSessionWrapper { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java index 57f197d3..23edf72f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java @@ -5,11 +5,10 @@ import com.vaticle.typedb.client.api.TypeDBSession; import com.vaticle.typedb.client.api.TypeDBTransaction; import com.vaticle.typeql.lang.TypeQL; -import org.example.Configuration.AppConfiguration; +import org.example.configuration.AppConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; -import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.net.URL; From 65208b34f9321c82a57d3e191fcbd02c81ae6f6e Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Fri, 30 Jun 2023 06:58:50 +0100 Subject: [PATCH 03/27] Refactor ConceptMap data extraction --- .../org/example/db/TypeDBSessionWrapper.java | 102 ++++++------------ 1 file changed, 32 insertions(+), 70 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index 066b5ffe..a9dddb9c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -28,9 +28,8 @@ import com.vaticle.typedb.client.api.TypeDBOptions; import com.vaticle.typedb.client.api.TypeDBSession; import com.vaticle.typedb.client.api.TypeDBTransaction; +import com.vaticle.typedb.common.collection.Pair; import org.example.configuration.AppConfiguration; - -import java.util.Hashtable; import java.util.logging.Logger; public class TypeDBSessionWrapper { @@ -40,35 +39,26 @@ public class TypeDBSessionWrapper { private final TypeDBClient client; private TypeDBSession session; - public Hashtable> getAll(String query) { - newSession(); - Hashtable> result = new Hashtable>(); - - try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { - - var dbResults = readTx.query().matchGroup(query); - dbResults.forEach(e -> { - String key = e.owner().asEntity().getIID(); - result.put(key, new Hashtable()); - e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - LOGGER.info(json); - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - result.get(key).put(key2, value2); - }); - }); + private Pair extractPair(com.vaticle.typedb.client.api.answer.ConceptMap values, ObjectNode currentNode) { + var json = values.toJSON().get("attribute"); + var key = json.asObject().get("type").asString(); + var valueTmp = json.asObject().get("value"); + String value = ""; + if(valueTmp.isString()){ + value = valueTmp.asString(); } - - return result; + else + { + value = valueTmp.toString(); + } + return (new Pair<>(key, value)); } public ObjectNode getAllJSON(String query) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getAllJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); @@ -76,13 +66,8 @@ public ObjectNode getAllJSON(String query) { String key = e.owner().toJSON().toString().split("\"")[11]; ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - key2 = key2.replaceAll("^\"|\"$", ""); - value2 = value2.replaceAll("^\"|\"$", ""); - childNode.put(key2, value2); + var pair = extractPair(m, childNode); + childNode.put(pair.first(), pair.second()); }); rootNode.set(key, childNode); }); @@ -94,7 +79,7 @@ public ObjectNode getIIDJSON(String query) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getIIDJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); @@ -102,13 +87,8 @@ public ObjectNode getIIDJSON(String query) { String key = e.owner().asEntity().getIID(); ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - key2 = key2.replaceAll("^\"|\"$", ""); - value2 = value2.replaceAll("^\"|\"$", ""); - childNode.put(key2, value2); + var pair = extractPair(m, childNode); + childNode.put(pair.first(), pair.second()); }); rootNode.set(key, childNode); }); @@ -120,7 +100,7 @@ public ObjectNode getSchemaJSON(String query){ newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getSchemaJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { System.out.println("QUERY -> " + query); var dbResults = readTx.query().match(query); @@ -160,7 +140,7 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getListJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { @@ -169,14 +149,8 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, ObjectNode childNode = mapper.createObjectNode(); if(asAttribute){ e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - key2 = key2.replaceAll("^\"|\"$", ""); - value2 = value2.replaceAll("^\"|\"$", ""); - childNode.put(key2, value2); + var pair = extractPair(m, childNode); + childNode.put(pair.first(), pair.second()); }); } @@ -208,7 +182,7 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getListAttrJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { @@ -217,14 +191,8 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye ObjectNode childNode = mapper.createObjectNode(); if(asAttribute){ e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - key2 = key2.replaceAll("^\"|\"$", ""); - value2 = value2.replaceAll("^\"|\"$", ""); - childNode.put(key2, value2); + var pair = extractPair(m, childNode); + childNode.put(pair.first(), pair.second()); }); } @@ -276,7 +244,7 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - + LOGGER.info("getRelJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { @@ -284,21 +252,15 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ String key = e.owner().toJSON().toString().split("\"")[11]; ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var json = m.toJSON().get("attribute").toString(); - - var array = json.split(","); - String key2 = array[0].split("\":")[1]; - String value2 = array[2].split("\":")[1].split("}")[0]; - key2 = key2.replaceAll("^\"|\"$", ""); - value2 = value2.replaceAll("^\"|\"$", ""); - childNode.put(key2, value2); + var pair = extractPair(m, childNode); + childNode.put(pair.first(), pair.second()); }); String[] rolePlayersTmp = rolePlayers.split(";"); String queryBegin = "match $rel ("; for(int i = 0; i < rolePlayersTmp.length; i++){ - queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; + queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; } queryBegin = removeLastChar(queryBegin); queryBegin += ") isa " + relName +", has stix_id \"" + key + "\";"; @@ -326,7 +288,7 @@ public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfigurati this.client = client; if(this.client.databases().contains(appConfiguration.getDatabase())){ session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, - TypeDBOptions.core().infer(true)); + TypeDBOptions.core().infer(true)); } } @@ -343,4 +305,4 @@ private String removeFirstChar(String str) { } return str.substring(1); } -} +} \ No newline at end of file From bd9cba341e386bb7391a2e9c445edc421d99d3eb Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Fri, 30 Jun 2023 07:32:56 +0100 Subject: [PATCH 04/27] Refactor GetMapping names --- .../org/example/controllers/Controller.java | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index 71a7e9bc..59d1c2b7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -50,42 +50,42 @@ public Controller(AppConfiguration appConfiguration) { } @QueryMapping(value = "getMalware") - @GetMapping(value = "/getMalware", produces = "application/json") + @GetMapping(value = "/Malware", produces = "application/json") public ObjectNode getMalwareJSON(){ MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getMalwareBeans") + @GetMapping("/MalwareBeans") public Set getMalwareBeans() throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getAllBeans(); } @QueryMapping(value = "getThreatActor") - @GetMapping(value = "/getThreatActor", produces = "application/json") + @GetMapping(value = "/ThreatActor", produces = "application/json") public ObjectNode getThreatActorJSON(){ ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getThreatActorBeans") + @GetMapping("/ThreatActorBeans") public Set getThreatActorBeans() throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getAllBeans(); } @QueryMapping(value = "getFile") - @GetMapping(value = "/getFile", produces = "application/json") + @GetMapping(value = "/File", produces = "application/json") public ObjectNode getFileJSON(){ FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getFileBeans") + @GetMapping("/FileBeans") public Set getFileBeans() throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getAllBeans(); @@ -93,21 +93,21 @@ public Set getFileBeans() throws JsonProcessingException { @QueryMapping(value = "getIdentity") - @GetMapping(value = "/getIdentity", produces = "application/json") + @GetMapping(value = "/Identity", produces = "application/json") public ObjectNode getIdentityJSON(){ IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getIdentityBeans") + @GetMapping("/IdentityBeans") public Set getIdentityBeans() throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getAllBeans(); } @QueryMapping(value = "getIndicator") - @GetMapping(value = "/getIndicator", produces = "application/json") + @GetMapping(value = "/Indicator", produces = "application/json") public ObjectNode getIndicatorJSON(){ IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getAllJSON(); @@ -115,168 +115,168 @@ public ObjectNode getIndicatorJSON(){ @QueryMapping - @GetMapping("/getIndicatorBeans") + @GetMapping("/IndicatorBeans") public Set getIndicatorBeans() throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getAllBeans(); } @QueryMapping(value = "getClass") - @GetMapping(value = "/getClass", produces = "application/json") + @GetMapping(value = "/Class", produces = "application/json") public ObjectNode get_ClassJSON(){ ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getClassBeans") + @GetMapping("/ClassBeans") public Set get_ClassBeans() throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getAllBeans(); } @QueryMapping(value = "getGroup") - @GetMapping(value = "/getGroup", produces = "application/json") + @GetMapping(value = "/Group", produces = "application/json") public ObjectNode getGroupJSON(){ GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getGroupBeans") + @GetMapping("/GroupBeans") public Set getGroupBeans() throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getAllBeans(); } @QueryMapping(value = "getIdUnknown") - @GetMapping(value = "/getIdUnknown", produces = "application/json") + @GetMapping(value = "/IdUnknown", produces = "application/json") public ObjectNode getIdUnknownJSON(){ IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getIdUnknownBeans") + @GetMapping("/IdUnknownBeans") public Set getIdUnknownBeans() throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getAllBeans(); } @QueryMapping(value = "getIndividual") - @GetMapping(value = "/getIndividual", produces = "application/json") + @GetMapping(value = "/Individual", produces = "application/json") public ObjectNode getIndividualJSON(){ IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getIndividualBeans") + @GetMapping("/IndividualBeans") public Set getIndividualBeans() throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getAllBeans(); } @QueryMapping(value = "getSystem") - @GetMapping(value = "/getSystem", produces = "application/json") + @GetMapping(value = "/System", produces = "application/json") public ObjectNode getSystemJSON(){ SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getSystemBeans") + @GetMapping("/SystemBeans") public Set getSystemBeans() throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getAllBeans(); } @QueryMapping(value = "getKillChainPhase") - @GetMapping(value = "/getKillChainPhase", produces = "application/json") + @GetMapping(value = "/KillChainPhase", produces = "application/json") public ObjectNode getKillChainPhaseJSON(){ KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getAllJSON(); } @QueryMapping - @GetMapping("/getKillChainPhaseBeans") + @GetMapping("/KillChainPhaseBeans") public Set getKillChainPhaseBeans() throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getAllBeans(); } @QueryMapping(value = "getAttributedTo") - @GetMapping(value = "/getAttributedTo", produces = "application/json") + @GetMapping(value = "/AttributedTo", produces = "application/json") public ObjectNode getAttributedToJSON(){ AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); return attributedToDAO.getAllJSON(); } @QueryMapping(value = "getIndicates") - @GetMapping(value = "/getIndicates", produces = "application/json") + @GetMapping(value = "/Indicates", produces = "application/json") public ObjectNode getIndicatesJSON(){ IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); return indicatesDAO.getAllJSON(); } @QueryMapping(value = "getSighting") - @GetMapping(value = "/getSighting", produces = "application/json") + @GetMapping(value = "/Sighting", produces = "application/json") public ObjectNode getSightingJSON(){ SightingDAO sightingDAO = new SightingDAO(wrapper); return sightingDAO.getAllJSON(); } @QueryMapping(value = "getUses") - @GetMapping(value = "/getUses", produces = "application/json") + @GetMapping(value = "/Uses", produces = "application/json") public ObjectNode getUsesJSON(){ UsesDAO usesDAO = new UsesDAO(wrapper); return usesDAO.getAllJSON(); } @QueryMapping(value = "getTargets") - @GetMapping(value = "/getTargets", produces = "application/json") + @GetMapping(value = "/Targets", produces = "application/json") public ObjectNode getTargetsJSON(){ TargetsDAO targetsDAO = new TargetsDAO(wrapper); return targetsDAO.getAllJSON(); } @QueryMapping(value = "getImpersonates") - @GetMapping(value = "/getImpersonates", produces = "application/json") + @GetMapping(value = "/Impersonates", produces = "application/json") public ObjectNode getImpersonatesJSON(){ ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); return impersonatesDAO.getAllJSON(); } @QueryMapping(value = "getKillChainPhases") - @GetMapping(value = "/getKillChainPhases", produces = "application/json") + @GetMapping(value = "/KillChainPhases", produces = "application/json") public ObjectNode getKillChainPhasesJSON(){ KillChainPhasesDAO killChainPhasesDAO = new KillChainPhasesDAO(wrapper); return killChainPhasesDAO.getAllJSON(); } @QueryMapping(value = "getExternalReferences") - @GetMapping(value = "/getExternalReferences", produces = "application/json") + @GetMapping(value = "/ExternalReferences", produces = "application/json") public ObjectNode getExternalReferencesJSON(){ ExternalReferencesDAO externalReferencesDAO = new ExternalReferencesDAO(wrapper); return externalReferencesDAO.getAllJSON(); } @QueryMapping(value = "getCreatedBy") - @GetMapping(value = "/getCreatedBy", produces = "application/json") + @GetMapping(value = "/CreatedBy", produces = "application/json") public ObjectNode getCreatedByJSON(){ CreatedByDAO createdByDAO = new CreatedByDAO(wrapper); return createdByDAO.getAllJSON(); } @QueryMapping(value = "getHashes") - @GetMapping(value = "/getHashes", produces = "application/json") + @GetMapping(value = "/Hashes", produces = "application/json") public ObjectNode getHashesJSON(){ HashesDAO hashesDAO = new HashesDAO(wrapper); return hashesDAO.getAllJSON(); } @QueryMapping(value = "getThreatActorSearch") - @GetMapping(value = "/getThreatActor/{type}/{name}", produces = "application/json") + @GetMapping(value = "/ThreatActor/{type}/{name}", produces = "application/json") public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getSearchJSON(type, name); @@ -284,35 +284,35 @@ public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable Strin @QueryMapping(value = "getThreatActorSearchBeans") - @GetMapping("/getThreatActorBeans/{type}/{name}") + @GetMapping("/ThreatActorBeans/{type}/{name}") public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getSearchBeans(type, name); } @QueryMapping(value = "getMalwareSearch") - @GetMapping(value = "/getMalware/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Malware/{type}/{name}", produces = "application/json") public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getSearchJSON(type, name); } @QueryMapping(value = "getMalwareSearchBeans") - @GetMapping("/getMalwareBeans/{type}/{name}") + @GetMapping("/MalwareBeans/{type}/{name}") public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getSearchBeans(type, name); } @QueryMapping(value = "getFileSearch") - @GetMapping(value = "/getFile/{type}/{name}", produces = "application/json") + @GetMapping(value = "/File/{type}/{name}", produces = "application/json") public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getSearchJSON(type, name); } @QueryMapping(value = "getFileSearchBeans") - @GetMapping("/getFileBeans/{type}/{name}") + @GetMapping("/FileBeans/{type}/{name}") public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getSearchBeans(type, name); @@ -320,168 +320,168 @@ public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @QueryMapping(value = "getIdentitySearch") - @GetMapping(value = "/getIdentity/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Identity/{type}/{name}", produces = "application/json") public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIdentitySearchBeans") - @GetMapping("/getIdentityBeans/{type}/{name}") + @GetMapping("/IdentityBeans/{type}/{name}") public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIndicatorSearch") - @GetMapping(value = "/getIndicator/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Indicator/{type}/{name}", produces = "application/json") public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndicatorSearchBeans") - @GetMapping("/getIndicatorBeans/{type}/{name}") + @GetMapping("/IndicatorBeans/{type}/{name}") public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getSearchBeans(type, name); } @QueryMapping(value = "getClassSearch") - @GetMapping(value = "/getClass/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Class/{type}/{name}", produces = "application/json") public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getSearchJSON(type, name); } @QueryMapping(value = "getClassSearchBeans") - @GetMapping("/getClassBeans/{type}/{name}") + @GetMapping("/ClassBeans/{type}/{name}") public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getSearchBeans(type, name); } @QueryMapping(value = "getGroupSearch") - @GetMapping(value = "/getGroup/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Group/{type}/{name}", produces = "application/json") public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getSearchJSON(type, name); } @QueryMapping(value = "getGroupSearchBeans") - @GetMapping("/getGroupBeans/{type}/{name}") + @GetMapping("/GroupBeans/{type}/{name}") public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIdUnknownSearch") - @GetMapping(value = "/getIdUnknown/{type}/{name}", produces = "application/json") + @GetMapping(value = "/IdUnknown/{type}/{name}", produces = "application/json") public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIdUnknownSearchBeans") - @GetMapping("/getIdUnknownBeans/{type}/{name}") + @GetMapping("/IdUnknownBeans/{type}/{name}") public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIndividualSearch") - @GetMapping(value = "/getIndividual/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Individual/{type}/{name}", produces = "application/json") public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndividualSearchBeans") - @GetMapping("/getIndividualBeans/{type}/{name}") + @GetMapping("/IndividualBeans/{type}/{name}") public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getSearchBeans(type, name); } @QueryMapping(value = "getSystemSearch") - @GetMapping(value = "/getSystem/{type}/{name}", produces = "application/json") + @GetMapping(value = "/System/{type}/{name}", produces = "application/json") public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getSearchJSON(type, name); } @QueryMapping(value = "getSystemSearchBeans") - @GetMapping("/getSystemBeans/{type}/{name}") + @GetMapping("/SystemBeans/{type}/{name}") public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getSearchBeans(type, name); } @QueryMapping(value = "getKillChainPhaseSearch") - @GetMapping(value = "/getKillChainPhase/{type}/{name}", produces = "application/json") + @GetMapping(value = "/KillChainPhase/{type}/{name}", produces = "application/json") public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getSearchJSON(type, name); } @QueryMapping(value = "getKillChainPhaseSearchBeans") - @GetMapping("/getKillChainPhaseBeans/{type}/{name}") + @GetMapping("/KillChainPhaseBeans/{type}/{name}") public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getSearchBeans(type, name); } @QueryMapping(value = "getAttributedToSearch") - @GetMapping(value = "/getAttributedTo/{type}/{name}", produces = "application/json") + @GetMapping(value = "/AttributedTo/{type}/{name}", produces = "application/json") public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); return attributedToDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndicatesSearch") - @GetMapping(value = "/getIndicates/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Indicates/{type}/{name}", produces = "application/json") public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); return indicatesDAO.getSearchJSON(type, name); } @QueryMapping(value = "getSightingSearch") - @GetMapping(value = "/getSighting/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Sighting/{type}/{name}", produces = "application/json") public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ SightingDAO sightingDAO = new SightingDAO(wrapper); return sightingDAO.getSearchJSON(type, name); } @QueryMapping(value = "getUsesSearch") - @GetMapping(value = "/getUses/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Uses/{type}/{name}", produces = "application/json") public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ UsesDAO usesDAO = new UsesDAO(wrapper); return usesDAO.getSearchJSON(type, name); } @QueryMapping(value = "getTargetsSearch") - @GetMapping(value = "/getTargets/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Targets/{type}/{name}", produces = "application/json") public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ TargetsDAO targetsDAO = new TargetsDAO(wrapper); return targetsDAO.getSearchJSON(type, name); } @QueryMapping(value = "getImpersonatesSearch") - @GetMapping(value = "/getImpersonates/{type}/{name}", produces = "application/json") + @GetMapping(value = "/Impersonates/{type}/{name}", produces = "application/json") public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); return impersonatesDAO.getSearchJSON(type, name); } @QueryMapping - @GetMapping(value = "/getSchema", produces = "application/json") + @GetMapping(value = "/Schema", produces = "application/json") public ObjectNode getSchema(){ SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaAllJSON(); } @QueryMapping - @GetMapping(value = "/getSchemaCurrent", produces = "application/json") + @GetMapping(value = "/SchemaCurrent", produces = "application/json") public ObjectNode getSchemaCurrent(){ SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaCurrentJSON(); From 1cf534ae79693d531a4a774c7c08edb2009b198f Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Fri, 30 Jun 2023 07:59:59 +0100 Subject: [PATCH 05/27] Refactor DAOs --- .../java/org/example/db/AttributedToDAO.java | 8 ++++++-- .../src/main/java/org/example/db/ClassDAO.java | 14 +++++++++----- .../main/java/org/example/db/CreatedByDAO.java | 8 ++++++-- .../org/example/db/ExternalReferencesDAO.java | 8 ++++++-- .../src/main/java/org/example/db/FileDAO.java | 12 ++++++++---- .../src/main/java/org/example/db/GroupDAO.java | 12 ++++++++---- .../src/main/java/org/example/db/HashesDAO.java | 6 +++++- .../main/java/org/example/db/IdUnknownDAO.java | 12 ++++++++---- .../main/java/org/example/db/IdentityDAO.java | 12 ++++++++---- .../java/org/example/db/ImpersonatesDAO.java | 8 ++++++-- .../main/java/org/example/db/IndicatesDAO.java | 8 ++++++-- .../main/java/org/example/db/IndicatorDAO.java | 12 ++++++++---- .../main/java/org/example/db/IndividualDAO.java | 12 ++++++++---- .../java/org/example/db/KillChainPhaseDAO.java | 12 ++++++++---- .../java/org/example/db/KillChainPhasesDAO.java | 8 ++++++-- .../src/main/java/org/example/db/MalwareDAO.java | 12 ++++++++---- .../src/main/java/org/example/db/SchemaDAO.java | 8 ++++++-- .../main/java/org/example/db/SightingDAO.java | 8 ++++++-- .../src/main/java/org/example/db/SystemDAO.java | 12 ++++++++---- .../src/main/java/org/example/db/TargetsDAO.java | 8 ++++++-- .../main/java/org/example/db/ThreatActorDAO.java | 16 ++++++++-------- .../src/main/java/org/example/db/UsesDAO.java | 8 ++++++-- 22 files changed, 154 insertions(+), 70 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 96c78a05..c2bd82c2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -41,9 +41,13 @@ public AttributedToDAO(TypeDBSessionWrapper db) { typeString = attributed_to.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, attributed_to.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,attributed_to.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, attributed_to.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index fd059d96..0dce2622 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -46,9 +46,13 @@ public ClassDAO(TypeDBSessionWrapper db) { typeString = tempClass.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + CLASS_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + CLASS_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$class has " + type + " = " + name + ";"; var getQueryStr = "match " + CLASS_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -92,9 +96,9 @@ public Set getSearchBeans(String type, String name) throws JsonProcessing } String search = "$class has " + type + " = " + name + ";"; - String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index 7e42da2c..de1d23af 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -41,9 +41,13 @@ public CreatedByDAO(TypeDBSessionWrapper db) { typeString = created_by.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel ,created_by.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + CREATED_BY_MATCH + "group $ta; "; - return db.getListJSON(getQueryStr, nameRel ,created_by.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + CREATED_BY_MATCH + search + "group $ta;"; - return db.getListJSON(getQueryStr, nameRel, created_by.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index b75be5b2..208ad900 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -41,9 +41,13 @@ public ExternalReferencesDAO(TypeDBSessionWrapper db) { typeString = external_references.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel ,external_references.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + "group $ta; "; - return db.getListJSON(getQueryStr, nameRel ,external_references.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + search + "group $ta;"; - return db.getListJSON(getQueryStr, nameRel, external_references.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index 50b656d0..92f59392 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -46,9 +46,13 @@ public FileDAO(TypeDBSessionWrapper db) { typeString = tempFile.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + FILE_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + FILE_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$file has " + type + " = " + name + ";"; var getQueryStr = "match " + FILE_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProcessingE String search = "$file has " + type + " = " + name + ";"; String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index e1494bf2..d2abda26 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -46,9 +46,13 @@ public GroupDAO(TypeDBSessionWrapper db) { typeString = tempGroup.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + GROUP_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + GROUP_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$group has " + type + " = " + name + ";"; var getQueryStr = "match " + GROUP_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -95,7 +99,7 @@ public Set getSearchBeans(String type, String name) throws JsonProcessing String search = "$group has " + type + " = " + name + ";"; String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index a51cad4d..242d66a6 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -41,9 +41,13 @@ public HashesDAO(TypeDBSessionWrapper db) { typeString = hashes.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getListAttrJSON(getQueryStr, nameRel ,hashes.getRolePlayers(), true); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + HASHES_MATCH + "group $ta; "; - return db.getListAttrJSON(getQueryStr, nameRel ,hashes.getRolePlayers(), true); + return getJSON(getQueryStr); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 445933b7..fe3a88e7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -46,9 +46,13 @@ public IdUnknownDAO(TypeDBSessionWrapper db) { typeString = tempIdUnknown.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$idUnknown has " + type + " = " + name + ";"; var getQueryStr = "match " + IDUNKNOWN_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProces String search = "$idUnknown has " + type + " = " + name + ";"; String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index bc8e3209..9746e94c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -46,9 +46,13 @@ public IdentityDAO(TypeDBSessionWrapper db) { typeString = tempIdentity.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + IDENTITY_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$identity has " + type + " = " + name + ";"; var getQueryStr = "match " + IDENTITY_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProcess String search = "$identity has " + type + " = " + name + ";"; String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index 91409c4c..4354aad7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -42,9 +42,13 @@ public ImpersonatesDAO(TypeDBSessionWrapper db) { typeString = impersonates.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel ,impersonates.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + IMPERSONATES_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,impersonates.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -56,7 +60,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + IMPERSONATES_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, impersonates.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 999a4d05..627766d7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -41,9 +41,13 @@ public IndicatesDAO(TypeDBSessionWrapper db) { typeString = indicates.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel ,indicates.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + INDICATES_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,indicates.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + INDICATES_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, indicates.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index b8acf481..af3c5ec0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -46,9 +46,13 @@ public IndicatorDAO(TypeDBSessionWrapper db) { typeString = tempIndicator.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + INDICATOR_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$indicator has " + type + " = " + name + ";"; var getQueryStr = "match " + INDICATOR_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -95,7 +99,7 @@ public Set getSearchBeans(String type, String name) throws JsonProces String search = "$indicator has " + type + " = " + name + ";"; String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index b4c1f854..0dd64439 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -46,9 +46,13 @@ public IndividualDAO(TypeDBSessionWrapper db) { typeString = tempIndividual.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$individual has " + type + " = " + name + ";"; var getQueryStr = "match " + INDIVIDUAL_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProce String search = "$individual has " + type + " = " + name + ";"; String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 266b8e09..dcc749c4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -46,9 +46,13 @@ public KillChainPhaseDAO(TypeDBSessionWrapper db) { typeString = tempKillChainPhase.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$kill_chain_phase has " + type + " = " + name + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonP String search = "$kill_chain_phase has " + type + " = " + name + ";"; String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index ec4328d9..77030f12 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -40,9 +40,13 @@ public KillChainPhasesDAO(TypeDBSessionWrapper db) { typeString = kill_chain_phases.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel ,kill_chain_phases.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + "group $ta; "; - return db.getListJSON(getQueryStr, nameRel ,kill_chain_phases.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -54,7 +58,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + search + "group $ta;"; - return db.getListJSON(getQueryStr, nameRel, kill_chain_phases.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index 28c36803..c52c1162 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -46,9 +46,13 @@ public MalwareDAO(TypeDBSessionWrapper db) { typeString = tempMalware.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + MALWARE_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$malware has " + type + " = " + name + ";"; var getQueryStr = "match " + MALWARE_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProcessi String search = "$malware has " + type + " = " + name + ";"; String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java index 2f7e705e..29ee5c2f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -33,12 +33,16 @@ public SchemaDAO(TypeDBSessionWrapper db) { this.db = db; } + private ObjectNode getJSON(String query){ + return db.getSchemaJSON(query); + } + public ObjectNode getSchemaAllJSON(){ - return db.getSchemaJSON(queryAll); + return getJSON(queryAll); } public ObjectNode getSchemaCurrentJSON(){ - return db.getSchemaJSON(queryCurrent); + return getJSON(queryCurrent); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index 484ac259..f66897f7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -41,9 +41,13 @@ public SightingDAO(TypeDBSessionWrapper db) { typeString = sighting.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel ,sighting.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + SIGHTING_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,sighting.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + SIGHTING_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, sighting.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index 1ddb08f9..6eb306c2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -46,9 +46,13 @@ public SystemDAO(TypeDBSessionWrapper db) { typeString = tempSystem.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + SYSTEM_MATCH + "group $id; "; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -60,7 +64,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -76,7 +80,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$system has " + type + " = " + name + ";"; var getQueryStr = "match " + SYSTEM_MATCH + search + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -94,7 +98,7 @@ public Set getSearchBeans(String type, String name) throws JsonProcessin String search = "$system has " + type + " = " + name + ";"; String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index ee023cc8..83566c4e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -42,9 +42,13 @@ public TargetsDAO(TypeDBSessionWrapper db) { typeString = targets.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel ,targets.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + TARGETS_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,targets.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -56,7 +60,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + TARGETS_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, targets.getRolePlayers()); + return getJSON(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 9c3b5773..1f4b90f8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -43,19 +43,19 @@ public class ThreatActorDAO { " $ta isa threat_actor, has stix_id $id ,has $attribute;" + "$attribute isa! $j; "; - public ThreatActorDAO(){ - System.out.println("CONSTRUCTEUR DEFAULT"); - } public ThreatActorDAO(TypeDBSessionWrapper db) { - System.out.println("CONSTRUCTEUR DB"); this.db = db; ThreatActor tempThreatActor = new ThreatActor(); typeString = tempThreatActor.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + TA_MATCH + "group $id;"; - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getAllString() { @@ -67,7 +67,7 @@ public Set getAllBeans() throws JsonProcessingException { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + TA_MATCH + " group $id;"; - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); @@ -83,7 +83,7 @@ public ObjectNode getSearchJSON(String type, String name) { var getQueryStr = "match " + TA_MATCH + search + "group $id;"; System.out.println(getQueryStr); - return db.getAllJSON(getQueryStr); + return getJSON(getQueryStr); } public String getSearchString(String type, String name) { @@ -102,7 +102,7 @@ public Set getSearchBeans(String type, String name) throws JsonProc String getQueryStr = "match " + TA_MATCH + search + " group $id;"; System.out.println(getQueryStr); - ObjectNode json = db.getAllJSON(getQueryStr); + ObjectNode json = getJSON(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); Set result = new HashSet<>(test.values()); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index 6e2e555f..47c06448 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -41,9 +41,13 @@ public UsesDAO(TypeDBSessionWrapper db) { typeString = uses.getTypeString(); } + private ObjectNode getJSON(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel ,uses.getRolePlayers()); + } + public ObjectNode getAllJSON() { var getQueryStr = "match " + USES_MATCH + "group $id; "; - return db.getRelJSON(getQueryStr, nameRel ,uses.getRolePlayers()); + return getJSON(getQueryStr); } public ObjectNode getSearchJSON(String type, String name) { @@ -55,7 +59,7 @@ public ObjectNode getSearchJSON(String type, String name) { String search = "$ta has " + type + " = " + name + ";"; var getQueryStr = "match " + USES_MATCH + search + "group $id;"; - return db.getRelJSON(getQueryStr, nameRel, uses.getRolePlayers()); + return getJSON(getQueryStr); } } From cb097411900d13e50ea7fa7a8337d4db20a32efa Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Fri, 30 Jun 2023 08:16:23 +0100 Subject: [PATCH 06/27] Refactor DAOs --- .../java/org/example/db/AttributedToDAO.java | 8 ++++---- .../main/java/org/example/db/ClassDAO.java | 12 +++++------ .../java/org/example/db/CreatedByDAO.java | 8 ++++---- .../org/example/db/ExternalReferencesDAO.java | 8 ++++---- .../src/main/java/org/example/db/FileDAO.java | 20 +++++++++---------- .../main/java/org/example/db/GroupDAO.java | 20 +++++++++---------- .../java/org/example/db/IdUnknownDAO.java | 20 +++++++++---------- .../main/java/org/example/db/IdentityDAO.java | 20 +++++++++---------- .../java/org/example/db/ImpersonatesDAO.java | 8 ++++---- .../java/org/example/db/IndicatesDAO.java | 8 ++++---- .../java/org/example/db/IndicatorDAO.java | 20 +++++++++---------- .../java/org/example/db/IndividualDAO.java | 20 +++++++++---------- .../org/example/db/KillChainPhaseDAO.java | 20 +++++++++---------- .../org/example/db/KillChainPhasesDAO.java | 8 ++++---- .../main/java/org/example/db/MalwareDAO.java | 20 +++++++++---------- .../main/java/org/example/db/SightingDAO.java | 8 ++++---- .../main/java/org/example/db/SystemDAO.java | 20 +++++++++---------- .../main/java/org/example/db/TargetsDAO.java | 8 ++++---- .../java/org/example/db/ThreatActorDAO.java | 20 +++++++++---------- .../src/main/java/org/example/db/UsesDAO.java | 8 ++++---- 20 files changed, 142 insertions(+), 142 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index c2bd82c2..82d80f0a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index 0dce2622..2b2a1742 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -83,19 +83,19 @@ public ObjectNode getSearchJSON(String type, String name) { return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$class has " + type + " = " + name + ";"; + String search = "$class has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index de1d23af..c390b5c0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + CREATED_BY_MATCH + search + "group $ta;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 208ad900..586a442f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + search + "group $ta;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index 92f59392..88115300 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$file has " + type + " = " + name + ";"; + String search = "$file has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + FILE_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$file has " + type + " = " + name + ";"; + String search = "$file has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index d2abda26..647b25d8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -71,32 +71,32 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$group has " + type + " = " + name + ";"; + String search = "$group has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + GROUP_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { + public String getSearchString(String attrType, String attrName) { - return getSearchJSON(type, name).toString(); + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$group has " + type + " = " + name + ";"; + String search = "$group has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index fe3a88e7..138104c8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$idUnknown has " + type + " = " + name + ";"; + String search = "$idUnknown has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IDUNKNOWN_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$idUnknown has " + type + " = " + name + ";"; + String search = "$idUnknown has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index 9746e94c..11aef148 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$identity has " + type + " = " + name + ";"; + String search = "$identity has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IDENTITY_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$identity has " + type + " = " + name + ";"; + String search = "$identity has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index 4354aad7..37fe003b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -51,13 +51,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IMPERSONATES_MATCH + search + "group $id;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 627766d7..30834381 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDICATES_MATCH + search + "group $id;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index af3c5ec0..bb532ac2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -71,32 +71,32 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$indicator has " + type + " = " + name + ";"; + String search = "$indicator has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDICATOR_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { + public String getSearchString(String attrType, String attrName) { - return getSearchJSON(type, name).toString(); + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$indicator has " + type + " = " + name + ";"; + String search = "$indicator has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index 0dd64439..dee7278e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$individual has " + type + " = " + name + ";"; + String search = "$individual has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDIVIDUAL_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$individual has " + type + " = " + name + ";"; + String search = "$individual has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index dcc749c4..4f8fd575 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$kill_chain_phase has " + type + " = " + name + ";"; + String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$kill_chain_phase has " + type + " = " + name + ";"; + String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index 77030f12..9a5db440 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -49,13 +49,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + search + "group $ta;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index c52c1162..ce51299a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$malware has " + type + " = " + name + ";"; + String search = "$malware has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + MALWARE_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$malware has " + type + " = " + name + ";"; + String search = "$malware has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index f66897f7..d52c815d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + SIGHTING_MATCH + search + "group $id;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index 6eb306c2..a019fe13 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -71,31 +71,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$system has " + type + " = " + name + ";"; + String search = "$system has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + SYSTEM_MATCH + search + "group $id;"; return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$system has " + type + " = " + name + ";"; + String search = "$system has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; ObjectNode json = getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index 83566c4e..96411bc4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -51,13 +51,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + TARGETS_MATCH + search + "group $id;"; return getJSON(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 1f4b90f8..57c94f91 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -73,31 +73,31 @@ public Set getAllBeans() throws JsonProcessingException { return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + TA_MATCH + search + "group $id;"; System.out.println(getQueryStr); return getJSON(getQueryStr); } - public String getSearchString(String type, String name) { - return getSearchJSON(type, name).toString(); + public String getSearchString(String attrType, String attrName) { + return getSearchJSON(attrType, attrName).toString(); } - public Set getSearchBeans(String type, String name) throws JsonProcessingException { + public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + TA_MATCH + search + " group $id;"; System.out.println(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index 47c06448..c82e122a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -50,13 +50,13 @@ public ObjectNode getAllJSON() { return getJSON(getQueryStr); } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")){ - name = "\"" + name + "\""; + if (typeString.contains(" " + attrType + ";")){ + attrName = "\"" + attrName + "\""; } - String search = "$ta has " + type + " = " + name + ";"; + String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + USES_MATCH + search + "group $id;"; return getJSON(getQueryStr); From e7c6ba419019e6a627f33a706349ea0e304ab88e Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 09:59:46 +0100 Subject: [PATCH 07/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294022718 Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294023140 --- .../org/example/controllers/Controller.java | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index 59d1c2b7..606ef167 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -50,42 +50,42 @@ public Controller(AppConfiguration appConfiguration) { } @QueryMapping(value = "getMalware") - @GetMapping(value = "/Malware", produces = "application/json") + @GetMapping(value = "/malware", produces = "application/json") public ObjectNode getMalwareJSON(){ MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getAllJSON(); } @QueryMapping - @GetMapping("/MalwareBeans") + @GetMapping(value = "/malware-beans", produces = "application/json") public Set getMalwareBeans() throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getAllBeans(); } @QueryMapping(value = "getThreatActor") - @GetMapping(value = "/ThreatActor", produces = "application/json") + @GetMapping(value = "/threat-actor", produces = "application/json") public ObjectNode getThreatActorJSON(){ ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getAllJSON(); } @QueryMapping - @GetMapping("/ThreatActorBeans") + @GetMapping(value = "/threat-actor-beans", produces = "application/json") public Set getThreatActorBeans() throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getAllBeans(); } @QueryMapping(value = "getFile") - @GetMapping(value = "/File", produces = "application/json") + @GetMapping(value = "/file", produces = "application/json") public ObjectNode getFileJSON(){ FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getAllJSON(); } @QueryMapping - @GetMapping("/FileBeans") + @GetMapping(value = "/file-beans", produces = "application/json") public Set getFileBeans() throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getAllBeans(); @@ -93,21 +93,21 @@ public Set getFileBeans() throws JsonProcessingException { @QueryMapping(value = "getIdentity") - @GetMapping(value = "/Identity", produces = "application/json") + @GetMapping(value = "/identity", produces = "application/json") public ObjectNode getIdentityJSON(){ IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getAllJSON(); } @QueryMapping - @GetMapping("/IdentityBeans") + @GetMapping(value = "/identity-beans", produces = "application/json") public Set getIdentityBeans() throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getAllBeans(); } @QueryMapping(value = "getIndicator") - @GetMapping(value = "/Indicator", produces = "application/json") + @GetMapping(value = "/indicator", produces = "application/json") public ObjectNode getIndicatorJSON(){ IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getAllJSON(); @@ -115,168 +115,168 @@ public ObjectNode getIndicatorJSON(){ @QueryMapping - @GetMapping("/IndicatorBeans") + @GetMapping(value = "/indicator-beans", produces = "application/json") public Set getIndicatorBeans() throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getAllBeans(); } @QueryMapping(value = "getClass") - @GetMapping(value = "/Class", produces = "application/json") + @GetMapping(value = "/class", produces = "application/json") public ObjectNode get_ClassJSON(){ ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getAllJSON(); } @QueryMapping - @GetMapping("/ClassBeans") + @GetMapping(value = "/class-beans", produces = "application/json") public Set get_ClassBeans() throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getAllBeans(); } @QueryMapping(value = "getGroup") - @GetMapping(value = "/Group", produces = "application/json") + @GetMapping(value = "/group", produces = "application/json") public ObjectNode getGroupJSON(){ GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getAllJSON(); } @QueryMapping - @GetMapping("/GroupBeans") + @GetMapping(value = "/group-beans", produces = "application/json") public Set getGroupBeans() throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getAllBeans(); } @QueryMapping(value = "getIdUnknown") - @GetMapping(value = "/IdUnknown", produces = "application/json") + @GetMapping(value = "/id-unknown", produces = "application/json") public ObjectNode getIdUnknownJSON(){ IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getAllJSON(); } @QueryMapping - @GetMapping("/IdUnknownBeans") + @GetMapping(value = "/id-unknown-beans", produces = "application/json") public Set getIdUnknownBeans() throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getAllBeans(); } @QueryMapping(value = "getIndividual") - @GetMapping(value = "/Individual", produces = "application/json") + @GetMapping(value = "/individual", produces = "application/json") public ObjectNode getIndividualJSON(){ IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getAllJSON(); } @QueryMapping - @GetMapping("/IndividualBeans") + @GetMapping(value = "/individual-beans", produces = "application/json") public Set getIndividualBeans() throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getAllBeans(); } @QueryMapping(value = "getSystem") - @GetMapping(value = "/System", produces = "application/json") + @GetMapping(value = "/system", produces = "application/json") public ObjectNode getSystemJSON(){ SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getAllJSON(); } @QueryMapping - @GetMapping("/SystemBeans") + @GetMapping(value = "/system-beans", produces = "application/json") public Set getSystemBeans() throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getAllBeans(); } @QueryMapping(value = "getKillChainPhase") - @GetMapping(value = "/KillChainPhase", produces = "application/json") + @GetMapping(value = "/kill-chain-phase", produces = "application/json") public ObjectNode getKillChainPhaseJSON(){ KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getAllJSON(); } @QueryMapping - @GetMapping("/KillChainPhaseBeans") + @GetMapping(value = "/kill-chain-phase-beans", produces = "application/json") public Set getKillChainPhaseBeans() throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getAllBeans(); } @QueryMapping(value = "getAttributedTo") - @GetMapping(value = "/AttributedTo", produces = "application/json") + @GetMapping(value = "/attributed-to", produces = "application/json") public ObjectNode getAttributedToJSON(){ AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); return attributedToDAO.getAllJSON(); } @QueryMapping(value = "getIndicates") - @GetMapping(value = "/Indicates", produces = "application/json") + @GetMapping(value = "/indicates", produces = "application/json") public ObjectNode getIndicatesJSON(){ IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); return indicatesDAO.getAllJSON(); } @QueryMapping(value = "getSighting") - @GetMapping(value = "/Sighting", produces = "application/json") + @GetMapping(value = "/sighting", produces = "application/json") public ObjectNode getSightingJSON(){ SightingDAO sightingDAO = new SightingDAO(wrapper); return sightingDAO.getAllJSON(); } @QueryMapping(value = "getUses") - @GetMapping(value = "/Uses", produces = "application/json") + @GetMapping(value = "/uses", produces = "application/json") public ObjectNode getUsesJSON(){ UsesDAO usesDAO = new UsesDAO(wrapper); return usesDAO.getAllJSON(); } @QueryMapping(value = "getTargets") - @GetMapping(value = "/Targets", produces = "application/json") + @GetMapping(value = "/targets", produces = "application/json") public ObjectNode getTargetsJSON(){ TargetsDAO targetsDAO = new TargetsDAO(wrapper); return targetsDAO.getAllJSON(); } @QueryMapping(value = "getImpersonates") - @GetMapping(value = "/Impersonates", produces = "application/json") + @GetMapping(value = "/impersonates", produces = "application/json") public ObjectNode getImpersonatesJSON(){ ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); return impersonatesDAO.getAllJSON(); } @QueryMapping(value = "getKillChainPhases") - @GetMapping(value = "/KillChainPhases", produces = "application/json") + @GetMapping(value = "/kill-chain-phases", produces = "application/json") public ObjectNode getKillChainPhasesJSON(){ KillChainPhasesDAO killChainPhasesDAO = new KillChainPhasesDAO(wrapper); return killChainPhasesDAO.getAllJSON(); } @QueryMapping(value = "getExternalReferences") - @GetMapping(value = "/ExternalReferences", produces = "application/json") + @GetMapping(value = "/external-references", produces = "application/json") public ObjectNode getExternalReferencesJSON(){ ExternalReferencesDAO externalReferencesDAO = new ExternalReferencesDAO(wrapper); return externalReferencesDAO.getAllJSON(); } @QueryMapping(value = "getCreatedBy") - @GetMapping(value = "/CreatedBy", produces = "application/json") + @GetMapping(value = "/created-by", produces = "application/json") public ObjectNode getCreatedByJSON(){ CreatedByDAO createdByDAO = new CreatedByDAO(wrapper); return createdByDAO.getAllJSON(); } @QueryMapping(value = "getHashes") - @GetMapping(value = "/Hashes", produces = "application/json") + @GetMapping(value = "/hashes", produces = "application/json") public ObjectNode getHashesJSON(){ HashesDAO hashesDAO = new HashesDAO(wrapper); return hashesDAO.getAllJSON(); } @QueryMapping(value = "getThreatActorSearch") - @GetMapping(value = "/ThreatActor/{type}/{name}", produces = "application/json") + @GetMapping(value = "/threat-actor/{type}/{name}", produces = "application/json") public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getSearchJSON(type, name); @@ -284,35 +284,35 @@ public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable Strin @QueryMapping(value = "getThreatActorSearchBeans") - @GetMapping("/ThreatActorBeans/{type}/{name}") + @GetMapping("/threat-actor-beans/{type}/{name}") public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); return threatActorDAO.getSearchBeans(type, name); } @QueryMapping(value = "getMalwareSearch") - @GetMapping(value = "/Malware/{type}/{name}", produces = "application/json") + @GetMapping(value = "/malware/{type}/{name}", produces = "application/json") public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getSearchJSON(type, name); } @QueryMapping(value = "getMalwareSearchBeans") - @GetMapping("/MalwareBeans/{type}/{name}") + @GetMapping("/malware-beans/{type}/{name}") public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); return malwareDAO.getSearchBeans(type, name); } @QueryMapping(value = "getFileSearch") - @GetMapping(value = "/File/{type}/{name}", produces = "application/json") + @GetMapping(value = "/file/{type}/{name}", produces = "application/json") public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getSearchJSON(type, name); } @QueryMapping(value = "getFileSearchBeans") - @GetMapping("/FileBeans/{type}/{name}") + @GetMapping("/file-beans/{type}/{name}") public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); return fileDAO.getSearchBeans(type, name); @@ -320,168 +320,168 @@ public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @QueryMapping(value = "getIdentitySearch") - @GetMapping(value = "/Identity/{type}/{name}", produces = "application/json") + @GetMapping(value = "/identity/{type}/{name}", produces = "application/json") public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIdentitySearchBeans") - @GetMapping("/IdentityBeans/{type}/{name}") + @GetMapping("/identity-beans/{type}/{name}") public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); return identityDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIndicatorSearch") - @GetMapping(value = "/Indicator/{type}/{name}", produces = "application/json") + @GetMapping(value = "/indicator/{type}/{name}", produces = "application/json") public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndicatorSearchBeans") - @GetMapping("/IndicatorBeans/{type}/{name}") + @GetMapping("/indicator-beans/{type}/{name}") public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); return indicatorDAO.getSearchBeans(type, name); } @QueryMapping(value = "getClassSearch") - @GetMapping(value = "/Class/{type}/{name}", produces = "application/json") + @GetMapping(value = "/class/{type}/{name}", produces = "application/json") public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getSearchJSON(type, name); } @QueryMapping(value = "getClassSearchBeans") - @GetMapping("/ClassBeans/{type}/{name}") + @GetMapping("/class-beans/{type}/{name}") public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.getSearchBeans(type, name); } @QueryMapping(value = "getGroupSearch") - @GetMapping(value = "/Group/{type}/{name}", produces = "application/json") + @GetMapping(value = "/group/{type}/{name}", produces = "application/json") public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getSearchJSON(type, name); } @QueryMapping(value = "getGroupSearchBeans") - @GetMapping("/GroupBeans/{type}/{name}") + @GetMapping("/group-beans/{type}/{name}") public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); return groupDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIdUnknownSearch") - @GetMapping(value = "/IdUnknown/{type}/{name}", produces = "application/json") + @GetMapping(value = "/id-unknown/{type}/{name}", produces = "application/json") public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIdUnknownSearchBeans") - @GetMapping("/IdUnknownBeans/{type}/{name}") + @GetMapping("/id-unknown-beans/{type}/{name}") public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); return idUnknownDAO.getSearchBeans(type, name); } @QueryMapping(value = "getIndividualSearch") - @GetMapping(value = "/Individual/{type}/{name}", produces = "application/json") + @GetMapping(value = "/individual/{type}/{name}", produces = "application/json") public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndividualSearchBeans") - @GetMapping("/IndividualBeans/{type}/{name}") + @GetMapping("/individual-beans/{type}/{name}") public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); return individualDAO.getSearchBeans(type, name); } @QueryMapping(value = "getSystemSearch") - @GetMapping(value = "/System/{type}/{name}", produces = "application/json") + @GetMapping(value = "/system/{type}/{name}", produces = "application/json") public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getSearchJSON(type, name); } @QueryMapping(value = "getSystemSearchBeans") - @GetMapping("/SystemBeans/{type}/{name}") + @GetMapping("/system-beans/{type}/{name}") public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); return systemDAO.getSearchBeans(type, name); } @QueryMapping(value = "getKillChainPhaseSearch") - @GetMapping(value = "/KillChainPhase/{type}/{name}", produces = "application/json") + @GetMapping(value = "/kill-chain-phase/{type}/{name}", produces = "application/json") public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getSearchJSON(type, name); } @QueryMapping(value = "getKillChainPhaseSearchBeans") - @GetMapping("/KillChainPhaseBeans/{type}/{name}") + @GetMapping("/kill-chain-phase-beans/{type}/{name}") public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); return killChainPhaseDAO.getSearchBeans(type, name); } @QueryMapping(value = "getAttributedToSearch") - @GetMapping(value = "/AttributedTo/{type}/{name}", produces = "application/json") + @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); return attributedToDAO.getSearchJSON(type, name); } @QueryMapping(value = "getIndicatesSearch") - @GetMapping(value = "/Indicates/{type}/{name}", produces = "application/json") + @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); return indicatesDAO.getSearchJSON(type, name); } @QueryMapping(value = "getSightingSearch") - @GetMapping(value = "/Sighting/{type}/{name}", produces = "application/json") + @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ SightingDAO sightingDAO = new SightingDAO(wrapper); return sightingDAO.getSearchJSON(type, name); } @QueryMapping(value = "getUsesSearch") - @GetMapping(value = "/Uses/{type}/{name}", produces = "application/json") + @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ UsesDAO usesDAO = new UsesDAO(wrapper); return usesDAO.getSearchJSON(type, name); } @QueryMapping(value = "getTargetsSearch") - @GetMapping(value = "/Targets/{type}/{name}", produces = "application/json") + @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ TargetsDAO targetsDAO = new TargetsDAO(wrapper); return targetsDAO.getSearchJSON(type, name); } @QueryMapping(value = "getImpersonatesSearch") - @GetMapping(value = "/Impersonates/{type}/{name}", produces = "application/json") + @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); return impersonatesDAO.getSearchJSON(type, name); } @QueryMapping - @GetMapping(value = "/Schema", produces = "application/json") + @GetMapping(value = "/schema", produces = "application/json") public ObjectNode getSchema(){ SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaAllJSON(); } @QueryMapping - @GetMapping(value = "/SchemaCurrent", produces = "application/json") + @GetMapping(value = "/schema-current", produces = "application/json") public ObjectNode getSchemaCurrent(){ SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaCurrentJSON(); From fd1bdc4ec11bb28677a55e453759a6f85bb7daa6 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 15:18:39 +0100 Subject: [PATCH 08/27] Resolve some naming problems + delete methods to retrieve Objects as String. --- .../src/main/java/org/example/Main.java | 10 +- .../org/example/controllers/Controller.java | 208 +++++++++--------- .../java/org/example/db/AttributedToDAO.java | 19 +- .../main/java/org/example/db/ClassDAO.java | 41 ++-- .../java/org/example/db/CreatedByDAO.java | 19 +- .../org/example/db/ExternalReferencesDAO.java | 18 +- .../src/main/java/org/example/db/FileDAO.java | 42 ++-- .../main/java/org/example/db/GroupDAO.java | 42 ++-- .../main/java/org/example/db/HashesDAO.java | 14 +- .../java/org/example/db/IdUnknownDAO.java | 41 ++-- .../main/java/org/example/db/IdentityDAO.java | 43 ++-- .../java/org/example/db/ImpersonatesDAO.java | 20 +- .../java/org/example/db/IndicatesDAO.java | 20 +- .../java/org/example/db/IndicatorDAO.java | 42 ++-- .../java/org/example/db/IndividualDAO.java | 41 ++-- .../org/example/db/KillChainPhaseDAO.java | 41 ++-- .../org/example/db/KillChainPhasesDAO.java | 18 +- .../main/java/org/example/db/MalwareDAO.java | 41 ++-- .../main/java/org/example/db/SchemaDAO.java | 11 +- .../main/java/org/example/db/SightingDAO.java | 20 +- .../main/java/org/example/db/SystemDAO.java | 44 ++-- .../main/java/org/example/db/TargetsDAO.java | 20 +- .../java/org/example/db/ThreatActorDAO.java | 50 ++--- .../org/example/db/TypeDBSessionWrapper.java | 72 +++--- .../src/main/java/org/example/db/UsesDAO.java | 20 +- .../java/org/example/model/AttributedTo.java | 4 +- .../main/java/org/example/model/Class.java | 2 +- .../java/org/example/model/CreatedBy.java | 4 +- .../org/example/model/ExternalReferences.java | 4 +- .../src/main/java/org/example/model/File.java | 4 +- .../main/java/org/example/model/Group.java | 2 +- .../main/java/org/example/model/Hashes.java | 4 +- .../java/org/example/model/IdUnknown.java | 2 +- .../main/java/org/example/model/Identity.java | 5 +- .../java/org/example/model/Impersonates.java | 6 +- .../java/org/example/model/Indicates.java | 6 +- .../java/org/example/model/Indicator.java | 2 - .../java/org/example/model/Individual.java | 2 +- .../org/example/model/KillChainPhase.java | 2 +- .../org/example/model/KillChainPhases.java | 4 +- .../main/java/org/example/model/Sighting.java | 6 +- .../org/example/model/StixCoreObject.java | 17 +- .../model/StixCyberObservableObject.java | 4 +- .../org/example/model/StixDomainObject.java | 5 +- .../main/java/org/example/model/System.java | 2 +- .../main/java/org/example/model/Targets.java | 6 +- .../java/org/example/model/ThreatActor.java | 3 +- .../src/main/java/org/example/model/Uses.java | 6 +- .../main/java/org/example/web/CTIBean.java | 2 +- 49 files changed, 491 insertions(+), 570 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java index bbd6eb65..f43e341f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java @@ -30,10 +30,10 @@ //@EnableConfigurationProperties(AppConfiguration.class) public class Main { - @Autowired - private AppConfiguration appConfiguration; + @Autowired + private AppConfiguration appConfiguration; - public static void main(String[] args) { - SpringApplication.run(Main.class, args); - } + public static void main(String[] args) { + SpringApplication.run(Main.class, args); + } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index 606ef167..b60b7792 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -27,13 +27,15 @@ import com.vaticle.typedb.client.api.TypeDBClient; import org.example.configuration.AppConfiguration; import org.example.db.*; -import org.example.model.*; import org.example.model.Class; import org.example.model.System; +import org.example.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.graphql.data.method.annotation.Argument; -import org.springframework.web.bind.annotation.*; import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; import java.util.Set; import java.util.logging.Logger; @@ -51,66 +53,66 @@ public Controller(AppConfiguration appConfiguration) { @QueryMapping(value = "getMalware") @GetMapping(value = "/malware", produces = "application/json") - public ObjectNode getMalwareJSON(){ + public ObjectNode getMalwareJSON() { MalwareDAO malwareDAO = new MalwareDAO(wrapper); - return malwareDAO.getAllJSON(); + return malwareDAO.findAll(); } @QueryMapping @GetMapping(value = "/malware-beans", produces = "application/json") public Set getMalwareBeans() throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); - return malwareDAO.getAllBeans(); + return malwareDAO.findAllBeans(); } @QueryMapping(value = "getThreatActor") @GetMapping(value = "/threat-actor", produces = "application/json") - public ObjectNode getThreatActorJSON(){ + public ObjectNode getThreatActorJSON() { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); - return threatActorDAO.getAllJSON(); + return threatActorDAO.findAll(); } @QueryMapping @GetMapping(value = "/threat-actor-beans", produces = "application/json") public Set getThreatActorBeans() throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); - return threatActorDAO.getAllBeans(); + return threatActorDAO.findAllBeans(); } @QueryMapping(value = "getFile") @GetMapping(value = "/file", produces = "application/json") - public ObjectNode getFileJSON(){ + public ObjectNode getFileJSON() { FileDAO fileDAO = new FileDAO(wrapper); - return fileDAO.getAllJSON(); + return fileDAO.findALl(); } @QueryMapping @GetMapping(value = "/file-beans", produces = "application/json") public Set getFileBeans() throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); - return fileDAO.getAllBeans(); + return fileDAO.findAllBeans(); } @QueryMapping(value = "getIdentity") @GetMapping(value = "/identity", produces = "application/json") - public ObjectNode getIdentityJSON(){ + public ObjectNode getIdentityJSON() { IdentityDAO identityDAO = new IdentityDAO(wrapper); - return identityDAO.getAllJSON(); + return identityDAO.findAll(); } @QueryMapping @GetMapping(value = "/identity-beans", produces = "application/json") public Set getIdentityBeans() throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); - return identityDAO.getAllBeans(); + return identityDAO.findAllBeans(); } @QueryMapping(value = "getIndicator") @GetMapping(value = "/indicator", produces = "application/json") - public ObjectNode getIndicatorJSON(){ + public ObjectNode getIndicatorJSON() { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); - return indicatorDAO.getAllJSON(); + return indicatorDAO.findAll(); } @@ -118,168 +120,168 @@ public ObjectNode getIndicatorJSON(){ @GetMapping(value = "/indicator-beans", produces = "application/json") public Set getIndicatorBeans() throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); - return indicatorDAO.getAllBeans(); + return indicatorDAO.findAllBeans(); } @QueryMapping(value = "getClass") @GetMapping(value = "/class", produces = "application/json") - public ObjectNode get_ClassJSON(){ + public ObjectNode get_ClassJSON() { ClassDAO classDAO = new ClassDAO(wrapper); - return classDAO.getAllJSON(); + return classDAO.findAll(); } @QueryMapping @GetMapping(value = "/class-beans", produces = "application/json") public Set get_ClassBeans() throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); - return classDAO.getAllBeans(); + return classDAO.findAllBeans(); } @QueryMapping(value = "getGroup") @GetMapping(value = "/group", produces = "application/json") - public ObjectNode getGroupJSON(){ + public ObjectNode getGroupJSON() { GroupDAO groupDAO = new GroupDAO(wrapper); - return groupDAO.getAllJSON(); + return groupDAO.findAll(); } @QueryMapping @GetMapping(value = "/group-beans", produces = "application/json") public Set getGroupBeans() throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); - return groupDAO.getAllBeans(); + return groupDAO.findAllBeans(); } @QueryMapping(value = "getIdUnknown") @GetMapping(value = "/id-unknown", produces = "application/json") - public ObjectNode getIdUnknownJSON(){ + public ObjectNode getIdUnknownJSON() { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); - return idUnknownDAO.getAllJSON(); + return idUnknownDAO.findAll(); } @QueryMapping @GetMapping(value = "/id-unknown-beans", produces = "application/json") public Set getIdUnknownBeans() throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); - return idUnknownDAO.getAllBeans(); + return idUnknownDAO.findAllBeans(); } @QueryMapping(value = "getIndividual") @GetMapping(value = "/individual", produces = "application/json") - public ObjectNode getIndividualJSON(){ + public ObjectNode getIndividualJSON() { IndividualDAO individualDAO = new IndividualDAO(wrapper); - return individualDAO.getAllJSON(); + return individualDAO.findAll(); } @QueryMapping @GetMapping(value = "/individual-beans", produces = "application/json") public Set getIndividualBeans() throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); - return individualDAO.getAllBeans(); + return individualDAO.findAllBeans(); } @QueryMapping(value = "getSystem") @GetMapping(value = "/system", produces = "application/json") - public ObjectNode getSystemJSON(){ + public ObjectNode getSystemJSON() { SystemDAO systemDAO = new SystemDAO(wrapper); - return systemDAO.getAllJSON(); + return systemDAO.findAll(); } @QueryMapping @GetMapping(value = "/system-beans", produces = "application/json") public Set getSystemBeans() throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); - return systemDAO.getAllBeans(); + return systemDAO.findAllBeans(); } @QueryMapping(value = "getKillChainPhase") @GetMapping(value = "/kill-chain-phase", produces = "application/json") - public ObjectNode getKillChainPhaseJSON(){ + public ObjectNode getKillChainPhaseJSON() { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); - return killChainPhaseDAO.getAllJSON(); + return killChainPhaseDAO.findAll(); } @QueryMapping @GetMapping(value = "/kill-chain-phase-beans", produces = "application/json") public Set getKillChainPhaseBeans() throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); - return killChainPhaseDAO.getAllBeans(); + return killChainPhaseDAO.findAllBeans(); } @QueryMapping(value = "getAttributedTo") @GetMapping(value = "/attributed-to", produces = "application/json") - public ObjectNode getAttributedToJSON(){ + public ObjectNode getAttributedToJSON() { AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); - return attributedToDAO.getAllJSON(); + return attributedToDAO.findAll(); } @QueryMapping(value = "getIndicates") @GetMapping(value = "/indicates", produces = "application/json") - public ObjectNode getIndicatesJSON(){ + public ObjectNode getIndicatesJSON() { IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); - return indicatesDAO.getAllJSON(); + return indicatesDAO.findAll(); } @QueryMapping(value = "getSighting") @GetMapping(value = "/sighting", produces = "application/json") - public ObjectNode getSightingJSON(){ + public ObjectNode getSightingJSON() { SightingDAO sightingDAO = new SightingDAO(wrapper); - return sightingDAO.getAllJSON(); + return sightingDAO.findAll(); } @QueryMapping(value = "getUses") @GetMapping(value = "/uses", produces = "application/json") - public ObjectNode getUsesJSON(){ + public ObjectNode getUsesJSON() { UsesDAO usesDAO = new UsesDAO(wrapper); - return usesDAO.getAllJSON(); + return usesDAO.findAll(); } @QueryMapping(value = "getTargets") @GetMapping(value = "/targets", produces = "application/json") - public ObjectNode getTargetsJSON(){ + public ObjectNode getTargetsJSON() { TargetsDAO targetsDAO = new TargetsDAO(wrapper); - return targetsDAO.getAllJSON(); + return targetsDAO.findAll(); } @QueryMapping(value = "getImpersonates") @GetMapping(value = "/impersonates", produces = "application/json") - public ObjectNode getImpersonatesJSON(){ + public ObjectNode getImpersonatesJSON() { ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); - return impersonatesDAO.getAllJSON(); + return impersonatesDAO.findAll(); } @QueryMapping(value = "getKillChainPhases") @GetMapping(value = "/kill-chain-phases", produces = "application/json") - public ObjectNode getKillChainPhasesJSON(){ + public ObjectNode getKillChainPhasesJSON() { KillChainPhasesDAO killChainPhasesDAO = new KillChainPhasesDAO(wrapper); - return killChainPhasesDAO.getAllJSON(); + return killChainPhasesDAO.findAll(); } @QueryMapping(value = "getExternalReferences") @GetMapping(value = "/external-references", produces = "application/json") - public ObjectNode getExternalReferencesJSON(){ + public ObjectNode getExternalReferencesJSON() { ExternalReferencesDAO externalReferencesDAO = new ExternalReferencesDAO(wrapper); - return externalReferencesDAO.getAllJSON(); + return externalReferencesDAO.findAll(); } @QueryMapping(value = "getCreatedBy") @GetMapping(value = "/created-by", produces = "application/json") - public ObjectNode getCreatedByJSON(){ + public ObjectNode getCreatedByJSON() { CreatedByDAO createdByDAO = new CreatedByDAO(wrapper); - return createdByDAO.getAllJSON(); + return createdByDAO.findAll(); } @QueryMapping(value = "getHashes") @GetMapping(value = "/hashes", produces = "application/json") - public ObjectNode getHashesJSON(){ + public ObjectNode getHashesJSON() { HashesDAO hashesDAO = new HashesDAO(wrapper); - return hashesDAO.getAllJSON(); + return hashesDAO.findAll(); } @QueryMapping(value = "getThreatActorSearch") @GetMapping(value = "/threat-actor/{type}/{name}", produces = "application/json") - public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); - return threatActorDAO.getSearchJSON(type, name); + return threatActorDAO.search(type, name); } @@ -287,204 +289,204 @@ public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable Strin @GetMapping("/threat-actor-beans/{type}/{name}") public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); - return threatActorDAO.getSearchBeans(type, name); + return threatActorDAO.searchBeans(type, name); } @QueryMapping(value = "getMalwareSearch") @GetMapping(value = "/malware/{type}/{name}", produces = "application/json") - public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { MalwareDAO malwareDAO = new MalwareDAO(wrapper); - return malwareDAO.getSearchJSON(type, name); + return malwareDAO.search(type, name); } @QueryMapping(value = "getMalwareSearchBeans") @GetMapping("/malware-beans/{type}/{name}") public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { MalwareDAO malwareDAO = new MalwareDAO(wrapper); - return malwareDAO.getSearchBeans(type, name); + return malwareDAO.searchBeans(type, name); } @QueryMapping(value = "getFileSearch") @GetMapping(value = "/file/{type}/{name}", produces = "application/json") - public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { FileDAO fileDAO = new FileDAO(wrapper); - return fileDAO.getSearchJSON(type, name); + return fileDAO.search(type, name); } @QueryMapping(value = "getFileSearchBeans") @GetMapping("/file-beans/{type}/{name}") public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { FileDAO fileDAO = new FileDAO(wrapper); - return fileDAO.getSearchBeans(type, name); + return fileDAO.searchBeans(type, name); } @QueryMapping(value = "getIdentitySearch") @GetMapping(value = "/identity/{type}/{name}", produces = "application/json") - public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { IdentityDAO identityDAO = new IdentityDAO(wrapper); - return identityDAO.getSearchJSON(type, name); + return identityDAO.search(type, name); } @QueryMapping(value = "getIdentitySearchBeans") @GetMapping("/identity-beans/{type}/{name}") public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdentityDAO identityDAO = new IdentityDAO(wrapper); - return identityDAO.getSearchBeans(type, name); + return identityDAO.searchBeans(type, name); } @QueryMapping(value = "getIndicatorSearch") @GetMapping(value = "/indicator/{type}/{name}", produces = "application/json") - public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); - return indicatorDAO.getSearchJSON(type, name); + return indicatorDAO.search(type, name); } @QueryMapping(value = "getIndicatorSearchBeans") @GetMapping("/indicator-beans/{type}/{name}") public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); - return indicatorDAO.getSearchBeans(type, name); + return indicatorDAO.searchBeans(type, name); } @QueryMapping(value = "getClassSearch") @GetMapping(value = "/class/{type}/{name}", produces = "application/json") - public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { ClassDAO classDAO = new ClassDAO(wrapper); - return classDAO.getSearchJSON(type, name); + return classDAO.search(type, name); } @QueryMapping(value = "getClassSearchBeans") @GetMapping("/class-beans/{type}/{name}") public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); - return classDAO.getSearchBeans(type, name); + return classDAO.searchBeans(type, name); } @QueryMapping(value = "getGroupSearch") @GetMapping(value = "/group/{type}/{name}", produces = "application/json") - public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { GroupDAO groupDAO = new GroupDAO(wrapper); - return groupDAO.getSearchJSON(type, name); + return groupDAO.search(type, name); } @QueryMapping(value = "getGroupSearchBeans") @GetMapping("/group-beans/{type}/{name}") public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { GroupDAO groupDAO = new GroupDAO(wrapper); - return groupDAO.getSearchBeans(type, name); + return groupDAO.searchBeans(type, name); } @QueryMapping(value = "getIdUnknownSearch") @GetMapping(value = "/id-unknown/{type}/{name}", produces = "application/json") - public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); - return idUnknownDAO.getSearchJSON(type, name); + return idUnknownDAO.search(type, name); } @QueryMapping(value = "getIdUnknownSearchBeans") @GetMapping("/id-unknown-beans/{type}/{name}") public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); - return idUnknownDAO.getSearchBeans(type, name); + return idUnknownDAO.searchBeans(type, name); } @QueryMapping(value = "getIndividualSearch") @GetMapping(value = "/individual/{type}/{name}", produces = "application/json") - public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { IndividualDAO individualDAO = new IndividualDAO(wrapper); - return individualDAO.getSearchJSON(type, name); + return individualDAO.search(type, name); } @QueryMapping(value = "getIndividualSearchBeans") @GetMapping("/individual-beans/{type}/{name}") public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { IndividualDAO individualDAO = new IndividualDAO(wrapper); - return individualDAO.getSearchBeans(type, name); + return individualDAO.searchBeans(type, name); } @QueryMapping(value = "getSystemSearch") @GetMapping(value = "/system/{type}/{name}", produces = "application/json") - public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { SystemDAO systemDAO = new SystemDAO(wrapper); - return systemDAO.getSearchJSON(type, name); + return systemDAO.search(type, name); } @QueryMapping(value = "getSystemSearchBeans") @GetMapping("/system-beans/{type}/{name}") public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { SystemDAO systemDAO = new SystemDAO(wrapper); - return systemDAO.getSearchBeans(type, name); + return systemDAO.searchBeans(type, name); } @QueryMapping(value = "getKillChainPhaseSearch") @GetMapping(value = "/kill-chain-phase/{type}/{name}", produces = "application/json") - public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); - return killChainPhaseDAO.getSearchJSON(type, name); + return killChainPhaseDAO.search(type, name); } @QueryMapping(value = "getKillChainPhaseSearchBeans") @GetMapping("/kill-chain-phase-beans/{type}/{name}") public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); - return killChainPhaseDAO.getSearchBeans(type, name); + return killChainPhaseDAO.searchBeans(type, name); } @QueryMapping(value = "getAttributedToSearch") @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") - public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); - return attributedToDAO.getSearchJSON(type, name); + return attributedToDAO.search(type, name); } @QueryMapping(value = "getIndicatesSearch") @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") - public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); - return indicatesDAO.getSearchJSON(type, name); + return indicatesDAO.search(type, name); } @QueryMapping(value = "getSightingSearch") @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") - public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { SightingDAO sightingDAO = new SightingDAO(wrapper); - return sightingDAO.getSearchJSON(type, name); + return sightingDAO.search(type, name); } @QueryMapping(value = "getUsesSearch") @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") - public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { UsesDAO usesDAO = new UsesDAO(wrapper); - return usesDAO.getSearchJSON(type, name); + return usesDAO.search(type, name); } @QueryMapping(value = "getTargetsSearch") @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") - public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { TargetsDAO targetsDAO = new TargetsDAO(wrapper); - return targetsDAO.getSearchJSON(type, name); + return targetsDAO.search(type, name); } @QueryMapping(value = "getImpersonatesSearch") @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") - public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name){ + public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); - return impersonatesDAO.getSearchJSON(type, name); + return impersonatesDAO.search(type, name); } @QueryMapping @GetMapping(value = "/schema", produces = "application/json") - public ObjectNode getSchema(){ + public ObjectNode getSchema() { SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaAllJSON(); } @QueryMapping @GetMapping(value = "/schema-current", produces = "application/json") - public ObjectNode getSchemaCurrent(){ + public ObjectNode getSchemaCurrent() { SchemaDAO schemaDAO = new SchemaDAO(wrapper); return schemaDAO.getSchemaCurrentJSON(); } - + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 82d80f0a..8495dd00 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -25,15 +25,14 @@ import org.example.model.AttributedTo; public class AttributedToDAO { + protected static final String ATTRIBUTED_TO_MATCH = + "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final AttributedTo attributed_to; - private final String nameRel = "attributed_to"; private final String typeString; - protected static final String ATTRIBUTED_TO_MATCH = - "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public AttributedToDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +40,25 @@ public AttributedToDAO(TypeDBSessionWrapper db) { typeString = attributed_to.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getRelJSON(getQueryStr, nameRel, attributed_to.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index 2b2a1742..af7b2ee4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -33,12 +33,11 @@ import java.util.Set; public class ClassDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String CLASS_MATCH = " $class isa class, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; public ClassDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +45,54 @@ public ClassDAO(TypeDBSessionWrapper db) { typeString = tempClass.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + CLASS_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getAllString() { - return getAllJSON().toString(); - } - - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + CLASS_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String type, String name) { + public ObjectNode search(String type, String name) { - if (typeString.contains(" " + type + ";")){ + if (typeString.contains(" " + type + ";")) { name = "\"" + name + "\""; } String search = "$class has " + type + " = " + name + ";"; var getQueryStr = "match " + CLASS_MATCH + search + "group $id;"; - return getJSON(getQueryStr); - } - - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); + return find(getQueryStr); } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$class has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index c390b5c0..d9150a77 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -25,15 +25,14 @@ import org.example.model.CreatedBy; public class CreatedByDAO { - + protected static final String CREATED_BY_MATCH = + "$ta (creator: $AAA, created: $BBB) isa created_by;"; private final TypeDBSessionWrapper db; private final CreatedBy created_by; private final String nameRel = "created_by"; private final String typeString; - protected static final String CREATED_BY_MATCH = - "$ta (creator: $AAA, created: $BBB) isa created_by;"; public CreatedByDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +40,25 @@ public CreatedByDAO(TypeDBSessionWrapper db) { typeString = created_by.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel ,created_by.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel, created_by.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + CREATED_BY_MATCH + "group $ta; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + CREATED_BY_MATCH + search + "group $ta;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 586a442f..6307cb91 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -26,14 +26,14 @@ import org.example.model.ExternalReferences; public class ExternalReferencesDAO { + protected static final String EXTERNAL_REFERENCES_MATCH = + "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; private final TypeDBSessionWrapper db; private final ExternalReferences external_references; private final String nameRel = "external_references"; private final String typeString; - protected static final String EXTERNAL_REFERENCES_MATCH = - "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; public ExternalReferencesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +41,25 @@ public ExternalReferencesDAO(TypeDBSessionWrapper db) { typeString = external_references.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel ,external_references.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel, external_references.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + "group $ta; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + search + "group $ta;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index 88115300..bba36977 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class FileDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String FILE_MATCH = " $file isa file, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public FileDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,54 @@ public FileDAO(TypeDBSessionWrapper db) { typeString = tempFile.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findALl() { var getQueryStr = "match " + FILE_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + FILE_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$file has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + FILE_MATCH + search + "group $id;"; - return getJSON(getQueryStr); - } - - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); + return find(getQueryStr); } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$file has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index 647b25d8..523df691 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class GroupDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String GROUP_MATCH = " $group isa group, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public GroupDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,61 +46,55 @@ public GroupDAO(TypeDBSessionWrapper db) { typeString = tempGroup.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + GROUP_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + GROUP_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$group has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + GROUP_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$group has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index 242d66a6..33f020e3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -25,15 +25,14 @@ import org.example.model.Hashes; public class HashesDAO { - + protected static final String HASHES_MATCH = + "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; private final TypeDBSessionWrapper db; private final Hashes hashes; private final String nameRel = "hashes"; private final String typeString; - protected static final String HASHES_MATCH = - "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; public HashesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,14 +40,13 @@ public HashesDAO(TypeDBSessionWrapper db) { typeString = hashes.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getListAttrJSON(getQueryStr, nameRel ,hashes.getRolePlayers(), true); + private ObjectNode find(String getQueryStr) { + return db.getListAttrJSON(getQueryStr, nameRel, hashes.getRolePlayers(), true); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + HASHES_MATCH + "group $ta; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 138104c8..46021b91 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class IdUnknownDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String IDUNKNOWN_MATCH = " $idUnknown isa id_unknown, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public IdUnknownDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,55 @@ public IdUnknownDAO(TypeDBSessionWrapper db) { typeString = tempIdUnknown.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$idUnknown has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IDUNKNOWN_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$idUnknown has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index 11aef148..ff70fc8d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class IdentityDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String IDENTITY_MATCH = " $identity isa identity, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public IdentityDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,55 @@ public IdentityDAO(TypeDBSessionWrapper db) { typeString = tempIdentity.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + IDENTITY_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getAllString() { - return getAllJSON().toString(); - } - - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$identity has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IDENTITY_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$identity has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; @@ -107,5 +102,3 @@ public Set getSearchBeans(String attrType, String attrName) throws Jso } - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index 37fe003b..967e3381 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -26,15 +26,15 @@ import org.example.model.Impersonates; public class ImpersonatesDAO { + protected static final String IMPERSONATES_MATCH = + "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final Impersonates impersonates; private final String nameRel = "impersonates"; private final String typeString; - protected static final String IMPERSONATES_MATCH = - "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public ImpersonatesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -42,25 +42,25 @@ public ImpersonatesDAO(TypeDBSessionWrapper db) { typeString = impersonates.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel ,impersonates.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, impersonates.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + IMPERSONATES_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + IMPERSONATES_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 30834381..ff32b1f6 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -25,15 +25,15 @@ import org.example.model.Indicates; public class IndicatesDAO { + protected static final String INDICATES_MATCH = + "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final Indicates indicates; private final String nameRel = "indicates"; private final String typeString; - protected static final String INDICATES_MATCH = - "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public IndicatesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +41,25 @@ public IndicatesDAO(TypeDBSessionWrapper db) { typeString = indicates.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel ,indicates.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, indicates.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + INDICATES_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDICATES_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index bb532ac2..b178a366 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class IndicatorDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String INDICATOR_MATCH = " $indicator isa indicator, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public IndicatorDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,61 +46,55 @@ public IndicatorDAO(TypeDBSessionWrapper db) { typeString = tempIndicator.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + INDICATOR_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$indicator has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDICATOR_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$indicator has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index dee7278e..a519ac78 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class IndividualDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String INDIVIDUAL_MATCH = " $individual isa individual, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public IndividualDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,55 @@ public IndividualDAO(TypeDBSessionWrapper db) { typeString = tempIndividual.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$individual has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + INDIVIDUAL_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$individual has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 4f8fd575..53cc0c21 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class KillChainPhaseDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String KILL_CHAIN_PHASE_MATCH = " $kill_chain_phase isa kill_chain_phase, has kill_chain_name $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public KillChainPhaseDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,55 @@ public KillChainPhaseDAO(TypeDBSessionWrapper db) { typeString = tempKillChainPhase.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - - public String getAllString() { - return getAllJSON().toString(); + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index 9a5db440..9289af4f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -25,14 +25,14 @@ import org.example.model.KillChainPhases; public class KillChainPhasesDAO { + protected static final String KILL_CHAIN_PHASES_MATCH = + "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; private final TypeDBSessionWrapper db; private final KillChainPhases kill_chain_phases; private final String nameRel = "kill_chain_phases"; private final String typeString; - protected static final String KILL_CHAIN_PHASES_MATCH = - "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; public KillChainPhasesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -40,25 +40,25 @@ public KillChainPhasesDAO(TypeDBSessionWrapper db) { typeString = kill_chain_phases.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel ,kill_chain_phases.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getListJSON(getQueryStr, nameRel, kill_chain_phases.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + "group $ta; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + search + "group $ta;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index ce51299a..4f8b5980 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class MalwareDAO { + protected static final String MALWARE_MATCH = + " $malware isa malware, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; TypeDBSessionWrapper db; String typeString; - protected static final String MALWARE_MATCH = - " $malware isa malware, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public MalwareDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,55 @@ public MalwareDAO(TypeDBSessionWrapper db) { typeString = tempMalware.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + MALWARE_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getAllString() { - return getAllJSON().toString(); - } - - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$malware has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + MALWARE_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$malware has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java index 29ee5c2f..e5cd3752 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -25,7 +25,6 @@ public class SchemaDAO { private final TypeDBSessionWrapper db; - private final String queryAll = "match $z sub thing;"; private final String queryCurrent = "match $x isa $y; get $y;"; @@ -33,16 +32,16 @@ public SchemaDAO(TypeDBSessionWrapper db) { this.db = db; } - private ObjectNode getJSON(String query){ + private ObjectNode find(String query) { return db.getSchemaJSON(query); } - public ObjectNode getSchemaAllJSON(){ - return getJSON(queryAll); + public ObjectNode getSchemaAllJSON() { + return find(queryAll); } - public ObjectNode getSchemaCurrentJSON(){ - return getJSON(queryCurrent); + public ObjectNode getSchemaCurrentJSON() { + return find(queryCurrent); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index d52c815d..dbd7899c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -25,15 +25,15 @@ import org.example.model.Sighting; public class SightingDAO { + protected static final String SIGHTING_MATCH = + "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final Sighting sighting; private final String nameRel = "sighting"; private final String typeString; - protected static final String SIGHTING_MATCH = - "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public SightingDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +41,25 @@ public SightingDAO(TypeDBSessionWrapper db) { typeString = sighting.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel ,sighting.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, sighting.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + SIGHTING_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + SIGHTING_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index a019fe13..41a9d1ea 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -33,12 +33,12 @@ import java.util.Set; public class SystemDAO { - TypeDBSessionWrapper db; - String typeString; - protected static final String SYSTEM_MATCH = " $system isa system, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + TypeDBSessionWrapper db; + String typeString; + public SystemDAO(TypeDBSessionWrapper db) { this.db = db; @@ -46,60 +46,54 @@ public SystemDAO(TypeDBSessionWrapper db) { typeString = tempSystem.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - - public ObjectNode getAllJSON() { - var getQueryStr = "match " + SYSTEM_MATCH + "group $id; "; - return getJSON(getQueryStr); - } - public String getAllString() { - return getAllJSON().toString(); + public ObjectNode findAll() { + var getQueryStr = "match " + SYSTEM_MATCH + "group $id; "; + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$system has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + SYSTEM_MATCH + search + "group $id;"; - return getJSON(getQueryStr); - } - - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); + return find(getQueryStr); } - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$system has " + attrType + " = " + attrName + ";"; String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index 96411bc4..eeac0819 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -26,15 +26,15 @@ import org.example.model.Targets; public class TargetsDAO { + protected static final String TARGETS_MATCH = + "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final Targets targets; private final String nameRel = "targets"; private final String typeString; - protected static final String TARGETS_MATCH = - "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public TargetsDAO(TypeDBSessionWrapper db) { this.db = db; @@ -42,25 +42,25 @@ public TargetsDAO(TypeDBSessionWrapper db) { typeString = targets.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel ,targets.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, targets.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + TARGETS_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + TARGETS_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 57c94f91..9cdf6dfe 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -34,14 +34,14 @@ import java.util.Set; public class ThreatActorDAO { - @Autowired - private TypeDBSessionWrapper db; - - private String typeString; - protected static final String TA_MATCH = " $ta isa threat_actor, has stix_id $id ,has $attribute;" + "$attribute isa! $j; "; + @Autowired + private final TypeDBSessionWrapper db; + + private final String typeString; + public ThreatActorDAO(TypeDBSessionWrapper db) { this.db = db; @@ -49,33 +49,31 @@ public ThreatActorDAO(TypeDBSessionWrapper db) { typeString = tempThreatActor.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { + private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - - public ObjectNode getAllJSON() { - var getQueryStr = "match " + TA_MATCH + "group $id;"; - return getJSON(getQueryStr); - } - public String getAllString() { - return getAllJSON().toString(); + public ObjectNode findAll() { + var getQueryStr = "match " + TA_MATCH + "group $id;"; + return find(getQueryStr); } - public Set getAllBeans() throws JsonProcessingException { + public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String getQueryStr = "match " + TA_MATCH + " group $id;"; - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - public ObjectNode getSearchJSON(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + public ObjectNode search(String attrType, String attrName) { + + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } @@ -83,17 +81,13 @@ public ObjectNode getSearchJSON(String attrType, String attrName) { var getQueryStr = "match " + TA_MATCH + search + "group $id;"; System.out.println(getQueryStr); - return getJSON(getQueryStr); + return find(getQueryStr); } - public String getSearchString(String attrType, String attrName) { - return getSearchJSON(attrType, attrName).toString(); - } - - public Set getSearchBeans(String attrType, String attrName) throws JsonProcessingException { + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } @@ -102,13 +96,13 @@ public Set getSearchBeans(String attrType, String attrName) throws String getQueryStr = "match " + TA_MATCH + search + " group $id;"; System.out.println(getQueryStr); - ObjectNode json = getJSON(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>(){}); + ObjectNode json = find(getQueryStr); + Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + }); Set result = new HashSet<>(test.values()); return result; } - } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index a9dddb9c..829692e6 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -28,27 +28,26 @@ import com.vaticle.typedb.client.api.TypeDBOptions; import com.vaticle.typedb.client.api.TypeDBSession; import com.vaticle.typedb.client.api.TypeDBTransaction; +import com.vaticle.typedb.client.api.answer.ConceptMap; import com.vaticle.typedb.common.collection.Pair; import org.example.configuration.AppConfiguration; + import java.util.logging.Logger; public class TypeDBSessionWrapper { - - private final AppConfiguration appConfiguration; private static final Logger LOGGER = Logger.getLogger("TypeDBSessionWrapper"); + private final AppConfiguration appConfiguration; private final TypeDBClient client; private TypeDBSession session; - private Pair extractPair(com.vaticle.typedb.client.api.answer.ConceptMap values, ObjectNode currentNode) { + private Pair extractPair(ConceptMap values, ObjectNode currentNode) { var json = values.toJSON().get("attribute"); var key = json.asObject().get("type").asString(); var valueTmp = json.asObject().get("value"); String value = ""; - if(valueTmp.isString()){ + if (valueTmp.isString()) { value = valueTmp.asString(); - } - else - { + } else { value = valueTmp.toString(); } return (new Pair<>(key, value)); @@ -58,7 +57,6 @@ public ObjectNode getAllJSON(String query) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getAllJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); @@ -79,7 +77,6 @@ public ObjectNode getIIDJSON(String query) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getIIDJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); @@ -96,11 +93,10 @@ public ObjectNode getIIDJSON(String query) { return rootNode; } - public ObjectNode getSchemaJSON(String query){ + public ObjectNode getSchemaJSON(String query) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getSchemaJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { System.out.println("QUERY -> " + query); var dbResults = readTx.query().match(query); @@ -112,13 +108,13 @@ public ObjectNode getSchemaJSON(String query){ String key = e.map().toString().split(" ")[0]; String value = e.map().toString().split(" ")[1]; value = value.substring(0, value.length() - 2); - if(key.charAt(3) == 'E'){ + if (key.charAt(3) == 'E') { ent.add(value); } - if(key.charAt(3) == 'A'){ + if (key.charAt(3) == 'A') { att.add(value); } - if(key.charAt(3) == 'R'){ + if (key.charAt(3) == 'R') { rel.add(value); } @@ -132,22 +128,21 @@ public ObjectNode getSchemaJSON(String query){ } - public ObjectNode getListJSON(String query, String relName, String rolePlayers){ + public ObjectNode getListJSON(String query, String relName, String rolePlayers) { return getListJSON(query, relName, rolePlayers, false); } - public ObjectNode getListJSON(String query, String relName, String rolePlayers, boolean asAttribute){ + public ObjectNode getListJSON(String query, String relName, String rolePlayers, boolean asAttribute) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getListJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { String key = e.owner().asRelation().getIID(); ObjectNode childNode = mapper.createObjectNode(); - if(asAttribute){ + if (asAttribute) { e.conceptMaps().forEach(m -> { var pair = extractPair(m, childNode); childNode.put(pair.first(), pair.second()); @@ -157,16 +152,16 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, String[] rolePlayersTmp = rolePlayers.split(";"); String queryBegin = "match $rel ("; - for(int i = 0; i < rolePlayersTmp.length; i++){ + for (int i = 0; i < rolePlayersTmp.length; i++) { queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; } queryBegin = removeLastChar(queryBegin); - queryBegin += ") isa " + relName +"; $rel iid " + key + ";"; + queryBegin += ") isa " + relName + "; $rel iid " + key + ";"; - for(int i = 0; i < rolePlayersTmp.length; i++){ + for (int i = 0; i < rolePlayersTmp.length; i++) { String queryTmp = queryBegin; - queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r"+ i +";"; + queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r" + i + ";"; var nodeTmp = getIIDJSON(queryTmp); childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); } @@ -178,18 +173,17 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, return rootNode; } - public ObjectNode getListAttrJSON(String query, String relName, String rolePlayers, boolean asAttribute){ + public ObjectNode getListAttrJSON(String query, String relName, String rolePlayers, boolean asAttribute) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getListAttrJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { String key = e.owner().asRelation().getIID(); ObjectNode childNode = mapper.createObjectNode(); - if(asAttribute){ + if (asAttribute) { e.conceptMaps().forEach(m -> { var pair = extractPair(m, childNode); childNode.put(pair.first(), pair.second()); @@ -199,22 +193,21 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye String[] rolePlayersTmp = rolePlayers.split(";"); String queryBegin = "match $rel ("; - for(int i = 0; i < rolePlayersTmp.length; i++){ + for (int i = 0; i < rolePlayersTmp.length; i++) { queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; } queryBegin = removeLastChar(queryBegin); - queryBegin += ") isa " + relName +"; $rel iid " + key + ";"; + queryBegin += ") isa " + relName + "; $rel iid " + key + ";"; - for(int i = 0; i < rolePlayersTmp.length; i++){ + for (int i = 0; i < rolePlayersTmp.length; i++) { String queryTmp = queryBegin; - if(i != 0){ - queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r"+ i +";"; + if (i != 0) { + queryTmp += "$r" + i + " has $attribute; $attribute isa! $i; group $r" + i + ";"; var nodeTmp = getIIDJSON(queryTmp); childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); - } - else{ - queryTmp += " group $r"+ i +";"; + } else { + queryTmp += " group $r" + i + ";"; var dbResults2 = readTx.query().matchGroup(query); dbResults2.forEach(w -> { @@ -240,11 +233,10 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye return rootNode; } - public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ + public ObjectNode getRelJSON(String query, String relName, String rolePlayers) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - LOGGER.info("getRelJSON"); try (TypeDBTransaction readTx = session.transaction(TypeDBTransaction.Type.READ)) { var dbResults = readTx.query().matchGroup(query); dbResults.forEach(e -> { @@ -259,12 +251,12 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ String[] rolePlayersTmp = rolePlayers.split(";"); String queryBegin = "match $rel ("; - for(int i = 0; i < rolePlayersTmp.length; i++){ + for (int i = 0; i < rolePlayersTmp.length; i++) { queryBegin += rolePlayersTmp[i] + ": $r" + i + ","; } queryBegin = removeLastChar(queryBegin); - queryBegin += ") isa " + relName +", has stix_id \"" + key + "\";"; - for(int i = 0; i < rolePlayersTmp.length; i++){ + queryBegin += ") isa " + relName + ", has stix_id \"" + key + "\";"; + for (int i = 0; i < rolePlayersTmp.length; i++) { String queryTmp = queryBegin; queryTmp += "$r" + i + " has $attribute, has stix_id $id; $attribute isa! $i; group $id;"; var nodeTmp = getAllJSON(queryTmp); @@ -278,7 +270,7 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers){ return rootNode; } - public void newSession(){ + public void newSession() { session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, TypeDBOptions.core().infer(true)); } @@ -286,7 +278,7 @@ public void newSession(){ public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfiguration) { this.appConfiguration = appConfiguration; this.client = client; - if(this.client.databases().contains(appConfiguration.getDatabase())){ + if (this.client.databases().contains(appConfiguration.getDatabase())) { session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, TypeDBOptions.core().infer(true)); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index c82e122a..3b79995b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -25,15 +25,15 @@ import org.example.model.Uses; public class UsesDAO { + protected static final String USES_MATCH = + "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final Uses uses; private final String nameRel = "uses"; private final String typeString; - protected static final String USES_MATCH = - "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; public UsesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -41,25 +41,25 @@ public UsesDAO(TypeDBSessionWrapper db) { typeString = uses.getTypeString(); } - private ObjectNode getJSON(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel ,uses.getRolePlayers()); + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, uses.getRolePlayers()); } - public ObjectNode getAllJSON() { + public ObjectNode findAll() { var getQueryStr = "match " + USES_MATCH + "group $id; "; - return getJSON(getQueryStr); + return find(getQueryStr); } - public ObjectNode getSearchJSON(String attrType, String attrName) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")){ + if (typeString.contains(" " + attrType + ";")) { attrName = "\"" + attrName + "\""; } String search = "$ta has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + USES_MATCH + search + "group $id;"; - return getJSON(getQueryStr); + return find(getQueryStr); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java index d5e178fb..d1781f01 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java @@ -33,10 +33,10 @@ public class AttributedTo { private Date modified; @JsonIgnore - private String typeString = " stix_id; spec_version;"; + private final String typeString = " stix_id; spec_version;"; @JsonIgnore - private String rolePlayers = " attributing; attributed;"; + private final String rolePlayers = " attributing; attributed;"; public String getSpec_version() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java index 8ca2b09a..3d6554ef 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java @@ -21,7 +21,7 @@ package org.example.model; -public class Class extends Identity{ +public class Class extends Identity { public Class() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java index 3a112f82..52ea1047 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java @@ -25,10 +25,10 @@ public class CreatedBy { @JsonIgnore - private String typeString = ""; + private final String typeString = ""; @JsonIgnore - private String rolePlayers = " creator; created;"; + private final String rolePlayers = " creator; created;"; public String getTypeString() { return typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java index ff149c5e..9070d79a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java @@ -25,10 +25,10 @@ public class ExternalReferences { @JsonIgnore - private String typeString = ""; + private final String typeString = ""; @JsonIgnore - private String rolePlayers = " referencing; referenced;"; + private final String rolePlayers = " referencing; referenced;"; public String getTypeString() { return typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java index fd4cf9ac..6a4783bb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java @@ -25,7 +25,7 @@ import java.util.Date; -public class File extends StixCyberObservableObject{ +public class File extends StixCyberObservableObject { private Integer size; private String name; private String name_enc; @@ -35,7 +35,7 @@ public class File extends StixCyberObservableObject{ private Date mtime; private Date atime; @JsonIgnore - private String typeString = super.getTypeString() + " name; name_enc; magic_number_hex; mime_type;"; + private final String typeString = super.getTypeString() + " name; name_enc; magic_number_hex; mime_type;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java index 9c500412..65b77e42 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java @@ -21,7 +21,7 @@ package org.example.model; -public class Group extends Identity{ +public class Group extends Identity { public Group() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java index 7116c1b2..bfd15fda 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java @@ -28,10 +28,10 @@ public class Hashes { private String hash_algorithm; @JsonIgnore - private String typeString = " hash_algorithm;"; + private final String typeString = " hash_algorithm;"; @JsonIgnore - private String rolePlayers = " hash_value; hashes_owner;"; + private final String rolePlayers = " hash_value; hashes_owner;"; public String getTypeString() { return typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java index 8a641ad6..3fb07e8b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java @@ -21,7 +21,7 @@ package org.example.model; -public class IdUnknown extends Identity{ +public class IdUnknown extends Identity { public IdUnknown() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java index 5a28c2a2..db4d47ef 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java @@ -32,9 +32,10 @@ public class Identity extends StixDomainObject { private String contact_information; @JsonIgnore - private String typeString = super.getTypeString() + " name; description; stix_role; identity_class; sector; contact_information;"; + private final String typeString = super.getTypeString() + " name; description; stix_role; identity_class; sector; contact_information;"; - public Identity(){} + public Identity() { + } @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java index b72f4763..5bcfe453 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java @@ -23,12 +23,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; -public class Impersonates extends StixCoreRelationship{ +public class Impersonates extends StixCoreRelationship { @JsonIgnore - private String typeString = super.getTypeString(); + private final String typeString = super.getTypeString(); @JsonIgnore - private String rolePlayers = " impersonating; impersonated;"; + private final String rolePlayers = " impersonating; impersonated;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java index 6f72e95c..99cadfcb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java @@ -23,13 +23,13 @@ import com.fasterxml.jackson.annotation.JsonIgnore; -public class Indicates extends StixCoreRelationship{ +public class Indicates extends StixCoreRelationship { @JsonIgnore - private String typeString = super.getTypeString(); + private final String typeString = super.getTypeString(); @JsonIgnore - private String rolePlayers = " indicating; indicated;"; + private final String rolePlayers = " indicating; indicated;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java index 3331b7ec..021856e2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java @@ -22,8 +22,6 @@ package org.example.model; import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Builder; -import lombok.Data; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java index 3a198754..1f3e4fe3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java @@ -21,7 +21,7 @@ package org.example.model; -public class Individual extends Identity{ +public class Individual extends Identity { public Individual() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java index 85842370..24aad39d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; -public class KillChainPhase extends StixSubObject{ +public class KillChainPhase extends StixSubObject { private String kill_chain_name; private String kill_chain_phase_name; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java index 50e30eb3..eb75c844 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java @@ -25,10 +25,10 @@ public class KillChainPhases { @JsonIgnore - private String typeString = ""; + private final String typeString = ""; @JsonIgnore - private String rolePlayers = " using; used;"; + private final String rolePlayers = " using; used;"; public String getTypeString() { return typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java index 90742fa7..77950fcc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java @@ -25,7 +25,7 @@ import java.util.Date; -public class Sighting extends StixCoreRelationship{ +public class Sighting extends StixCoreRelationship { private Date first_seen; private Date last_seen; @@ -34,10 +34,10 @@ public class Sighting extends StixCoreRelationship{ private String summary; @JsonIgnore - private String typeString = super.getTypeString() + " summary;"; + private final String typeString = super.getTypeString() + " summary;"; @JsonIgnore - private String rolePlayers = " sighting_of; observed_data;"; + private final String rolePlayers = " sighting_of; observed_data;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java index 224c51e5..7ee94bf9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java @@ -24,27 +24,22 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class StixCoreObject { - - private String spec_version; - @JsonIgnore private String typeList = ""; + + + @JsonIgnore private String typeString = " spec_version;"; + private String spec_version; public StixCoreObject() { } - - public String getTypeList() { - return typeList; - } - public String getTypeString() { return typeString; } - - public void setTypeString(String typeString) { - this.typeString = typeString; + public String getTypeList() { + return typeList; } public StixCoreObject(String spec_version) { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java index cfafa3fd..c0698dc8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java @@ -27,9 +27,9 @@ public class StixCyberObservableObject extends StixCoreObject { private String defanged; @JsonIgnore - private String typeList = super.getTypeList(); + private final String typeList = super.getTypeList(); @JsonIgnore - private String typeString = super.getTypeString() + " defanged;"; + private final String typeString = super.getTypeString() + " defanged;"; @Override public String getTypeList() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java index 9e98b4df..242463dc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java @@ -41,14 +41,15 @@ public class StixDomainObject extends StixCoreObject { private String langs; @JsonIgnore - private String typeList = super.getTypeList() + " labels;"; + private final String typeList = super.getTypeList() + " labels;"; @JsonIgnore - private String typeString = super.getTypeString() + " labels; langs;"; + private final String typeString = super.getTypeString() + " labels; langs;"; @Override public String getTypeList() { return typeList; } + @Override public String getTypeString() { return typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java index 31f945e2..0b713a81 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java @@ -21,7 +21,7 @@ package org.example.model; -public class System extends Identity{ +public class System extends Identity { public System() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java index 10ebf3d4..e8751d8c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java @@ -23,12 +23,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; -public class Targets extends StixCoreRelationship{ +public class Targets extends StixCoreRelationship { @JsonIgnore - private String typeString = super.getTypeString(); + private final String typeString = super.getTypeString(); @JsonIgnore - private String rolePlayers = " targeting; targeted;"; + private final String rolePlayers = " targeting; targeted;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java index 94d81c52..8c2020ea 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java @@ -24,6 +24,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.Date; + public class ThreatActor extends StixDomainObject { private String name; private String description; @@ -40,7 +41,7 @@ public class ThreatActor extends StixDomainObject { private String roles; private String threat_actor_types; @JsonIgnore - private String typeString = super.getTypeString() + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; + private final String typeString = super.getTypeString() + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; public ThreatActor() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java index 85d00765..49aacf64 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java @@ -23,12 +23,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; -public class Uses extends StixCoreRelationship{ +public class Uses extends StixCoreRelationship { @JsonIgnore - private String typeString = super.getTypeString(); + private final String typeString = super.getTypeString(); @JsonIgnore - private String rolePlayers = " used_by; used;"; + private final String rolePlayers = " used_by; used;"; @Override public String getTypeString() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java index 23edf72f..33b9ae31 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java @@ -32,7 +32,7 @@ public void onApplicationEvent(ApplicationReadyEvent event) { String schema = appConfiguration.getSchema(); client = TypeDB.coreClient(address); LOGGER.info("Deleting Database"); - if(client.databases().contains(database)) { + if (client.databases().contains(database)) { client.databases().get(database).delete(); } LOGGER.info("Creating Database"); From 2de15056e46ded01ef0fb5e0eec68394de66235a Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 16:43:09 +0100 Subject: [PATCH 09/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294034359 --- .../src/main/java/org/example/Main.java | 4 ---- .../src/main/java/org/example/model/Malware.java | 7 +------ 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java index f43e341f..2faebceb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java @@ -29,10 +29,6 @@ @SpringBootApplication //@EnableConfigurationProperties(AppConfiguration.class) public class Main { - - @Autowired - private AppConfiguration appConfiguration; - public static void main(String[] args) { SpringApplication.run(Main.class, args); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java index 5c9cc506..ad6cdc67 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java @@ -30,7 +30,7 @@ public class Malware extends StixDomainObject { private String name; private String description; private String malware_types; - private Boolean is_family; + private boolean is_family; private Set aliases; private Date first_seen; private Date last_seen; @@ -57,11 +57,6 @@ public String getTypeString() { return typeString; } - @Override - public void setTypeString(String typeString) { - this.typeString = typeString; - } - public String getName() { return name; } From 39f6067b1f9ecc0442ffb88a62750a22cd626e50 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 17:40:44 +0100 Subject: [PATCH 10/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294037317 Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294069264 Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294090684 --- .../java/org/example/db/AttributedToDAO.java | 10 +++---- .../main/java/org/example/db/ClassDAO.java | 17 +++++------- .../java/org/example/db/CreatedByDAO.java | 11 ++++---- .../org/example/db/ExternalReferencesDAO.java | 12 ++++----- .../src/main/java/org/example/db/FileDAO.java | 17 +++++------- .../main/java/org/example/db/GroupDAO.java | 17 +++++------- .../main/java/org/example/db/HashesDAO.java | 12 +++------ .../java/org/example/db/IdUnknownDAO.java | 13 ++++------ .../main/java/org/example/db/IdentityDAO.java | 18 +++++-------- .../java/org/example/db/ImpersonatesDAO.java | 11 ++++---- .../java/org/example/db/IndicatesDAO.java | 11 ++++---- .../java/org/example/db/IndicatorDAO.java | 13 ++++------ .../java/org/example/db/IndividualDAO.java | 13 ++++------ .../org/example/db/KillChainPhaseDAO.java | 13 ++++------ .../org/example/db/KillChainPhasesDAO.java | 11 ++++---- .../main/java/org/example/db/MalwareDAO.java | 13 ++++------ .../main/java/org/example/db/SchemaDAO.java | 4 +-- .../main/java/org/example/db/SightingDAO.java | 11 ++++---- .../main/java/org/example/db/SystemDAO.java | 13 ++++------ .../main/java/org/example/db/TargetsDAO.java | 12 ++++----- .../java/org/example/db/ThreatActorDAO.java | 17 ++++-------- .../org/example/db/TypeDBSessionWrapper.java | 23 ++++++---------- .../src/main/java/org/example/db/UsesDAO.java | 12 ++++----- .../java/org/example/model/AttributedTo.java | 19 +++++--------- .../java/org/example/model/CreatedBy.java | 12 ++------- .../org/example/model/ExternalReferences.java | 11 ++------ .../src/main/java/org/example/model/File.java | 10 +++---- .../main/java/org/example/model/Hashes.java | 14 +++------- .../main/java/org/example/model/Identity.java | 10 ++----- .../java/org/example/model/Impersonates.java | 12 ++------- .../java/org/example/model/Indicates.java | 12 ++------- .../java/org/example/model/Indicator.java | 11 ++------ .../org/example/model/KillChainPhase.java | 6 ++--- .../org/example/model/KillChainPhases.java | 12 ++------- .../main/java/org/example/model/Malware.java | 24 ++++------------- .../main/java/org/example/model/Sighting.java | 19 ++++---------- .../org/example/model/StixCoreObject.java | 13 ++-------- .../example/model/StixCoreRelationship.java | 8 ++---- .../model/StixCyberObservableObject.java | 15 +++-------- .../org/example/model/StixDomainObject.java | 20 ++++---------- .../java/org/example/model/StixSubObject.java | 12 ++++----- .../main/java/org/example/model/Targets.java | 12 ++------- .../java/org/example/model/ThreatActor.java | 26 +++---------------- .../src/main/java/org/example/model/Uses.java | 12 ++------- 44 files changed, 187 insertions(+), 407 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 8495dd00..50bdf118 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -28,20 +28,20 @@ public class AttributedToDAO { protected static final String ATTRIBUTED_TO_MATCH = "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + private static final String nameRel = "attributed_to"; private final TypeDBSessionWrapper db; - private final AttributedTo attributed_to; - private final String nameRel = "attributed_to"; private final String typeString; + private final String rolePlayers; public AttributedToDAO(TypeDBSessionWrapper db) { this.db = db; - attributed_to = new AttributedTo(); - typeString = attributed_to.getTypeString(); + typeString = AttributedTo.typeString; + rolePlayers = AttributedTo.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, attributed_to.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index af7b2ee4..cc23d8e4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -36,13 +36,12 @@ public class ClassDAO { protected static final String CLASS_MATCH = " $class isa class, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final String typeString; public ClassDAO(TypeDBSessionWrapper db) { this.db = db; - Class tempClass = new Class(); - typeString = tempClass.getTypeString(); + typeString = Class.typeString; } private ObjectNode find(String getQueryStr) { @@ -60,11 +59,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + CLASS_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String type, String name) { @@ -91,11 +89,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index d9150a77..c650c509 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -27,21 +27,20 @@ public class CreatedByDAO { protected static final String CREATED_BY_MATCH = "$ta (creator: $AAA, created: $BBB) isa created_by;"; + private static final String nameRel = "created_by"; private final TypeDBSessionWrapper db; - private final CreatedBy created_by; - - private final String nameRel = "created_by"; private final String typeString; + private final String rolePlayers; public CreatedByDAO(TypeDBSessionWrapper db) { this.db = db; - created_by = new CreatedBy(); - typeString = created_by.getTypeString(); + typeString = CreatedBy.typeString; + rolePlayers = CreatedBy.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, created_by.getRolePlayers()); + return db.getListJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 6307cb91..1e693d97 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -28,21 +28,19 @@ public class ExternalReferencesDAO { protected static final String EXTERNAL_REFERENCES_MATCH = "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; + private static final String nameRel = "external_references"; private final TypeDBSessionWrapper db; - private final ExternalReferences external_references; - - private final String nameRel = "external_references"; private final String typeString; - + private final String rolePlayers; public ExternalReferencesDAO(TypeDBSessionWrapper db) { this.db = db; - external_references = new ExternalReferences(); - typeString = external_references.getTypeString(); + typeString = ExternalReferences.typeString; + rolePlayers = ExternalReferences.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, external_references.getRolePlayers()); + return db.getListJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index bba36977..4d8fff68 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -36,14 +36,13 @@ public class FileDAO { protected static final String FILE_MATCH = " $file isa file, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final String typeString; public FileDAO(TypeDBSessionWrapper db) { this.db = db; - File tempFile = new File(); - typeString = tempFile.getTypeString(); + typeString = File.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + FILE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -92,11 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProces String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index 523df691..232198b4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -36,14 +36,13 @@ public class GroupDAO { protected static final String GROUP_MATCH = " $group isa group, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final String typeString; public GroupDAO(TypeDBSessionWrapper db) { this.db = db; - Group tempGroup = new Group(); - typeString = tempGroup.getTypeString(); + typeString = Group.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + GROUP_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index 33f020e3..e1abbbe5 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -27,21 +27,17 @@ public class HashesDAO { protected static final String HASHES_MATCH = "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; + private static final String nameRel = "hashes"; private final TypeDBSessionWrapper db; - private final Hashes hashes; - - private final String nameRel = "hashes"; - private final String typeString; - + private final String rolePlayers; public HashesDAO(TypeDBSessionWrapper db) { this.db = db; - hashes = new Hashes(); - typeString = hashes.getTypeString(); + rolePlayers = Hashes.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getListAttrJSON(getQueryStr, nameRel, hashes.getRolePlayers(), true); + return db.getListAttrJSON(getQueryStr, nameRel, rolePlayers, true); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 46021b91..4723ee77 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -42,8 +42,7 @@ public class IdUnknownDAO { public IdUnknownDAO(TypeDBSessionWrapper db) { this.db = db; - IdUnknown tempIdUnknown = new IdUnknown(); - typeString = tempIdUnknown.getTypeString(); + typeString = IdUnknown.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonP String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index ff70fc8d..388f3b91 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -36,14 +36,12 @@ public class IdentityDAO { protected static final String IDENTITY_MATCH = " $identity isa identity, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; - + private final TypeDBSessionWrapper db; + private final String typeString; public IdentityDAO(TypeDBSessionWrapper db) { this.db = db; - Identity tempIdentity = new Identity(); - typeString = tempIdentity.getTypeString(); + typeString = Identity.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +59,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonPr String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index 967e3381..e51b1797 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -29,21 +29,20 @@ public class ImpersonatesDAO { protected static final String IMPERSONATES_MATCH = "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + private static final String nameRel = "impersonates"; private final TypeDBSessionWrapper db; - private final Impersonates impersonates; - - private final String nameRel = "impersonates"; private final String typeString; + private final String rolePlayers; public ImpersonatesDAO(TypeDBSessionWrapper db) { this.db = db; - impersonates = new Impersonates(); - typeString = impersonates.getTypeString(); + typeString = Impersonates.typeString; + rolePlayers = Impersonates.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, impersonates.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index ff32b1f6..887e4025 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -28,21 +28,20 @@ public class IndicatesDAO { protected static final String INDICATES_MATCH = "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + private static final String nameRel = "indicates"; private final TypeDBSessionWrapper db; - private final Indicates indicates; - - private final String nameRel = "indicates"; private final String typeString; + private final String rolePlayers; public IndicatesDAO(TypeDBSessionWrapper db) { this.db = db; - indicates = new Indicates(); - typeString = indicates.getTypeString(); + typeString = Indicates.typeString; + rolePlayers = Indicates.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, indicates.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index b178a366..02fc20d2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -42,8 +42,7 @@ public class IndicatorDAO { public IndicatorDAO(TypeDBSessionWrapper db) { this.db = db; - Indicator tempIndicator = new Indicator(); - typeString = tempIndicator.getTypeString(); + typeString = Indicator.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonP String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index a519ac78..40572f80 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -42,8 +42,7 @@ public class IndividualDAO { public IndividualDAO(TypeDBSessionWrapper db) { this.db = db; - Individual tempIndividual = new Individual(); - typeString = tempIndividual.getTypeString(); + typeString = Individual.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws Json String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 53cc0c21..af2eaf7c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -42,8 +42,7 @@ public class KillChainPhaseDAO { public KillChainPhaseDAO(TypeDBSessionWrapper db) { this.db = db; - KillChainPhase tempKillChainPhase = new KillChainPhase(); - typeString = tempKillChainPhase.getTypeString(); + typeString = KillChainPhase.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index 9289af4f..fe62c767 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -27,21 +27,20 @@ public class KillChainPhasesDAO { protected static final String KILL_CHAIN_PHASES_MATCH = "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; + private static final String nameRel = "kill_chain_phases"; private final TypeDBSessionWrapper db; - private final KillChainPhases kill_chain_phases; - - private final String nameRel = "kill_chain_phases"; private final String typeString; + private final String rolePlayers; public KillChainPhasesDAO(TypeDBSessionWrapper db) { this.db = db; - kill_chain_phases = new KillChainPhases(); - typeString = kill_chain_phases.getTypeString(); + typeString = KillChainPhases.typeString; + rolePlayers = KillChainPhases.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, kill_chain_phases.getRolePlayers()); + return db.getListJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index 4f8b5980..ded2ce43 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -42,8 +42,7 @@ public class MalwareDAO { public MalwareDAO(TypeDBSessionWrapper db) { this.db = db; - Malware tempMalware = new Malware(); - typeString = tempMalware.getTypeString(); + typeString = Malware.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -93,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonPro String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java index e5cd3752..c4055dcd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -24,9 +24,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode; public class SchemaDAO { + private static final String queryAll = "match $z sub thing;"; + private static final String queryCurrent = "match $x isa $y; get $y;"; private final TypeDBSessionWrapper db; - private final String queryAll = "match $z sub thing;"; - private final String queryCurrent = "match $x isa $y; get $y;"; public SchemaDAO(TypeDBSessionWrapper db) { this.db = db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index dbd7899c..8e677df9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -28,21 +28,20 @@ public class SightingDAO { protected static final String SIGHTING_MATCH = "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + private static final String nameRel = "sighting"; private final TypeDBSessionWrapper db; - private final Sighting sighting; - - private final String nameRel = "sighting"; private final String typeString; + private final String rolePlayers; public SightingDAO(TypeDBSessionWrapper db) { this.db = db; - sighting = new Sighting(); - typeString = sighting.getTypeString(); + typeString = Sighting.typeString; + rolePlayers = Sighting.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, sighting.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index 41a9d1ea..bddce28a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -42,8 +42,7 @@ public class SystemDAO { public SystemDAO(TypeDBSessionWrapper db) { this.db = db; - System tempSystem = new System(); - typeString = tempSystem.getTypeString(); + typeString = System.typeString; } private ObjectNode find(String getQueryStr) { @@ -61,11 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -92,11 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProc String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index eeac0819..0414a0da 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -29,21 +29,19 @@ public class TargetsDAO { protected static final String TARGETS_MATCH = "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; + private static final String nameRel = "targets"; private final TypeDBSessionWrapper db; - private final Targets targets; - - private final String nameRel = "targets"; private final String typeString; - + private final String rolePlayers; public TargetsDAO(TypeDBSessionWrapper db) { this.db = db; - targets = new Targets(); - typeString = targets.getTypeString(); + typeString = Targets.typeString; + rolePlayers = Targets.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, targets.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 9cdf6dfe..59819a32 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -27,8 +27,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.ThreatActor; -import org.springframework.beans.factory.annotation.Autowired; - import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -37,16 +35,13 @@ public class ThreatActorDAO { protected static final String TA_MATCH = " $ta isa threat_actor, has stix_id $id ,has $attribute;" + "$attribute isa! $j; "; - @Autowired private final TypeDBSessionWrapper db; - private final String typeString; public ThreatActorDAO(TypeDBSessionWrapper db) { this.db = db; - ThreatActor tempThreatActor = new ThreatActor(); - typeString = tempThreatActor.getTypeString(); + typeString = ThreatActor.typeString; } private ObjectNode find(String getQueryStr) { @@ -64,11 +59,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + TA_MATCH + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } public ObjectNode search(String attrType, String attrName) { @@ -97,11 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws Jso System.out.println(getQueryStr); ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference>() { + Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); - Set result = new HashSet<>(test.values()); - return result; + return new HashSet<>(test.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index 829692e6..55ad0ad4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -32,15 +32,12 @@ import com.vaticle.typedb.common.collection.Pair; import org.example.configuration.AppConfiguration; -import java.util.logging.Logger; - public class TypeDBSessionWrapper { - private static final Logger LOGGER = Logger.getLogger("TypeDBSessionWrapper"); private final AppConfiguration appConfiguration; private final TypeDBClient client; private TypeDBSession session; - private Pair extractPair(ConceptMap values, ObjectNode currentNode) { + private Pair extractPair(ConceptMap values) { var json = values.toJSON().get("attribute"); var key = json.asObject().get("type").asString(); var valueTmp = json.asObject().get("value"); @@ -64,7 +61,7 @@ public ObjectNode getAllJSON(String query) { String key = e.owner().toJSON().toString().split("\"")[11]; ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var pair = extractPair(m, childNode); + var pair = extractPair(m); childNode.put(pair.first(), pair.second()); }); rootNode.set(key, childNode); @@ -84,7 +81,7 @@ public ObjectNode getIIDJSON(String query) { String key = e.owner().asEntity().getIID(); ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var pair = extractPair(m, childNode); + var pair = extractPair(m); childNode.put(pair.first(), pair.second()); }); rootNode.set(key, childNode); @@ -144,7 +141,7 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, ObjectNode childNode = mapper.createObjectNode(); if (asAttribute) { e.conceptMaps().forEach(m -> { - var pair = extractPair(m, childNode); + var pair = extractPair(m); childNode.put(pair.first(), pair.second()); }); } @@ -185,7 +182,7 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye ObjectNode childNode = mapper.createObjectNode(); if (asAttribute) { e.conceptMaps().forEach(m -> { - var pair = extractPair(m, childNode); + var pair = extractPair(m); childNode.put(pair.first(), pair.second()); }); } @@ -207,12 +204,8 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye var nodeTmp = getIIDJSON(queryTmp); childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); } else { - queryTmp += " group $r" + i + ";"; var dbResults2 = readTx.query().matchGroup(query); dbResults2.forEach(w -> { - - - ObjectNode childNode2 = mapper.createObjectNode(); w.conceptMaps().forEach(m -> { String value3 = m.map().get("AAA").asAttribute().toString(); value3 = removeLastChar(value3.split(":")[1]); @@ -244,7 +237,7 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers) { String key = e.owner().toJSON().toString().split("\"")[11]; ObjectNode childNode = mapper.createObjectNode(); e.conceptMaps().forEach(m -> { - var pair = extractPair(m, childNode); + var pair = extractPair(m); childNode.put(pair.first(), pair.second()); }); @@ -285,14 +278,14 @@ public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfigurati } private String removeLastChar(String str) { - if (str == null || str.length() == 0) { + if (str == null || str.isEmpty()) { return str; } return str.substring(0, str.length() - 1); } private String removeFirstChar(String str) { - if (str == null || str.length() == 0) { + if (str == null || str.isEmpty()) { return str; } return str.substring(1); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index 3b79995b..e5b6af46 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -28,21 +28,21 @@ public class UsesDAO { protected static final String USES_MATCH = "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final Uses uses; + private static final String nameRel = "uses"; - private final String nameRel = "uses"; + private final TypeDBSessionWrapper db; private final String typeString; + private final String rolePlayers; public UsesDAO(TypeDBSessionWrapper db) { this.db = db; - uses = new Uses(); - typeString = uses.getTypeString(); + typeString = Uses.typeString; + rolePlayers = Uses.rolePlayers; } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, uses.getRolePlayers()); + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java index d1781f01..641cfc2c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java @@ -26,27 +26,24 @@ import java.util.Date; public class AttributedTo { + @JsonIgnore + public static final String typeString = " stix_id; spec_version;"; + + @JsonIgnore + public static final String rolePlayers = " attributing; attributed;"; + private String stix_id; private String spec_version; private Date created; private Date modified; - @JsonIgnore - private final String typeString = " stix_id; spec_version;"; - - @JsonIgnore - private final String rolePlayers = " attributing; attributed;"; public String getSpec_version() { return spec_version; } - public String getRolePlayers() { - return rolePlayers; - } - public String getStix_id() { return stix_id; } @@ -71,8 +68,4 @@ public void setModified(Date modified) { this.modified = modified; } - public String getTypeString() { - return typeString; - } - } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java index 52ea1047..9d54d09b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java @@ -25,16 +25,8 @@ public class CreatedBy { @JsonIgnore - private final String typeString = ""; + public static final String typeString = ""; @JsonIgnore - private final String rolePlayers = " creator; created;"; - - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } + public static final String rolePlayers = " creator; created;"; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java index 9070d79a..890d44a1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java @@ -25,16 +25,9 @@ public class ExternalReferences { @JsonIgnore - private final String typeString = ""; + public static final String typeString = ""; @JsonIgnore - private final String rolePlayers = " referencing; referenced;"; + public static final String rolePlayers = " referencing; referenced;"; - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java index 6a4783bb..7297033b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java @@ -26,6 +26,9 @@ import java.util.Date; public class File extends StixCyberObservableObject { + @JsonIgnore + public static final String typeString = StixCyberObservableObject.typeString + " name; name_enc; magic_number_hex; mime_type;"; + private Integer size; private String name; private String name_enc; @@ -34,13 +37,6 @@ public class File extends StixCyberObservableObject { private Date ctime; private Date mtime; private Date atime; - @JsonIgnore - private final String typeString = super.getTypeString() + " name; name_enc; magic_number_hex; mime_type;"; - - @Override - public String getTypeString() { - return typeString; - } public Integer getSize() { return size; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java index bfd15fda..5313203c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java @@ -24,22 +24,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class Hashes { - - private String hash_algorithm; - @JsonIgnore - private final String typeString = " hash_algorithm;"; + public static final String typeString = " hash_algorithm;"; @JsonIgnore - private final String rolePlayers = " hash_value; hashes_owner;"; + public static final String rolePlayers = " hash_value; hashes_owner;"; - public String getTypeString() { - return typeString; - } + private String hash_algorithm; - public String getRolePlayers() { - return rolePlayers; - } public String getHash_algorithm() { return hash_algorithm; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java index db4d47ef..da5df931 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java @@ -24,6 +24,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class Identity extends StixDomainObject { + @JsonIgnore + public static final String typeString = StixDomainObject.typeString + " name; description; stix_role; identity_class; sector; contact_information;"; private String name; private String description; private String stix_role; @@ -31,17 +33,9 @@ public class Identity extends StixDomainObject { private String sector; private String contact_information; - @JsonIgnore - private final String typeString = super.getTypeString() + " name; description; stix_role; identity_class; sector; contact_information;"; - public Identity() { } - @Override - public String getTypeString() { - return typeString; - } - public String getName() { return name; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java index 5bcfe453..f7c360ec 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java @@ -25,17 +25,9 @@ public class Impersonates extends StixCoreRelationship { @JsonIgnore - private final String typeString = super.getTypeString(); + public static final String typeString = StixCoreRelationship.typeString; @JsonIgnore - private final String rolePlayers = " impersonating; impersonated;"; + public static final String rolePlayers = " impersonating; impersonated;"; - @Override - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java index 99cadfcb..3f856fca 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java @@ -26,17 +26,9 @@ public class Indicates extends StixCoreRelationship { @JsonIgnore - private final String typeString = super.getTypeString(); + public static final String typeString = StixCoreRelationship.typeString; @JsonIgnore - private final String rolePlayers = " indicating; indicated;"; + public static final String rolePlayers = " indicating; indicated;"; - @Override - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java index 021856e2..d8415ac4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java @@ -26,6 +26,8 @@ import java.util.Date; public class Indicator extends StixDomainObject { + @JsonIgnore + public static final String typeString = StixDomainObject.typeString + " name; description; pattern; pattern_type; pattern_version;"; private String name; private String description; @@ -35,18 +37,9 @@ public class Indicator extends StixDomainObject { private Date valid_from; private Date valid_until; - @JsonIgnore - private final String typeString = super.getTypeString() + " name; description; pattern; pattern_type; pattern_version;"; - - public Indicator() { } - @Override - public String getTypeString() { - return typeString; - } - public String getName() { return name; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java index 24aad39d..631520cd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java @@ -24,12 +24,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class KillChainPhase extends StixSubObject { + @JsonIgnore + public static final String typeString = StixSubObject.typeString + " kill_chain_name; kill_chain_phase_name;"; + private String kill_chain_name; private String kill_chain_phase_name; - @JsonIgnore - private final String typeString = super.getTypeString() + " kill_chain_name; kill_chain_phase_name;"; - public String getKill_chain_name() { return kill_chain_name; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java index eb75c844..7302c0f3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java @@ -25,16 +25,8 @@ public class KillChainPhases { @JsonIgnore - private final String typeString = ""; - + public static final String typeString = ""; @JsonIgnore - private final String rolePlayers = " using; used;"; - - public String getTypeString() { - return typeString; - } + public static final String rolePlayers = " using; used;"; - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java index ad6cdc67..e28090b2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java @@ -27,6 +27,11 @@ import java.util.Set; public class Malware extends StixDomainObject { + @JsonIgnore + public static String typeList = StixDomainObject.typeList + " aliases; architecture_execution_envs; implementation_languages; capabilities;"; + @JsonIgnore + public static String typeString = StixDomainObject.typeString + " name; description; malware_types; architecture_execution_envs; implementation_languages; capabilities;"; + private String name; private String description; private String malware_types; @@ -38,25 +43,6 @@ public class Malware extends StixDomainObject { private Set implementation_languages; private Set capabilities; - @JsonIgnore - private String typeList = super.getTypeList() + " aliases; architecture_execution_envs; implementation_languages; capabilities;"; - @JsonIgnore - private String typeString = super.getTypeString() + " name; description; malware_types; architecture_execution_envs; implementation_languages; capabilities;"; - - //sample_refs_file - //sample_refs_artifact - - - @Override - public String getTypeList() { - return typeList; - } - - @Override - public String getTypeString() { - return typeString; - } - public String getName() { return name; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java index 77950fcc..f78a8fbb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java @@ -26,6 +26,11 @@ import java.util.Date; public class Sighting extends StixCoreRelationship { + @JsonIgnore + public static final String typeString = StixCoreRelationship.typeString + " summary;"; + + @JsonIgnore + public static final String rolePlayers = " sighting_of; observed_data;"; private Date first_seen; private Date last_seen; @@ -33,18 +38,4 @@ public class Sighting extends StixCoreRelationship { private Double count; private String summary; - @JsonIgnore - private final String typeString = super.getTypeString() + " summary;"; - - @JsonIgnore - private final String rolePlayers = " sighting_of; observed_data;"; - - @Override - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java index 7ee94bf9..d971eb17 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java @@ -25,23 +25,14 @@ public class StixCoreObject { @JsonIgnore - private String typeList = ""; - - + public static final String typeList = ""; @JsonIgnore - private String typeString = " spec_version;"; + public static final String typeString = " spec_version;"; private String spec_version; public StixCoreObject() { } - public String getTypeString() { - return typeString; - } - public String getTypeList() { - return typeList; - } - public StixCoreObject(String spec_version) { this.spec_version = spec_version; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java index 9c5eb36e..2d25cd88 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java @@ -24,18 +24,14 @@ import java.util.Date; public class StixCoreRelationship { + public static final String typeString = " stix_id; stix_version; stix_type;"; + private String spec_version; private String stix_id; private String stix_type; private Date created; private Date modified; - private final String typeString = " stix_id; stix_version; stix_type;"; - - public String getTypeString() { - return typeString; - } - public String getSpec_version() { return spec_version; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java index c0698dc8..85519846 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java @@ -24,22 +24,13 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class StixCyberObservableObject extends StixCoreObject { - private String defanged; @JsonIgnore - private final String typeList = super.getTypeList(); + public static final String typeList = StixCoreObject.typeList; @JsonIgnore - private final String typeString = super.getTypeString() + " defanged;"; - - @Override - public String getTypeList() { - return typeList; - } + public static final String typeString = StixCoreObject.typeString + " defanged;"; - @Override - public String getTypeString() { - return typeString; - } + private String defanged; public StixCyberObservableObject() { } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java index 242463dc..bec777fd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java @@ -28,6 +28,11 @@ public class StixDomainObject extends StixCoreObject { + @JsonIgnore + public static final String typeList = StixCoreObject.typeList + " labels;"; + @JsonIgnore + public static final String typeString = StixCoreObject.typeString + " labels; langs;"; + private Date created; private Date modified; @@ -40,21 +45,6 @@ public class StixDomainObject extends StixCoreObject { private String langs; - @JsonIgnore - private final String typeList = super.getTypeList() + " labels;"; - @JsonIgnore - private final String typeString = super.getTypeString() + " labels; langs;"; - - @Override - public String getTypeList() { - return typeList; - } - - @Override - public String getTypeString() { - return typeString; - } - public Date getCreated() { return created; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java index 0c19cf3a..d5b5ce74 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java @@ -21,17 +21,17 @@ package org.example.model; +import com.fasterxml.jackson.annotation.JsonIgnore; + import java.util.Date; public class StixSubObject { - private Date created; - private Date modified; - private final String typeString = ""; + @JsonIgnore + public static final String typeString = ""; - public String getTypeString() { - return typeString; - } + private Date created; + private Date modified; public Date getCreated() { return created; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java index e8751d8c..e30b152b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java @@ -25,17 +25,9 @@ public class Targets extends StixCoreRelationship { @JsonIgnore - private final String typeString = super.getTypeString(); + public static final String typeString = StixCoreRelationship.typeString; @JsonIgnore - private final String rolePlayers = " targeting; targeted;"; + public static final String rolePlayers = " targeting; targeted;"; - @Override - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java index 8c2020ea..37ff66be 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java @@ -26,6 +26,9 @@ import java.util.Date; public class ThreatActor extends StixDomainObject { + @JsonIgnore + public static final String typeString = StixDomainObject.typeString + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; + private String name; private String description; private String aliases; @@ -40,11 +43,8 @@ public class ThreatActor extends StixDomainObject { private String personal_characteristics; private String roles; private String threat_actor_types; - @JsonIgnore - private final String typeString = super.getTypeString() + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; public ThreatActor() { - } public String getTypeString() { @@ -162,24 +162,4 @@ public String getThreat_actor_types() { public void setThreat_actor_types(String threat_actor_types) { this.threat_actor_types = threat_actor_types; } - - @Override - public String toString() { - return "ThreatActor{" + - "name='" + name + '\'' + - ", description='" + description + '\'' + - ", aliases='" + aliases + '\'' + - ", stix_role='" + stix_role + '\'' + - ", first_seen=" + first_seen + - ", last_seen=" + last_seen + - ", goals='" + goals + '\'' + - ", resource_level='" + resource_level + '\'' + - ", primary_motivation='" + primary_motivation + '\'' + - ", secondary_motivation='" + secondary_motivation + '\'' + - ", sophistication='" + sophistication + '\'' + - ", personal_characteristics='" + personal_characteristics + '\'' + - ", roles='" + roles + '\'' + - ", threat_actor_types='" + threat_actor_types + '\'' + - '}'; - } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java index 49aacf64..49b14dee 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java @@ -25,17 +25,9 @@ public class Uses extends StixCoreRelationship { @JsonIgnore - private final String typeString = super.getTypeString(); + public static final String typeString = StixCoreRelationship.typeString; @JsonIgnore - private final String rolePlayers = " used_by; used;"; + public static final String rolePlayers = " used_by; used;"; - @Override - public String getTypeString() { - return typeString; - } - - public String getRolePlayers() { - return rolePlayers; - } } From b2ff2e232805342eccbf45f256759869258f1fdf Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 17:46:26 +0100 Subject: [PATCH 11/27] Solve: Naming private attributes --- .../main/java/org/example/db/AttributedToDAO.java | 4 ++-- .../src/main/java/org/example/db/CreatedByDAO.java | 4 ++-- .../java/org/example/db/ExternalReferencesDAO.java | 4 ++-- .../src/main/java/org/example/db/HashesDAO.java | 4 ++-- .../src/main/java/org/example/db/IdUnknownDAO.java | 14 +++++++------- .../main/java/org/example/db/ImpersonatesDAO.java | 4 ++-- .../src/main/java/org/example/db/IndicatesDAO.java | 4 ++-- .../java/org/example/db/KillChainPhasesDAO.java | 4 ++-- .../src/main/java/org/example/db/SchemaDAO.java | 8 ++++---- .../src/main/java/org/example/db/SightingDAO.java | 4 ++-- .../src/main/java/org/example/db/TargetsDAO.java | 4 ++-- .../src/main/java/org/example/db/UsesDAO.java | 4 ++-- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 50bdf118..1ebb7c3a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -28,7 +28,7 @@ public class AttributedToDAO { protected static final String ATTRIBUTED_TO_MATCH = "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "attributed_to"; + private static final String NAME_REL = "attributed_to"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -41,7 +41,7 @@ public AttributedToDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index c650c509..320c1ae5 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -27,7 +27,7 @@ public class CreatedByDAO { protected static final String CREATED_BY_MATCH = "$ta (creator: $AAA, created: $BBB) isa created_by;"; - private static final String nameRel = "created_by"; + private static final String NAME_REL = "created_by"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -40,7 +40,7 @@ public CreatedByDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, rolePlayers); + return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 1e693d97..22687351 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -28,7 +28,7 @@ public class ExternalReferencesDAO { protected static final String EXTERNAL_REFERENCES_MATCH = "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; - private static final String nameRel = "external_references"; + private static final String NAME_REL = "external_references"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -40,7 +40,7 @@ public ExternalReferencesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, rolePlayers); + return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index e1abbbe5..38d1e6e3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -27,7 +27,7 @@ public class HashesDAO { protected static final String HASHES_MATCH = "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; - private static final String nameRel = "hashes"; + private static final String NAME_REL = "hashes"; private final TypeDBSessionWrapper db; private final String rolePlayers; @@ -37,7 +37,7 @@ public HashesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getListAttrJSON(getQueryStr, nameRel, rolePlayers, true); + return db.getListAttrJSON(getQueryStr, NAME_REL, rolePlayers, true); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 4723ee77..85b8134e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -33,11 +33,11 @@ import java.util.Set; public class IdUnknownDAO { - protected static final String IDUNKNOWN_MATCH = + protected static final String ID_UNKNOWN_MATCH = " $idUnknown isa id_unknown, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final String typeString; public IdUnknownDAO(TypeDBSessionWrapper db) { @@ -50,7 +50,7 @@ private ObjectNode find(String getQueryStr) { } public ObjectNode findAll() { - var getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id; "; + var getQueryStr = "match " + ID_UNKNOWN_MATCH + "group $id; "; return find(getQueryStr); } @@ -58,7 +58,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + IDUNKNOWN_MATCH + "group $id;"; + String getQueryStr = "match " + ID_UNKNOWN_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -73,7 +73,7 @@ public ObjectNode search(String attrType, String attrName) { } String search = "$idUnknown has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + IDUNKNOWN_MATCH + search + "group $id;"; + var getQueryStr = "match " + ID_UNKNOWN_MATCH + search + "group $id;"; return find(getQueryStr); } @@ -89,7 +89,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonP String search = "$idUnknown has " + attrType + " = " + attrName + ";"; - String getQueryStr = "match " + IDUNKNOWN_MATCH + search + " group $id;"; + String getQueryStr = "match " + ID_UNKNOWN_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index e51b1797..e109d18c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -29,7 +29,7 @@ public class ImpersonatesDAO { protected static final String IMPERSONATES_MATCH = "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "impersonates"; + private static final String NAME_REL = "impersonates"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -42,7 +42,7 @@ public ImpersonatesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 887e4025..6a8afb8b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -28,7 +28,7 @@ public class IndicatesDAO { protected static final String INDICATES_MATCH = "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "indicates"; + private static final String NAME_REL = "indicates"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -41,7 +41,7 @@ public IndicatesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index fe62c767..a61d58b8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -27,7 +27,7 @@ public class KillChainPhasesDAO { protected static final String KILL_CHAIN_PHASES_MATCH = "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; - private static final String nameRel = "kill_chain_phases"; + private static final String NAME_REL = "kill_chain_phases"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -40,7 +40,7 @@ public KillChainPhasesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, nameRel, rolePlayers); + return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java index c4055dcd..37ffd82c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -24,8 +24,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode; public class SchemaDAO { - private static final String queryAll = "match $z sub thing;"; - private static final String queryCurrent = "match $x isa $y; get $y;"; + private static final String QUERY_ALL = "match $z sub thing;"; + private static final String QUERY_CURRENT = "match $x isa $y; get $y;"; private final TypeDBSessionWrapper db; public SchemaDAO(TypeDBSessionWrapper db) { @@ -37,11 +37,11 @@ private ObjectNode find(String query) { } public ObjectNode getSchemaAllJSON() { - return find(queryAll); + return find(QUERY_ALL); } public ObjectNode getSchemaCurrentJSON() { - return find(queryCurrent); + return find(QUERY_CURRENT); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index 8e677df9..cc5aa64e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -28,7 +28,7 @@ public class SightingDAO { protected static final String SIGHTING_MATCH = "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "sighting"; + private static final String NAME_REL = "sighting"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -41,7 +41,7 @@ public SightingDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index 0414a0da..a44f46e4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -29,7 +29,7 @@ public class TargetsDAO { protected static final String TARGETS_MATCH = "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "targets"; + private static final String NAME_REL = "targets"; private final TypeDBSessionWrapper db; private final String typeString; private final String rolePlayers; @@ -41,7 +41,7 @@ public TargetsDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index e5b6af46..74430cb9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -28,7 +28,7 @@ public class UsesDAO { protected static final String USES_MATCH = "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - private static final String nameRel = "uses"; + private static final String NAME_REL = "uses"; private final TypeDBSessionWrapper db; private final String typeString; @@ -42,7 +42,7 @@ public UsesDAO(TypeDBSessionWrapper db) { } private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); } public ObjectNode findAll() { From 95e568dabd87ef453898d6e9d0a109322a46f831 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 18:03:12 +0100 Subject: [PATCH 12/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294068300 --- .../org/example/controllers/Controller.java | 6 +- .../java/org/example/model/AttributedTo.java | 16 ++-- .../src/main/java/org/example/model/File.java | 30 +++---- .../main/java/org/example/model/Hashes.java | 10 +-- .../main/java/org/example/model/Identity.java | 30 +++---- .../java/org/example/model/Indicator.java | 40 +++++----- .../org/example/model/KillChainPhase.java | 20 ++--- .../main/java/org/example/model/Malware.java | 60 +++++++------- .../main/java/org/example/model/Sighting.java | 35 +++++++- .../org/example/model/StixCoreObject.java | 18 ++--- .../example/model/StixCoreRelationship.java | 30 +++---- .../java/org/example/model/ThreatActor.java | 80 +++++++++---------- .../main/java/org/example/web/CTIBean.java | 6 +- 13 files changed, 202 insertions(+), 179 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index b60b7792..e1bca913 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -38,11 +38,9 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Set; -import java.util.logging.Logger; @RestController public class Controller { - private static final Logger LOGGER = Logger.getLogger("Controller"); private final TypeDBSessionWrapper wrapper; @Autowired @@ -125,14 +123,14 @@ public Set getIndicatorBeans() throws JsonProcessingException { @QueryMapping(value = "getClass") @GetMapping(value = "/class", produces = "application/json") - public ObjectNode get_ClassJSON() { + public ObjectNode getClassJSON() { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.findAll(); } @QueryMapping @GetMapping(value = "/class-beans", produces = "application/json") - public Set get_ClassBeans() throws JsonProcessingException { + public Set getClassBeans() throws JsonProcessingException { ClassDAO classDAO = new ClassDAO(wrapper); return classDAO.findAllBeans(); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java index 641cfc2c..01962811 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java @@ -32,24 +32,24 @@ public class AttributedTo { @JsonIgnore public static final String rolePlayers = " attributing; attributed;"; - private String stix_id; - private String spec_version; + private String stixId; + private String specVersion; private Date created; private Date modified; - public String getSpec_version() { - return spec_version; + public String getSpecVersion() { + return specVersion; } - public String getStix_id() { - return stix_id; + public String getStixId() { + return stixId; } - public void setStix_id(String stix_id) { - this.stix_id = stix_id; + public void setStixId(String stixId) { + this.stixId = stixId; } public Date getCreated() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java index 7297033b..5b8f470d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java @@ -31,9 +31,9 @@ public class File extends StixCyberObservableObject { private Integer size; private String name; - private String name_enc; - private String magic_number_hex; - private String mime_type; + private String nameEnc; + private String magicNumberHex; + private String mimeType; private Date ctime; private Date mtime; private Date atime; @@ -54,28 +54,28 @@ public void setName(String name) { this.name = name; } - public String getName_enc() { - return name_enc; + public String getNameEnc() { + return nameEnc; } - public void setName_enc(String name_enc) { - this.name_enc = name_enc; + public void setNameEnc(String nameEnc) { + this.nameEnc = nameEnc; } - public String getMagic_number_hex() { - return magic_number_hex; + public String getMagicNumberHex() { + return magicNumberHex; } - public void setMagic_number_hex(String magic_number_hex) { - this.magic_number_hex = magic_number_hex; + public void setMagicNumberHex(String magicNumberHex) { + this.magicNumberHex = magicNumberHex; } - public String getMime_type() { - return mime_type; + public String getMimeType() { + return mimeType; } - public void setMime_type(String mime_type) { - this.mime_type = mime_type; + public void setMimeType(String mimeType) { + this.mimeType = mimeType; } public Date getCtime() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java index 5313203c..a720fc84 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java @@ -30,14 +30,14 @@ public class Hashes { @JsonIgnore public static final String rolePlayers = " hash_value; hashes_owner;"; - private String hash_algorithm; + private String hashAlgorithm; - public String getHash_algorithm() { - return hash_algorithm; + public String getHashAlgorithm() { + return hashAlgorithm; } - public void setHash_algorithm(String hash_algorithm) { - this.hash_algorithm = hash_algorithm; + public void setHashAlgorithm(String hashAlgorithm) { + this.hashAlgorithm = hashAlgorithm; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java index da5df931..ebb9f641 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java @@ -28,10 +28,10 @@ public class Identity extends StixDomainObject { public static final String typeString = StixDomainObject.typeString + " name; description; stix_role; identity_class; sector; contact_information;"; private String name; private String description; - private String stix_role; - private String identity_class; + private String stixRole; + private String identityClass; private String sector; - private String contact_information; + private String contactInformation; public Identity() { } @@ -52,20 +52,20 @@ public void setDescription(String description) { this.description = description; } - public String getStix_role() { - return stix_role; + public String getStixRole() { + return stixRole; } - public void setStix_role(String stix_role) { - this.stix_role = stix_role; + public void setStixRole(String stixRole) { + this.stixRole = stixRole; } - public String getIdentity_class() { - return identity_class; + public String getIdentityClass() { + return identityClass; } - public void setIdentity_class(String identity_class) { - this.identity_class = identity_class; + public void setIdentityClass(String identityClass) { + this.identityClass = identityClass; } public String getSector() { @@ -76,11 +76,11 @@ public void setSector(String sector) { this.sector = sector; } - public String getContact_information() { - return contact_information; + public String getContactInformation() { + return contactInformation; } - public void setContact_information(String contact_information) { - this.contact_information = contact_information; + public void setContactInformation(String contactInformation) { + this.contactInformation = contactInformation; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java index d8415ac4..279fdde8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java @@ -32,10 +32,10 @@ public class Indicator extends StixDomainObject { private String name; private String description; private String pattern; - private String pattern_type; - private String pattern_version; - private Date valid_from; - private Date valid_until; + private String patternType; + private String patternVersion; + private Date validFrom; + private Date validUntil; public Indicator() { } @@ -64,35 +64,35 @@ public void setPattern(String pattern) { this.pattern = pattern; } - public String getPattern_type() { - return pattern_type; + public String getPatternType() { + return patternType; } - public void setPattern_type(String pattern_type) { - this.pattern_type = pattern_type; + public void setPatternType(String patternType) { + this.patternType = patternType; } - public String getPattern_version() { - return pattern_version; + public String getPatternVersion() { + return patternVersion; } - public void setPattern_version(String pattern_version) { - this.pattern_version = pattern_version; + public void setPatternVersion(String patternVersion) { + this.patternVersion = patternVersion; } - public Date getValid_from() { - return valid_from; + public Date getValidFrom() { + return validFrom; } - public void setValid_from(Date valid_from) { - this.valid_from = valid_from; + public void setValidFrom(Date validFrom) { + this.validFrom = validFrom; } - public Date getValid_until() { - return valid_until; + public Date getValidUntil() { + return validUntil; } - public void setValid_until(Date valid_until) { - this.valid_until = valid_until; + public void setValidUntil(Date validUntil) { + this.validUntil = validUntil; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java index 631520cd..68a4a44a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java @@ -27,22 +27,22 @@ public class KillChainPhase extends StixSubObject { @JsonIgnore public static final String typeString = StixSubObject.typeString + " kill_chain_name; kill_chain_phase_name;"; - private String kill_chain_name; - private String kill_chain_phase_name; + private String killChainName; + private String killChainPhaseName; - public String getKill_chain_name() { - return kill_chain_name; + public String getKillChainName() { + return killChainName; } - public void setKill_chain_name(String kill_chain_name) { - this.kill_chain_name = kill_chain_name; + public void setKillChainName(String killChainName) { + this.killChainName = killChainName; } - public String getKill_chain_phase_name() { - return kill_chain_phase_name; + public String getKillChainPhaseName() { + return killChainPhaseName; } - public void setKill_chain_phase_name(String kill_chain_phase_name) { - this.kill_chain_phase_name = kill_chain_phase_name; + public void setKillChainPhaseName(String killChainPhaseName) { + this.killChainPhaseName = killChainPhaseName; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java index e28090b2..626a6d73 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java @@ -34,13 +34,13 @@ public class Malware extends StixDomainObject { private String name; private String description; - private String malware_types; - private boolean is_family; + private String malwareTypes; + private boolean isFamily; private Set aliases; - private Date first_seen; - private Date last_seen; - private Set architecture_execution_envs; - private Set implementation_languages; + private Date firstSeen; + private Date lastSeen; + private Set architectureExecutionEnvs; + private Set implementationLanguages; private Set capabilities; public String getName() { @@ -59,20 +59,20 @@ public void setDescription(String description) { this.description = description; } - public String getMalware_types() { - return malware_types; + public String getMalwareTypes() { + return malwareTypes; } - public void setMalware_types(String malware_types) { - this.malware_types = malware_types; + public void setMalwareTypes(String malwareTypes) { + this.malwareTypes = malwareTypes; } - public Boolean getIs_family() { - return is_family; + public Boolean getFamily() { + return isFamily; } - public void setIs_family(Boolean is_family) { - this.is_family = is_family; + public void setFamily(Boolean family) { + this.isFamily = family; } public Set getAliases() { @@ -83,36 +83,36 @@ public void setAliases(Set aliases) { this.aliases = aliases; } - public Date getFirst_seen() { - return first_seen; + public Date getFirstSeen() { + return firstSeen; } - public void setFirst_seen(Date first_seen) { - this.first_seen = first_seen; + public void setFirstSeen(Date firstSeen) { + this.firstSeen = firstSeen; } - public Date getLast_seen() { - return last_seen; + public Date getLastSeen() { + return lastSeen; } - public void setLast_seen(Date last_seen) { - this.last_seen = last_seen; + public void setLastSeen(Date lastSeen) { + this.lastSeen = lastSeen; } - public Set getArchitecture_execution_envs() { - return architecture_execution_envs; + public Set getArchitectureExecutionEnvs() { + return architectureExecutionEnvs; } - public void setArchitecture_execution_envs(Set architecture_execution_envs) { - this.architecture_execution_envs = architecture_execution_envs; + public void setArchitectureExecutionEnvs(Set architectureExecutionEnvs) { + this.architectureExecutionEnvs = architectureExecutionEnvs; } - public Set getImplementation_languages() { - return implementation_languages; + public Set getImplementationLanguages() { + return implementationLanguages; } - public void setImplementation_languages(Set implementation_languages) { - this.implementation_languages = implementation_languages; + public void setImplementationLanguages(Set implementationLanguages) { + this.implementationLanguages = implementationLanguages; } public Set getCapabilities() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java index f78a8fbb..dee7d7de 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java @@ -32,10 +32,41 @@ public class Sighting extends StixCoreRelationship { @JsonIgnore public static final String rolePlayers = " sighting_of; observed_data;"; - private Date first_seen; - private Date last_seen; + private Date firstSeen; + private Date lastSeen; private Double count; private String summary; + public Date getFirstSeen() { + return firstSeen; + } + + public void setFirstSeen(Date firstSeen) { + this.firstSeen = firstSeen; + } + + public Date getLastSeen() { + return lastSeen; + } + + public void setLastSeen(Date lastSeen) { + this.lastSeen = lastSeen; + } + + public Double getCount() { + return count; + } + + public void setCount(Double count) { + this.count = count; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java index d971eb17..6aad1cc1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java @@ -29,19 +29,13 @@ public class StixCoreObject { @JsonIgnore public static final String typeString = " spec_version;"; - private String spec_version; - - public StixCoreObject() { - } - public StixCoreObject(String spec_version) { - this.spec_version = spec_version; - } - - public String getSpec_version() { - return spec_version; + private String specVersion; + + public String getSpecVersion() { + return specVersion; } - public void setSpec_version(String spec_version) { - this.spec_version = spec_version; + public void setSpecVersion(String specVersion) { + this.specVersion = specVersion; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java index 2d25cd88..baaf6681 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java @@ -26,34 +26,34 @@ public class StixCoreRelationship { public static final String typeString = " stix_id; stix_version; stix_type;"; - private String spec_version; - private String stix_id; - private String stix_type; + private String specVersion; + private String stixId; + private String stixType; private Date created; private Date modified; - public String getSpec_version() { - return spec_version; + public String getSpecVersion() { + return specVersion; } - public void setSpec_version(String spec_version) { - this.spec_version = spec_version; + public void setSpecVersion(String specVersion) { + this.specVersion = specVersion; } - public String getStix_id() { - return stix_id; + public String getStixId() { + return stixId; } - public void setStix_id(String stix_id) { - this.stix_id = stix_id; + public void setStixId(String stixId) { + this.stixId = stixId; } - public String getStix_type() { - return stix_type; + public String getStixType() { + return stixType; } - public void setStix_type(String stix_type) { - this.stix_type = stix_type; + public void setStixType(String stixType) { + this.stixType = stixType; } public Date getCreated() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java index 37ff66be..a081c5f4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java @@ -32,17 +32,17 @@ public class ThreatActor extends StixDomainObject { private String name; private String description; private String aliases; - private String stix_role; - private Date first_seen; - private Date last_seen; + private String stixRole; + private Date firstSeen; + private Date lastSeen; private String goals; - private String resource_level; - private String primary_motivation; - private String secondary_motivation; + private String resourceLevel; + private String primaryMotivation; + private String secondaryMotivation; private String sophistication; - private String personal_characteristics; + private String personalCharacteristics; private String roles; - private String threat_actor_types; + private String threatActorTypes; public ThreatActor() { } @@ -75,28 +75,28 @@ public void setAliases(String aliases) { this.aliases = aliases; } - public String getStix_role() { - return stix_role; + public String getStixRole() { + return stixRole; } - public void setStix_role(String stix_role) { - this.stix_role = stix_role; + public void setStixRole(String stixRole) { + this.stixRole = stixRole; } - public Date getFirst_seen() { - return first_seen; + public Date getFirstSeen() { + return firstSeen; } - public void setFirst_seen(Date first_seen) { - this.first_seen = first_seen; + public void setFirstSeen(Date firstSeen) { + this.firstSeen = firstSeen; } - public Date getLast_seen() { - return last_seen; + public Date getLastSeen() { + return lastSeen; } - public void setLast_seen(Date last_seen) { - this.last_seen = last_seen; + public void setLastSeen(Date lastSeen) { + this.lastSeen = lastSeen; } public String getGoals() { @@ -107,28 +107,28 @@ public void setGoals(String goals) { this.goals = goals; } - public String getResource_level() { - return resource_level; + public String getResourceLevel() { + return resourceLevel; } - public void setResource_level(String resource_level) { - this.resource_level = resource_level; + public void setResourceLevel(String resourceLevel) { + this.resourceLevel = resourceLevel; } - public String getPrimary_motivation() { - return primary_motivation; + public String getPrimaryMotivation() { + return primaryMotivation; } - public void setPrimary_motivation(String primary_motivation) { - this.primary_motivation = primary_motivation; + public void setPrimaryMotivation(String primaryMotivation) { + this.primaryMotivation = primaryMotivation; } - public String getSecondary_motivation() { - return secondary_motivation; + public String getSecondaryMotivation() { + return secondaryMotivation; } - public void setSecondary_motivation(String secondary_motivation) { - this.secondary_motivation = secondary_motivation; + public void setSecondaryMotivation(String secondaryMotivation) { + this.secondaryMotivation = secondaryMotivation; } public String getSophistication() { @@ -139,12 +139,12 @@ public void setSophistication(String sophistication) { this.sophistication = sophistication; } - public String getPersonal_characteristics() { - return personal_characteristics; + public String getPersonalCharacteristics() { + return personalCharacteristics; } - public void setPersonal_characteristics(String personal_characteristics) { - this.personal_characteristics = personal_characteristics; + public void setPersonalCharacteristics(String personalCharacteristics) { + this.personalCharacteristics = personalCharacteristics; } public String getRoles() { @@ -155,11 +155,11 @@ public void setRoles(String roles) { this.roles = roles; } - public String getThreat_actor_types() { - return threat_actor_types; + public String getThreatActorTypes() { + return threatActorTypes; } - public void setThreat_actor_types(String threat_actor_types) { - this.threat_actor_types = threat_actor_types; + public void setThreatActorTypes(String threatActorTypes) { + this.threatActorTypes = threatActorTypes; } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java index 33b9ae31..e1c6dfea 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java @@ -6,6 +6,7 @@ import com.vaticle.typedb.client.api.TypeDBTransaction; import com.vaticle.typeql.lang.TypeQL; import org.example.configuration.AppConfiguration; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; @@ -18,19 +19,18 @@ @Component public class CTIBean implements ApplicationListener { - private TypeDBClient client; private static final Logger LOGGER = Logger.getLogger("AppSpringWeb"); @Autowired private AppConfiguration appConfiguration; @Override - public void onApplicationEvent(ApplicationReadyEvent event) { + public void onApplicationEvent(@NotNull ApplicationReadyEvent event) { String address = appConfiguration.getAddress() + ":" + appConfiguration.getPort(); String database = appConfiguration.getDatabase(); String dataset = appConfiguration.getDataset(); String schema = appConfiguration.getSchema(); - client = TypeDB.coreClient(address); + TypeDBClient client = TypeDB.coreClient(address); LOGGER.info("Deleting Database"); if (client.databases().contains(database)) { client.databases().get(database).delete(); From 874379c692437134de93d20e6df384033ac651bd Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 18:06:55 +0100 Subject: [PATCH 13/27] Cleaning --- .../src/main/java/org/example/Main.java | 2 -- .../java/org/example/db/ThreatActorDAO.java | 1 + .../org/example/db/TypeDBSessionWrapper.java | 19 +++++++++---------- .../java/org/example/model/AttributedTo.java | 1 - .../main/java/org/example/model/Sighting.java | 1 + .../org/example/model/StixCoreObject.java | 2 +- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java index 2faebceb..ac4f626c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java @@ -21,8 +21,6 @@ package org.example; -import org.example.configuration.AppConfiguration; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 59819a32..6d35493d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.ThreatActor; + import java.util.HashSet; import java.util.Map; import java.util.Set; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index 55ad0ad4..cb0fcb6f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -37,6 +37,15 @@ public class TypeDBSessionWrapper { private final TypeDBClient client; private TypeDBSession session; + public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfiguration) { + this.appConfiguration = appConfiguration; + this.client = client; + if (this.client.databases().contains(appConfiguration.getDatabase())) { + session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, + TypeDBOptions.core().infer(true)); + } + } + private Pair extractPair(ConceptMap values) { var json = values.toJSON().get("attribute"); var key = json.asObject().get("type").asString(); @@ -124,7 +133,6 @@ public ObjectNode getSchemaJSON(String query) { return rootNode; } - public ObjectNode getListJSON(String query, String relName, String rolePlayers) { return getListJSON(query, relName, rolePlayers, false); } @@ -268,15 +276,6 @@ public void newSession() { TypeDBOptions.core().infer(true)); } - public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfiguration) { - this.appConfiguration = appConfiguration; - this.client = client; - if (this.client.databases().contains(appConfiguration.getDatabase())) { - session = this.client.session(appConfiguration.getDatabase(), TypeDBSession.Type.DATA, - TypeDBOptions.core().infer(true)); - } - } - private String removeLastChar(String str) { if (str == null || str.isEmpty()) { return str; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java index 01962811..312d210b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java @@ -39,7 +39,6 @@ public class AttributedTo { private Date modified; - public String getSpecVersion() { return specVersion; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java index dee7d7de..30e91e1d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java @@ -37,6 +37,7 @@ public class Sighting extends StixCoreRelationship { private Double count; private String summary; + public Date getFirstSeen() { return firstSeen; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java index 6aad1cc1..97bd3ac1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java @@ -30,7 +30,7 @@ public class StixCoreObject { @JsonIgnore public static final String typeString = " spec_version;"; private String specVersion; - + public String getSpecVersion() { return specVersion; } From 252f1f3e0ce3664dd5d4cecfa812ccc847e64283 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 18:13:16 +0100 Subject: [PATCH 14/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294043453 --- .../src/main/java/org/example/db/AttributedToDAO.java | 2 +- .../src/main/java/org/example/db/CreatedByDAO.java | 2 +- .../src/main/java/org/example/db/ExternalReferencesDAO.java | 2 +- .../src/main/java/org/example/db/HashesDAO.java | 2 +- .../src/main/java/org/example/db/ImpersonatesDAO.java | 2 +- .../src/main/java/org/example/db/IndicatesDAO.java | 2 +- .../src/main/java/org/example/db/KillChainPhasesDAO.java | 2 +- .../src/main/java/org/example/db/SightingDAO.java | 2 +- .../src/main/java/org/example/db/TargetsDAO.java | 2 +- .../src/main/java/org/example/db/TypeDBSessionWrapper.java | 2 +- .../src/main/java/org/example/db/UsesDAO.java | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 1ebb7c3a..fdb7882d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -26,7 +26,7 @@ public class AttributedToDAO { protected static final String ATTRIBUTED_TO_MATCH = - "$ta (attributed: $AAA, attributing: $BBB) isa attributed_to, has stix_id $id, has $attribute;" + + "$ta (attributed: $rp1, attributing: $rp2) isa attributed_to, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "attributed_to"; private final TypeDBSessionWrapper db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index 320c1ae5..5c296f0c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -26,7 +26,7 @@ public class CreatedByDAO { protected static final String CREATED_BY_MATCH = - "$ta (creator: $AAA, created: $BBB) isa created_by;"; + "$ta (creator: $rp1, created: $rp2) isa created_by;"; private static final String NAME_REL = "created_by"; private final TypeDBSessionWrapper db; private final String typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 22687351..bb60074b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -27,7 +27,7 @@ public class ExternalReferencesDAO { protected static final String EXTERNAL_REFERENCES_MATCH = - "$ta (referencing: $AAA, referenced: $BBB) isa external_references;"; + "$ta (referencing: $rp1, referenced: $rp2) isa external_references;"; private static final String NAME_REL = "external_references"; private final TypeDBSessionWrapper db; private final String typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index 38d1e6e3..f3e821c2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -26,7 +26,7 @@ public class HashesDAO { protected static final String HASHES_MATCH = - "$ta (hash_value: $AAA, hashes_owner: $BBB) isa hashes, has $attribute;"; + "$ta (hash_value: $rp1, hashes_owner: $rp2) isa hashes, has $attribute;"; private static final String NAME_REL = "hashes"; private final TypeDBSessionWrapper db; private final String rolePlayers; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index e109d18c..edd4270b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -27,7 +27,7 @@ public class ImpersonatesDAO { protected static final String IMPERSONATES_MATCH = - "$ta (impersonating: $AAA, impersonated: $BBB) isa impersonates, has stix_id $id, has $attribute;" + + "$ta (impersonating: $rp1, impersonated: $rp2) isa impersonates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "impersonates"; private final TypeDBSessionWrapper db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 6a8afb8b..9db0236f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -26,7 +26,7 @@ public class IndicatesDAO { protected static final String INDICATES_MATCH = - "$ta (indicating: $AAA, indicated: $BBB) isa indicates, has stix_id $id, has $attribute;" + + "$ta (indicating: $rp1, indicated: $rp2) isa indicates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "indicates"; private final TypeDBSessionWrapper db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index a61d58b8..16303d7d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -26,7 +26,7 @@ public class KillChainPhasesDAO { protected static final String KILL_CHAIN_PHASES_MATCH = - "$ta (using: $AAA, used: $BBB) isa kill_chain_phases;"; + "$ta (using: $rp1, used: $rp2) isa kill_chain_phases;"; private static final String NAME_REL = "kill_chain_phases"; private final TypeDBSessionWrapper db; private final String typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index cc5aa64e..cd95e6a9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -26,7 +26,7 @@ public class SightingDAO { protected static final String SIGHTING_MATCH = - "$ta (sighting_of: $AAA, observed_data: $BBB) isa sighting, has stix_id $id, has $attribute;" + + "$ta (sighting_of: $rp1, observed_data: $rp2) isa sighting, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "sighting"; private final TypeDBSessionWrapper db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index a44f46e4..9446444b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -27,7 +27,7 @@ public class TargetsDAO { protected static final String TARGETS_MATCH = - "$ta (targeting: $AAA, targeted: $BBB) isa targets, has stix_id $id, has $attribute;" + + "$ta (targeting: $rp1, targeted: $rp2) isa targets, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "targets"; private final TypeDBSessionWrapper db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index cb0fcb6f..486c552e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -215,7 +215,7 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye var dbResults2 = readTx.query().matchGroup(query); dbResults2.forEach(w -> { w.conceptMaps().forEach(m -> { - String value3 = m.map().get("AAA").asAttribute().toString(); + String value3 = m.map().get("rp1").asAttribute().toString(); value3 = removeLastChar(value3.split(":")[1]); childNode.put(rolePlayersTmp[0], value3); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index 74430cb9..96b902ea 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -26,7 +26,7 @@ public class UsesDAO { protected static final String USES_MATCH = - "$ta (used_by: $AAA, used: $BBB) isa uses, has stix_id $id, has $attribute;" + + "$ta (used_by: $rp1, used: $rp2) isa uses, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "uses"; From bcfbd1363191b99194ce40936314773ffa115154 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Tue, 15 Aug 2023 18:25:13 +0100 Subject: [PATCH 15/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294089292 Solve refactor packages --- .../java/org/example/controllers/Controller.java | 12 +++++++++--- .../main/java/org/example/db/AttributedToDAO.java | 2 +- .../src/main/java/org/example/db/ClassDAO.java | 10 +++++----- .../src/main/java/org/example/db/CreatedByDAO.java | 2 +- .../java/org/example/db/ExternalReferencesDAO.java | 2 +- .../src/main/java/org/example/db/FileDAO.java | 10 +++++----- .../src/main/java/org/example/db/GroupDAO.java | 10 +++++----- .../src/main/java/org/example/db/HashesDAO.java | 2 +- .../src/main/java/org/example/db/IdUnknownDAO.java | 10 +++++----- .../src/main/java/org/example/db/IdentityDAO.java | 10 +++++----- .../main/java/org/example/db/ImpersonatesDAO.java | 2 +- .../src/main/java/org/example/db/IndicatesDAO.java | 2 +- .../src/main/java/org/example/db/IndicatorDAO.java | 10 +++++----- .../src/main/java/org/example/db/IndividualDAO.java | 10 +++++----- .../main/java/org/example/db/KillChainPhaseDAO.java | 10 +++++----- .../main/java/org/example/db/KillChainPhasesDAO.java | 2 +- .../src/main/java/org/example/db/MalwareDAO.java | 10 +++++----- .../src/main/java/org/example/db/SightingDAO.java | 2 +- .../src/main/java/org/example/db/SystemDAO.java | 10 +++++----- .../src/main/java/org/example/db/TargetsDAO.java | 2 +- .../src/main/java/org/example/db/ThreatActorDAO.java | 10 +++++----- .../src/main/java/org/example/db/UsesDAO.java | 2 +- .../example/model/{ => domain/object}/Identity.java | 3 ++- .../example/model/{ => domain/object}/Indicator.java | 3 ++- .../example/model/{ => domain/object}/Malware.java | 3 ++- .../model/{ => domain/object}/ThreatActor.java | 3 ++- .../model/{ => domain/object/identity}/Class.java | 4 +++- .../model/{ => domain/object/identity}/Group.java | 4 +++- .../{ => domain/object/identity}/IdUnknown.java | 4 +++- .../{ => domain/object/identity}/Individual.java | 4 +++- .../model/{ => domain/object/identity}/System.java | 4 +++- .../example/model/{ => domain/observable}/File.java | 3 ++- .../{ => domain/relationship}/Impersonates.java | 3 ++- .../model/{ => domain/relationship}/Indicates.java | 3 ++- .../model/{ => domain/relationship}/Sighting.java | 3 ++- .../model/{ => domain/relationship}/Targets.java | 3 ++- .../model/{ => domain/relationship}/Uses.java | 3 ++- .../{ => domain/relationship/ext}/AttributedTo.java | 2 +- .../{ => domain/relationship/ext}/CreatedBy.java | 2 +- .../relationship/ext}/ExternalReferences.java | 2 +- .../model/{ => domain/relationship/ext}/Hashes.java | 2 +- .../relationship/ext}/KillChainPhases.java | 2 +- .../model/{ => domain/stix}/StixCoreObject.java | 2 +- .../{ => domain/stix}/StixCoreRelationship.java | 2 +- .../{ => domain/stix}/StixCyberObservableObject.java | 2 +- .../model/{ => domain/stix}/StixDomainObject.java | 2 +- .../model/{ => domain/stix/ext}/KillChainPhase.java | 2 +- .../model/{ => domain/stix/ext}/StixSubObject.java | 2 +- 48 files changed, 120 insertions(+), 94 deletions(-) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object}/Identity.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object}/Indicator.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object}/Malware.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object}/ThreatActor.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object/identity}/Class.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object/identity}/Group.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object/identity}/IdUnknown.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object/identity}/Individual.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/object/identity}/System.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/observable}/File.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship}/Impersonates.java (91%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship}/Indicates.java (91%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship}/Sighting.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship}/Targets.java (91%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship}/Uses.java (91%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship/ext}/AttributedTo.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship/ext}/CreatedBy.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship/ext}/ExternalReferences.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship/ext}/Hashes.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/relationship/ext}/KillChainPhases.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix}/StixCoreObject.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix}/StixCoreRelationship.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix}/StixCyberObservableObject.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix}/StixDomainObject.java (98%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix/ext}/KillChainPhase.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/{ => domain/stix/ext}/StixSubObject.java (96%) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index e1bca913..98fed6e4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -27,9 +27,15 @@ import com.vaticle.typedb.client.api.TypeDBClient; import org.example.configuration.AppConfiguration; import org.example.db.*; -import org.example.model.Class; -import org.example.model.System; -import org.example.model.*; +import org.example.model.domain.object.identity.*; +import org.example.model.domain.object.Identity; +import org.example.model.domain.object.Indicator; +import org.example.model.domain.object.Malware; +import org.example.model.domain.object.ThreatActor; +import org.example.model.domain.object.identity.Class; +import org.example.model.domain.object.identity.System; +import org.example.model.domain.observable.File; +import org.example.model.domain.stix.ext.KillChainPhase; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.QueryMapping; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index fdb7882d..9a780c64 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.AttributedTo; +import org.example.model.domain.relationship.ext.AttributedTo; public class AttributedToDAO { protected static final String ATTRIBUTED_TO_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index cc23d8e4..4458f142 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Class; +import org.example.model.domain.object.identity.Class; import java.util.HashSet; import java.util.Map; @@ -59,10 +59,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + CLASS_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String type, String name) { @@ -89,10 +89,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index 5c296f0c..a954bbe1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.CreatedBy; +import org.example.model.domain.relationship.ext.CreatedBy; public class CreatedByDAO { protected static final String CREATED_BY_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index bb60074b..72d14ee6 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.ExternalReferences; +import org.example.model.domain.relationship.ext.ExternalReferences; public class ExternalReferencesDAO { protected static final String EXTERNAL_REFERENCES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index 4d8fff68..a73d7871 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.File; +import org.example.model.domain.observable.File; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + FILE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -90,10 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProces String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index 232198b4..c17d157a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Group; +import org.example.model.domain.object.identity.Group; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + GROUP_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index f3e821c2..9a510758 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Hashes; +import org.example.model.domain.relationship.ext.Hashes; public class HashesDAO { protected static final String HASHES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 85b8134e..d8f9389d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.IdUnknown; +import org.example.model.domain.object.identity.IdUnknown; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + ID_UNKNOWN_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonP String getQueryStr = "match " + ID_UNKNOWN_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index 388f3b91..7a6dd3d7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Identity; +import org.example.model.domain.object.Identity; import java.util.HashSet; import java.util.Map; @@ -59,10 +59,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -90,10 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonPr String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index edd4270b..2cae1625 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Impersonates; +import org.example.model.domain.relationship.Impersonates; public class ImpersonatesDAO { protected static final String IMPERSONATES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index 9db0236f..e75e10e2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Indicates; +import org.example.model.domain.relationship.Indicates; public class IndicatesDAO { protected static final String INDICATES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index 02fc20d2..403a264f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Indicator; +import org.example.model.domain.object.Indicator; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonP String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index 40572f80..4434e4d4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Individual; +import org.example.model.domain.object.identity.Individual; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws Json String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index af2eaf7c..3261524a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.KillChainPhase; +import org.example.model.domain.stix.ext.KillChainPhase; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index 16303d7d..423a4377 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.KillChainPhases; +import org.example.model.domain.relationship.ext.KillChainPhases; public class KillChainPhasesDAO { protected static final String KILL_CHAIN_PHASES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index ded2ce43..9c378d7b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Malware; +import org.example.model.domain.object.Malware; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -91,10 +91,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonPro String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index cd95e6a9..d5b53b3b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Sighting; +import org.example.model.domain.relationship.Sighting; public class SightingDAO { protected static final String SIGHTING_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index bddce28a..7b7ad90d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.System; +import org.example.model.domain.object.identity.System; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -90,10 +90,10 @@ public Set searchBeans(String attrType, String attrName) throws JsonProc String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index 9446444b..1bc23497 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Targets; +import org.example.model.domain.relationship.Targets; public class TargetsDAO { protected static final String TARGETS_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 6d35493d..00bef7ef 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.ThreatActor; +import org.example.model.domain.object.ThreatActor; import java.util.HashSet; import java.util.Map; @@ -60,10 +60,10 @@ public Set findAllBeans() throws JsonProcessingException { String getQueryStr = "match " + TA_MATCH + " group $id;"; ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } public ObjectNode search(String attrType, String attrName) { @@ -92,10 +92,10 @@ public Set searchBeans(String attrType, String attrName) throws Jso System.out.println(getQueryStr); ObjectNode json = find(getQueryStr); - Map test = objectMapper.readValue(json.toString(), new TypeReference<>() { + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); - return new HashSet<>(test.values()); + return new HashSet<>(result.values()); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index 96b902ea..a0d7504e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -22,7 +22,7 @@ package org.example.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.Uses; +import org.example.model.domain.relationship.Uses; public class UsesDAO { protected static final String USES_MATCH = diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java index ebb9f641..fa512b98 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixDomainObject; public class Identity extends StixDomainObject { @JsonIgnore diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java index 279fdde8..38693f1b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixDomainObject; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java index 626a6d73..52e51f03 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixDomainObject; import java.util.Date; import java.util.Set; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java index a081c5f4..2ea55c4e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixDomainObject; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java index 3d6554ef..d37e9118 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Class.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java @@ -19,7 +19,9 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object.identity; + +import org.example.model.domain.object.Identity; public class Class extends Identity { public Class() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java index 65b77e42..6bb54723 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Group.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java @@ -19,7 +19,9 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object.identity; + +import org.example.model.domain.object.Identity; public class Group extends Identity { public Group() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java index 3fb07e8b..f4994fb9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/IdUnknown.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java @@ -19,7 +19,9 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object.identity; + +import org.example.model.domain.object.Identity; public class IdUnknown extends Identity { public IdUnknown() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java index 1f3e4fe3..8d8d0d2b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Individual.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java @@ -19,7 +19,9 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object.identity; + +import org.example.model.domain.object.Identity; public class Individual extends Identity { public Individual() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java index 0b713a81..cf623543 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/System.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java @@ -19,7 +19,9 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.object.identity; + +import org.example.model.domain.object.Identity; public class System extends Identity { public System() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java index 5b8f470d..23de28c4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.observable; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCyberObservableObject; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java similarity index 91% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java index f7c360ec..5f552726 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCoreRelationship; public class Impersonates extends StixCoreRelationship { @JsonIgnore diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java similarity index 91% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java index 3f856fca..07521e7f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCoreRelationship; public class Indicates extends StixCoreRelationship { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java index 30e91e1d..5d5b4934 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCoreRelationship; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java similarity index 91% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java index e30b152b..b17b6384 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCoreRelationship; public class Targets extends StixCoreRelationship { @JsonIgnore diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java similarity index 91% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java index 49b14dee..e09477b9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java @@ -19,9 +19,10 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixCoreRelationship; public class Uses extends StixCoreRelationship { @JsonIgnore diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java index 312d210b..eaff23e0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java index 9d54d09b..9393eccd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java index 890d44a1..fdc6f158 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java index a720fc84..39544a32 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java index 7302c0f3..24da1ab4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java index 97bd3ac1..bf8866a1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java index baaf6681..ebb43a7d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java index 85519846..3a79faf2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java similarity index 98% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java index bec777fd..cfbc8619 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java index 68a4a44a..9112ab98 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java index d5b5ce74..048f32fe 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/StixSubObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model; +package org.example.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; From 13ebab06f1bdaa652536263b30898a76c0f01073 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 10:41:18 +0100 Subject: [PATCH 16/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294035945 --- cybersecurity/cyber_threat_intelligence/pom.xml | 8 +++++++- .../java/org/example/db/AttributedToDAO.java | 8 +++++--- .../src/main/java/org/example/db/ClassDAO.java | 5 +++-- .../main/java/org/example/db/CreatedByDAO.java | 8 +++++--- .../org/example/db/ExternalReferencesDAO.java | 8 +++++--- .../src/main/java/org/example/db/FileDAO.java | 7 ++++--- .../src/main/java/org/example/db/GroupDAO.java | 7 ++++--- .../src/main/java/org/example/db/HashesDAO.java | 4 +++- .../main/java/org/example/db/IdUnknownDAO.java | 7 ++++--- .../main/java/org/example/db/IdentityDAO.java | 7 ++++--- .../java/org/example/db/ImpersonatesDAO.java | 8 +++++--- .../main/java/org/example/db/IndicatesDAO.java | 8 +++++--- .../main/java/org/example/db/IndicatorDAO.java | 9 +++++---- .../main/java/org/example/db/IndividualDAO.java | 9 +++++---- .../java/org/example/db/KillChainPhaseDAO.java | 9 +++++---- .../java/org/example/db/KillChainPhasesDAO.java | 8 +++++--- .../src/main/java/org/example/db/MalwareDAO.java | 9 +++++---- .../main/java/org/example/db/SightingDAO.java | 8 +++++--- .../src/main/java/org/example/db/SystemDAO.java | 9 +++++---- .../src/main/java/org/example/db/TargetsDAO.java | 8 +++++--- .../main/java/org/example/db/ThreatActorDAO.java | 7 ++++--- .../org/example/db/TypeDBSessionWrapper.java | 16 +++++++++------- .../src/main/java/org/example/db/UsesDAO.java | 8 +++++--- .../example/model/domain/object/Identity.java | 8 +++++++- .../example/model/domain/object/Indicator.java | 8 ++++++-- .../org/example/model/domain/object/Malware.java | 12 +++++++++--- .../example/model/domain/object/ThreatActor.java | 13 +++++++------ .../example/model/domain/observable/File.java | 8 ++++++-- .../model/domain/relationship/Impersonates.java | 8 ++++++-- .../model/domain/relationship/Indicates.java | 9 ++++++--- .../model/domain/relationship/Sighting.java | 8 ++++++-- .../model/domain/relationship/Targets.java | 7 +++++-- .../example/model/domain/relationship/Uses.java | 7 +++++-- .../domain/relationship/ext/AttributedTo.java | 12 ++++++++---- .../model/domain/relationship/ext/CreatedBy.java | 8 ++++++-- .../relationship/ext/ExternalReferences.java | 8 ++++++-- .../model/domain/relationship/ext/Hashes.java | 8 ++++++-- .../domain/relationship/ext/KillChainPhases.java | 9 +++++++-- .../model/domain/stix/StixCoreObject.java | 7 +++++-- .../model/domain/stix/StixCoreRelationship.java | 8 ++++++-- .../domain/stix/StixCyberObservableObject.java | 12 +++++++++--- .../model/domain/stix/StixDomainObject.java | 11 +++++++++-- .../model/domain/stix/ext/KillChainPhase.java | 8 +++++++- .../model/domain/stix/ext/StixSubObject.java | 4 +++- 44 files changed, 247 insertions(+), 121 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/pom.xml b/cybersecurity/cyber_threat_intelligence/pom.xml index 0aca7365..9e0bfe14 100644 --- a/cybersecurity/cyber_threat_intelligence/pom.xml +++ b/cybersecurity/cyber_threat_intelligence/pom.xml @@ -86,7 +86,13 @@ graphql-java-extended-scalars 20.2 - + + commons-collections + commons-collections + 3.2.2 + compile + + diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 9a780c64..37665a0c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -24,14 +24,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.ext.AttributedTo; +import java.util.List; + public class AttributedToDAO { protected static final String ATTRIBUTED_TO_MATCH = "$ta (attributed: $rp1, attributing: $rp2) isa attributed_to, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "attributed_to"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public AttributedToDAO(TypeDBSessionWrapper db) { @@ -51,7 +53,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index 4458f142..4448c1d7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.identity.Class; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class ClassDAO { " $class isa class, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public ClassDAO(TypeDBSessionWrapper db) { this.db = db; @@ -81,7 +82,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java index a954bbe1..acb3aedb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java @@ -24,13 +24,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.ext.CreatedBy; +import java.util.List; + public class CreatedByDAO { protected static final String CREATED_BY_MATCH = "$ta (creator: $rp1, created: $rp2) isa created_by;"; private static final String NAME_REL = "created_by"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public CreatedByDAO(TypeDBSessionWrapper db) { @@ -50,7 +52,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java index 72d14ee6..fd439411 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java @@ -25,13 +25,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.ext.ExternalReferences; +import java.util.List; + public class ExternalReferencesDAO { protected static final String EXTERNAL_REFERENCES_MATCH = "$ta (referencing: $rp1, referenced: $rp2) isa external_references;"; private static final String NAME_REL = "external_references"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public ExternalReferencesDAO(TypeDBSessionWrapper db) { this.db = db; @@ -50,7 +52,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index a73d7871..c30504eb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.observable.File; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class FileDAO { " $file isa file, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public FileDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -82,7 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProces ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index c17d157a..a0f1af15 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.identity.Group; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class GroupDAO { " $group isa group, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public GroupDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java index 9a510758..095c79a6 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java @@ -24,12 +24,14 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.ext.Hashes; +import java.util.List; + public class HashesDAO { protected static final String HASHES_MATCH = "$ta (hash_value: $rp1, hashes_owner: $rp2) isa hashes, has $attribute;"; private static final String NAME_REL = "hashes"; private final TypeDBSessionWrapper db; - private final String rolePlayers; + private final List rolePlayers; public HashesDAO(TypeDBSessionWrapper db) { this.db = db; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index d8f9389d..ea18351a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.identity.IdUnknown; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class IdUnknownDAO { " $idUnknown isa id_unknown, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public IdUnknownDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonP ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index 7a6dd3d7..a260f531 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.Identity; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class IdentityDAO { " $identity isa identity, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public IdentityDAO(TypeDBSessionWrapper db) { this.db = db; @@ -67,7 +68,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -82,7 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonPr ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index 2cae1625..df9202bf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -25,14 +25,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.Impersonates; +import java.util.List; + public class ImpersonatesDAO { protected static final String IMPERSONATES_MATCH = "$ta (impersonating: $rp1, impersonated: $rp2) isa impersonates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "impersonates"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public ImpersonatesDAO(TypeDBSessionWrapper db) { @@ -52,7 +54,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java index e75e10e2..a343f129 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java @@ -24,14 +24,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.Indicates; +import java.util.List; + public class IndicatesDAO { protected static final String INDICATES_MATCH = "$ta (indicating: $rp1, indicated: $rp2) isa indicates, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "indicates"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public IndicatesDAO(TypeDBSessionWrapper db) { @@ -51,7 +53,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index 403a264f..9fa5291b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.Indicator; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -36,8 +37,8 @@ public class IndicatorDAO { protected static final String INDICATOR_MATCH = " $indicator isa indicator, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final List typeString; public IndicatorDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonP ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index 4434e4d4..dfb84ed3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.identity.Individual; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -36,8 +37,8 @@ public class IndividualDAO { protected static final String INDIVIDUAL_MATCH = " $individual isa individual, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final List typeString; public IndividualDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws Json ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 3261524a..26cef4dc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.stix.ext.KillChainPhase; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -36,8 +37,8 @@ public class KillChainPhaseDAO { protected static final String KILL_CHAIN_PHASE_MATCH = " $kill_chain_phase isa kill_chain_phase, has kill_chain_name $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final List typeString; public KillChainPhaseDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java index 423a4377..10b619d9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java @@ -24,13 +24,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.ext.KillChainPhases; +import java.util.List; + public class KillChainPhasesDAO { protected static final String KILL_CHAIN_PHASES_MATCH = "$ta (using: $rp1, used: $rp2) isa kill_chain_phases;"; private static final String NAME_REL = "kill_chain_phases"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public KillChainPhasesDAO(TypeDBSessionWrapper db) { @@ -50,7 +52,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index 9c378d7b..3df9cb04 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.Malware; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -36,8 +37,8 @@ public class MalwareDAO { protected static final String MALWARE_MATCH = " $malware isa malware, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final List typeString; public MalwareDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -83,7 +84,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonPro ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java index d5b53b3b..c96dd3f7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java @@ -24,14 +24,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.Sighting; +import java.util.List; + public class SightingDAO { protected static final String SIGHTING_MATCH = "$ta (sighting_of: $rp1, observed_data: $rp2) isa sighting, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "sighting"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public SightingDAO(TypeDBSessionWrapper db) { @@ -51,7 +53,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index 7b7ad90d..95e9c5ef 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.identity.System; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -36,8 +37,8 @@ public class SystemDAO { protected static final String SYSTEM_MATCH = " $system isa system, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; - TypeDBSessionWrapper db; - String typeString; + private final TypeDBSessionWrapper db; + private final List typeString; public SystemDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -82,7 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProc ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java index 1bc23497..da90d969 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java @@ -25,14 +25,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.Targets; +import java.util.List; + public class TargetsDAO { protected static final String TARGETS_MATCH = "$ta (targeting: $rp1, targeted: $rp2) isa targets, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private static final String NAME_REL = "targets"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public TargetsDAO(TypeDBSessionWrapper db) { this.db = db; @@ -51,7 +53,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 00bef7ef..798b9dc3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -29,6 +29,7 @@ import org.example.model.domain.object.ThreatActor; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,7 +38,7 @@ public class ThreatActorDAO { " $ta isa threat_actor, has stix_id $id ,has $attribute;" + "$attribute isa! $j; "; private final TypeDBSessionWrapper db; - private final String typeString; + private final List typeString; public ThreatActorDAO(TypeDBSessionWrapper db) { @@ -68,7 +69,7 @@ public Set findAllBeans() throws JsonProcessingException { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } @@ -82,7 +83,7 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java index 486c552e..183ef55a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java @@ -32,6 +32,8 @@ import com.vaticle.typedb.common.collection.Pair; import org.example.configuration.AppConfiguration; +import java.util.List; + public class TypeDBSessionWrapper { private final AppConfiguration appConfiguration; private final TypeDBClient client; @@ -133,11 +135,11 @@ public ObjectNode getSchemaJSON(String query) { return rootNode; } - public ObjectNode getListJSON(String query, String relName, String rolePlayers) { + public ObjectNode getListJSON(String query, String relName, List rolePlayers) { return getListJSON(query, relName, rolePlayers, false); } - public ObjectNode getListJSON(String query, String relName, String rolePlayers, boolean asAttribute) { + public ObjectNode getListJSON(String query, String relName, List rolePlayers, boolean asAttribute) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); @@ -154,7 +156,7 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, }); } - String[] rolePlayersTmp = rolePlayers.split(";"); + String[] rolePlayersTmp = rolePlayers.toArray(new String[0]); String queryBegin = "match $rel ("; for (int i = 0; i < rolePlayersTmp.length; i++) { @@ -178,7 +180,7 @@ public ObjectNode getListJSON(String query, String relName, String rolePlayers, return rootNode; } - public ObjectNode getListAttrJSON(String query, String relName, String rolePlayers, boolean asAttribute) { + public ObjectNode getListAttrJSON(String query, String relName, List rolePlayers, boolean asAttribute) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); @@ -195,7 +197,7 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye }); } - String[] rolePlayersTmp = rolePlayers.split(";"); + String[] rolePlayersTmp = rolePlayers.toArray(new String[0]); String queryBegin = "match $rel ("; for (int i = 0; i < rolePlayersTmp.length; i++) { @@ -234,7 +236,7 @@ public ObjectNode getListAttrJSON(String query, String relName, String rolePlaye return rootNode; } - public ObjectNode getRelJSON(String query, String relName, String rolePlayers) { + public ObjectNode getRelJSON(String query, String relName, List rolePlayers) { newSession(); ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); @@ -249,7 +251,7 @@ public ObjectNode getRelJSON(String query, String relName, String rolePlayers) { childNode.put(pair.first(), pair.second()); }); - String[] rolePlayersTmp = rolePlayers.split(";"); + String[] rolePlayersTmp = rolePlayers.toArray(new String[0]); String queryBegin = "match $rel ("; for (int i = 0; i < rolePlayersTmp.length; i++) { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java index a0d7504e..e814ae74 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java @@ -24,6 +24,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.example.model.domain.relationship.Uses; +import java.util.List; + public class UsesDAO { protected static final String USES_MATCH = "$ta (used_by: $rp1, used: $rp2) isa uses, has stix_id $id, has $attribute;" + @@ -31,8 +33,8 @@ public class UsesDAO { private static final String NAME_REL = "uses"; private final TypeDBSessionWrapper db; - private final String typeString; - private final String rolePlayers; + private final List typeString; + private final List rolePlayers; public UsesDAO(TypeDBSessionWrapper db) { @@ -52,7 +54,7 @@ public ObjectNode findAll() { public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + attrType + ";")) { + if (typeString.contains(attrType)) { attrName = "\"" + attrName + "\""; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java index fa512b98..5fb93c33 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java @@ -24,9 +24,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixDomainObject; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + public class Identity extends StixDomainObject { @JsonIgnore - public static final String typeString = StixDomainObject.typeString + " name; description; stix_role; identity_class; sector; contact_information;"; + public static final List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("name", "description", "stix_role", "identity_class", "sector", + "contact_information")).flatMap(List::stream).toList(); private String name; private String description; private String stixRole; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java index 38693f1b..4681d3f7 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java @@ -24,12 +24,16 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixDomainObject; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.stream.Stream; public class Indicator extends StixDomainObject { @JsonIgnore - public static final String typeString = StixDomainObject.typeString + " name; description; pattern; pattern_type; pattern_version;"; - + public static final List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("name", "description", "pattern", "pattern_type", "pattern_version") + ).flatMap(List::stream).toList(); private String name; private String description; private String pattern; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java index 52e51f03..fb67dc45 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java @@ -24,15 +24,21 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixDomainObject; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; public class Malware extends StixDomainObject { @JsonIgnore - public static String typeList = StixDomainObject.typeList + " aliases; architecture_execution_envs; implementation_languages; capabilities;"; + public static List typeList = Stream.of(StixDomainObject.typeList, + Arrays.asList("aliases", "architecture_execution_envs", "implementation_languages", "capabilities") + ).flatMap(List::stream).toList(); @JsonIgnore - public static String typeString = StixDomainObject.typeString + " name; description; malware_types; architecture_execution_envs; implementation_languages; capabilities;"; - + public static List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("name", "description", "malware_types", "architecture_execution_envs", + "implementation_languages", "capabilities")).flatMap(List::stream).toList(); private String name; private String description; private String malwareTypes; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java index 2ea55c4e..19678b8e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java @@ -24,12 +24,17 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixDomainObject; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.stream.Stream; public class ThreatActor extends StixDomainObject { @JsonIgnore - public static final String typeString = StixDomainObject.typeString + " name; description; aliases; stix_role; goals; resource_level; primary_motivation; secondary_motivation; sophistication; personal_characteristics; roles; therat_actor_types;"; - + public static final List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("name", "description", "aliases", "stix_role", "goals", "resource_level", + "primary_motivation", "secondary_motivation", "sophistication", "personal_characteristics", + "roles", "threat_actor_types")).flatMap(List::stream).toList(); private String name; private String description; private String aliases; @@ -48,10 +53,6 @@ public class ThreatActor extends StixDomainObject { public ThreatActor() { } - public String getTypeString() { - return typeString; - } - public String getName() { return name; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java index 23de28c4..5295ecbc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java @@ -23,13 +23,17 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCyberObservableObject; +import org.example.model.domain.stix.StixDomainObject; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.stream.Stream; public class File extends StixCyberObservableObject { @JsonIgnore - public static final String typeString = StixCyberObservableObject.typeString + " name; name_enc; magic_number_hex; mime_type;"; - + public static final List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("name", "name_enc", "magic_number_hex", "mime_type")).flatMap(List::stream).toList(); private Integer size; private String name; private String nameEnc; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java index 5f552726..3fb2875e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java @@ -24,11 +24,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCoreRelationship; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class Impersonates extends StixCoreRelationship { @JsonIgnore - public static final String typeString = StixCoreRelationship.typeString; + public static final List typeString = StixCoreRelationship.typeString; @JsonIgnore - public static final String rolePlayers = " impersonating; impersonated;"; + public static final List rolePlayers = Arrays.asList("impersonating", "impersonated"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java index 07521e7f..afd00e28 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java @@ -24,12 +24,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCoreRelationship; -public class Indicates extends StixCoreRelationship { +import java.util.Arrays; +import java.util.List; +public class Indicates extends StixCoreRelationship { @JsonIgnore - public static final String typeString = StixCoreRelationship.typeString; + public static final List typeString = StixCoreRelationship.typeString; @JsonIgnore - public static final String rolePlayers = " indicating; indicated;"; + public static final List rolePlayers = Arrays.asList("indicating", "indicated"); + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java index 5d5b4934..2c520782 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java @@ -24,14 +24,18 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCoreRelationship; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.stream.Stream; public class Sighting extends StixCoreRelationship { @JsonIgnore - public static final String typeString = StixCoreRelationship.typeString + " summary;"; + public static final List typeString = Stream.of(StixCoreRelationship.typeString, List.of("summary") + ).flatMap(List::stream).toList(); @JsonIgnore - public static final String rolePlayers = " sighting_of; observed_data;"; + public static final List rolePlayers = Arrays.asList("sighting_of", "observed_data"); private Date firstSeen; private Date lastSeen; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java index b17b6384..fadb4eed 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java @@ -24,11 +24,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCoreRelationship; +import java.util.Arrays; +import java.util.List; + public class Targets extends StixCoreRelationship { @JsonIgnore - public static final String typeString = StixCoreRelationship.typeString; + public static final List typeString = StixCoreRelationship.typeString; @JsonIgnore - public static final String rolePlayers = " targeting; targeted;"; + public static final List rolePlayers = Arrays.asList("targeting", "targeted"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java index e09477b9..63dc14bf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java @@ -24,11 +24,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.example.model.domain.stix.StixCoreRelationship; +import java.util.Arrays; +import java.util.List; + public class Uses extends StixCoreRelationship { @JsonIgnore - public static final String typeString = StixCoreRelationship.typeString; + public static final List typeString = StixCoreRelationship.typeString; @JsonIgnore - public static final String rolePlayers = " used_by; used;"; + public static final List rolePlayers = Arrays.asList("used_by", "used"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java index eaff23e0..cc500734 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java @@ -23,19 +23,19 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Arrays; import java.util.Date; +import java.util.List; public class AttributedTo { @JsonIgnore - public static final String typeString = " stix_id; spec_version;"; + public static final List typeString = Arrays.asList("stix_id", "spec_version"); @JsonIgnore - public static final String rolePlayers = " attributing; attributed;"; - + public static final List rolePlayers = Arrays.asList("attributing", "attributed"); private String stixId; private String specVersion; private Date created; - private Date modified; @@ -43,6 +43,10 @@ public String getSpecVersion() { return specVersion; } + public void setSpecVersion(String specVersion) { + this.specVersion = specVersion; + } + public String getStixId() { return stixId; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java index 9393eccd..3307f019 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java @@ -23,10 +23,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class CreatedBy { @JsonIgnore - public static final String typeString = ""; + public static final List typeString = new ArrayList<>(); @JsonIgnore - public static final String rolePlayers = " creator; created;"; + public static final List rolePlayers = Arrays.asList("creator", "created"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java index fdc6f158..ac854885 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java @@ -23,11 +23,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class ExternalReferences { @JsonIgnore - public static final String typeString = ""; + public static final List typeString = new ArrayList(); @JsonIgnore - public static final String rolePlayers = " referencing; referenced;"; + public static final List rolePlayers = Arrays.asList("referencing", "referenced"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java index 39544a32..fe543937 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java @@ -23,12 +23,16 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class Hashes { @JsonIgnore - public static final String typeString = " hash_algorithm;"; + public static final List typeString = List.of("hash_algorithm"); @JsonIgnore - public static final String rolePlayers = " hash_value; hashes_owner;"; + public static final List rolePlayers = Arrays.asList("hash_value", "hashes_owner"); private String hashAlgorithm; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java index 24da1ab4..af623f50 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java @@ -23,10 +23,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class KillChainPhases { @JsonIgnore - public static final String typeString = ""; + public static final List typeString = new ArrayList<>(); + @JsonIgnore - public static final String rolePlayers = " using; used;"; + public static final List rolePlayers = Arrays.asList("using", "used"); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java index bf8866a1..65662046 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java @@ -23,12 +23,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; +import java.util.List; + public class StixCoreObject { @JsonIgnore - public static final String typeList = ""; + public static final List typeList = new ArrayList<>(); @JsonIgnore - public static final String typeString = " spec_version;"; + public static final List typeString = List.of("spec_version"); private String specVersion; public String getSpecVersion() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java index ebb43a7d..b1e1ed4d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java @@ -21,11 +21,15 @@ package org.example.model.domain.stix; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Arrays; import java.util.Date; +import java.util.List; public class StixCoreRelationship { - public static final String typeString = " stix_id; stix_version; stix_type;"; - + @JsonIgnore + public static final List typeString = Arrays.asList("stix_id", "stix_version", "stix_type"); private String specVersion; private String stixId; private String stixType; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java index 3a79faf2..55f003bb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java @@ -22,14 +22,20 @@ package org.example.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.apache.commons.collections.ListUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; public class StixCyberObservableObject extends StixCoreObject { @JsonIgnore - public static final String typeList = StixCoreObject.typeList; + public static final List typeList = StixCoreObject.typeList; @JsonIgnore - public static final String typeString = StixCoreObject.typeString + " defanged;"; - + public static final List typeString = Stream.of(StixCoreObject.typeString, List.of("defanged") + ).flatMap(List::stream).toList(); private String defanged; public StixCyberObservableObject() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java index cfbc8619..4ef333e9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java @@ -23,15 +23,22 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; public class StixDomainObject extends StixCoreObject { @JsonIgnore - public static final String typeList = StixCoreObject.typeList + " labels;"; + public static final List typeList = Stream.of(StixCoreObject.typeList, List.of("labels") + ).flatMap(List::stream).toList(); + @JsonIgnore - public static final String typeString = StixCoreObject.typeString + " labels; langs;"; + public static final List typeString = Stream.of(StixCoreObject.typeString, Arrays.asList("labels", "langs") + ).flatMap(List::stream).toList(); + private Date created; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java index 9112ab98..8da885c1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java @@ -22,10 +22,16 @@ package org.example.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.example.model.domain.stix.StixDomainObject; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; public class KillChainPhase extends StixSubObject { @JsonIgnore - public static final String typeString = StixSubObject.typeString + " kill_chain_name; kill_chain_phase_name;"; + public static List typeString = Stream.of(StixDomainObject.typeString, + Arrays.asList("kill_chain_name", "kill_chain_phase_name")).flatMap(List::stream).toList(); private String killChainName; private String killChainPhaseName; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java index 048f32fe..896c86bf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java @@ -23,12 +23,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.ArrayList; import java.util.Date; +import java.util.List; public class StixSubObject { @JsonIgnore - public static final String typeString = ""; + public static final List typeString = new ArrayList<>(); private Date created; private Date modified; From f2fb0ec61864f1bf8a8da9cb5c1fd301bd569401 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 10:58:36 +0100 Subject: [PATCH 17/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294043198 --- .../java/org/example/controllers/Controller.java | 6 +++--- .../main/java/org/example/db/AttributedToDAO.java | 1 - .../src/main/java/org/example/db/ClassDAO.java | 12 ++---------- .../src/main/java/org/example/db/FileDAO.java | 14 +++----------- .../src/main/java/org/example/db/GroupDAO.java | 12 ++---------- .../src/main/java/org/example/db/IdUnknownDAO.java | 12 ++---------- .../src/main/java/org/example/db/IdentityDAO.java | 12 ++---------- .../main/java/org/example/db/ImpersonatesDAO.java | 1 - .../src/main/java/org/example/db/IndicatorDAO.java | 12 ++---------- .../main/java/org/example/db/IndividualDAO.java | 12 ++---------- .../java/org/example/db/KillChainPhaseDAO.java | 12 ++---------- .../src/main/java/org/example/db/MalwareDAO.java | 12 ++---------- .../src/main/java/org/example/db/SchemaDAO.java | 4 ++-- .../src/main/java/org/example/db/SystemDAO.java | 12 ++---------- .../main/java/org/example/db/ThreatActorDAO.java | 13 ++----------- 15 files changed, 28 insertions(+), 119 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java index 98fed6e4..d998e809 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java @@ -87,7 +87,7 @@ public Set getThreatActorBeans() throws JsonProcessingException { @GetMapping(value = "/file", produces = "application/json") public ObjectNode getFileJSON() { FileDAO fileDAO = new FileDAO(wrapper); - return fileDAO.findALl(); + return fileDAO.findAll(); } @QueryMapping @@ -483,14 +483,14 @@ public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable Stri @GetMapping(value = "/schema", produces = "application/json") public ObjectNode getSchema() { SchemaDAO schemaDAO = new SchemaDAO(wrapper); - return schemaDAO.getSchemaAllJSON(); + return schemaDAO.getSchemaAll(); } @QueryMapping @GetMapping(value = "/schema-current", produces = "application/json") public ObjectNode getSchemaCurrent() { SchemaDAO schemaDAO = new SchemaDAO(wrapper); - return schemaDAO.getSchemaCurrentJSON(); + return schemaDAO.getSchemaCurrent(); } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java index 37665a0c..26eba85b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java @@ -35,7 +35,6 @@ public class AttributedToDAO { private final List typeString; private final List rolePlayers; - public AttributedToDAO(TypeDBSessionWrapper db) { this.db = db; typeString = AttributedTo.typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index 4448c1d7..f77a7b90 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -58,8 +58,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + CLASS_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -82,14 +81,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$class has " + attrType + " = " + attrName + ";"; - String getQueryStr = "match " + CLASS_MATCH + search + " group $id;"; - - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index c30504eb..9eb24855 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -50,7 +50,7 @@ private ObjectNode find(String getQueryStr) { return db.getAllJSON(getQueryStr); } - public ObjectNode findALl() { + public ObjectNode findAll() { var getQueryStr = "match " + FILE_MATCH + "group $id; "; return find(getQueryStr); } @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + FILE_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -83,14 +82,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProces ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$file has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + FILE_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index a0f1af15..5db93266 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + GROUP_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProce ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$group has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + GROUP_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index ea18351a..0a28b991 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + ID_UNKNOWN_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonP ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$idUnknown has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + ID_UNKNOWN_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index a260f531..21f259aa 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -58,8 +58,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + IDENTITY_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -83,14 +82,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonPr ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$identity has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + IDENTITY_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java index df9202bf..83debe42 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java @@ -36,7 +36,6 @@ public class ImpersonatesDAO { private final List typeString; private final List rolePlayers; - public ImpersonatesDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Impersonates.typeString; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index 9fa5291b..04f2a552 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + INDICATOR_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonP ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$indicator has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + INDICATOR_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index dfb84ed3..23ee4e24 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws Json ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$individual has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + INDIVIDUAL_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 26cef4dc..44328af0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index 3df9cb04..db954c5d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + MALWARE_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -84,14 +83,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonPro ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$malware has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + MALWARE_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java index 37ffd82c..0e8f2616 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java @@ -36,11 +36,11 @@ private ObjectNode find(String query) { return db.getSchemaJSON(query); } - public ObjectNode getSchemaAllJSON() { + public ObjectNode getSchemaAll() { return find(QUERY_ALL); } - public ObjectNode getSchemaCurrentJSON() { + public ObjectNode getSchemaCurrent() { return find(QUERY_CURRENT); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index 95e9c5ef..b67101a5 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + SYSTEM_MATCH + "group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -83,14 +82,7 @@ public Set searchBeans(String attrType, String attrName) throws JsonProc ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$system has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + SYSTEM_MATCH + search + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index 798b9dc3..bf9e6aa4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -59,8 +59,7 @@ public Set findAllBeans() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String getQueryStr = "match " + TA_MATCH + " group $id;"; - ObjectNode json = find(getQueryStr); + ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -83,16 +82,8 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - - String getQueryStr = "match " + TA_MATCH + search + " group $id;"; - System.out.println(getQueryStr); - ObjectNode json = find(getQueryStr); + ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); From 18e3c4803f3c05eb6028e0fe85fc89f4533d7e27 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 11:31:53 +0100 Subject: [PATCH 18/27] Solve: https://github.com/vaticle/typedb-driver-examples/pull/151#discussion_r1294095418 --- .../src/main/java/org/example/db/ClassDAO.java | 9 +++------ .../src/main/java/org/example/db/FileDAO.java | 9 +++------ .../src/main/java/org/example/db/GroupDAO.java | 9 +++------ .../src/main/java/org/example/db/IdUnknownDAO.java | 9 +++------ .../src/main/java/org/example/db/IdentityDAO.java | 9 +++------ .../src/main/java/org/example/db/IndicatorDAO.java | 9 +++------ .../src/main/java/org/example/db/IndividualDAO.java | 9 +++------ .../main/java/org/example/db/KillChainPhaseDAO.java | 9 +++------ .../src/main/java/org/example/db/MalwareDAO.java | 9 +++------ .../src/main/java/org/example/db/SystemDAO.java | 9 +++------ .../src/main/java/org/example/db/ThreatActorDAO.java | 10 +++------- 11 files changed, 33 insertions(+), 67 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java index f77a7b90..8376e830 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java @@ -39,10 +39,13 @@ public class ClassDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public ClassDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Class.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -55,9 +58,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -78,9 +78,6 @@ public ObjectNode search(String type, String name) { } public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java index 9eb24855..2c4e21fc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java @@ -39,11 +39,14 @@ public class FileDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public FileDAO(TypeDBSessionWrapper db) { this.db = db; typeString = File.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -79,9 +79,6 @@ public ObjectNode search(String attrType, String attrName) { } public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java index 5db93266..eff12ed3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java @@ -39,11 +39,14 @@ public class GroupDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public GroupDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Group.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java index 0a28b991..553a09eb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java @@ -39,11 +39,14 @@ public class IdUnknownDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public IdUnknownDAO(TypeDBSessionWrapper db) { this.db = db; typeString = IdUnknown.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java index 21f259aa..e8b511ee 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java @@ -39,10 +39,13 @@ public class IdentityDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public IdentityDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Identity.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -55,9 +58,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -79,9 +79,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java index 04f2a552..63811fc3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java @@ -39,11 +39,14 @@ public class IndicatorDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public IndicatorDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Indicator.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java index 23ee4e24..5a7b7be5 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java @@ -39,11 +39,14 @@ public class IndividualDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public IndividualDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Individual.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java index 44328af0..2f3d848c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java @@ -39,11 +39,14 @@ public class KillChainPhaseDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public KillChainPhaseDAO(TypeDBSessionWrapper db) { this.db = db; typeString = KillChainPhase.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java index db954c5d..e9ba4020 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java @@ -39,11 +39,14 @@ public class MalwareDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public MalwareDAO(TypeDBSessionWrapper db) { this.db = db; typeString = Malware.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +80,6 @@ public ObjectNode search(String attrType, String attrName) { public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java index b67101a5..50d6b647 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java @@ -39,11 +39,14 @@ public class SystemDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; + private final ObjectMapper objectMapper; public SystemDAO(TypeDBSessionWrapper db) { this.db = db; typeString = System.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +59,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -79,9 +79,6 @@ public ObjectNode search(String attrType, String attrName) { } public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java index bf9e6aa4..a890711a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java @@ -39,11 +39,13 @@ public class ThreatActorDAO { "$attribute isa! $j; "; private final TypeDBSessionWrapper db; private final List typeString; - + private final ObjectMapper objectMapper; public ThreatActorDAO(TypeDBSessionWrapper db) { this.db = db; typeString = ThreatActor.typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } private ObjectNode find(String getQueryStr) { @@ -56,9 +58,6 @@ public ObjectNode findAll() { } public Set findAllBeans() throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = findAll(); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); @@ -80,9 +79,6 @@ public ObjectNode search(String attrType, String attrName) { } public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ObjectNode json = search(attrType, attrName); Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { }); From 3ec14f716734969f7e09b05b672dd0ec240248a9 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 11:34:53 +0100 Subject: [PATCH 19/27] Naming packages --- .../typedb/examples/cti}/Main.java | 2 +- .../cti}/configuration/AppConfiguration.java | 2 +- .../configuration/GraphQlConfiguration.java | 2 +- .../examples/cti}/controllers/Controller.java | 22 ++++++++++--------- .../examples/cti}/db/AttributedToDAO.java | 4 ++-- .../typedb/examples/cti}/db/ClassDAO.java | 4 ++-- .../typedb/examples/cti}/db/CreatedByDAO.java | 4 ++-- .../cti}/db/ExternalReferencesDAO.java | 4 ++-- .../typedb/examples/cti}/db/FileDAO.java | 4 ++-- .../typedb/examples/cti}/db/GroupDAO.java | 4 ++-- .../typedb/examples/cti}/db/HashesDAO.java | 4 ++-- .../typedb/examples/cti}/db/IdUnknownDAO.java | 4 ++-- .../typedb/examples/cti}/db/IdentityDAO.java | 4 ++-- .../examples/cti}/db/ImpersonatesDAO.java | 4 ++-- .../typedb/examples/cti}/db/IndicatesDAO.java | 4 ++-- .../typedb/examples/cti}/db/IndicatorDAO.java | 4 ++-- .../examples/cti}/db/IndividualDAO.java | 4 ++-- .../examples/cti}/db/KillChainPhaseDAO.java | 4 ++-- .../examples/cti}/db/KillChainPhasesDAO.java | 4 ++-- .../typedb/examples/cti}/db/MalwareDAO.java | 4 ++-- .../typedb/examples/cti}/db/SchemaDAO.java | 2 +- .../typedb/examples/cti}/db/SightingDAO.java | 4 ++-- .../typedb/examples/cti}/db/SystemDAO.java | 4 ++-- .../typedb/examples/cti}/db/TargetsDAO.java | 4 ++-- .../examples/cti}/db/ThreatActorDAO.java | 4 ++-- .../cti}/db/TypeDBSessionWrapper.java | 4 ++-- .../typedb/examples/cti}/db/UsesDAO.java | 4 ++-- .../cti}/model/domain/object/Identity.java | 4 ++-- .../cti}/model/domain/object/Indicator.java | 4 ++-- .../cti}/model/domain/object/Malware.java | 4 ++-- .../cti}/model/domain/object/ThreatActor.java | 4 ++-- .../model/domain/object/identity/Class.java | 4 ++-- .../model/domain/object/identity/Group.java | 4 ++-- .../domain/object/identity/IdUnknown.java | 4 ++-- .../domain/object/identity/Individual.java | 4 ++-- .../model/domain/object/identity/System.java | 4 ++-- .../cti}/model/domain/observable/File.java | 6 ++--- .../domain/relationship/Impersonates.java | 5 ++--- .../model/domain/relationship/Indicates.java | 4 ++-- .../model/domain/relationship/Sighting.java | 4 ++-- .../model/domain/relationship/Targets.java | 4 ++-- .../cti}/model/domain/relationship/Uses.java | 4 ++-- .../domain/relationship/ext/AttributedTo.java | 2 +- .../domain/relationship/ext/CreatedBy.java | 2 +- .../relationship/ext/ExternalReferences.java | 2 +- .../model/domain/relationship/ext/Hashes.java | 2 +- .../relationship/ext/KillChainPhases.java | 2 +- .../model/domain/stix/StixCoreObject.java | 2 +- .../domain/stix/StixCoreRelationship.java | 2 +- .../stix/StixCyberObservableObject.java | 5 +---- .../model/domain/stix/StixDomainObject.java | 2 +- .../model/domain/stix/ext/KillChainPhase.java | 4 ++-- .../model/domain/stix/ext/StixSubObject.java | 2 +- .../typedb/examples/cti}/web/CTIBean.java | 4 ++-- .../typedb/examples/cti}/MainTests.java | 2 +- 55 files changed, 106 insertions(+), 108 deletions(-) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/Main.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/configuration/AppConfiguration.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/configuration/GraphQlConfiguration.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/controllers/Controller.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/AttributedToDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/ClassDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/CreatedByDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/ExternalReferencesDAO.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/FileDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/GroupDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/HashesDAO.java (93%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/IdUnknownDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/IdentityDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/ImpersonatesDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/IndicatesDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/IndicatorDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/IndividualDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/KillChainPhaseDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/KillChainPhasesDAO.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/MalwareDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/SchemaDAO.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/SightingDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/SystemDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/TargetsDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/ThreatActorDAO.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/TypeDBSessionWrapper.java (99%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/db/UsesDAO.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/Identity.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/Indicator.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/Malware.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/ThreatActor.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/identity/Class.java (88%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/identity/Group.java (88%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/identity/IdUnknown.java (88%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/identity/Individual.java (88%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/object/identity/System.java (88%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/observable/File.java (92%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/Impersonates.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/Indicates.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/Sighting.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/Targets.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/Uses.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/ext/AttributedTo.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/ext/CreatedBy.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/ext/ExternalReferences.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/ext/Hashes.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/relationship/ext/KillChainPhases.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/StixCoreObject.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/StixCoreRelationship.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/StixCyberObservableObject.java (91%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/StixDomainObject.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/ext/KillChainPhase.java (93%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/model/domain/stix/ext/StixSubObject.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/{org/example => com/typedb/examples/cti}/web/CTIBean.java (96%) rename cybersecurity/cyber_threat_intelligence/src/test/java/{org/example => com/typedb/examples/cti}/MainTests.java (96%) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/Main.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/Main.java index ac4f626c..6778ffbe 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/Main.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/Main.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example; +package com.typedb.examples.cti; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/AppConfiguration.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/AppConfiguration.java index a1b61dd3..5877722f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/AppConfiguration.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/AppConfiguration.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.configuration; +package com.typedb.examples.cti.configuration; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/GraphQlConfiguration.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/GraphQlConfiguration.java index 94e70852..37756da0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/configuration/GraphQlConfiguration.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/configuration/GraphQlConfiguration.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.configuration; +package com.typedb.examples.cti.configuration; import graphql.scalars.ExtendedScalars; import org.springframework.context.annotation.Bean; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java index d998e809..92307687 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java @@ -19,23 +19,25 @@ * under the License. */ -package org.example.controllers; +package com.typedb.examples.cti.controllers; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.*; +import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.ThreatActor; +import com.typedb.examples.cti.model.domain.object.identity.*; +import com.typedb.examples.cti.model.domain.observable.File; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; -import org.example.configuration.AppConfiguration; import org.example.db.*; import org.example.model.domain.object.identity.*; -import org.example.model.domain.object.Identity; -import org.example.model.domain.object.Indicator; -import org.example.model.domain.object.Malware; -import org.example.model.domain.object.ThreatActor; -import org.example.model.domain.object.identity.Class; -import org.example.model.domain.object.identity.System; -import org.example.model.domain.observable.File; -import org.example.model.domain.stix.ext.KillChainPhase; +import com.typedb.examples.cti.model.domain.object.Indicator; +import com.typedb.examples.cti.model.domain.object.Malware; +import com.typedb.examples.cti.model.domain.object.identity.Class; +import com.typedb.examples.cti.model.domain.object.identity.System; +import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.QueryMapping; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java index 26eba85b..ad801993 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/AttributedToDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.ext.AttributedTo; +import com.typedb.examples.cti.model.domain.relationship.ext.AttributedTo; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java index 8376e830..db82159a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ClassDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.identity.Class; +import com.typedb.examples.cti.model.domain.object.identity.Class; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java index acb3aedb..6785b943 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/CreatedByDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.ext.CreatedBy; +import com.typedb.examples.cti.model.domain.relationship.ext.CreatedBy; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java index fd439411..bd2dc1f0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ExternalReferencesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java @@ -19,11 +19,11 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.ext.ExternalReferences; +import com.typedb.examples.cti.model.domain.relationship.ext.ExternalReferences; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java index 2c4e21fc..3fdccc37 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/FileDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.observable.File; +import com.typedb.examples.cti.model.domain.observable.File; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java index eff12ed3..fb8839c3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/GroupDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.identity.Group; +import com.typedb.examples.cti.model.domain.object.identity.Group; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java similarity index 93% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java index 095c79a6..558ae750 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/HashesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.ext.Hashes; +import com.typedb.examples.cti.model.domain.relationship.ext.Hashes; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java index 553a09eb..85286f35 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdUnknownDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.identity.IdUnknown; +import com.typedb.examples.cti.model.domain.object.identity.IdUnknown; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java index e8b511ee..60b0efec 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IdentityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java index 83debe42..7ff662d9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ImpersonatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java @@ -19,11 +19,11 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.Impersonates; +import com.typedb.examples.cti.model.domain.relationship.Impersonates; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java index a343f129..9c1a8f9a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.Indicates; +import com.typedb.examples.cti.model.domain.relationship.Indicates; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java index 63811fc3..dede9982 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndicatorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.Indicator; +import com.typedb.examples.cti.model.domain.object.Indicator; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java index 5a7b7be5..494d4828 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/IndividualDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.identity.Individual; +import com.typedb.examples.cti.model.domain.object.identity.Individual; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java index 2f3d848c..5cbdb60a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhaseDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.stix.ext.KillChainPhase; +import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java index 10b619d9..922a7fb4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/KillChainPhasesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.ext.KillChainPhases; +import com.typedb.examples.cti.model.domain.relationship.ext.KillChainPhases; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java index e9ba4020..38933241 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/MalwareDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.Malware; +import com.typedb.examples.cti.model.domain.object.Malware; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SchemaDAO.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SchemaDAO.java index 0e8f2616..3ac0916c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SchemaDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SchemaDAO.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java index c96dd3f7..137dd601 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SightingDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.Sighting; +import com.typedb.examples.cti.model.domain.relationship.Sighting; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java index 50d6b647..5b2c8f8d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/SystemDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.identity.System; +import com.typedb.examples.cti.model.domain.object.identity.System; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java index da90d969..bc7c06bd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TargetsDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java @@ -19,11 +19,11 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.Targets; +import com.typedb.examples.cti.model.domain.relationship.Targets; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java index a890711a..2759c94d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/ThreatActorDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java @@ -19,14 +19,14 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.object.ThreatActor; +import com.typedb.examples.cti.model.domain.object.ThreatActor; import java.util.HashSet; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java similarity index 99% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java index 183ef55a..220bef12 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -30,7 +30,7 @@ import com.vaticle.typedb.client.api.TypeDBTransaction; import com.vaticle.typedb.client.api.answer.ConceptMap; import com.vaticle.typedb.common.collection.Pair; -import org.example.configuration.AppConfiguration; +import com.typedb.examples.cti.configuration.AppConfiguration; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java index e814ae74..fcbe2f44 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/db/UsesDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.db; +package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.example.model.domain.relationship.Uses; +import com.typedb.examples.cti.model.domain.relationship.Uses; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java index 5fb93c33..73159fb8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.object; +package com.typedb.examples.cti.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java index 4681d3f7..6e4f1bfa 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.object; +package com.typedb.examples.cti.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java index fb67dc45..f025ca9c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.object; +package com.typedb.examples.cti.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java index 19678b8e..d73b416c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.object; +package com.typedb.examples.cti.model.domain.object; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java similarity index 88% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java index d37e9118..d7d151e9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Class.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java @@ -19,9 +19,9 @@ * under the License. */ -package org.example.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.object.identity; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; public class Class extends Identity { public Class() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java similarity index 88% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java index 6bb54723..b360874c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Group.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java @@ -19,9 +19,9 @@ * under the License. */ -package org.example.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.object.identity; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; public class Group extends Identity { public Group() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java similarity index 88% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java index f4994fb9..d62f1d8c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/IdUnknown.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java @@ -19,9 +19,9 @@ * under the License. */ -package org.example.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.object.identity; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; public class IdUnknown extends Identity { public IdUnknown() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java similarity index 88% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java index 8d8d0d2b..d61bad63 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/Individual.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java @@ -19,9 +19,9 @@ * under the License. */ -package org.example.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.object.identity; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; public class Individual extends Identity { public Individual() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java similarity index 88% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java index cf623543..247c8a02 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/object/identity/System.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java @@ -19,9 +19,9 @@ * under the License. */ -package org.example.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.object.identity; -import org.example.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.object.Identity; public class System extends Identity { public System() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java similarity index 92% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java index 5295ecbc..69678fa4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/observable/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java @@ -19,11 +19,11 @@ * under the License. */ -package org.example.model.domain.observable; +package com.typedb.examples.cti.model.domain.observable; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCyberObservableObject; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixCyberObservableObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java index 3fb2875e..9a4e052c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java @@ -19,12 +19,11 @@ * under the License. */ -package org.example.model.domain.relationship; +package com.typedb.examples.cti.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java index afd00e28..87241c8d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.relationship; +package com.typedb.examples.cti.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java index 2c520782..8a7b60d2 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.relationship; +package com.typedb.examples.cti.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java index fadb4eed..4c406aae 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.relationship; +package com.typedb.examples.cti.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java index 63dc14bf..94f5a018 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.relationship; +package com.typedb.examples.cti.model.domain.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java index cc500734..8dbae3a9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.relationship.ext; +package com.typedb.examples.cti.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java index 3307f019..cf5655e3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.relationship.ext; +package com.typedb.examples.cti.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java index ac854885..d85f6b18 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.relationship.ext; +package com.typedb.examples.cti.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java index fe543937..fd2e23c9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.relationship.ext; +package com.typedb.examples.cti.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java index af623f50..755dac35 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/relationship/ext/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.relationship.ext; +package com.typedb.examples.cti.model.domain.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java index 65662046..958e95cf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.stix; +package com.typedb.examples.cti.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java index b1e1ed4d..83936b00 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.stix; +package com.typedb.examples.cti.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java similarity index 91% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java index 55f003bb..43fc24b4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java @@ -19,13 +19,10 @@ * under the License. */ -package org.example.model.domain.stix; +package com.typedb.examples.cti.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.apache.commons.collections.ListUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.stream.Stream; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java index 4ef333e9..4906a067 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.stix; +package com.typedb.examples.cti.model.domain.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java similarity index 93% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java index 8da885c1..53643534 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java @@ -19,10 +19,10 @@ * under the License. */ -package org.example.model.domain.stix.ext; +package com.typedb.examples.cti.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.example.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java index 896c86bf..0142a7fc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/model/domain/stix/ext/StixSubObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example.model.domain.stix.ext; +package com.typedb.examples.cti.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java index e1c6dfea..91e560db 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/org/example/web/CTIBean.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java @@ -1,11 +1,11 @@ -package org.example.web; +package com.typedb.examples.cti.web; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import com.vaticle.typedb.client.api.TypeDBSession; import com.vaticle.typedb.client.api.TypeDBTransaction; import com.vaticle.typeql.lang.TypeQL; -import org.example.configuration.AppConfiguration; +import com.typedb.examples.cti.configuration.AppConfiguration; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; diff --git a/cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java b/cybersecurity/cyber_threat_intelligence/src/test/java/com/typedb/examples/cti/MainTests.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java rename to cybersecurity/cyber_threat_intelligence/src/test/java/com/typedb/examples/cti/MainTests.java index ab8c41e6..9edae772 100644 --- a/cybersecurity/cyber_threat_intelligence/src/test/java/org/example/MainTests.java +++ b/cybersecurity/cyber_threat_intelligence/src/test/java/com/typedb/examples/cti/MainTests.java @@ -19,7 +19,7 @@ * under the License. */ -package org.example; +package com.typedb.examples.cti; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; From 3f9635589248933c51440fdfc349d5a801347bb0 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 11:36:27 +0100 Subject: [PATCH 20/27] Naming packages --- .../java/com/typedb/examples/cti/controllers/Controller.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java index 92307687..f66f76b5 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java @@ -31,8 +31,6 @@ import com.typedb.examples.cti.model.domain.observable.File; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; -import org.example.db.*; -import org.example.model.domain.object.identity.*; import com.typedb.examples.cti.model.domain.object.Indicator; import com.typedb.examples.cti.model.domain.object.Malware; import com.typedb.examples.cti.model.domain.object.identity.Class; From fb40107a4e2de75cae8bbc53dcefc196541cbc0a Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Wed, 16 Aug 2023 16:54:52 +0100 Subject: [PATCH 21/27] Generic DAOs --- .../examples/cti/controllers/Controller.java | 139 ++++++++++-------- .../examples/cti/db/AttributedToDAO.java | 65 -------- .../com/typedb/examples/cti/db/ClassDAO.java | 91 ------------ .../typedb/examples/cti/db/CreatedByDAO.java | 65 -------- .../com/typedb/examples/cti/db/EntityDAO.java | 70 +++++++++ .../cti/db/ExternalReferencesDAO.java | 65 -------- .../com/typedb/examples/cti/db/FileDAO.java | 92 ------------ .../com/typedb/examples/cti/db/GroupDAO.java | 93 ------------ .../com/typedb/examples/cti/db/HashesDAO.java | 50 ------- .../typedb/examples/cti/db/IdUnknownDAO.java | 93 ------------ .../typedb/examples/cti/db/IdentityDAO.java | 90 ------------ .../examples/cti/db/ImpersonatesDAO.java | 66 --------- .../typedb/examples/cti/db/IndicatesDAO.java | 66 --------- .../typedb/examples/cti/db/IndicatorDAO.java | 93 ------------ .../typedb/examples/cti/db/IndividualDAO.java | 93 ------------ .../examples/cti/db/KillChainPhaseDAO.java | 93 ------------ .../examples/cti/db/KillChainPhasesDAO.java | 65 -------- .../typedb/examples/cti/db/MalwareDAO.java | 91 ------------ .../typedb/examples/cti/db/RelationDAO.java | 49 ++++++ .../typedb/examples/cti/db/SightingDAO.java | 66 --------- .../com/typedb/examples/cti/db/SystemDAO.java | 92 ------------ .../typedb/examples/cti/db/TargetsDAO.java | 66 --------- .../examples/cti/db/ThreatActorDAO.java | 90 ------------ .../com/typedb/examples/cti/db/UsesDAO.java | 67 --------- .../cti/model/domain/object/Identity.java | 3 + .../cti/model/domain/object/Indicator.java | 3 + .../cti/model/domain/object/Malware.java | 3 + .../cti/model/domain/object/ThreatActor.java | 4 + .../model/domain/object/identity/Class.java | 5 + .../model/domain/object/identity/Group.java | 5 + .../domain/object/identity/IdUnknown.java | 5 + .../domain/object/identity/Individual.java | 5 + .../model/domain/object/identity/System.java | 5 + .../cti/model/domain/observable/File.java | 4 + .../domain/relationship/Impersonates.java | 3 + .../model/domain/relationship/Indicates.java | 2 + .../model/domain/relationship/Sighting.java | 3 + .../model/domain/relationship/Targets.java | 3 + .../cti/model/domain/relationship/Uses.java | 3 + .../domain/relationship/ext/AttributedTo.java | 4 + .../domain/relationship/ext/CreatedBy.java | 2 + .../relationship/ext/ExternalReferences.java | 3 + .../model/domain/relationship/ext/Hashes.java | 3 + .../relationship/ext/KillChainPhases.java | 3 + .../cti/model/domain/stix/StixCoreObject.java | 3 + .../domain/stix/StixCoreRelationship.java | 3 + .../stix/StixCyberObservableObject.java | 3 + .../model/domain/stix/StixDomainObject.java | 3 + .../model/domain/stix/ext/KillChainPhase.java | 6 +- .../model/domain/stix/ext/StixSubObject.java | 3 + 50 files changed, 289 insertions(+), 1713 deletions(-) delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java index f66f76b5..634353a8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java @@ -29,6 +29,8 @@ import com.typedb.examples.cti.model.domain.object.ThreatActor; import com.typedb.examples.cti.model.domain.object.identity.*; import com.typedb.examples.cti.model.domain.observable.File; +import com.typedb.examples.cti.model.domain.relationship.*; +import com.typedb.examples.cti.model.domain.relationship.ext.*; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import com.typedb.examples.cti.model.domain.object.Indicator; @@ -58,42 +60,42 @@ public Controller(AppConfiguration appConfiguration) { @QueryMapping(value = "getMalware") @GetMapping(value = "/malware", produces = "application/json") public ObjectNode getMalwareJSON() { - MalwareDAO malwareDAO = new MalwareDAO(wrapper); + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); return malwareDAO.findAll(); } @QueryMapping @GetMapping(value = "/malware-beans", produces = "application/json") public Set getMalwareBeans() throws JsonProcessingException { - MalwareDAO malwareDAO = new MalwareDAO(wrapper); + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); return malwareDAO.findAllBeans(); } @QueryMapping(value = "getThreatActor") @GetMapping(value = "/threat-actor", produces = "application/json") public ObjectNode getThreatActorJSON() { - ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); return threatActorDAO.findAll(); } @QueryMapping @GetMapping(value = "/threat-actor-beans", produces = "application/json") public Set getThreatActorBeans() throws JsonProcessingException { - ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); return threatActorDAO.findAllBeans(); } @QueryMapping(value = "getFile") @GetMapping(value = "/file", produces = "application/json") public ObjectNode getFileJSON() { - FileDAO fileDAO = new FileDAO(wrapper); + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); return fileDAO.findAll(); } @QueryMapping @GetMapping(value = "/file-beans", produces = "application/json") public Set getFileBeans() throws JsonProcessingException { - FileDAO fileDAO = new FileDAO(wrapper); + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); return fileDAO.findAllBeans(); } @@ -101,21 +103,21 @@ public Set getFileBeans() throws JsonProcessingException { @QueryMapping(value = "getIdentity") @GetMapping(value = "/identity", produces = "application/json") public ObjectNode getIdentityJSON() { - IdentityDAO identityDAO = new IdentityDAO(wrapper); + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); return identityDAO.findAll(); } @QueryMapping @GetMapping(value = "/identity-beans", produces = "application/json") public Set getIdentityBeans() throws JsonProcessingException { - IdentityDAO identityDAO = new IdentityDAO(wrapper); + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); return identityDAO.findAllBeans(); } @QueryMapping(value = "getIndicator") @GetMapping(value = "/indicator", produces = "application/json") public ObjectNode getIndicatorJSON() { - IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); return indicatorDAO.findAll(); } @@ -123,168 +125,179 @@ public ObjectNode getIndicatorJSON() { @QueryMapping @GetMapping(value = "/indicator-beans", produces = "application/json") public Set getIndicatorBeans() throws JsonProcessingException { - IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); return indicatorDAO.findAllBeans(); } @QueryMapping(value = "getClass") @GetMapping(value = "/class", produces = "application/json") public ObjectNode getClassJSON() { - ClassDAO classDAO = new ClassDAO(wrapper); + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); return classDAO.findAll(); } @QueryMapping @GetMapping(value = "/class-beans", produces = "application/json") public Set getClassBeans() throws JsonProcessingException { - ClassDAO classDAO = new ClassDAO(wrapper); + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); return classDAO.findAllBeans(); } @QueryMapping(value = "getGroup") @GetMapping(value = "/group", produces = "application/json") public ObjectNode getGroupJSON() { - GroupDAO groupDAO = new GroupDAO(wrapper); + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); return groupDAO.findAll(); } @QueryMapping @GetMapping(value = "/group-beans", produces = "application/json") public Set getGroupBeans() throws JsonProcessingException { - GroupDAO groupDAO = new GroupDAO(wrapper); + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); return groupDAO.findAllBeans(); } @QueryMapping(value = "getIdUnknown") @GetMapping(value = "/id-unknown", produces = "application/json") public ObjectNode getIdUnknownJSON() { - IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); return idUnknownDAO.findAll(); } @QueryMapping @GetMapping(value = "/id-unknown-beans", produces = "application/json") public Set getIdUnknownBeans() throws JsonProcessingException { - IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); return idUnknownDAO.findAllBeans(); } @QueryMapping(value = "getIndividual") @GetMapping(value = "/individual", produces = "application/json") public ObjectNode getIndividualJSON() { - IndividualDAO individualDAO = new IndividualDAO(wrapper); + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); return individualDAO.findAll(); } @QueryMapping @GetMapping(value = "/individual-beans", produces = "application/json") public Set getIndividualBeans() throws JsonProcessingException { - IndividualDAO individualDAO = new IndividualDAO(wrapper); + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); return individualDAO.findAllBeans(); } @QueryMapping(value = "getSystem") @GetMapping(value = "/system", produces = "application/json") public ObjectNode getSystemJSON() { - SystemDAO systemDAO = new SystemDAO(wrapper); + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); return systemDAO.findAll(); } @QueryMapping @GetMapping(value = "/system-beans", produces = "application/json") public Set getSystemBeans() throws JsonProcessingException { - SystemDAO systemDAO = new SystemDAO(wrapper); + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); return systemDAO.findAllBeans(); } @QueryMapping(value = "getKillChainPhase") @GetMapping(value = "/kill-chain-phase", produces = "application/json") public ObjectNode getKillChainPhaseJSON() { - KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); return killChainPhaseDAO.findAll(); } @QueryMapping @GetMapping(value = "/kill-chain-phase-beans", produces = "application/json") public Set getKillChainPhaseBeans() throws JsonProcessingException { - KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); return killChainPhaseDAO.findAllBeans(); } @QueryMapping(value = "getAttributedTo") @GetMapping(value = "/attributed-to", produces = "application/json") public ObjectNode getAttributedToJSON() { - AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); + RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + AttributedTo.rolePlayers, AttributedTo.typeString); return attributedToDAO.findAll(); } @QueryMapping(value = "getIndicates") @GetMapping(value = "/indicates", produces = "application/json") public ObjectNode getIndicatesJSON() { - IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); + RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + Indicates.rolePlayers, Indicates.typeString); return indicatesDAO.findAll(); } @QueryMapping(value = "getSighting") @GetMapping(value = "/sighting", produces = "application/json") public ObjectNode getSightingJSON() { - SightingDAO sightingDAO = new SightingDAO(wrapper); + RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + Sighting.rolePlayers, Sighting.typeString); return sightingDAO.findAll(); } @QueryMapping(value = "getUses") @GetMapping(value = "/uses", produces = "application/json") public ObjectNode getUsesJSON() { - UsesDAO usesDAO = new UsesDAO(wrapper); + RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + Uses.rolePlayers, Uses.typeString); return usesDAO.findAll(); } @QueryMapping(value = "getTargets") @GetMapping(value = "/targets", produces = "application/json") public ObjectNode getTargetsJSON() { - TargetsDAO targetsDAO = new TargetsDAO(wrapper); + RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + Targets.rolePlayers, Targets.typeString); return targetsDAO.findAll(); } @QueryMapping(value = "getImpersonates") @GetMapping(value = "/impersonates", produces = "application/json") public ObjectNode getImpersonatesJSON() { - ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); + RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + Impersonates.rolePlayers, Impersonates.typeString); return impersonatesDAO.findAll(); } @QueryMapping(value = "getKillChainPhases") @GetMapping(value = "/kill-chain-phases", produces = "application/json") public ObjectNode getKillChainPhasesJSON() { - KillChainPhasesDAO killChainPhasesDAO = new KillChainPhasesDAO(wrapper); + RelationDAO killChainPhasesDAO = new RelationDAO<>(wrapper, KillChainPhases.nameRel, + KillChainPhases.rolePlayers, KillChainPhases.typeString); return killChainPhasesDAO.findAll(); } @QueryMapping(value = "getExternalReferences") @GetMapping(value = "/external-references", produces = "application/json") public ObjectNode getExternalReferencesJSON() { - ExternalReferencesDAO externalReferencesDAO = new ExternalReferencesDAO(wrapper); + RelationDAO externalReferencesDAO = new RelationDAO<>(wrapper, ExternalReferences.nameRel, + ExternalReferences.rolePlayers, ExternalReferences.typeString); return externalReferencesDAO.findAll(); } @QueryMapping(value = "getCreatedBy") @GetMapping(value = "/created-by", produces = "application/json") public ObjectNode getCreatedByJSON() { - CreatedByDAO createdByDAO = new CreatedByDAO(wrapper); + RelationDAO createdByDAO = new RelationDAO<>(wrapper, CreatedBy.nameRel, + CreatedBy.rolePlayers, CreatedBy.typeString); + return createdByDAO.findAll(); } @QueryMapping(value = "getHashes") @GetMapping(value = "/hashes", produces = "application/json") public ObjectNode getHashesJSON() { - HashesDAO hashesDAO = new HashesDAO(wrapper); + RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, + Hashes.rolePlayers, Hashes.typeString); return hashesDAO.findAll(); } @QueryMapping(value = "getThreatActorSearch") @GetMapping(value = "/threat-actor/{type}/{name}", produces = "application/json") public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); return threatActorDAO.search(type, name); } @@ -292,35 +305,35 @@ public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable Strin @QueryMapping(value = "getThreatActorSearchBeans") @GetMapping("/threat-actor-beans/{type}/{name}") public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - ThreatActorDAO threatActorDAO = new ThreatActorDAO(wrapper); + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); return threatActorDAO.searchBeans(type, name); } @QueryMapping(value = "getMalwareSearch") @GetMapping(value = "/malware/{type}/{name}", produces = "application/json") public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - MalwareDAO malwareDAO = new MalwareDAO(wrapper); + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); return malwareDAO.search(type, name); } @QueryMapping(value = "getMalwareSearchBeans") @GetMapping("/malware-beans/{type}/{name}") public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - MalwareDAO malwareDAO = new MalwareDAO(wrapper); + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); return malwareDAO.searchBeans(type, name); } @QueryMapping(value = "getFileSearch") @GetMapping(value = "/file/{type}/{name}", produces = "application/json") public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - FileDAO fileDAO = new FileDAO(wrapper); + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); return fileDAO.search(type, name); } @QueryMapping(value = "getFileSearchBeans") @GetMapping("/file-beans/{type}/{name}") public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - FileDAO fileDAO = new FileDAO(wrapper); + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); return fileDAO.searchBeans(type, name); } @@ -328,154 +341,160 @@ public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @QueryMapping(value = "getIdentitySearch") @GetMapping(value = "/identity/{type}/{name}", produces = "application/json") public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - IdentityDAO identityDAO = new IdentityDAO(wrapper); + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); return identityDAO.search(type, name); } @QueryMapping(value = "getIdentitySearchBeans") @GetMapping("/identity-beans/{type}/{name}") public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - IdentityDAO identityDAO = new IdentityDAO(wrapper); + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); return identityDAO.searchBeans(type, name); } @QueryMapping(value = "getIndicatorSearch") @GetMapping(value = "/indicator/{type}/{name}", produces = "application/json") public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); return indicatorDAO.search(type, name); } @QueryMapping(value = "getIndicatorSearchBeans") @GetMapping("/indicator-beans/{type}/{name}") public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - IndicatorDAO indicatorDAO = new IndicatorDAO(wrapper); + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); return indicatorDAO.searchBeans(type, name); } @QueryMapping(value = "getClassSearch") @GetMapping(value = "/class/{type}/{name}", produces = "application/json") public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - ClassDAO classDAO = new ClassDAO(wrapper); + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); return classDAO.search(type, name); } @QueryMapping(value = "getClassSearchBeans") @GetMapping("/class-beans/{type}/{name}") public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - ClassDAO classDAO = new ClassDAO(wrapper); + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); return classDAO.searchBeans(type, name); } @QueryMapping(value = "getGroupSearch") @GetMapping(value = "/group/{type}/{name}", produces = "application/json") public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - GroupDAO groupDAO = new GroupDAO(wrapper); + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); return groupDAO.search(type, name); } @QueryMapping(value = "getGroupSearchBeans") @GetMapping("/group-beans/{type}/{name}") public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - GroupDAO groupDAO = new GroupDAO(wrapper); + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); return groupDAO.searchBeans(type, name); } @QueryMapping(value = "getIdUnknownSearch") @GetMapping(value = "/id-unknown/{type}/{name}", produces = "application/json") public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); return idUnknownDAO.search(type, name); } @QueryMapping(value = "getIdUnknownSearchBeans") @GetMapping("/id-unknown-beans/{type}/{name}") public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - IdUnknownDAO idUnknownDAO = new IdUnknownDAO(wrapper); + EntityDAOidUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); return idUnknownDAO.searchBeans(type, name); } @QueryMapping(value = "getIndividualSearch") @GetMapping(value = "/individual/{type}/{name}", produces = "application/json") public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - IndividualDAO individualDAO = new IndividualDAO(wrapper); + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); return individualDAO.search(type, name); } @QueryMapping(value = "getIndividualSearchBeans") @GetMapping("/individual-beans/{type}/{name}") public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - IndividualDAO individualDAO = new IndividualDAO(wrapper); + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); return individualDAO.searchBeans(type, name); } @QueryMapping(value = "getSystemSearch") @GetMapping(value = "/system/{type}/{name}", produces = "application/json") public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - SystemDAO systemDAO = new SystemDAO(wrapper); + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); return systemDAO.search(type, name); } @QueryMapping(value = "getSystemSearchBeans") @GetMapping("/system-beans/{type}/{name}") public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - SystemDAO systemDAO = new SystemDAO(wrapper); + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); return systemDAO.searchBeans(type, name); } @QueryMapping(value = "getKillChainPhaseSearch") @GetMapping(value = "/kill-chain-phase/{type}/{name}", produces = "application/json") public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); return killChainPhaseDAO.search(type, name); } @QueryMapping(value = "getKillChainPhaseSearchBeans") @GetMapping("/kill-chain-phase-beans/{type}/{name}") public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - KillChainPhaseDAO killChainPhaseDAO = new KillChainPhaseDAO(wrapper); + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); return killChainPhaseDAO.searchBeans(type, name); } @QueryMapping(value = "getAttributedToSearch") @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - AttributedToDAO attributedToDAO = new AttributedToDAO(wrapper); + RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + AttributedTo.rolePlayers, AttributedTo.typeString); return attributedToDAO.search(type, name); } @QueryMapping(value = "getIndicatesSearch") @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - IndicatesDAO indicatesDAO = new IndicatesDAO(wrapper); + RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + Indicates.rolePlayers, Indicates.typeString); return indicatesDAO.search(type, name); } @QueryMapping(value = "getSightingSearch") @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - SightingDAO sightingDAO = new SightingDAO(wrapper); + RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + Sighting.rolePlayers, Sighting.typeString); return sightingDAO.search(type, name); } @QueryMapping(value = "getUsesSearch") @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - UsesDAO usesDAO = new UsesDAO(wrapper); + RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + Uses.rolePlayers, Uses.typeString); return usesDAO.search(type, name); } @QueryMapping(value = "getTargetsSearch") @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - TargetsDAO targetsDAO = new TargetsDAO(wrapper); + RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + Targets.rolePlayers, Targets.typeString); return targetsDAO.search(type, name); } @QueryMapping(value = "getImpersonatesSearch") @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - ImpersonatesDAO impersonatesDAO = new ImpersonatesDAO(wrapper); + RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + Impersonates.rolePlayers, Impersonates.typeString); return impersonatesDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java deleted file mode 100644 index ad801993..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/AttributedToDAO.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.ext.AttributedTo; - -import java.util.List; - -public class AttributedToDAO { - protected static final String ATTRIBUTED_TO_MATCH = - "$ta (attributed: $rp1, attributing: $rp2) isa attributed_to, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "attributed_to"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - public AttributedToDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = AttributedTo.typeString; - rolePlayers = AttributedTo.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + ATTRIBUTED_TO_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java deleted file mode 100644 index db82159a..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ClassDAO.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.Class; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class ClassDAO { - protected static final String CLASS_MATCH = - " $class isa class, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - public ClassDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Class.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + CLASS_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String type, String name) { - - if (typeString.contains(" " + type + ";")) { - name = "\"" + name + "\""; - } - - String search = "$class has " + type + " = " + name + ";"; - var getQueryStr = "match " + CLASS_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java deleted file mode 100644 index 6785b943..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/CreatedByDAO.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.ext.CreatedBy; - -import java.util.List; - -public class CreatedByDAO { - protected static final String CREATED_BY_MATCH = - "$ta (creator: $rp1, created: $rp2) isa created_by;"; - private static final String NAME_REL = "created_by"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - - public CreatedByDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = CreatedBy.typeString; - rolePlayers = CreatedBy.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + CREATED_BY_MATCH + "group $ta; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + CREATED_BY_MATCH + search + "group $ta;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java new file mode 100644 index 00000000..394e782c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java @@ -0,0 +1,70 @@ +package com.typedb.examples.cti.db; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.model.domain.object.identity.Class; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class EntityDAO { + protected static final String ENT_MATCH = + " $%s isa %s, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + + private final String nameEnt; + private final TypeDBSessionWrapper db; + private final List typeString; + private final ObjectMapper objectMapper; + + public EntityDAO(TypeDBSessionWrapper db, String nameEnt, List typeString) { + this.db = db; + this.nameEnt = nameEnt; + this.typeString = typeString; + objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + private ObjectNode find(String getQueryStr) { + return db.getAllJSON(getQueryStr); + } + + public ObjectNode findAll() { + String query = String.format(ENT_MATCH, nameEnt, nameEnt); + var getQueryStr = "match " + query + "group $id; "; + return find(getQueryStr); + } + + public Set findAllBeans() throws JsonProcessingException { + ObjectNode json = findAll(); + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() {}); + + return new HashSet<>(result.values()); + } + + public ObjectNode search(String type, String name) { + + if (typeString.contains(" " + type + ";")) { + name = "\"" + name + "\""; + } + String query = String.format(ENT_MATCH, nameEnt, nameEnt); + String search = "$class has " + type + " = " + name + ";"; + var getQueryStr = "match " + query + search + "group $id;"; + + return find(getQueryStr); + } + + public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { + ObjectNode json = search(attrType, attrName); + Map result= objectMapper.readValue(json.toString(), new TypeReference<>() {}); + + return new HashSet<>(result.values()); + } + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java deleted file mode 100644 index bd2dc1f0..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ExternalReferencesDAO.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.ext.ExternalReferences; - -import java.util.List; - -public class ExternalReferencesDAO { - protected static final String EXTERNAL_REFERENCES_MATCH = - "$ta (referencing: $rp1, referenced: $rp2) isa external_references;"; - private static final String NAME_REL = "external_references"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - public ExternalReferencesDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = ExternalReferences.typeString; - rolePlayers = ExternalReferences.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + "group $ta; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + EXTERNAL_REFERENCES_MATCH + search + "group $ta;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java deleted file mode 100644 index 3fdccc37..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/FileDAO.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.observable.File; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class FileDAO { - protected static final String FILE_MATCH = - " $file isa file, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public FileDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = File.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + FILE_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$file has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + FILE_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java deleted file mode 100644 index fb8839c3..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/GroupDAO.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.Group; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class GroupDAO { - protected static final String GROUP_MATCH = - " $group isa group, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public GroupDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Group.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + GROUP_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$group has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + GROUP_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java deleted file mode 100644 index 558ae750..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/HashesDAO.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.ext.Hashes; - -import java.util.List; - -public class HashesDAO { - protected static final String HASHES_MATCH = - "$ta (hash_value: $rp1, hashes_owner: $rp2) isa hashes, has $attribute;"; - private static final String NAME_REL = "hashes"; - private final TypeDBSessionWrapper db; - private final List rolePlayers; - - public HashesDAO(TypeDBSessionWrapper db) { - this.db = db; - rolePlayers = Hashes.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getListAttrJSON(getQueryStr, NAME_REL, rolePlayers, true); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + HASHES_MATCH + "group $ta; "; - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java deleted file mode 100644 index 85286f35..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdUnknownDAO.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.IdUnknown; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class IdUnknownDAO { - protected static final String ID_UNKNOWN_MATCH = - " $idUnknown isa id_unknown, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public IdUnknownDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = IdUnknown.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + ID_UNKNOWN_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$idUnknown has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + ID_UNKNOWN_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java deleted file mode 100644 index 60b0efec..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IdentityDAO.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.Identity; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class IdentityDAO { - protected static final String IDENTITY_MATCH = - " $identity isa identity, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - public IdentityDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Identity.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + IDENTITY_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$identity has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + IDENTITY_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java deleted file mode 100644 index 7ff662d9..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ImpersonatesDAO.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Impersonates; - -import java.util.List; - -public class ImpersonatesDAO { - protected static final String IMPERSONATES_MATCH = - "$ta (impersonating: $rp1, impersonated: $rp2) isa impersonates, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "impersonates"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - public ImpersonatesDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Impersonates.typeString; - rolePlayers = Impersonates.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + IMPERSONATES_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + IMPERSONATES_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java deleted file mode 100644 index 9c1a8f9a..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatesDAO.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Indicates; - -import java.util.List; - -public class IndicatesDAO { - protected static final String INDICATES_MATCH = - "$ta (indicating: $rp1, indicated: $rp2) isa indicates, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "indicates"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - - public IndicatesDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Indicates.typeString; - rolePlayers = Indicates.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + INDICATES_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + INDICATES_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java deleted file mode 100644 index dede9982..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndicatorDAO.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.Indicator; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class IndicatorDAO { - protected static final String INDICATOR_MATCH = - " $indicator isa indicator, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public IndicatorDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Indicator.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + INDICATOR_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$indicator has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + INDICATOR_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java deleted file mode 100644 index 494d4828..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/IndividualDAO.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.Individual; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class IndividualDAO { - protected static final String INDIVIDUAL_MATCH = - " $individual isa individual, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public IndividualDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Individual.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + INDIVIDUAL_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$individual has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + INDIVIDUAL_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java deleted file mode 100644 index 5cbdb60a..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhaseDAO.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class KillChainPhaseDAO { - protected static final String KILL_CHAIN_PHASE_MATCH = - " $kill_chain_phase isa kill_chain_phase, has kill_chain_name $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public KillChainPhaseDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = KillChainPhase.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$kill_chain_phase has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + KILL_CHAIN_PHASE_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java deleted file mode 100644 index 922a7fb4..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/KillChainPhasesDAO.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.ext.KillChainPhases; - -import java.util.List; - -public class KillChainPhasesDAO { - protected static final String KILL_CHAIN_PHASES_MATCH = - "$ta (using: $rp1, used: $rp2) isa kill_chain_phases;"; - private static final String NAME_REL = "kill_chain_phases"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - - public KillChainPhasesDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = KillChainPhases.typeString; - rolePlayers = KillChainPhases.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getListJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + "group $ta; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + KILL_CHAIN_PHASES_MATCH + search + "group $ta;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java deleted file mode 100644 index 38933241..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/MalwareDAO.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.Malware; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class MalwareDAO { - protected static final String MALWARE_MATCH = - " $malware isa malware, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public MalwareDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Malware.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + MALWARE_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$malware has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + MALWARE_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java new file mode 100644 index 00000000..c085be87 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java @@ -0,0 +1,49 @@ +package com.typedb.examples.cti.db; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.model.domain.relationship.Sighting; + +import java.util.List; + +public class RelationDAO { + protected static final String REL_MATCH = + "$ta (%s: $rp1, %s: $rp2) isa %s, has stix_id $id, has $attribute;" + + "$attribute isa! $j; "; + private final String nameRel; + private final TypeDBSessionWrapper db; + private final List typeString; + private final List rolePlayers; + + + + public RelationDAO(TypeDBSessionWrapper db, String nameRel, List rolePlayers, List typeString) { + this.db = db; + this.nameRel = nameRel; + this.typeString = typeString; + this.rolePlayers = rolePlayers; + } + + private ObjectNode find(String getQueryStr) { + return db.getRelJSON(getQueryStr, nameRel, rolePlayers); + } + + public ObjectNode findAll() { + String query = String.format(REL_MATCH, rolePlayers.get(0), rolePlayers.get(1), nameRel); + var getQueryStr = "match " + query + "group $id; "; + return find(getQueryStr); + } + + public ObjectNode search(String attrType, String attrName) { + + if (typeString.contains(attrType)) { + attrName = "\"" + attrName + "\""; + } + + String query = String.format(REL_MATCH, rolePlayers.get(0), rolePlayers.get(1), nameRel); + String search = "$ta has " + attrType + " = " + attrName + ";"; + var getQueryStr = "match " + query + search + "group $id;"; + + return find(getQueryStr); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java deleted file mode 100644 index 137dd601..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SightingDAO.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Sighting; - -import java.util.List; - -public class SightingDAO { - protected static final String SIGHTING_MATCH = - "$ta (sighting_of: $rp1, observed_data: $rp2) isa sighting, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "sighting"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - - public SightingDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Sighting.typeString; - rolePlayers = Sighting.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + SIGHTING_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + SIGHTING_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java deleted file mode 100644 index 5b2c8f8d..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/SystemDAO.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.System; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class SystemDAO { - protected static final String SYSTEM_MATCH = - " $system isa system, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - - public SystemDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = System.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + SYSTEM_MATCH + "group $id; "; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$system has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + SYSTEM_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} - - diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java deleted file mode 100644 index bc7c06bd..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TargetsDAO.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Targets; - -import java.util.List; - -public class TargetsDAO { - protected static final String TARGETS_MATCH = - "$ta (targeting: $rp1, targeted: $rp2) isa targets, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "targets"; - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - public TargetsDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Targets.typeString; - rolePlayers = Targets.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + TARGETS_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + TARGETS_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java deleted file mode 100644 index 2759c94d..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/ThreatActorDAO.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.ThreatActor; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public class ThreatActorDAO { - protected static final String TA_MATCH = - " $ta isa threat_actor, has stix_id $id ,has $attribute;" + - "$attribute isa! $j; "; - private final TypeDBSessionWrapper db; - private final List typeString; - private final ObjectMapper objectMapper; - - public ThreatActorDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = ThreatActor.typeString; - objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - private ObjectNode find(String getQueryStr) { - return db.getAllJSON(getQueryStr); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + TA_MATCH + "group $id;"; - return find(getQueryStr); - } - - public Set findAllBeans() throws JsonProcessingException { - ObjectNode json = findAll(); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + TA_MATCH + search + "group $id;"; - System.out.println(getQueryStr); - - return find(getQueryStr); - } - - public Set searchBeans(String attrType, String attrName) throws JsonProcessingException { - ObjectNode json = search(attrType, attrName); - Map result= objectMapper.readValue(json.toString(), new TypeReference<>() { - }); - - return new HashSet<>(result.values()); - } - - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java deleted file mode 100644 index fcbe2f44..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/UsesDAO.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.db; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Uses; - -import java.util.List; - -public class UsesDAO { - protected static final String USES_MATCH = - "$ta (used_by: $rp1, used: $rp2) isa uses, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; - private static final String NAME_REL = "uses"; - - private final TypeDBSessionWrapper db; - private final List typeString; - private final List rolePlayers; - - - public UsesDAO(TypeDBSessionWrapper db) { - this.db = db; - typeString = Uses.typeString; - rolePlayers = Uses.rolePlayers; - } - - private ObjectNode find(String getQueryStr) { - return db.getRelJSON(getQueryStr, NAME_REL, rolePlayers); - } - - public ObjectNode findAll() { - var getQueryStr = "match " + USES_MATCH + "group $id; "; - return find(getQueryStr); - } - - public ObjectNode search(String attrType, String attrName) { - - if (typeString.contains(attrType)) { - attrName = "\"" + attrName + "\""; - } - - String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + USES_MATCH + search + "group $id;"; - - return find(getQueryStr); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java index 73159fb8..9f892eac 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java @@ -33,6 +33,9 @@ public class Identity extends StixDomainObject { public static final List typeString = Stream.of(StixDomainObject.typeString, Arrays.asList("name", "description", "stix_role", "identity_class", "sector", "contact_information")).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "identity"; private String name; private String description; private String stixRole; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java index 6e4f1bfa..1cbd93d4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java @@ -34,6 +34,9 @@ public class Indicator extends StixDomainObject { public static final List typeString = Stream.of(StixDomainObject.typeString, Arrays.asList("name", "description", "pattern", "pattern_type", "pattern_version") ).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "indicator"; private String name; private String description; private String pattern; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java index f025ca9c..784e5438 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java @@ -39,6 +39,9 @@ public class Malware extends StixDomainObject { public static List typeString = Stream.of(StixDomainObject.typeString, Arrays.asList("name", "description", "malware_types", "architecture_execution_envs", "implementation_languages", "capabilities")).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "malware"; private String name; private String description; private String malwareTypes; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java index d73b416c..eba95144 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java @@ -35,6 +35,10 @@ public class ThreatActor extends StixDomainObject { Arrays.asList("name", "description", "aliases", "stix_role", "goals", "resource_level", "primary_motivation", "secondary_motivation", "sophistication", "personal_characteristics", "roles", "threat_actor_types")).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "threat_actor"; + private String name; private String description; private String aliases; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java index d7d151e9..eaff128f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java @@ -21,9 +21,14 @@ package com.typedb.examples.cti.model.domain.object.identity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.typedb.examples.cti.model.domain.object.Identity; public class Class extends Identity { + + @JsonIgnore + public static final String nameEnt = "class"; + public Class() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java index b360874c..3c9170ae 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java @@ -21,9 +21,14 @@ package com.typedb.examples.cti.model.domain.object.identity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.typedb.examples.cti.model.domain.object.Identity; public class Group extends Identity { + + @JsonIgnore + public static final String nameEnt = "group"; + public Group() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java index d62f1d8c..ab0d1759 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java @@ -21,9 +21,14 @@ package com.typedb.examples.cti.model.domain.object.identity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.typedb.examples.cti.model.domain.object.Identity; public class IdUnknown extends Identity { + + @JsonIgnore + public static final String nameEnt = "id_unknown"; + public IdUnknown() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java index d61bad63..0b218bd0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java @@ -21,9 +21,14 @@ package com.typedb.examples.cti.model.domain.object.identity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.typedb.examples.cti.model.domain.object.Identity; public class Individual extends Identity { + + @JsonIgnore + public static final String nameEnt = "individual"; + public Individual() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java index 247c8a02..debfbca3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java @@ -21,9 +21,14 @@ package com.typedb.examples.cti.model.domain.object.identity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.typedb.examples.cti.model.domain.object.Identity; public class System extends Identity { + + @JsonIgnore + public static final String nameEnt = "system"; + public System() { } } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java index 69678fa4..2f546f74 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java @@ -34,6 +34,10 @@ public class File extends StixCyberObservableObject { @JsonIgnore public static final List typeString = Stream.of(StixDomainObject.typeString, Arrays.asList("name", "name_enc", "magic_number_hex", "mime_type")).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "file"; + private Integer size; private String name; private String nameEnc; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java index 9a4e052c..c0db30c9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java @@ -34,4 +34,7 @@ public class Impersonates extends StixCoreRelationship { @JsonIgnore public static final List rolePlayers = Arrays.asList("impersonating", "impersonated"); + @JsonIgnore + public static final String nameRel = "impersonates"; + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java index 87241c8d..905cb74c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java @@ -34,5 +34,7 @@ public class Indicates extends StixCoreRelationship { @JsonIgnore public static final List rolePlayers = Arrays.asList("indicating", "indicated"); + @JsonIgnore + public static final String nameRel = "indicates"; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java index 8a7b60d2..dc43fc40 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java @@ -37,6 +37,9 @@ public class Sighting extends StixCoreRelationship { @JsonIgnore public static final List rolePlayers = Arrays.asList("sighting_of", "observed_data"); + @JsonIgnore + public static final String nameRel = "sighting"; + private Date firstSeen; private Date lastSeen; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java index 4c406aae..d450361e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java @@ -34,4 +34,7 @@ public class Targets extends StixCoreRelationship { @JsonIgnore public static final List rolePlayers = Arrays.asList("targeting", "targeted"); + @JsonIgnore + public static final String nameRel = "targets"; + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java index 94f5a018..d29a403c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java @@ -34,4 +34,7 @@ public class Uses extends StixCoreRelationship { @JsonIgnore public static final List rolePlayers = Arrays.asList("used_by", "used"); + @JsonIgnore + public static final String nameRel = "uses"; + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java index 8dbae3a9..8f6cc52b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java @@ -33,6 +33,10 @@ public class AttributedTo { @JsonIgnore public static final List rolePlayers = Arrays.asList("attributing", "attributed"); + + @JsonIgnore + public static final String nameRel = "attributed_to"; + private String stixId; private String specVersion; private Date created; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java index cf5655e3..0a025144 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java @@ -33,4 +33,6 @@ public class CreatedBy { @JsonIgnore public static final List rolePlayers = Arrays.asList("creator", "created"); + @JsonIgnore + public static final String nameRel = "created_by"; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java index d85f6b18..94f9ef70 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java @@ -34,4 +34,7 @@ public class ExternalReferences { @JsonIgnore public static final List rolePlayers = Arrays.asList("referencing", "referenced"); + @JsonIgnore + public static final String nameRel = "external_references"; + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java index fd2e23c9..2c2fdba3 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java @@ -34,6 +34,9 @@ public class Hashes { @JsonIgnore public static final List rolePlayers = Arrays.asList("hash_value", "hashes_owner"); + @JsonIgnore + public static final String nameRel = "hashes"; + private String hashAlgorithm; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java index 755dac35..1c9322dd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java @@ -34,4 +34,7 @@ public class KillChainPhases { @JsonIgnore public static final List rolePlayers = Arrays.asList("using", "used"); + @JsonIgnore + public static final String nameRel = "kill_chain_phases"; + } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java index 958e95cf..da90d758 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java @@ -32,6 +32,9 @@ public class StixCoreObject { @JsonIgnore public static final List typeString = List.of("spec_version"); + + @JsonIgnore + public static final String nameEnt = "stix_core_object"; private String specVersion; public String getSpecVersion() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java index 83936b00..40c70762 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java @@ -30,6 +30,9 @@ public class StixCoreRelationship { @JsonIgnore public static final List typeString = Arrays.asList("stix_id", "stix_version", "stix_type"); + + @JsonIgnore + public static final String nameEnt = "stix_core_relationship"; private String specVersion; private String stixId; private String stixType; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java index 43fc24b4..710983a1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java @@ -33,6 +33,9 @@ public class StixCyberObservableObject extends StixCoreObject { @JsonIgnore public static final List typeString = Stream.of(StixCoreObject.typeString, List.of("defanged") ).flatMap(List::stream).toList(); + + @JsonIgnore + public static final String nameEnt = "stix_cyber_observable_object"; private String defanged; public StixCyberObservableObject() { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java index 4906a067..c4d3eecf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java @@ -39,6 +39,9 @@ public class StixDomainObject extends StixCoreObject { public static final List typeString = Stream.of(StixCoreObject.typeString, Arrays.asList("labels", "langs") ).flatMap(List::stream).toList(); + @JsonIgnore + public static final String nameEnt = "stix_domain_object"; + private Date created; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java index 53643534..f8f3e51f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java @@ -22,6 +22,7 @@ package com.typedb.examples.cti.model.domain.stix.ext; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; @@ -30,9 +31,12 @@ public class KillChainPhase extends StixSubObject { @JsonIgnore - public static List typeString = Stream.of(StixDomainObject.typeString, + public static final List typeString = Stream.of(StixDomainObject.typeString, Arrays.asList("kill_chain_name", "kill_chain_phase_name")).flatMap(List::stream).toList(); + @JsonIgnore + public static final String nameEnt = "kill_chain_phase"; + private String killChainName; private String killChainPhaseName; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java index 0142a7fc..e7539c29 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java @@ -32,6 +32,9 @@ public class StixSubObject { @JsonIgnore public static final List typeString = new ArrayList<>(); + @JsonIgnore + public static final String nameEnt = "stix_sub_object"; + private Date created; private Date modified; From 955e4cc93499064bea3f79dfb1a3259857d74560 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 12:11:03 +0100 Subject: [PATCH 22/27] Generic DAOs --- .../examples/cti/db/TypeDBSessionWrapper.java | 2 ++ .../domain/stix/StixCoreRelationship.java | 11 +--------- .../com/typedb/examples/cti/web/CTIBean.java | 21 +++++++++++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java index 220bef12..eb24cb1a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java @@ -31,6 +31,7 @@ import com.vaticle.typedb.client.api.answer.ConceptMap; import com.vaticle.typedb.common.collection.Pair; import com.typedb.examples.cti.configuration.AppConfiguration; +import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @@ -39,6 +40,7 @@ public class TypeDBSessionWrapper { private final TypeDBClient client; private TypeDBSession session; + @Autowired public TypeDBSessionWrapper(TypeDBClient client, AppConfiguration appConfiguration) { this.appConfiguration = appConfiguration; this.client = client; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java index 40c70762..4902902c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java @@ -29,24 +29,15 @@ public class StixCoreRelationship { @JsonIgnore - public static final List typeString = Arrays.asList("stix_id", "stix_version", "stix_type"); + public static final List typeString = Arrays.asList("stix_id", "stix_type"); @JsonIgnore public static final String nameEnt = "stix_core_relationship"; - private String specVersion; private String stixId; private String stixType; private Date created; private Date modified; - public String getSpecVersion() { - return specVersion; - } - - public void setSpecVersion(String specVersion) { - this.specVersion = specVersion; - } - public String getStixId() { return stixId; } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java index 91e560db..ca9f3bc8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/web/CTIBean.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2023 Vaticle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package com.typedb.examples.cti.web; import com.vaticle.typedb.client.TypeDB; From e86c49c9e2b3402a2c3f0b8bbcb9d672ec3a7e09 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 12:15:15 +0100 Subject: [PATCH 23/27] Kill_chain_phase --- .../model/domain/stix/ext/KillChainPhase.java | 24 +++++++- .../model/domain/stix/ext/StixSubObject.java | 56 ------------------- 2 files changed, 21 insertions(+), 59 deletions(-) delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java index f8f3e51f..468afc26 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java @@ -26,19 +26,37 @@ import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.stream.Stream; -public class KillChainPhase extends StixSubObject { +public class KillChainPhase { @JsonIgnore - public static final List typeString = Stream.of(StixDomainObject.typeString, - Arrays.asList("kill_chain_name", "kill_chain_phase_name")).flatMap(List::stream).toList(); + public static final List typeString = Arrays.asList("kill_chain_name", "kill_chain_phase_name"); @JsonIgnore public static final String nameEnt = "kill_chain_phase"; private String killChainName; private String killChainPhaseName; + private Date created; + private Date modified; + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } public String getKillChainName() { return killChainName; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java deleted file mode 100644 index e7539c29..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/StixSubObject.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.model.domain.stix.ext; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -public class StixSubObject { - - @JsonIgnore - public static final List typeString = new ArrayList<>(); - - @JsonIgnore - public static final String nameEnt = "stix_sub_object"; - - private Date created; - private Date modified; - - public Date getCreated() { - return created; - } - - public void setCreated(Date created) { - this.created = created; - } - - public Date getModified() { - return modified; - } - - public void setModified(Date modified) { - this.modified = modified; - } -} From df77d5b931fab085165e20bba0a6acbd44b3ea67 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 17:40:11 +0100 Subject: [PATCH 24/27] Debug common RelationDAO --- .../examples/cti/controllers/Controller.java | 515 ------------------ .../controllers/entities/ClassController.java | 59 ++ .../controllers/entities/FileController.java | 59 ++ .../controllers/entities/GroupController.java | 60 ++ .../entities/IdUnknownController.java | 60 ++ .../entities/IdentityController.java | 60 ++ .../entities/IndicatorController.java | 59 ++ .../entities/IndividualController.java | 60 ++ .../entities/KillChainPhaseController.java | 60 ++ .../entities/MalwareController.java | 59 ++ .../entities/SystemController.java | 60 ++ .../entities/ThreatActorController.java | 62 +++ .../relations/AttributedToController.java | 45 ++ .../relations/CreatedByController.java | 36 ++ .../ExternalReferencesController.java | 35 ++ .../relations/HashesController.java | 46 ++ .../relations/ImpersonatesController.java | 45 ++ .../relations/IndicatesController.java | 45 ++ .../relations/KillChainPhasesController.java | 35 ++ .../relations/SightingController.java | 45 ++ .../relations/TargetsController.java | 45 ++ .../controllers/relations/UsesController.java | 45 ++ .../controllers/schemas/SchemaController.java | 40 ++ .../com/typedb/examples/cti/db/EntityDAO.java | 10 +- .../typedb/examples/cti/db/RelationDAO.java | 32 +- .../main/resources/graphql/schema.graphqls | 2 + 26 files changed, 1152 insertions(+), 527 deletions(-) delete mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java create mode 100644 cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/schemas/SchemaController.java diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java deleted file mode 100644 index 634353a8..00000000 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/Controller.java +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Copyright (C) 2023 Vaticle - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.typedb.examples.cti.controllers; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.configuration.AppConfiguration; -import com.typedb.examples.cti.db.*; -import com.typedb.examples.cti.model.domain.object.Identity; -import com.typedb.examples.cti.model.domain.object.ThreatActor; -import com.typedb.examples.cti.model.domain.object.identity.*; -import com.typedb.examples.cti.model.domain.observable.File; -import com.typedb.examples.cti.model.domain.relationship.*; -import com.typedb.examples.cti.model.domain.relationship.ext.*; -import com.vaticle.typedb.client.TypeDB; -import com.vaticle.typedb.client.api.TypeDBClient; -import com.typedb.examples.cti.model.domain.object.Indicator; -import com.typedb.examples.cti.model.domain.object.Malware; -import com.typedb.examples.cti.model.domain.object.identity.Class; -import com.typedb.examples.cti.model.domain.object.identity.System; -import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.graphql.data.method.annotation.Argument; -import org.springframework.graphql.data.method.annotation.QueryMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Set; - -@RestController -public class Controller { - private final TypeDBSessionWrapper wrapper; - - @Autowired - public Controller(AppConfiguration appConfiguration) { - TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); - wrapper = new TypeDBSessionWrapper(client, appConfiguration); - } - - @QueryMapping(value = "getMalware") - @GetMapping(value = "/malware", produces = "application/json") - public ObjectNode getMalwareJSON() { - EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); - return malwareDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/malware-beans", produces = "application/json") - public Set getMalwareBeans() throws JsonProcessingException { - EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); - return malwareDAO.findAllBeans(); - } - - @QueryMapping(value = "getThreatActor") - @GetMapping(value = "/threat-actor", produces = "application/json") - public ObjectNode getThreatActorJSON() { - EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); - return threatActorDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/threat-actor-beans", produces = "application/json") - public Set getThreatActorBeans() throws JsonProcessingException { - EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); - return threatActorDAO.findAllBeans(); - } - - @QueryMapping(value = "getFile") - @GetMapping(value = "/file", produces = "application/json") - public ObjectNode getFileJSON() { - EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); - return fileDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/file-beans", produces = "application/json") - public Set getFileBeans() throws JsonProcessingException { - EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); - return fileDAO.findAllBeans(); - } - - - @QueryMapping(value = "getIdentity") - @GetMapping(value = "/identity", produces = "application/json") - public ObjectNode getIdentityJSON() { - EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); - return identityDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/identity-beans", produces = "application/json") - public Set getIdentityBeans() throws JsonProcessingException { - EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); - return identityDAO.findAllBeans(); - } - - @QueryMapping(value = "getIndicator") - @GetMapping(value = "/indicator", produces = "application/json") - public ObjectNode getIndicatorJSON() { - EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); - return indicatorDAO.findAll(); - } - - - @QueryMapping - @GetMapping(value = "/indicator-beans", produces = "application/json") - public Set getIndicatorBeans() throws JsonProcessingException { - EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); - return indicatorDAO.findAllBeans(); - } - - @QueryMapping(value = "getClass") - @GetMapping(value = "/class", produces = "application/json") - public ObjectNode getClassJSON() { - EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); - return classDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/class-beans", produces = "application/json") - public Set getClassBeans() throws JsonProcessingException { - EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); - return classDAO.findAllBeans(); - } - - @QueryMapping(value = "getGroup") - @GetMapping(value = "/group", produces = "application/json") - public ObjectNode getGroupJSON() { - EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); - return groupDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/group-beans", produces = "application/json") - public Set getGroupBeans() throws JsonProcessingException { - EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); - return groupDAO.findAllBeans(); - } - - @QueryMapping(value = "getIdUnknown") - @GetMapping(value = "/id-unknown", produces = "application/json") - public ObjectNode getIdUnknownJSON() { - EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); - return idUnknownDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/id-unknown-beans", produces = "application/json") - public Set getIdUnknownBeans() throws JsonProcessingException { - EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); - return idUnknownDAO.findAllBeans(); - } - - @QueryMapping(value = "getIndividual") - @GetMapping(value = "/individual", produces = "application/json") - public ObjectNode getIndividualJSON() { - EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); - return individualDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/individual-beans", produces = "application/json") - public Set getIndividualBeans() throws JsonProcessingException { - EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); - return individualDAO.findAllBeans(); - } - - @QueryMapping(value = "getSystem") - @GetMapping(value = "/system", produces = "application/json") - public ObjectNode getSystemJSON() { - EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); - return systemDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/system-beans", produces = "application/json") - public Set getSystemBeans() throws JsonProcessingException { - EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); - return systemDAO.findAllBeans(); - } - - @QueryMapping(value = "getKillChainPhase") - @GetMapping(value = "/kill-chain-phase", produces = "application/json") - public ObjectNode getKillChainPhaseJSON() { - EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); - return killChainPhaseDAO.findAll(); - } - - @QueryMapping - @GetMapping(value = "/kill-chain-phase-beans", produces = "application/json") - public Set getKillChainPhaseBeans() throws JsonProcessingException { - EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); - return killChainPhaseDAO.findAllBeans(); - } - - @QueryMapping(value = "getAttributedTo") - @GetMapping(value = "/attributed-to", produces = "application/json") - public ObjectNode getAttributedToJSON() { - RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, - AttributedTo.rolePlayers, AttributedTo.typeString); - return attributedToDAO.findAll(); - } - - @QueryMapping(value = "getIndicates") - @GetMapping(value = "/indicates", produces = "application/json") - public ObjectNode getIndicatesJSON() { - RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, - Indicates.rolePlayers, Indicates.typeString); - return indicatesDAO.findAll(); - } - - @QueryMapping(value = "getSighting") - @GetMapping(value = "/sighting", produces = "application/json") - public ObjectNode getSightingJSON() { - RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, - Sighting.rolePlayers, Sighting.typeString); - return sightingDAO.findAll(); - } - - @QueryMapping(value = "getUses") - @GetMapping(value = "/uses", produces = "application/json") - public ObjectNode getUsesJSON() { - RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, - Uses.rolePlayers, Uses.typeString); - return usesDAO.findAll(); - } - - @QueryMapping(value = "getTargets") - @GetMapping(value = "/targets", produces = "application/json") - public ObjectNode getTargetsJSON() { - RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, - Targets.rolePlayers, Targets.typeString); - return targetsDAO.findAll(); - } - - @QueryMapping(value = "getImpersonates") - @GetMapping(value = "/impersonates", produces = "application/json") - public ObjectNode getImpersonatesJSON() { - RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, - Impersonates.rolePlayers, Impersonates.typeString); - return impersonatesDAO.findAll(); - } - - @QueryMapping(value = "getKillChainPhases") - @GetMapping(value = "/kill-chain-phases", produces = "application/json") - public ObjectNode getKillChainPhasesJSON() { - RelationDAO killChainPhasesDAO = new RelationDAO<>(wrapper, KillChainPhases.nameRel, - KillChainPhases.rolePlayers, KillChainPhases.typeString); - return killChainPhasesDAO.findAll(); - } - - @QueryMapping(value = "getExternalReferences") - @GetMapping(value = "/external-references", produces = "application/json") - public ObjectNode getExternalReferencesJSON() { - RelationDAO externalReferencesDAO = new RelationDAO<>(wrapper, ExternalReferences.nameRel, - ExternalReferences.rolePlayers, ExternalReferences.typeString); - return externalReferencesDAO.findAll(); - } - - @QueryMapping(value = "getCreatedBy") - @GetMapping(value = "/created-by", produces = "application/json") - public ObjectNode getCreatedByJSON() { - RelationDAO createdByDAO = new RelationDAO<>(wrapper, CreatedBy.nameRel, - CreatedBy.rolePlayers, CreatedBy.typeString); - - return createdByDAO.findAll(); - } - - @QueryMapping(value = "getHashes") - @GetMapping(value = "/hashes", produces = "application/json") - public ObjectNode getHashesJSON() { - RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, - Hashes.rolePlayers, Hashes.typeString); - return hashesDAO.findAll(); - } - - @QueryMapping(value = "getThreatActorSearch") - @GetMapping(value = "/threat-actor/{type}/{name}", produces = "application/json") - public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); - return threatActorDAO.search(type, name); - } - - - @QueryMapping(value = "getThreatActorSearchBeans") - @GetMapping("/threat-actor-beans/{type}/{name}") - public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); - return threatActorDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getMalwareSearch") - @GetMapping(value = "/malware/{type}/{name}", produces = "application/json") - public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); - return malwareDAO.search(type, name); - } - - @QueryMapping(value = "getMalwareSearchBeans") - @GetMapping("/malware-beans/{type}/{name}") - public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); - return malwareDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getFileSearch") - @GetMapping(value = "/file/{type}/{name}", produces = "application/json") - public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); - return fileDAO.search(type, name); - } - - @QueryMapping(value = "getFileSearchBeans") - @GetMapping("/file-beans/{type}/{name}") - public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); - return fileDAO.searchBeans(type, name); - } - - - @QueryMapping(value = "getIdentitySearch") - @GetMapping(value = "/identity/{type}/{name}", produces = "application/json") - public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); - return identityDAO.search(type, name); - } - - @QueryMapping(value = "getIdentitySearchBeans") - @GetMapping("/identity-beans/{type}/{name}") - public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); - return identityDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getIndicatorSearch") - @GetMapping(value = "/indicator/{type}/{name}", produces = "application/json") - public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); - return indicatorDAO.search(type, name); - } - - @QueryMapping(value = "getIndicatorSearchBeans") - @GetMapping("/indicator-beans/{type}/{name}") - public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); - return indicatorDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getClassSearch") - @GetMapping(value = "/class/{type}/{name}", produces = "application/json") - public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); - return classDAO.search(type, name); - } - - @QueryMapping(value = "getClassSearchBeans") - @GetMapping("/class-beans/{type}/{name}") - public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); - return classDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getGroupSearch") - @GetMapping(value = "/group/{type}/{name}", produces = "application/json") - public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); - return groupDAO.search(type, name); - } - - @QueryMapping(value = "getGroupSearchBeans") - @GetMapping("/group-beans/{type}/{name}") - public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); - return groupDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getIdUnknownSearch") - @GetMapping(value = "/id-unknown/{type}/{name}", produces = "application/json") - public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); - return idUnknownDAO.search(type, name); - } - - @QueryMapping(value = "getIdUnknownSearchBeans") - @GetMapping("/id-unknown-beans/{type}/{name}") - public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAOidUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); - return idUnknownDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getIndividualSearch") - @GetMapping(value = "/individual/{type}/{name}", produces = "application/json") - public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); - return individualDAO.search(type, name); - } - - @QueryMapping(value = "getIndividualSearchBeans") - @GetMapping("/individual-beans/{type}/{name}") - public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); - return individualDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getSystemSearch") - @GetMapping(value = "/system/{type}/{name}", produces = "application/json") - public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); - return systemDAO.search(type, name); - } - - @QueryMapping(value = "getSystemSearchBeans") - @GetMapping("/system-beans/{type}/{name}") - public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); - return systemDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getKillChainPhaseSearch") - @GetMapping(value = "/kill-chain-phase/{type}/{name}", produces = "application/json") - public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); - return killChainPhaseDAO.search(type, name); - } - - @QueryMapping(value = "getKillChainPhaseSearchBeans") - @GetMapping("/kill-chain-phase-beans/{type}/{name}") - public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { - EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); - return killChainPhaseDAO.searchBeans(type, name); - } - - @QueryMapping(value = "getAttributedToSearch") - @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") - public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, - AttributedTo.rolePlayers, AttributedTo.typeString); - return attributedToDAO.search(type, name); - } - - @QueryMapping(value = "getIndicatesSearch") - @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") - public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, - Indicates.rolePlayers, Indicates.typeString); - return indicatesDAO.search(type, name); - } - - @QueryMapping(value = "getSightingSearch") - @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") - public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, - Sighting.rolePlayers, Sighting.typeString); - return sightingDAO.search(type, name); - } - - @QueryMapping(value = "getUsesSearch") - @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") - public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, - Uses.rolePlayers, Uses.typeString); - return usesDAO.search(type, name); - } - - @QueryMapping(value = "getTargetsSearch") - @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") - public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, - Targets.rolePlayers, Targets.typeString); - return targetsDAO.search(type, name); - } - - @QueryMapping(value = "getImpersonatesSearch") - @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") - public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, - Impersonates.rolePlayers, Impersonates.typeString); - return impersonatesDAO.search(type, name); - } - - @QueryMapping - @GetMapping(value = "/schema", produces = "application/json") - public ObjectNode getSchema() { - SchemaDAO schemaDAO = new SchemaDAO(wrapper); - return schemaDAO.getSchemaAll(); - } - - @QueryMapping - @GetMapping(value = "/schema-current", produces = "application/json") - public ObjectNode getSchemaCurrent() { - SchemaDAO schemaDAO = new SchemaDAO(wrapper); - return schemaDAO.getSchemaCurrent(); - } - -} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java new file mode 100644 index 00000000..67cf38e9 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java @@ -0,0 +1,59 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.identity.Class; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class ClassController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public ClassController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getClass") + @GetMapping(value = "/class", produces = "application/json") + public ObjectNode getClassJSON() { + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); + return classDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/class-beans", produces = "application/json") + public Set getClassBeans() throws JsonProcessingException { + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); + return classDAO.findAllBeans(); + } + + @QueryMapping(value = "getClassSearch") + @GetMapping(value = "/class/{type}/{name}", produces = "application/json") + public ObjectNode getClassSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); + return classDAO.search(type, name); + } + + @QueryMapping(value = "getClassSearchBeans") + @GetMapping("/class-beans/{type}/{name}") + public Set getClassSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO classDAO = new EntityDAO<>(wrapper, Class.nameEnt, Class.typeString); + return classDAO.searchBeans(type, name); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java new file mode 100644 index 00000000..d88c18cc --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java @@ -0,0 +1,59 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.observable.File; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class FileController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public FileController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getFile") + @GetMapping(value = "/file", produces = "application/json") + public ObjectNode getFileJSON() { + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); + return fileDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/file-beans", produces = "application/json") + public Set getFileBeans() throws JsonProcessingException { + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); + return fileDAO.findAllBeans(); + } + + @QueryMapping(value = "getFileSearch") + @GetMapping(value = "/file/{type}/{name}", produces = "application/json") + public ObjectNode getFileSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); + return fileDAO.search(type, name); + } + + @QueryMapping(value = "getFileSearchBeans") + @GetMapping("/file-beans/{type}/{name}") + public Set getFileSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO fileDAO = new EntityDAO<>(wrapper, File.nameEnt, File.typeString); + return fileDAO.searchBeans(type, name); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java new file mode 100644 index 00000000..a1efc77c --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.identity.Group; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class GroupController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public GroupController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getGroupSearch") + @GetMapping(value = "/group/{type}/{name}", produces = "application/json") + public ObjectNode getGroupSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); + return groupDAO.search(type, name); + } + + @QueryMapping(value = "getGroupSearchBeans") + @GetMapping("/group-beans/{type}/{name}") + public Set getGroupSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); + return groupDAO.searchBeans(type, name); + } + + @QueryMapping(value = "getGroup") + @GetMapping(value = "/group", produces = "application/json") + public ObjectNode getGroupJSON() { + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); + return groupDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/group-beans", produces = "application/json") + public Set getGroupBeans() throws JsonProcessingException { + EntityDAO groupDAO = new EntityDAO<>(wrapper, Group.nameEnt, Group.typeString); + return groupDAO.findAllBeans(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java new file mode 100644 index 00000000..7f99c17a --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.identity.IdUnknown; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class IdUnknownController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public IdUnknownController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getIdUnknown") + @GetMapping(value = "/id-unknown", produces = "application/json") + public ObjectNode getIdUnknownJSON() { + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); + return idUnknownDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/id-unknown-beans", produces = "application/json") + public Set getIdUnknownBeans() throws JsonProcessingException { + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); + return idUnknownDAO.findAllBeans(); + } + + @QueryMapping(value = "getIdUnknownSearch") + @GetMapping(value = "/id-unknown/{type}/{name}", produces = "application/json") + public ObjectNode getIdUnknownSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO idUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); + return idUnknownDAO.search(type, name); + } + + @QueryMapping(value = "getIdUnknownSearchBeans") + @GetMapping("/id-unknown-beans/{type}/{name}") + public Set getIdUnknownSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAOidUnknownDAO = new EntityDAO<>(wrapper, IdUnknown.nameEnt, IdUnknown.typeString); + return idUnknownDAO.searchBeans(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java new file mode 100644 index 00000000..2c0d786d --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.Identity; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class IdentityController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public IdentityController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getIdentity") + @GetMapping(value = "/identity", produces = "application/json") + public ObjectNode getIdentityJSON() { + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); + return identityDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/identity-beans", produces = "application/json") + public Set getIdentityBeans() throws JsonProcessingException { + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); + return identityDAO.findAllBeans(); + } + + @QueryMapping(value = "getIdentitySearch") + @GetMapping(value = "/identity/{type}/{name}", produces = "application/json") + public ObjectNode getIdentitySearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); + return identityDAO.search(type, name); + } + + @QueryMapping(value = "getIdentitySearchBeans") + @GetMapping("/identity-beans/{type}/{name}") + public Set getIdentitySearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO identityDAO = new EntityDAO<>(wrapper, Identity.nameEnt, Identity.typeString); + return identityDAO.searchBeans(type, name); + } + +} \ No newline at end of file diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java new file mode 100644 index 00000000..e8f57578 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java @@ -0,0 +1,59 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.Indicator; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class IndicatorController{ + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public IndicatorController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getIndicator") + @GetMapping(value = "/indicator", produces = "application/json") + public ObjectNode getIndicatorJSON() { + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); + return indicatorDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/indicator-beans", produces = "application/json") + public Set getIndicatorBeans() throws JsonProcessingException { + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); + return indicatorDAO.findAllBeans(); + } + + @QueryMapping(value = "getIndicatorSearch") + @GetMapping(value = "/indicator/{type}/{name}", produces = "application/json") + public ObjectNode getIndicatorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); + return indicatorDAO.search(type, name); + } + + @QueryMapping(value = "getIndicatorSearchBeans") + @GetMapping("/indicator-beans/{type}/{name}") + public Set getIndicatorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO indicatorDAO = new EntityDAO<>(wrapper, Indicator.nameEnt, Indicator.typeString); + return indicatorDAO.searchBeans(type, name); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java new file mode 100644 index 00000000..5e20ce32 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.identity.Individual; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class IndividualController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public IndividualController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getIndividualSearch") + @GetMapping(value = "/individual/{type}/{name}", produces = "application/json") + public ObjectNode getIndividualSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); + return individualDAO.search(type, name); + } + + @QueryMapping(value = "getIndividualSearchBeans") + @GetMapping("/individual-beans/{type}/{name}") + public Set getIndividualSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); + return individualDAO.searchBeans(type, name); + } + + @QueryMapping(value = "getIndividual") + @GetMapping(value = "/individual", produces = "application/json") + public ObjectNode getIndividualJSON() { + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); + return individualDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/individual-beans", produces = "application/json") + public Set getIndividualBeans() throws JsonProcessingException { + EntityDAO individualDAO = new EntityDAO<>(wrapper, Individual.nameEnt, Individual.typeString); + return individualDAO.findAllBeans(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java new file mode 100644 index 00000000..f2886693 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class KillChainPhaseController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public KillChainPhaseController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getKillChainPhaseSearch") + @GetMapping(value = "/kill-chain-phase/{type}/{name}", produces = "application/json") + public ObjectNode getKillChainPhaseSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); + return killChainPhaseDAO.search(type, name); + } + + @QueryMapping(value = "getKillChainPhaseSearchBeans") + @GetMapping("/kill-chain-phase-beans/{type}/{name}") + public Set getKillChainPhaseSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); + return killChainPhaseDAO.searchBeans(type, name); + } + + @QueryMapping(value = "getKillChainPhase") + @GetMapping(value = "/kill-chain-phase", produces = "application/json") + public ObjectNode getKillChainPhaseJSON() { + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); + return killChainPhaseDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/kill-chain-phase-beans", produces = "application/json") + public Set getKillChainPhaseBeans() throws JsonProcessingException { + EntityDAO killChainPhaseDAO = new EntityDAO<>(wrapper, KillChainPhase.nameEnt, KillChainPhase.typeString); + return killChainPhaseDAO.findAllBeans(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java new file mode 100644 index 00000000..68345ab5 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java @@ -0,0 +1,59 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.Malware; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class MalwareController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public MalwareController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getMalware") + @GetMapping(value = "/malware", produces = "application/json") + public ObjectNode getMalwareJSON() { + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); + return malwareDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/malware-beans", produces = "application/json") + public Set getMalwareBeans() throws JsonProcessingException { + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); + return malwareDAO.findAllBeans(); + } + + @QueryMapping(value = "getMalwareSearch") + @GetMapping(value = "/malware/{type}/{name}", produces = "application/json") + public ObjectNode getMalwareSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); + return malwareDAO.search(type, name); + } + + @QueryMapping(value = "getMalwareSearchBeans") + @GetMapping("/malware-beans/{type}/{name}") + public Set getMalwareSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO malwareDAO = new EntityDAO<>(wrapper, Malware.nameEnt, Malware.typeString); + return malwareDAO.searchBeans(type, name); + } +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java new file mode 100644 index 00000000..f3460403 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java @@ -0,0 +1,60 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.identity.System; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class SystemController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public SystemController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getSystem") + @GetMapping(value = "/system", produces = "application/json") + public ObjectNode getSystemJSON() { + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); + return systemDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/system-beans", produces = "application/json") + public Set getSystemBeans() throws JsonProcessingException { + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); + return systemDAO.findAllBeans(); + } + + @QueryMapping(value = "getSystemSearch") + @GetMapping(value = "/system/{type}/{name}", produces = "application/json") + public ObjectNode getSystemSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); + return systemDAO.search(type, name); + } + + @QueryMapping(value = "getSystemSearchBeans") + @GetMapping("/system-beans/{type}/{name}") + public Set getSystemSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO systemDAO = new EntityDAO<>(wrapper, System.nameEnt, System.typeString); + return systemDAO.searchBeans(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java new file mode 100644 index 00000000..a7927480 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java @@ -0,0 +1,62 @@ +package com.typedb.examples.cti.controllers.entities; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.EntityDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.object.ThreatActor; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +@RestController + +public class ThreatActorController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public ThreatActorController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getThreatActor") + @GetMapping(value = "/threat-actor", produces = "application/json") + public ObjectNode getThreatActorJSON() { + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); + return threatActorDAO.findAll(); + } + + @QueryMapping + @GetMapping(value = "/threat-actor-beans", produces = "application/json") + public Set getThreatActorBeans() throws JsonProcessingException { + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); + return threatActorDAO.findAllBeans(); + } + + @QueryMapping(value = "getThreatActorSearch") + @GetMapping(value = "/threat-actor/{type}/{name}", produces = "application/json") + public ObjectNode getThreatActorSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); + return threatActorDAO.search(type, name); + } + + + @QueryMapping(value = "getThreatActorSearchBeans") + @GetMapping("/threat-actor-beans/{type}/{name}") + public Set getThreatActorSearchBeans(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) throws JsonProcessingException { + EntityDAO threatActorDAO = new EntityDAO<>(wrapper, ThreatActor.nameEnt, ThreatActor.typeString); + return threatActorDAO.searchBeans(type, name); + } + + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java new file mode 100644 index 00000000..eaea816a --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.ext.AttributedTo; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class AttributedToController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public AttributedToController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getAttributedTo") + @GetMapping(value = "/attributed-to", produces = "application/json") + public ObjectNode getAttributedToJSON() { + RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + AttributedTo.rolePlayers, AttributedTo.typeString); + return attributedToDAO.findAll(); + } + + @QueryMapping(value = "getAttributedToSearch") + @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") + public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + AttributedTo.rolePlayers, AttributedTo.typeString); + return attributedToDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java new file mode 100644 index 00000000..dbb7d4b9 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java @@ -0,0 +1,36 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.ext.CreatedBy; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class CreatedByController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public CreatedByController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getCreatedBy") + @GetMapping(value = "/created-by", produces = "application/json") + public ObjectNode getCreatedByJSON() { + RelationDAO createdByDAO = new RelationDAO<>(wrapper, CreatedBy.nameRel, + CreatedBy.rolePlayers, CreatedBy.typeString); + + return createdByDAO.findAll(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java new file mode 100644 index 00000000..6853d58f --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java @@ -0,0 +1,35 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.ext.ExternalReferences; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class ExternalReferencesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public ExternalReferencesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getExternalReferences") + @GetMapping(value = "/external-references", produces = "application/json") + public ObjectNode getExternalReferencesJSON() { + RelationDAO externalReferencesDAO = new RelationDAO<>(wrapper, ExternalReferences.nameRel, + ExternalReferences.rolePlayers, ExternalReferences.typeString); + return externalReferencesDAO.findAll(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java new file mode 100644 index 00000000..4286f0d8 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java @@ -0,0 +1,46 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Impersonates; +import com.typedb.examples.cti.model.domain.relationship.ext.Hashes; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class HashesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public HashesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getHashes") + @GetMapping(value = "/hashes", produces = "application/json") + public ObjectNode getHashesJSON() { + RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, + Hashes.rolePlayers, Hashes.typeString, true); + return hashesDAO.findAll(); + } + + @QueryMapping(value = "getHashesSearch") + @GetMapping(value = "/hashes/{type}/{name}", produces = "application/json") + public ObjectNode getHashesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, + Hashes.rolePlayers, Hashes.typeString, true); + return hashesDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java new file mode 100644 index 00000000..aaa0eaeb --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Impersonates; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class ImpersonatesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public ImpersonatesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getImpersonates") + @GetMapping(value = "/impersonates", produces = "application/json") + public ObjectNode getImpersonatesJSON() { + RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + Impersonates.rolePlayers, Impersonates.typeString); + return impersonatesDAO.findAll(); + } + + @QueryMapping(value = "getImpersonatesSearch") + @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") + public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + Impersonates.rolePlayers, Impersonates.typeString); + return impersonatesDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java new file mode 100644 index 00000000..a78aa71b --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Indicates; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class IndicatesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public IndicatesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getIndicates") + @GetMapping(value = "/indicates", produces = "application/json") + public ObjectNode getIndicatesJSON() { + RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + Indicates.rolePlayers, Indicates.typeString); + return indicatesDAO.findAll(); + } + + @QueryMapping(value = "getIndicatesSearch") + @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") + public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + Indicates.rolePlayers, Indicates.typeString); + return indicatesDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java new file mode 100644 index 00000000..d63e5403 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java @@ -0,0 +1,35 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.ext.KillChainPhases; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class KillChainPhasesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public KillChainPhasesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getKillChainPhases") + @GetMapping(value = "/kill-chain-phases", produces = "application/json") + public ObjectNode getKillChainPhasesJSON() { + RelationDAO killChainPhasesDAO = new RelationDAO<>(wrapper, KillChainPhases.nameRel, + KillChainPhases.rolePlayers, KillChainPhases.typeString); + return killChainPhasesDAO.findAll(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java new file mode 100644 index 00000000..2e239daa --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Sighting; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class SightingController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public SightingController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getSighting") + @GetMapping(value = "/sighting", produces = "application/json") + public ObjectNode getSightingJSON() { + RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + Sighting.rolePlayers, Sighting.typeString); + return sightingDAO.findAll(); + } + + @QueryMapping(value = "getSightingSearch") + @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") + public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + Sighting.rolePlayers, Sighting.typeString); + return sightingDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java new file mode 100644 index 00000000..4cee2162 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Targets; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class TargetsController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public TargetsController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getTargets") + @GetMapping(value = "/targets", produces = "application/json") + public ObjectNode getTargetsJSON() { + RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + Targets.rolePlayers, Targets.typeString); + return targetsDAO.findAll(); + } + + @QueryMapping(value = "getTargetsSearch") + @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") + public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + Targets.rolePlayers, Targets.typeString); + return targetsDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java new file mode 100644 index 00000000..f684c903 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java @@ -0,0 +1,45 @@ +package com.typedb.examples.cti.controllers.relations; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.RelationDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.typedb.examples.cti.model.domain.relationship.Uses; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class UsesController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public UsesController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping(value = "getUses") + @GetMapping(value = "/uses", produces = "application/json") + public ObjectNode getUsesJSON() { + RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + Uses.rolePlayers, Uses.typeString, true); + return usesDAO.findAll(); + } + + @QueryMapping(value = "getUsesSearch") + @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") + public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { + RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + Uses.rolePlayers, Uses.typeString); + return usesDAO.search(type, name); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/schemas/SchemaController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/schemas/SchemaController.java new file mode 100644 index 00000000..999f8e22 --- /dev/null +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/schemas/SchemaController.java @@ -0,0 +1,40 @@ +package com.typedb.examples.cti.controllers.schemas; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.typedb.examples.cti.configuration.AppConfiguration; +import com.typedb.examples.cti.db.SchemaDAO; +import com.typedb.examples.cti.db.TypeDBSessionWrapper; +import com.vaticle.typedb.client.TypeDB; +import com.vaticle.typedb.client.api.TypeDBClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController + +public class SchemaController { + + private final TypeDBSessionWrapper wrapper; + + @Autowired + public SchemaController(AppConfiguration appConfiguration) { + TypeDBClient client = TypeDB.coreClient(appConfiguration.getAddress() + ":" + appConfiguration.getPort()); + wrapper = new TypeDBSessionWrapper(client, appConfiguration); + } + + @QueryMapping + @GetMapping(value = "/schema", produces = "application/json") + public ObjectNode getSchema() { + SchemaDAO schemaDAO = new SchemaDAO(wrapper); + return schemaDAO.getSchemaAll(); + } + + @QueryMapping + @GetMapping(value = "/schema-current", produces = "application/json") + public ObjectNode getSchemaCurrent() { + SchemaDAO schemaDAO = new SchemaDAO(wrapper); + return schemaDAO.getSchemaCurrent(); + } + +} diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java index 394e782c..367a7d0a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java @@ -14,7 +14,7 @@ public class EntityDAO { protected static final String ENT_MATCH = - " $%s isa %s, has stix_id $id, has $attribute;" + + "$%s isa %s, has stix_id $id, has $attribute;" + "$attribute isa! $j; "; private final String nameEnt; @@ -47,13 +47,13 @@ public Set findAllBeans() throws JsonProcessingException { return new HashSet<>(result.values()); } - public ObjectNode search(String type, String name) { + public ObjectNode search(String attrType, String attrName) { - if (typeString.contains(" " + type + ";")) { - name = "\"" + name + "\""; + if (typeString.contains(attrType)) { + attrName = "\"" + attrName + "\""; } String query = String.format(ENT_MATCH, nameEnt, nameEnt); - String search = "$class has " + type + " = " + name + ";"; + String search = "$" + nameEnt + " has " + attrType + " = " + attrName + ";"; var getQueryStr = "match " + query + search + "group $id;"; return find(getQueryStr); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java index c085be87..249028ce 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java @@ -6,14 +6,14 @@ import java.util.List; public class RelationDAO { - protected static final String REL_MATCH = - "$ta (%s: $rp1, %s: $rp2) isa %s, has stix_id $id, has $attribute;" + - "$attribute isa! $j; "; + private String relMatch = "$ta (%s: $rp1, %s: $rp2) isa %s, has stix_id $id, has $attribute; $attribute isa! $j; "; private final String nameRel; private final TypeDBSessionWrapper db; private final List typeString; private final List rolePlayers; + private final boolean asAttribute; + public RelationDAO(TypeDBSessionWrapper db, String nameRel, List rolePlayers, List typeString) { @@ -21,15 +21,32 @@ public RelationDAO(TypeDBSessionWrapper db, String nameRel, List rolePla this.nameRel = nameRel; this.typeString = typeString; this.rolePlayers = rolePlayers; + this.asAttribute = false; + } + + public RelationDAO(TypeDBSessionWrapper db, String nameRel, List rolePlayers, List typeString, boolean asAttribute) { + this.db = db; + this.nameRel = nameRel; + this.typeString = typeString; + this.rolePlayers = rolePlayers; + this.asAttribute = asAttribute; + if(asAttribute) { + this.relMatch = "$ta (%s: $rp1, %s: $rp2) isa %s, has $attribute; $attribute isa! $j; "; + } } private ObjectNode find(String getQueryStr) { + if (asAttribute) { + return db.getListAttrJSON(getQueryStr, nameRel, rolePlayers, true); + } return db.getRelJSON(getQueryStr, nameRel, rolePlayers); } public ObjectNode findAll() { - String query = String.format(REL_MATCH, rolePlayers.get(0), rolePlayers.get(1), nameRel); - var getQueryStr = "match " + query + "group $id; "; + String query = String.format(relMatch, rolePlayers.get(0), rolePlayers.get(1), nameRel); + var getQueryStr = "match " + query; + getQueryStr += (asAttribute) ? "group $ta; " : "group $id; "; + return find(getQueryStr); } @@ -39,9 +56,10 @@ public ObjectNode search(String attrType, String attrName) { attrName = "\"" + attrName + "\""; } - String query = String.format(REL_MATCH, rolePlayers.get(0), rolePlayers.get(1), nameRel); + String query = String.format(relMatch, rolePlayers.get(0), rolePlayers.get(1), nameRel); String search = "$ta has " + attrType + " = " + attrName + ";"; - var getQueryStr = "match " + query + search + "group $id;"; + var getQueryStr = "match " + query + search; + getQueryStr += (asAttribute) ? "group $ta; " : "group $id; "; return find(getQueryStr); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls b/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls index 54b679f4..78a6a813 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls +++ b/cybersecurity/cyber_threat_intelligence/src/main/resources/graphql/schema.graphqls @@ -267,6 +267,8 @@ type Query{ getUsesSearch(type: String, name: String): JSON getTargetsSearch(type: String, name: String): JSON getImpersonatesSearch(type: String, name: String): JSON + getHashesSearch(type: String, name: String): JSON + getAttributedTo: JSON getIndicates: JSON From 3da98a2c857d5a573e329622226bd1488783f0f2 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 17:40:32 +0100 Subject: [PATCH 25/27] Debug common RelationDAO --- .../src/main/java/com/typedb/examples/cti/db/EntityDAO.java | 1 - 1 file changed, 1 deletion(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java index 367a7d0a..aadb02a1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/EntityDAO.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.object.identity.Class; import java.util.HashSet; import java.util.List; From e5b47fd8de1e6fd291abb09dd8d5ddb7559ee989 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 17:49:45 +0100 Subject: [PATCH 26/27] Clean up --- .../relations/AttributedToController.java | 4 ++-- .../relations/CreatedByController.java | 2 +- .../relations/ExternalReferencesController.java | 2 +- .../controllers/relations/HashesController.java | 5 ++--- .../relations/ImpersonatesController.java | 4 ++-- .../relations/IndicatesController.java | 4 ++-- .../relations/KillChainPhasesController.java | 2 +- .../controllers/relations/SightingController.java | 4 ++-- .../controllers/relations/TargetsController.java | 4 ++-- .../cti/controllers/relations/UsesController.java | 4 ++-- .../com/typedb/examples/cti/db/RelationDAO.java | 6 ++---- .../examples/cti/db/TypeDBSessionWrapper.java | 15 ++++++--------- 12 files changed, 25 insertions(+), 31 deletions(-) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java index eaea816a..37d76f39 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java @@ -29,7 +29,7 @@ public AttributedToController(AppConfiguration appConfiguration) { @QueryMapping(value = "getAttributedTo") @GetMapping(value = "/attributed-to", produces = "application/json") public ObjectNode getAttributedToJSON() { - RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + RelationDAO attributedToDAO = new RelationDAO(wrapper, AttributedTo.nameRel, AttributedTo.rolePlayers, AttributedTo.typeString); return attributedToDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getAttributedToJSON() { @QueryMapping(value = "getAttributedToSearch") @GetMapping(value = "/attributed-to/{type}/{name}", produces = "application/json") public ObjectNode getAttributedToSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO attributedToDAO = new RelationDAO<>(wrapper, AttributedTo.nameRel, + RelationDAO attributedToDAO = new RelationDAO(wrapper, AttributedTo.nameRel, AttributedTo.rolePlayers, AttributedTo.typeString); return attributedToDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java index dbb7d4b9..c9d24cdc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java @@ -27,7 +27,7 @@ public CreatedByController(AppConfiguration appConfiguration) { @QueryMapping(value = "getCreatedBy") @GetMapping(value = "/created-by", produces = "application/json") public ObjectNode getCreatedByJSON() { - RelationDAO createdByDAO = new RelationDAO<>(wrapper, CreatedBy.nameRel, + RelationDAO createdByDAO = new RelationDAO(wrapper, CreatedBy.nameRel, CreatedBy.rolePlayers, CreatedBy.typeString); return createdByDAO.findAll(); diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java index 6853d58f..8f37a475 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java @@ -27,7 +27,7 @@ public ExternalReferencesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getExternalReferences") @GetMapping(value = "/external-references", produces = "application/json") public ObjectNode getExternalReferencesJSON() { - RelationDAO externalReferencesDAO = new RelationDAO<>(wrapper, ExternalReferences.nameRel, + RelationDAO externalReferencesDAO = new RelationDAO(wrapper, ExternalReferences.nameRel, ExternalReferences.rolePlayers, ExternalReferences.typeString); return externalReferencesDAO.findAll(); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java index 4286f0d8..0e3a15aa 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java @@ -4,7 +4,6 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Impersonates; import com.typedb.examples.cti.model.domain.relationship.ext.Hashes; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; @@ -30,7 +29,7 @@ public HashesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getHashes") @GetMapping(value = "/hashes", produces = "application/json") public ObjectNode getHashesJSON() { - RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, + RelationDAO hashesDAO = new RelationDAO(wrapper, Hashes.nameRel, Hashes.rolePlayers, Hashes.typeString, true); return hashesDAO.findAll(); } @@ -38,7 +37,7 @@ public ObjectNode getHashesJSON() { @QueryMapping(value = "getHashesSearch") @GetMapping(value = "/hashes/{type}/{name}", produces = "application/json") public ObjectNode getHashesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO hashesDAO = new RelationDAO<>(wrapper, Hashes.nameRel, + RelationDAO hashesDAO = new RelationDAO(wrapper, Hashes.nameRel, Hashes.rolePlayers, Hashes.typeString, true); return hashesDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java index aaa0eaeb..5251c578 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java @@ -29,7 +29,7 @@ public ImpersonatesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getImpersonates") @GetMapping(value = "/impersonates", produces = "application/json") public ObjectNode getImpersonatesJSON() { - RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + RelationDAO impersonatesDAO = new RelationDAO(wrapper, Impersonates.nameRel, Impersonates.rolePlayers, Impersonates.typeString); return impersonatesDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getImpersonatesJSON() { @QueryMapping(value = "getImpersonatesSearch") @GetMapping(value = "/impersonates/{type}/{name}", produces = "application/json") public ObjectNode getImpersonatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO impersonatesDAO = new RelationDAO<>(wrapper, Impersonates.nameRel, + RelationDAO impersonatesDAO = new RelationDAO(wrapper, Impersonates.nameRel, Impersonates.rolePlayers, Impersonates.typeString); return impersonatesDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java index a78aa71b..ed0ab22f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java @@ -29,7 +29,7 @@ public IndicatesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getIndicates") @GetMapping(value = "/indicates", produces = "application/json") public ObjectNode getIndicatesJSON() { - RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + RelationDAO indicatesDAO = new RelationDAO(wrapper, Indicates.nameRel, Indicates.rolePlayers, Indicates.typeString); return indicatesDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getIndicatesJSON() { @QueryMapping(value = "getIndicatesSearch") @GetMapping(value = "/indicates/{type}/{name}", produces = "application/json") public ObjectNode getIndicatesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO indicatesDAO = new RelationDAO<>(wrapper, Indicates.nameRel, + RelationDAO indicatesDAO = new RelationDAO(wrapper, Indicates.nameRel, Indicates.rolePlayers, Indicates.typeString); return indicatesDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java index d63e5403..3d8466a1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java @@ -27,7 +27,7 @@ public KillChainPhasesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getKillChainPhases") @GetMapping(value = "/kill-chain-phases", produces = "application/json") public ObjectNode getKillChainPhasesJSON() { - RelationDAO killChainPhasesDAO = new RelationDAO<>(wrapper, KillChainPhases.nameRel, + RelationDAO killChainPhasesDAO = new RelationDAO(wrapper, KillChainPhases.nameRel, KillChainPhases.rolePlayers, KillChainPhases.typeString); return killChainPhasesDAO.findAll(); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java index 2e239daa..142d8636 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java @@ -29,7 +29,7 @@ public SightingController(AppConfiguration appConfiguration) { @QueryMapping(value = "getSighting") @GetMapping(value = "/sighting", produces = "application/json") public ObjectNode getSightingJSON() { - RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + RelationDAO sightingDAO = new RelationDAO(wrapper, Sighting.nameRel, Sighting.rolePlayers, Sighting.typeString); return sightingDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getSightingJSON() { @QueryMapping(value = "getSightingSearch") @GetMapping(value = "/sighting/{type}/{name}", produces = "application/json") public ObjectNode getSightingSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO sightingDAO = new RelationDAO<>(wrapper, Sighting.nameRel, + RelationDAO sightingDAO = new RelationDAO(wrapper, Sighting.nameRel, Sighting.rolePlayers, Sighting.typeString); return sightingDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java index 4cee2162..0fb3f17b 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java @@ -29,7 +29,7 @@ public TargetsController(AppConfiguration appConfiguration) { @QueryMapping(value = "getTargets") @GetMapping(value = "/targets", produces = "application/json") public ObjectNode getTargetsJSON() { - RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + RelationDAO targetsDAO = new RelationDAO(wrapper, Targets.nameRel, Targets.rolePlayers, Targets.typeString); return targetsDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getTargetsJSON() { @QueryMapping(value = "getTargetsSearch") @GetMapping(value = "/targets/{type}/{name}", produces = "application/json") public ObjectNode getTargetsSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO targetsDAO = new RelationDAO<>(wrapper, Targets.nameRel, + RelationDAO targetsDAO = new RelationDAO(wrapper, Targets.nameRel, Targets.rolePlayers, Targets.typeString); return targetsDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java index f684c903..7b751a17 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java @@ -29,7 +29,7 @@ public UsesController(AppConfiguration appConfiguration) { @QueryMapping(value = "getUses") @GetMapping(value = "/uses", produces = "application/json") public ObjectNode getUsesJSON() { - RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + RelationDAO usesDAO = new RelationDAO(wrapper, Uses.nameRel, Uses.rolePlayers, Uses.typeString, true); return usesDAO.findAll(); } @@ -37,7 +37,7 @@ public ObjectNode getUsesJSON() { @QueryMapping(value = "getUsesSearch") @GetMapping(value = "/uses/{type}/{name}", produces = "application/json") public ObjectNode getUsesSearchJSON(@Argument("type") @PathVariable String type, @Argument("name") @PathVariable String name) { - RelationDAO usesDAO = new RelationDAO<>(wrapper, Uses.nameRel, + RelationDAO usesDAO = new RelationDAO(wrapper, Uses.nameRel, Uses.rolePlayers, Uses.typeString); return usesDAO.search(type, name); } diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java index 249028ce..67662728 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/RelationDAO.java @@ -1,18 +1,16 @@ package com.typedb.examples.cti.db; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.typedb.examples.cti.model.domain.relationship.Sighting; import java.util.List; -public class RelationDAO { - private String relMatch = "$ta (%s: $rp1, %s: $rp2) isa %s, has stix_id $id, has $attribute; $attribute isa! $j; "; +public class RelationDAO { private final String nameRel; private final TypeDBSessionWrapper db; private final List typeString; private final List rolePlayers; - private final boolean asAttribute; + private String relMatch = "$ta (%s: $rp1, %s: $rp2) isa %s, has stix_id $id, has $attribute; $attribute isa! $j; "; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java index eb24cb1a..0f5ad70d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/db/TypeDBSessionWrapper.java @@ -54,7 +54,7 @@ private Pair extractPair(ConceptMap values) { var json = values.toJSON().get("attribute"); var key = json.asObject().get("type").asString(); var valueTmp = json.asObject().get("value"); - String value = ""; + String value; if (valueTmp.isString()) { value = valueTmp.asString(); } else { @@ -217,15 +217,12 @@ public ObjectNode getListAttrJSON(String query, String relName, List rol childNode.set(removeFirstChar(rolePlayersTmp[i]), nodeTmp); } else { var dbResults2 = readTx.query().matchGroup(query); - dbResults2.forEach(w -> { - w.conceptMaps().forEach(m -> { - String value3 = m.map().get("rp1").asAttribute().toString(); - value3 = removeLastChar(value3.split(":")[1]); - childNode.put(rolePlayersTmp[0], value3); + dbResults2.forEach(w -> w.conceptMaps().forEach(m -> { + String value3 = m.map().get("rp1").asAttribute().toString(); + value3 = removeLastChar(value3.split(":")[1]); + childNode.put(rolePlayersTmp[0], value3); - }); - - }); + })); } From acd7e9dba15b87a5fe096ca3baa5a1e182aaf8a1 Mon Sep 17 00:00:00 2001 From: Sullivan Daly Date: Thu, 17 Aug 2023 17:59:16 +0100 Subject: [PATCH 27/27] Refactor packages --- .../examples/cti/controllers/entities/ClassController.java | 2 +- .../examples/cti/controllers/entities/FileController.java | 2 +- .../examples/cti/controllers/entities/GroupController.java | 2 +- .../cti/controllers/entities/IdUnknownController.java | 2 +- .../cti/controllers/entities/IdentityController.java | 2 +- .../cti/controllers/entities/IndicatorController.java | 2 +- .../cti/controllers/entities/IndividualController.java | 2 +- .../cti/controllers/entities/KillChainPhaseController.java | 2 +- .../cti/controllers/entities/MalwareController.java | 2 +- .../examples/cti/controllers/entities/SystemController.java | 2 +- .../cti/controllers/entities/ThreatActorController.java | 2 +- .../cti/controllers/relations/AttributedToController.java | 2 +- .../cti/controllers/relations/CreatedByController.java | 2 +- .../controllers/relations/ExternalReferencesController.java | 2 +- .../cti/controllers/relations/HashesController.java | 2 +- .../cti/controllers/relations/ImpersonatesController.java | 2 +- .../cti/controllers/relations/IndicatesController.java | 2 +- .../controllers/relations/KillChainPhasesController.java | 2 +- .../cti/controllers/relations/SightingController.java | 2 +- .../cti/controllers/relations/TargetsController.java | 2 +- .../examples/cti/controllers/relations/UsesController.java | 2 +- .../examples/cti/model/domain/{object => }/Identity.java | 4 ++-- .../examples/cti/model/domain/{object => }/Indicator.java | 4 ++-- .../cti/model/domain/{stix/ext => }/KillChainPhase.java | 5 +---- .../examples/cti/model/domain/{object => }/Malware.java | 4 ++-- .../examples/cti/model/domain/{object => }/ThreatActor.java | 4 ++-- .../cti/model/domain/{object => }/identity/Class.java | 4 ++-- .../cti/model/domain/{object => }/identity/Group.java | 4 ++-- .../cti/model/domain/{object => }/identity/IdUnknown.java | 4 ++-- .../cti/model/domain/{object => }/identity/Individual.java | 4 ++-- .../cti/model/domain/{object => }/identity/System.java | 4 ++-- .../examples/cti/model/{domain => }/observable/File.java | 6 +++--- .../cti/model/{domain => }/relationship/Impersonates.java | 4 ++-- .../cti/model/{domain => }/relationship/Indicates.java | 4 ++-- .../cti/model/{domain => }/relationship/Sighting.java | 4 ++-- .../cti/model/{domain => }/relationship/Targets.java | 4 ++-- .../examples/cti/model/{domain => }/relationship/Uses.java | 4 ++-- .../model/{domain => }/relationship/ext/AttributedTo.java | 2 +- .../cti/model/{domain => }/relationship/ext/CreatedBy.java | 2 +- .../{domain => }/relationship/ext/ExternalReferences.java | 2 +- .../cti/model/{domain => }/relationship/ext/Hashes.java | 2 +- .../{domain => }/relationship/ext/KillChainPhases.java | 2 +- .../cti/model/{domain => }/stix/StixCoreObject.java | 2 +- .../cti/model/{domain => }/stix/StixCoreRelationship.java | 2 +- .../model/{domain => }/stix/StixCyberObservableObject.java | 2 +- .../cti/model/{domain => }/stix/StixDomainObject.java | 2 +- 46 files changed, 62 insertions(+), 65 deletions(-) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/Identity.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/Indicator.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{stix/ext => }/KillChainPhase.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/Malware.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/ThreatActor.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/identity/Class.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/identity/Group.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/identity/IdUnknown.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/identity/Individual.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/{object => }/identity/System.java (89%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/observable/File.java (93%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/Impersonates.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/Indicates.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/Sighting.java (94%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/Targets.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/Uses.java (90%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/ext/AttributedTo.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/ext/CreatedBy.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/ext/ExternalReferences.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/ext/Hashes.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/relationship/ext/KillChainPhases.java (95%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/stix/StixCoreObject.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/stix/StixCoreRelationship.java (97%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/stix/StixCyberObservableObject.java (96%) rename cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/{domain => }/stix/StixDomainObject.java (98%) diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java index 67cf38e9..0825ccd4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ClassController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.identity.Class; +import com.typedb.examples.cti.model.domain.identity.Class; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java index d88c18cc..11bc59ac 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/FileController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.observable.File; +import com.typedb.examples.cti.model.observable.File; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java index a1efc77c..00c8ddbb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/GroupController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.identity.Group; +import com.typedb.examples.cti.model.domain.identity.Group; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java index 7f99c17a..e130f947 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdUnknownController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.identity.IdUnknown; +import com.typedb.examples.cti.model.domain.identity.IdUnknown; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java index 2c0d786d..62e2f564 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IdentityController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java index e8f57578..c488c460 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndicatorController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.Indicator; +import com.typedb.examples.cti.model.domain.Indicator; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java index 5e20ce32..bd56c698 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/IndividualController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.identity.Individual; +import com.typedb.examples.cti.model.domain.identity.Individual; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java index f2886693..7f89fe89 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/KillChainPhaseController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.stix.ext.KillChainPhase; +import com.typedb.examples.cti.model.domain.KillChainPhase; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java index 68345ab5..d8557813 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/MalwareController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.Malware; +import com.typedb.examples.cti.model.domain.Malware; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java index f3460403..610f9853 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/SystemController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.identity.System; +import com.typedb.examples.cti.model.domain.identity.System; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java index a7927480..f8d6f08f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/entities/ThreatActorController.java @@ -5,7 +5,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.EntityDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.object.ThreatActor; +import com.typedb.examples.cti.model.domain.ThreatActor; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java index 37d76f39..21379663 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/AttributedToController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.ext.AttributedTo; +import com.typedb.examples.cti.model.relationship.ext.AttributedTo; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java index c9d24cdc..e1e68985 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/CreatedByController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.ext.CreatedBy; +import com.typedb.examples.cti.model.relationship.ext.CreatedBy; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java index 8f37a475..7462333c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ExternalReferencesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.ext.ExternalReferences; +import com.typedb.examples.cti.model.relationship.ext.ExternalReferences; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java index 0e3a15aa..bba67ec8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/HashesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.ext.Hashes; +import com.typedb.examples.cti.model.relationship.ext.Hashes; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java index 5251c578..5562c7fc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/ImpersonatesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Impersonates; +import com.typedb.examples.cti.model.relationship.Impersonates; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java index ed0ab22f..d315463f 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/IndicatesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Indicates; +import com.typedb.examples.cti.model.relationship.Indicates; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java index 3d8466a1..498ab84e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/KillChainPhasesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.ext.KillChainPhases; +import com.typedb.examples.cti.model.relationship.ext.KillChainPhases; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java index 142d8636..a1362ffc 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/SightingController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Sighting; +import com.typedb.examples.cti.model.relationship.Sighting; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java index 0fb3f17b..36df828c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/TargetsController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Targets; +import com.typedb.examples.cti.model.relationship.Targets; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java index 7b751a17..2f8a061a 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/controllers/relations/UsesController.java @@ -4,7 +4,7 @@ import com.typedb.examples.cti.configuration.AppConfiguration; import com.typedb.examples.cti.db.RelationDAO; import com.typedb.examples.cti.db.TypeDBSessionWrapper; -import com.typedb.examples.cti.model.domain.relationship.Uses; +import com.typedb.examples.cti.model.relationship.Uses; import com.vaticle.typedb.client.TypeDB; import com.vaticle.typedb.client.api.TypeDBClient; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Identity.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Identity.java index 9f892eac..c6cc7aa8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Identity.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Identity.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object; +package com.typedb.examples.cti.model.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.stix.StixDomainObject; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Indicator.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Indicator.java index 1cbd93d4..535603cf 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Indicator.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Indicator.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object; +package com.typedb.examples.cti.model.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/KillChainPhase.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/KillChainPhase.java index 468afc26..39edf9e9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/ext/KillChainPhase.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/KillChainPhase.java @@ -19,16 +19,13 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.stix.ext; +package com.typedb.examples.cti.model.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; import java.util.List; -import java.util.stream.Stream; public class KillChainPhase { @JsonIgnore diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Malware.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Malware.java index 784e5438..3547cedd 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/Malware.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/Malware.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object; +package com.typedb.examples.cti.model.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/ThreatActor.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/ThreatActor.java index eba95144..ed6b88f8 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/ThreatActor.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/ThreatActor.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object; +package com.typedb.examples.cti.model.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; +import com.typedb.examples.cti.model.stix.StixDomainObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Class.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Class.java index eaff128f..317e9a79 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Class.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Class.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.identity; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; public class Class extends Identity { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Group.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Group.java index 3c9170ae..239b10c1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Group.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Group.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.identity; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; public class Group extends Identity { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/IdUnknown.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/IdUnknown.java index ab0d1759..8360d3f9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/IdUnknown.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/IdUnknown.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.identity; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; public class IdUnknown extends Identity { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Individual.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Individual.java index 0b218bd0..64f9fb4e 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/Individual.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/Individual.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.identity; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; public class Individual extends Identity { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/System.java similarity index 89% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/System.java index debfbca3..5a573f47 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/object/identity/System.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/identity/System.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.object.identity; +package com.typedb.examples.cti.model.domain.identity; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.object.Identity; +import com.typedb.examples.cti.model.domain.Identity; public class System extends Identity { diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/observable/File.java similarity index 93% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/observable/File.java index 2f546f74..6d598e54 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/observable/File.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/observable/File.java @@ -19,11 +19,11 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.observable; +package com.typedb.examples.cti.model.observable; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixDomainObject; -import com.typedb.examples.cti.model.domain.stix.StixCyberObservableObject; +import com.typedb.examples.cti.model.stix.StixDomainObject; +import com.typedb.examples.cti.model.stix.StixCyberObservableObject; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Impersonates.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Impersonates.java index c0db30c9..2d50b30c 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Impersonates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Impersonates.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship; +package com.typedb.examples.cti.model.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Indicates.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Indicates.java index 905cb74c..ddcb7a02 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Indicates.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Indicates.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship; +package com.typedb.examples.cti.model.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Sighting.java similarity index 94% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Sighting.java index dc43fc40..a17ad6b4 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Sighting.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Sighting.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship; +package com.typedb.examples.cti.model.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.stix.StixCoreRelationship; import java.util.Arrays; import java.util.Date; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Targets.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Targets.java index d450361e..4a342cc9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Targets.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Targets.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship; +package com.typedb.examples.cti.model.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Uses.java similarity index 90% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Uses.java index d29a403c..a07c57d0 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/Uses.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/Uses.java @@ -19,10 +19,10 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship; +package com.typedb.examples.cti.model.relationship; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.typedb.examples.cti.model.domain.stix.StixCoreRelationship; +import com.typedb.examples.cti.model.stix.StixCoreRelationship; import java.util.Arrays; import java.util.List; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/AttributedTo.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/AttributedTo.java index 8f6cc52b..60974836 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/AttributedTo.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/AttributedTo.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship.ext; +package com.typedb.examples.cti.model.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/CreatedBy.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/CreatedBy.java index 0a025144..89834aeb 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/CreatedBy.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/CreatedBy.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship.ext; +package com.typedb.examples.cti.model.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/ExternalReferences.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/ExternalReferences.java index 94f9ef70..5f5d75d1 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/ExternalReferences.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/ExternalReferences.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship.ext; +package com.typedb.examples.cti.model.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/Hashes.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/Hashes.java index 2c2fdba3..a78a617d 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/Hashes.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/Hashes.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship.ext; +package com.typedb.examples.cti.model.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/KillChainPhases.java similarity index 95% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/KillChainPhases.java index 1c9322dd..93b56866 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/relationship/ext/KillChainPhases.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/relationship/ext/KillChainPhases.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.relationship.ext; +package com.typedb.examples.cti.model.relationship.ext; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreObject.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreObject.java index da90d758..7bd44573 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreObject.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.stix; +package com.typedb.examples.cti.model.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreRelationship.java similarity index 97% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreRelationship.java index 4902902c..e17ea5f9 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCoreRelationship.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCoreRelationship.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.stix; +package com.typedb.examples.cti.model.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCyberObservableObject.java similarity index 96% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCyberObservableObject.java index 710983a1..9efa1169 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixCyberObservableObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixCyberObservableObject.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.stix; +package com.typedb.examples.cti.model.stix; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixDomainObject.java similarity index 98% rename from cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java rename to cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixDomainObject.java index c4d3eecf..a2f45c29 100644 --- a/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/domain/stix/StixDomainObject.java +++ b/cybersecurity/cyber_threat_intelligence/src/main/java/com/typedb/examples/cti/model/stix/StixDomainObject.java @@ -19,7 +19,7 @@ * under the License. */ -package com.typedb.examples.cti.model.domain.stix; +package com.typedb.examples.cti.model.stix; import com.fasterxml.jackson.annotation.JsonIgnore;