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,
+}