diff --git a/.project b/.project new file mode 100644 index 0000000..c624c98 --- /dev/null +++ b/.project @@ -0,0 +1,28 @@ + + + labProg5 + Project labProg5 created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + + + 1771499677127 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..3c15a43 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments=--init-script /home/foxen/.cache/nvim/jdtls/labProg5/config/org.eclipse.osgi/58/0/.cp/gradle/init/init.gradle +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home=/usr/lib/jvm/java-25-openjdk +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/app/.classpath b/app/.classpath new file mode 100644 index 0000000..38427be --- /dev/null +++ b/app/.classpath @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/.project b/app/.project new file mode 100644 index 0000000..3bf07e3 --- /dev/null +++ b/app/.project @@ -0,0 +1,34 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1771499677125 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/app/.settings/org.eclipse.buildship.core.prefs b/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..b1886ad --- /dev/null +++ b/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/app/.settings/org.eclipse.jdt.core.prefs b/app/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..e9186c3 --- /dev/null +++ b/app/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.source=21 diff --git a/app/src/main/kotlin/lab5/Main.kt b/app/src/main/kotlin/lab5/Main.kt deleted file mode 100644 index 071a95a..0000000 --- a/app/src/main/kotlin/lab5/Main.kt +++ /dev/null @@ -1,5 +0,0 @@ -package lab5 - -fun main(args: Array) { - println("Hello World!") -} diff --git a/app/src/main/kotlin/lab5/model/Coordinates.kt b/app/src/main/kotlin/lab5/model/Coordinates.kt new file mode 100644 index 0000000..2761521 --- /dev/null +++ b/app/src/main/kotlin/lab5/model/Coordinates.kt @@ -0,0 +1,10 @@ +package lab5.model + +data class Coordinates( + val x: Long, // не может быть null + val y: Float, // максимальное значение 519, не может быть null +) { + init { + require(y <= 519) { "y должен быть меньше 519" } + } +} diff --git a/app/src/main/kotlin/lab5/model/Organization.kt b/app/src/main/kotlin/lab5/model/Organization.kt new file mode 100644 index 0000000..770bccd --- /dev/null +++ b/app/src/main/kotlin/lab5/model/Organization.kt @@ -0,0 +1,15 @@ +package lab5.model + +data class Organization( + val id: Long, + val name: String, + val fullName: String, + val employeesCount: Long, +) { + init { + require(id > 0) { "id должен быть уникальным" } + require(name.isNotBlank()) { "name не может быть пустым" } + require(fullName.length() <= 532 && fullName.isNotBlank()) { "fullName не должна быть больше 532 и строка не может быть пустой" } + require(employeesCount > 0) { "employeesCount должно быть больше 0" } + } +} diff --git a/app/src/main/kotlin/lab5/model/Product.kt b/app/src/main/kotlin/lab5/model/Product.kt new file mode 100644 index 0000000..2c4df0d --- /dev/null +++ b/app/src/main/kotlin/lab5/model/Product.kt @@ -0,0 +1,15 @@ +package lab5.model + +import java.time.ZonedDateTime + +data class Product( + val id: Long, + val name: String, + val coordinates: Coordinates, + val creationDate: java.time.ZonedDateTime, + val price: Long, + val unitOfMeasure: UnitOfMeasure?, // Поле может быть null + val manufacturer: Organization, +) : Comparable { + override fun compareTo(other: Product): Int = this.price.compareTo(other.price) +} diff --git a/app/src/main/kotlin/lab5/model/UnitOfMeasure.kt b/app/src/main/kotlin/lab5/model/UnitOfMeasure.kt new file mode 100644 index 0000000..9179a1f --- /dev/null +++ b/app/src/main/kotlin/lab5/model/UnitOfMeasure.kt @@ -0,0 +1,8 @@ +package lab5.model + +enum class UnitOfMeasure { + KILOGRAMS, + SQUARE_METERS, + LITERS, + MILLILITERS, +}