Skip to content

Commit

Permalink
Add support for exporting rdf:about
Browse files Browse the repository at this point in the history
    Use the about flag to format the exported element as "rdf:about".
    Add unit test to check the functionality.
  • Loading branch information
Derrick Oswald committed Sep 17, 2020
1 parent e6702fb commit deec875
Show file tree
Hide file tree
Showing 102 changed files with 35,941 additions and 45,544 deletions.
17 changes: 17 additions & 0 deletions CIMExport/src/test/scala/ch/ninecode/cim/CIMExportSuite.scala
Expand Up @@ -162,6 +162,23 @@ $voltage
assert (cleanString (facility.export) == cleanString (xml))
}

test ("About")
{
_: SparkSession =>
val xml =
""" <cim:Terminal rdf:about="KLE120953_terminal_1">
<cim:Terminal.TopologicalNode rdf:resource="#MUF129829_topo"/>
</cim:Terminal>"""

val parser = new CHIM (xml)
val result = CHIM.parse (parser)
assert (result._1.size === 1)
assert (result._2.length === 0)
val terminal = result._1 ("KLE120953_terminal_1").asInstanceOf [Terminal]
assert (terminal.about)
assert (cleanString (terminal.export) == cleanString (xml))
}

test ("Convex Hull")
{
_: SparkSession =>
Expand Down
54 changes: 21 additions & 33 deletions CIMReader/src/main/scala/ch/ninecode/model/AlternateModels.scala
Expand Up @@ -22,8 +22,8 @@ final case class AlternateModel
AlternateModelGroup: String = null,
Dataset: String = null
)
extends
Element
extends
Element
{
/**
* Return the superclass object.
Expand All @@ -49,48 +49,42 @@ final case class AlternateModel
* @groupname Row SQL Row Implementation
* @groupdesc Row Members related to implementing the SQL Row interface
*/
override def copy (): Row =
{
clone ().asInstanceOf [Row]
}
override def copy (): Row = { clone ().asInstanceOf[Row] }

override def export_fields: String =
{
implicit val s: StringBuilder = new StringBuilder (sup.export_fields)
implicit val clz: String = AlternateModel.cls

def emitattr (position: Int, value: Any): Unit = if (mask (position)) emit_attribute (AlternateModel.fields (position), value)

emitattr (0, AlternateModelGroup)
emitattr (1, Dataset)
s.toString
}

override def export: String =
{
"\t<cim:AlternateModel rdf:ID=\"%s\">\n%s\t</cim:AlternateModel>".format (id, export_fields)
"\t<cim:AlternateModel rdf:%s=\"%s\">\n%s\t</cim:AlternateModel>".format (if (about) "about" else "ID", id, export_fields)
}
}

object AlternateModel
extends
CIMParseable[AlternateModel]
extends
CIMParseable[AlternateModel]
{
override val fields: Array[String] = Array [String](
override val fields: Array[String] = Array[String] (
"AlternateModelGroup",
"Dataset"
)
override val relations: List[CIMRelationship] = List (
CIMRelationship ("AlternateModelGroup", "AlternateModelGroup", "1", "0..*"),
CIMRelationship ("Dataset", "DataSet", "1", "0..1")
)
val AlternateModelGroup: Fielder = parse_attribute (attribute (cls, fields (0)))
val Dataset: Fielder = parse_attribute (attribute (cls, fields (1)))
val AlternateModelGroup: Fielder = parse_attribute (attribute (cls, fields(0)))
val Dataset: Fielder = parse_attribute (attribute (cls, fields(1)))

def parse (context: CIMContext): AlternateModel =
{
implicit val ctx: CIMContext = context
implicit val bitfields: Array[Int] = Array (0)
implicit val bitfields: Array[Int] = Array(0)
val ret = AlternateModel (
IdentifiedObject.parse (context),
mask (AlternateModelGroup (), 0),
Expand Down Expand Up @@ -119,7 +113,7 @@ object AlternateModelSerializer extends CIMSerializer[AlternateModel]

def read (kryo: Kryo, input: Input, cls: Class[AlternateModel]): AlternateModel =
{
val parent = IdentifiedObjectSerializer.read (kryo, input, classOf [IdentifiedObject])
val parent = IdentifiedObjectSerializer.read (kryo, input, classOf[IdentifiedObject])
implicit val bitfields: Array[Int] = readBitfields (input)
val obj = AlternateModel (
parent,
Expand All @@ -140,8 +134,8 @@ final case class AlternateModelGroup
IdentifiedObject: IdentifiedObject = null,
AlternateModel: List[String] = null
)
extends
Element
extends
Element
{
/**
* Return the superclass object.
Expand All @@ -167,44 +161,38 @@ final case class AlternateModelGroup
* @groupname Row SQL Row Implementation
* @groupdesc Row Members related to implementing the SQL Row interface
*/
override def copy (): Row =
{
clone ().asInstanceOf [Row]
}
override def copy (): Row = { clone ().asInstanceOf[Row] }

override def export_fields: String =
{
implicit val s: StringBuilder = new StringBuilder (sup.export_fields)
implicit val clz: String = AlternateModelGroup.cls

def emitattrs (position: Int, value: List[String]): Unit = if (mask (position) && (null != value)) value.foreach (x => emit_attribute (AlternateModelGroup.fields (position), x))

emitattrs (0, AlternateModel)
s.toString
}

override def export: String =
{
"\t<cim:AlternateModelGroup rdf:ID=\"%s\">\n%s\t</cim:AlternateModelGroup>".format (id, export_fields)
"\t<cim:AlternateModelGroup rdf:%s=\"%s\">\n%s\t</cim:AlternateModelGroup>".format (if (about) "about" else "ID", id, export_fields)
}
}

object AlternateModelGroup
extends
CIMParseable[AlternateModelGroup]
extends
CIMParseable[AlternateModelGroup]
{
override val fields: Array[String] = Array [String](
override val fields: Array[String] = Array[String] (
"AlternateModel"
)
override val relations: List[CIMRelationship] = List (
CIMRelationship ("AlternateModel", "AlternateModel", "0..*", "1")
)
val AlternateModel: FielderMultiple = parse_attributes (attribute (cls, fields (0)))
val AlternateModel: FielderMultiple = parse_attributes (attribute (cls, fields(0)))

def parse (context: CIMContext): AlternateModelGroup =
{
implicit val ctx: CIMContext = context
implicit val bitfields: Array[Int] = Array (0)
implicit val bitfields: Array[Int] = Array(0)
val ret = AlternateModelGroup (
IdentifiedObject.parse (context),
masks (AlternateModel (), 0)
Expand All @@ -231,7 +219,7 @@ object AlternateModelGroupSerializer extends CIMSerializer[AlternateModelGroup]

def read (kryo: Kryo, input: Input, cls: Class[AlternateModelGroup]): AlternateModelGroup =
{
val parent = IdentifiedObjectSerializer.read (kryo, input, classOf [IdentifiedObject])
val parent = IdentifiedObjectSerializer.read (kryo, input, classOf[IdentifiedObject])
implicit val bitfields: Array[Int] = readBitfields (input)
val obj = AlternateModelGroup (
parent,
Expand Down

0 comments on commit deec875

Please sign in to comment.