An API Library that provides the functionality to access, manage and store device topologies found in JSON files using Java and Maven Framework

Overview

Topology API

Task 2

📙 About

An API library which provides the functionality to access, manage and store device topologies.

📝 Description

  1. Read a topology from a given JSON file and store it in the memory.
  2. Write a given topology from the memory to a JSON file.
  3. Query about which topologies are currently in the memory.
  4. Delete a given topology from memory.
  5. Query about which devices are in a given topology.
  6. Query about which devices are connected to a given netlist node in a given topology.

Class Structure

Class Structure

Hierarchy

Class Hierarchy

🏁 Getting Started

Classes

Main

  • This class creates an object from the API class which is used to call each functionality
  • It contains the main loop of the API which allows the user to select which operation to perform

API

This class contains the memory of the API as a HashMap and an addToMemory function to store in it.

  • This class contains the functions of the API :-

    • boolean readJSON(String fileName)
    • boolean writeJSON(String topologyID)
    • Set getTopologies()
    • boolean deleteTopology(String topologyID)
    • List queryDevices(String topologyID)
    • List queryDevicesWithNetlistNode(String topologyID, String node)
  • Each functionality is validated completely in case a topology/node not found for example, etc...

Topology

  • Each topology consists of components and the JSON format of the topology, with a unique ID and all nodes between each component in the topology

Nodes

  • The Topology class creates an object from class Nodes in order to set its nodes and add to it any component in the topology

Component

  • Each component contains the ID and type of the component as well as the device details and the NetList

Device

  • This class contains the device details including it's name, default value , min and max

Resistor

  • The resistor inherits from class device and overrides function print() to add resistance as its type

Transistor

  • The transistor inherits from class device and has an extra variable (type) to indicate whether it's an nmos or a pmos transistor and overrides the print function as well

Testing

  • This class tests each function of class API

Dependencies

  • Java
  • Maven Framework Support
  • json.simple

Documentation

  • Found in the index.html file inside the documentation folder

💻 Installing

git clone https://github.com/abdelrahman0123/Topology-API 

📷 Screenshots

Query Topologies

1

Read JSON file & Query Topologies

2

Write JSON

3

Delete a topology & Query Topologies

4

Query devices in a topology

5

Query devices with netlist node

6

Exit

7

Testing

8

Contributors

Abdelrahman Hamdy
Abdelrahman Hamdy

License

This project is licensed under the [MIT] License - see the LICENSE.md file for details

You might also like...

This is simple project to show how to create a basic API using Java 11 + Maven + Spring Boot + PostgrSQL + Flyway.

This is simple project to show how to create a basic API using Java 11 + Maven + Spring Boot + PostgrSQL + Flyway.

Dec 10, 2022

This is a Maven plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncApi and OpenAPI.

SCS MultiApi Maven Plugin This is a Maven plugin designed to help developers automatizing the creation of code classes from YML files based on AsyncAp

Dec 20, 2022

Maven plugin to check if dependencies in CycloneDX BOM files use only allowed licenses.

license-checker-cyclonedx-maven-plugin Maven plugin to check if dependencies in CycloneDX BOM files use only allowed licenses. Quick start guide 1. Ad

Sep 17, 2022

Get device location by telephony (SIM card) or settings without using GPS tracker.

Get device location by telephony (SIM card) or settings without using GPS tracker.

react-native-device-country Get device location by telephony (SIM card) or settings without using GPS tracker Installation yarn add react-native-devic

Nov 29, 2022

Spring-boot project using open-api, docker, maven, REST

library-service spring-boot project using open-api, docker, maven, REST I used docker to run the project, as well as open-api to generate basic GET an

Nov 27, 2022

This plugin adds cfn-nag linting support to CloudFormation yaml and json files.

cfn-nag-intellij-plugin This plugin adds cfn-nag linting support to CloudFormation yaml and json files. Cfn-nag must be installed separately. Installa

Jun 23, 2022

An experimental mod that converts some block entities to blockstates. This is done for performance & functionality reasons.

An experimental mod that converts some block entities to blockstates. This is done for performance & functionality reasons.

BetterBlockStates An experimental mod that converts some block entities to blockstates. This is done for performance & functionality reasons. Current

Sep 17, 2022

Customize your device even more by having two separate sets of wallpapers for light and dark mode.

Customize your device even more by having two separate sets of wallpapers for light and dark mode.

DualWallpaper You can help me out with translations here. Customize your device even more by having two separate sets of wallpapers for light and dark

Dec 25, 2022

On-device wake word detection powered by deep learning.

On-device wake word detection powered by deep learning.

Porcupine Made in Vancouver, Canada by Picovoice Porcupine is a highly-accurate and lightweight wake word engine. It enables building always-listening

Jan 7, 2023
Owner
Abdelrahman Hamdy
2nd Year Computer Engineering student at Cairo University.
Abdelrahman Hamdy
JSON Web Token implementation for Java according to RFC 7519. Easily create, parse and validate JSON Web Tokens using a fluent API.

JWT-Java JSON Web Token library for Java according to RFC 7519. Table of Contents What are JSON Web Tokens? Header Payload Signature Features Supporte

Bastiaan Jansen 6 Jul 10, 2022
Presti 5 Nov 19, 2022
Provides some Apple Wallet functionality, like adding passes, removing passes and checking passises for existing.

react-native-wallet-manager Provides some Apple Wallet's functionality, like adding passes, removing passes and checking passises for existing. Instal

dev.family 50 Nov 12, 2022
Get or Throw Spring boot Starter will help you to hide handling if entity not found.

Get or Throw Spring boot Starter Get or Throw Spring boot Starter will help you to hide handling if entity not found. 1. Setup 2. Usage Library adds c

null 3 Feb 2, 2022
A generic proxy server for applying access-control policies for a FHIR-store.

FHIR Access Proxy This is a simple access-control proxy that sits in front of a FHIR store (e.g., a HAPI FHIR server, GCP FHIR store, etc.) and contro

Google 17 Jan 5, 2023
OpenAPI JSON Schema Generator allows auto-generation of API client libraries with a focus on JSON schema given an OpenAPI Spec

OpenAPI JSON Schema Generator IMPORTANT: before the first release, one will need to build the project locally to use the enhancements, bug fixes in th

OpenAPI Tools 5 Dec 31, 2022
Using this library, and writing a few lines of code, you can manage your own domain objects in ZooKeeper

Using this library, and writing a few lines of code, you can manage your own domain objects in ZooKeeper. It provides CRUD operations and change notifications out of the box.

Sahab 4 Oct 26, 2022
The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types.

Apache Commons CSV The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types. Documentation More i

The Apache Software Foundation 307 Dec 26, 2022
Blazed Café is a library for BlazeOS that enables and improves Java functionality for the IgniteBook platform.

By: Seanpm2001, Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af Afrikaans Afrikaans |

Sean P. Myrick V19.1.7.2 2 Sep 5, 2022
Deploy this 🔥🔥🔥 BLAZING FAST 🔥🔥🔥 API to get instant access to ✨✨✨ INNOVATIVE ✨✨✨ API to quickly define whether the numbers are odd or even.

Is Odd API This ?? is ?? ?? a ?? simple API that ?? returns ?? whether ?? ?? a ?? number ?? ?? is ?? ?? odd ?? or ?? not. ♂ With ?? ?? this ?? ?? API

rferee 5 Sep 23, 2022