All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.shiftleft.codepropertygraph.generated.nodes.Dependency.scala Maven / Gradle / Ivy

package io.shiftleft.codepropertygraph.generated.nodes

import overflowdb._
import scala.jdk.CollectionConverters._

object Dependency {
  def apply(graph: Graph, id: Long) = new Dependency(graph, id)

  val Label = "DEPENDENCY"

  object PropertyNames {
    val DependencyGroupId                = "DEPENDENCY_GROUP_ID"
    val Name                             = "NAME"
    val Version                          = "VERSION"
    val all: Set[String]                 = Set(DependencyGroupId, Name, Version)
    val allAsJava: java.util.Set[String] = all.asJava
  }

  object Properties {
    val DependencyGroupId = new overflowdb.PropertyKey[String]("DEPENDENCY_GROUP_ID")
    val Name              = new overflowdb.PropertyKey[String]("NAME")
    val Version           = new overflowdb.PropertyKey[String]("VERSION")

  }

  object PropertyDefaults {
    val Name    = ""
    val Version = ""
  }

  val layoutInformation = new NodeLayoutInformation(
    Label,
    PropertyNames.allAsJava,
    List().asJava,
    List(io.shiftleft.codepropertygraph.generated.edges.Imports.layoutInformation).asJava
  )

  object Edges {
    val Out: Array[String] = Array()
    val In: Array[String]  = Array("IMPORTS")
  }

  val factory = new NodeFactory[DependencyDb] {
    override val forLabel = Dependency.Label

    override def createNode(ref: NodeRef[DependencyDb]) =
      new DependencyDb(ref.asInstanceOf[NodeRef[NodeDb]])

    override def createNodeRef(graph: Graph, id: Long) = Dependency(graph, id)
  }
}

trait DependencyBase extends AbstractNode {
  def asStored: StoredNode = this.asInstanceOf[StoredNode]

  def dependencyGroupId: Option[String]
  def name: String
  def version: String

}

class Dependency(graph: Graph, id: Long) extends NodeRef[DependencyDb](graph, id) with DependencyBase with StoredNode {
  override def dependencyGroupId: Option[String] = get().dependencyGroupId
  override def name: String                      = get().name
  override def version: String                   = get().version
  override def propertyDefaultValue(propertyKey: String) =
    propertyKey match {
      case "NAME"    => Dependency.PropertyDefaults.Name
      case "VERSION" => Dependency.PropertyDefaults.Version
      case _         => super.propertyDefaultValue(propertyKey)
    }

  def importsIn: overflowdb.traversal.Traversal[Import] = get().importsIn
  override def _importsIn                               = get()._importsIn

  /** Traverse to IMPORT via IMPORTS IN edge.
    */
  def _importViaImportsIn: overflowdb.traversal.Traversal[Import] = get()._importViaImportsIn

  override def fromNewNode(newNode: NewNode, mapping: NewNode => StoredNode): Unit = get().fromNewNode(newNode, mapping)
  override def canEqual(that: Any): Boolean                                        = get.canEqual(that)
  override def label: String = {
    Dependency.Label
  }

  override def productElementLabel(n: Int): String =
    n match {
      case 0 => "id"
      case 1 => "dependencyGroupId"
      case 2 => "name"
      case 3 => "version"
    }

  override def productElement(n: Int): Any =
    n match {
      case 0 => id
      case 1 => dependencyGroupId
      case 2 => name
      case 3 => version
    }

  override def productPrefix = "Dependency"
  override def productArity  = 4
}

class DependencyDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with DependencyBase {

  override def layoutInformation: NodeLayoutInformation = Dependency.layoutInformation

  private var _dependencyGroupId: String = null
  def dependencyGroupId: Option[String]  = Option(_dependencyGroupId)
  private var _name: String              = Dependency.PropertyDefaults.Name
  def name: String                       = _name
  private var _version: String           = Dependency.PropertyDefaults.Version
  def version: String                    = _version

  /** faster than the default implementation */
  override def propertiesMap: java.util.Map[String, Any] = {
    val properties = new java.util.HashMap[String, Any]
    dependencyGroupId.map { value => properties.put("DEPENDENCY_GROUP_ID", value) }
    properties.put("NAME", name)
    properties.put("VERSION", version)

    properties
  }

  /** faster than the default implementation */
  override def propertiesMapForStorage: java.util.Map[String, Any] = {
    val properties = new java.util.HashMap[String, Any]
    dependencyGroupId.map { value => properties.put("DEPENDENCY_GROUP_ID", value) }
    if (!(("") == name)) { properties.put("NAME", name) }
    if (!(("") == version)) { properties.put("VERSION", version) }

    properties
  }

  def importsIn: overflowdb.traversal.Traversal[Import] =
    overflowdb.traversal.Traversal(createAdjacentNodeIteratorByOffSet[Import](0))
  override def _importsIn                                         = createAdjacentNodeIteratorByOffSet[StoredNode](0)
  def _importViaImportsIn: overflowdb.traversal.Traversal[Import] = importsIn.collectAll[Import]

  override def label: String = {
    Dependency.Label
  }

  override def productElementLabel(n: Int): String =
    n match {
      case 0 => "id"
      case 1 => "dependencyGroupId"
      case 2 => "name"
      case 3 => "version"
    }

  override def productElement(n: Int): Any =
    n match {
      case 0 => id
      case 1 => dependencyGroupId
      case 2 => name
      case 3 => version
    }

  override def productPrefix = "Dependency"
  override def productArity  = 4

  override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[DependencyDb]

  override def property(key: String): Any = {
    key match {
      case "DEPENDENCY_GROUP_ID" => this._dependencyGroupId
      case "NAME"                => this._name
      case "VERSION"             => this._version

      case _ => null
    }
  }

  override protected def updateSpecificProperty(key: String, value: Object): Unit = {
    key match {
      case "DEPENDENCY_GROUP_ID" => this._dependencyGroupId = value.asInstanceOf[String]
      case "NAME"                => this._name = value.asInstanceOf[String]
      case "VERSION"             => this._version = value.asInstanceOf[String]

      case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key)
    }
  }

  override def removeSpecificProperty(key: String): Unit =
    this.updateSpecificProperty(key, null)

  override def _initializeFromDetached(
    data: overflowdb.DetachedNodeData,
    mapper: java.util.function.Function[overflowdb.DetachedNodeData, Node]
  ) =
    fromNewNode(data.asInstanceOf[NewNode], nn => mapper.apply(nn).asInstanceOf[StoredNode])

  override def fromNewNode(newNode: NewNode, mapping: NewNode => StoredNode): Unit = {
    this._dependencyGroupId = newNode.asInstanceOf[NewDependency].dependencyGroupId.orNull
    this._name = newNode.asInstanceOf[NewDependency].name
    this._version = newNode.asInstanceOf[NewDependency].version

  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy