Skip to content

Commit

Permalink
refactor: replace Array to List
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Feb 16, 2023
1 parent 63a2822 commit 344cc24
Show file tree
Hide file tree
Showing 17 changed files with 71 additions and 437 deletions.
1 change: 0 additions & 1 deletion .idea/.name

This file was deleted.

20 changes: 1 addition & 19 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeAnnotation.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ data class AnnotationKeyValue(var Key: String = "", var Value: String = "")
@Serializable
data class CodeAnnotation(
var Name: String = "",
var KeyValues: Array<AnnotationKeyValue> = arrayOf()
var KeyValues: List<AnnotationKeyValue> = listOf()
) {
@Deprecated("is for Java/Kotlin Only", ReplaceWith("this.Name == \"Component\" || this.Name == \"Repository\""))
fun isComponentOrRepository(): Boolean {
Expand All @@ -33,22 +33,4 @@ data class CodeAnnotation(
fun isOverride(): Boolean {
return this.Name == "Override"
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeAnnotation

if (Name != other.Name) return false
if (!KeyValues.contentEquals(other.KeyValues)) return false

return true
}

override fun hashCode(): Int {
var result = Name.hashCode()
result = 31 * result + KeyValues.contentHashCode()
return result
}
}
32 changes: 2 additions & 30 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeCall.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ data class CodeCall(
// for Function, it's empty
var NodeName: String = "",
var FunctionName: String = "",
var Parameters: Array<CodeProperty> = arrayOf(),
var Parameters: List<CodeProperty> = listOf(),
var Position: CodePosition = CodePosition(),
// like "v1.Group", the v1 will be the Receiver
// since 2.0.0-Beta.9
var OriginNodeName: String = "",
var OriginNodeName: String = "",
) {

fun buildClassFullName(): String {
Expand Down Expand Up @@ -71,32 +71,4 @@ data class CodeCall(
return false
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeCall

if (Package != other.Package) return false
if (Type != other.Type) return false
if (NodeName != other.NodeName) return false
if (FunctionName != other.FunctionName) return false
if (!Parameters.contentEquals(other.Parameters)) return false
if (Position != other.Position) return false
if (OriginNodeName != other.OriginNodeName) return false

return true
}

override fun hashCode(): Int {
var result = Package.hashCode()
result = 31 * result + Type.hashCode()
result = 31 * result + NodeName.hashCode()
result = 31 * result + FunctionName.hashCode()
result = 31 * result + Parameters.contentHashCode()
result = 31 * result + Position.hashCode()
result = 31 * result + OriginNodeName.hashCode()
return result
}

}
41 changes: 6 additions & 35 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeContainer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,9 @@ import kotlinx.serialization.Serializable
data class CodeContainer(
var FullName: String = "",
var PackageName: String = "",
var Imports: Array<CodeImport> = arrayOf(),
var Members: Array<CodeMember> = arrayOf(),
var DataStructures: Array<CodeDataStruct> = arrayOf(),
var Fields: Array<CodeField> = arrayOf(),
var Containers: Array<CodeContainer> = arrayOf()
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeContainer

if (FullName != other.FullName) return false
if (PackageName != other.PackageName) return false
if (!Imports.contentEquals(other.Imports)) return false
if (!Members.contentEquals(other.Members)) return false
if (!DataStructures.contentEquals(other.DataStructures)) return false
if (!Fields.contentEquals(other.Fields)) return false
if (!Containers.contentEquals(other.Containers)) return false

return true
}

override fun hashCode(): Int {
var result = FullName.hashCode()
result = 31 * result + PackageName.hashCode()
result = 31 * result + Imports.contentHashCode()
result = 31 * result + Members.contentHashCode()
result = 31 * result + DataStructures.contentHashCode()
result = 31 * result + Fields.contentHashCode()
result = 31 * result + Containers.contentHashCode()
return result
}
}

var Imports: List<CodeImport> = listOf(),
var Members: List<CodeMember> = listOf(),
var DataStructures: List<CodeDataStruct> = listOf(),
var Fields: List<CodeField> = listOf(),
var Containers: List<CodeContainer> = listOf()
)
73 changes: 12 additions & 61 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeDataStruct.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package chapi.domain.core

import chapi.domain.core.CodeCall
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
Expand Down Expand Up @@ -30,23 +31,23 @@ data class CodeDataStruct(
var Package: String = "",
var FilePath: String = "",
// todo: thinking in change to property
var Fields: Array<CodeField> = arrayOf(),
var MultipleExtend: Array<String> = arrayOf(),
var Implements: Array<String> = arrayOf(),
var Fields: List<CodeField> = listOf(),
var MultipleExtend: List<String> = listOf(),
var Implements: List<String> = listOf(),
var Extend: String = "",
var Functions: Array<CodeFunction> = arrayOf(),
var InnerStructures: Array<CodeDataStruct> = arrayOf(),
var Annotations: Array<CodeAnnotation> = arrayOf(),
var FunctionCalls: Array<CodeCall> = arrayOf(),
var Functions: List<CodeFunction> = listOf(),
var InnerStructures: List<CodeDataStruct> = listOf(),
var Annotations: List<CodeAnnotation> = listOf(),
var FunctionCalls: List<CodeCall> = listOf(),

@Deprecated(message = "looking for constructor method for SCALA")
var Parameters: Array<CodeProperty> = arrayOf(), // for Scala
var Parameters: List<CodeProperty> = listOf(), // for Scala

var Imports: Array<CodeImport> = arrayOf(),
var Imports: List<CodeImport> = listOf(),

// in TypeScript, a files can export Function, Variable, Class, Interface
// `export const baseURL = '/api'`
var Exports: Array<CodeExport> = arrayOf(),
var Exports: List<CodeExport> = listOf(),

// todo: select node useonly imports
var Extension: JsonElement = JsonObject(HashMap()),
Expand All @@ -59,7 +60,7 @@ data class CodeDataStruct(
}

fun setMethodsFromMap(methodMap: MutableMap<String, CodeFunction>) {
this.Functions = methodMap.values.toTypedArray()
this.Functions = methodMap.values.toList()
}

fun filterAnnotations(vararg keys: String): List<CodeAnnotation> {
Expand All @@ -80,55 +81,5 @@ data class CodeDataStruct(
fun fileWithoutSuffix(): String {
return FilePath.substringBeforeLast('.', "")
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeDataStruct

if (NodeName != other.NodeName) return false
if (Module != other.Module) return false
if (Type != other.Type) return false
if (Package != other.Package) return false
if (FilePath != other.FilePath) return false
if (!Fields.contentEquals(other.Fields)) return false
if (!MultipleExtend.contentEquals(other.MultipleExtend)) return false
if (!Implements.contentEquals(other.Implements)) return false
if (Extend != other.Extend) return false
if (!Functions.contentEquals(other.Functions)) return false
if (!InnerStructures.contentEquals(other.InnerStructures)) return false
if (!Annotations.contentEquals(other.Annotations)) return false
if (!FunctionCalls.contentEquals(other.FunctionCalls)) return false
if (!Parameters.contentEquals(other.Parameters)) return false
if (!Imports.contentEquals(other.Imports)) return false
if (!Exports.contentEquals(other.Exports)) return false
if (Extension != other.Extension) return false
if (Position != other.Position) return false

return true
}

override fun hashCode(): Int {
var result = NodeName.hashCode()
result = 31 * result + Module.hashCode()
result = 31 * result + Type.hashCode()
result = 31 * result + Package.hashCode()
result = 31 * result + FilePath.hashCode()
result = 31 * result + Fields.contentHashCode()
result = 31 * result + MultipleExtend.contentHashCode()
result = 31 * result + Implements.contentHashCode()
result = 31 * result + Extend.hashCode()
result = 31 * result + Functions.contentHashCode()
result = 31 * result + InnerStructures.contentHashCode()
result = 31 * result + Annotations.contentHashCode()
result = 31 * result + FunctionCalls.contentHashCode()
result = 31 * result + Parameters.contentHashCode()
result = 31 * result + Imports.contentHashCode()
result = 31 * result + Exports.contentHashCode()
result = 31 * result + Extension.hashCode()
result = 31 * result + Position.hashCode()
return result
}
}

35 changes: 5 additions & 30 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeField.kt
Original file line number Diff line number Diff line change
@@ -1,40 +1,15 @@
package chapi.domain.core

import chapi.domain.core.CodeCall
import kotlinx.serialization.Serializable

@Serializable
data class CodeField(
var TypeType: String = "",
var TypeValue: String = "",
var TypeKey: String = "",
var Annotations: Array<CodeAnnotation> = arrayOf(),
var Modifiers: Array<String> = arrayOf(),
var Annotations: List<CodeAnnotation> = listOf(),
var Modifiers: List<String> = listOf(),
// for TypeScript and JavaScript only, examples: `export default sample = createHello() `
var Calls: Array<CodeCall> = arrayOf()
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeField

if (TypeType != other.TypeType) return false
if (TypeValue != other.TypeValue) return false
if (TypeKey != other.TypeKey) return false
if (!Annotations.contentEquals(other.Annotations)) return false
if (!Modifiers.contentEquals(other.Modifiers)) return false
if (!Calls.contentEquals(other.Calls)) return false

return true
}

override fun hashCode(): Int {
var result = TypeType.hashCode()
result = 31 * result + TypeValue.hashCode()
result = 31 * result + TypeKey.hashCode()
result = 31 * result + Annotations.contentHashCode()
result = 31 * result + Modifiers.contentHashCode()
result = 31 * result + Calls.contentHashCode()
return result
}
}
var Calls: List<CodeCall> = listOf()
)
77 changes: 11 additions & 66 deletions chapi-domain/src/main/kotlin/chapi/domain/core/CodeFunction.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package chapi.domain.core

import chapi.domain.expr.Expression
import chapi.domain.core.CodeCall
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
Expand All @@ -19,19 +19,19 @@ data class CodeFunction(
var FilePath: String = "",
var Package: String = "",
var ReturnType: String = "",
var MultipleReturns: Array<CodeProperty> = arrayOf(),
var Parameters: Array<CodeProperty> = arrayOf(),
var FunctionCalls: Array<CodeCall> = arrayOf(),
var Annotations: Array<CodeAnnotation> = arrayOf(),
var MultipleReturns: List<CodeProperty> = listOf(),
var Parameters: List<CodeProperty> = listOf(),
var FunctionCalls: List<CodeCall> = listOf(),
var Annotations: List<CodeAnnotation> = listOf(),
var Override: Boolean = false,
var Modifiers: Array<String> = arrayOf(),
var Modifiers: List<String> = listOf(),
// for example, Java can have Inner Class
var InnerStructures: Array<CodeDataStruct> = arrayOf(),
var InnerStructures: List<CodeDataStruct> = listOf(),
// for lambda or anonymous function inside function.
var InnerFunctions: Array<CodeFunction> = arrayOf(),
var InnerFunctions: List<CodeFunction> = listOf(),
var Position: CodePosition = CodePosition(),
var Extension: JsonElement = JsonObject(HashMap()),
var LocalVariables: Array<CodeProperty> = arrayOf(),
var LocalVariables: List<CodeProperty> = listOf(),
var IsConstructor: Boolean = false, // todo: move to extension
var IsReturnHtml: Boolean = false,
var BodyHash: Int = 0,
Expand Down Expand Up @@ -66,11 +66,10 @@ data class CodeFunction(
return "${node.Package}.${node.NodeName}.${this.Name}"
}

fun getAllCallString(): Array<String> {
fun getAllCallString(): List<String> {
return FunctionCalls
.filter { it.NodeName != "" }
.map { it.buildClassFullName() }
.toTypedArray()
}

fun isJUnitTest(): Boolean {
Expand Down Expand Up @@ -100,7 +99,7 @@ data class CodeFunction(
fun addVarsFromMap(localVars: MutableMap<String, String>) {
this.LocalVariables = localVars.map { entry ->
CodeProperty(TypeValue = entry.key, TypeType = entry.value)
}.toTypedArray()
}
}

fun fileExt(): String {
Expand All @@ -110,58 +109,4 @@ data class CodeFunction(
fun fileName(): String {
return this.FilePath.substringBeforeLast('.', "")
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as CodeFunction

if (Name != other.Name) return false
if (FilePath != other.FilePath) return false
if (Package != other.Package) return false
if (ReturnType != other.ReturnType) return false
if (!MultipleReturns.contentEquals(other.MultipleReturns)) return false
if (!Parameters.contentEquals(other.Parameters)) return false
if (!FunctionCalls.contentEquals(other.FunctionCalls)) return false
if (!Annotations.contentEquals(other.Annotations)) return false
if (Override != other.Override) return false
if (!Modifiers.contentEquals(other.Modifiers)) return false
if (!InnerStructures.contentEquals(other.InnerStructures)) return false
if (!InnerFunctions.contentEquals(other.InnerFunctions)) return false
if (Position != other.Position) return false
if (Extension != other.Extension) return false
if (!LocalVariables.contentEquals(other.LocalVariables)) return false
if (IsConstructor != other.IsConstructor) return false
if (IsReturnHtml != other.IsReturnHtml) return false
if (BodyHash != other.BodyHash) return false
if (Type != other.Type) return false
if (extensionMap != other.extensionMap) return false

return true
}

override fun hashCode(): Int {
var result = Name.hashCode()
result = 31 * result + FilePath.hashCode()
result = 31 * result + Package.hashCode()
result = 31 * result + ReturnType.hashCode()
result = 31 * result + MultipleReturns.contentHashCode()
result = 31 * result + Parameters.contentHashCode()
result = 31 * result + FunctionCalls.contentHashCode()
result = 31 * result + Annotations.contentHashCode()
result = 31 * result + Override.hashCode()
result = 31 * result + Modifiers.contentHashCode()
result = 31 * result + InnerStructures.contentHashCode()
result = 31 * result + InnerFunctions.contentHashCode()
result = 31 * result + Position.hashCode()
result = 31 * result + Extension.hashCode()
result = 31 * result + LocalVariables.contentHashCode()
result = 31 * result + IsConstructor.hashCode()
result = 31 * result + IsReturnHtml.hashCode()
result = 31 * result + BodyHash
result = 31 * result + Type.hashCode()
result = 31 * result + extensionMap.hashCode()
return result
}
}
Loading

0 comments on commit 344cc24

Please sign in to comment.