From 27259a12e08a68db89435b33960e2bbf058306f6 Mon Sep 17 00:00:00 2001 From: Tinsae Date: Fri, 12 Dec 2025 22:48:54 +0100 Subject: [PATCH] excercise 2 done --- .vscode/settings.json | 3 +- week1_TinsaeGhilay/.gitignore | 15 ++ week1_TinsaeGhilay/.zed/debug.json | 18 ++ week1_TinsaeGhilay/.zed/tasks.json | 0 week1_TinsaeGhilay/Greeter.class | Bin 0 -> 1259 bytes week1_TinsaeGhilay/Main.class | Bin 0 -> 517 bytes week1_TinsaeGhilay/Main.java | 62 +++++++ week1_TinsaeGhilay/Task1/Hello.idl | 8 + week1_TinsaeGhilay/Task1/HelloApp/Hello.class | Bin 0 -> 200 bytes week1_TinsaeGhilay/Task1/HelloApp/Hello.java | 13 ++ .../Task1/HelloApp/HelloHelper.class | Bin 0 -> 2439 bytes .../Task1/HelloApp/HelloHelper.java | 85 +++++++++ .../Task1/HelloApp/HelloHolder.class | Bin 0 -> 868 bytes .../Task1/HelloApp/HelloHolder.java | 38 ++++ .../Task1/HelloApp/HelloOperations.class | Bin 0 -> 187 bytes .../Task1/HelloApp/HelloOperations.java | 15 ++ .../Task1/HelloApp/HelloPOA.class | Bin 0 -> 2187 bytes .../Task1/HelloApp/HelloPOA.java | 80 +++++++++ .../Task1/HelloApp/_HelloStub.class | Bin 0 -> 2899 bytes .../Task1/HelloApp/_HelloStub.java | 88 +++++++++ week1_TinsaeGhilay/Task1/HelloClient.class | Bin 0 -> 1551 bytes week1_TinsaeGhilay/Task1/HelloClient.java | 38 ++++ week1_TinsaeGhilay/Task1/HelloImpl.class | Bin 0 -> 522 bytes week1_TinsaeGhilay/Task1/HelloServer.class | Bin 0 -> 2122 bytes week1_TinsaeGhilay/Task1/HelloServer.java | 73 ++++++++ week1_TinsaeGhilay/Task2/Graph.class | Bin 0 -> 1170 bytes week1_TinsaeGhilay/Task2/Graphics.idl | 53 ++++++ .../Task2/GraphicsApp/GraphicalObject.class | Bin 0 -> 233 bytes .../Task2/GraphicsApp/GraphicalObject.java | 15 ++ .../GraphicsApp/GraphicalObjectHelper.class | Bin 0 -> 2576 bytes .../GraphicsApp/GraphicalObjectHelper.java | 87 +++++++++ .../GraphicsApp/GraphicalObjectHolder.class | Bin 0 -> 956 bytes .../GraphicsApp/GraphicalObjectHolder.java | 40 +++++ .../GraphicalObjectOperations.class | Bin 0 -> 257 bytes .../GraphicalObjectOperations.java | 24 +++ .../GraphicsApp/GraphicalObjectPOA.class | Bin 0 -> 2715 bytes .../Task2/GraphicsApp/GraphicalObjectPOA.java | 120 +++++++++++++ .../GraphicsApp/ObjectSequenceHelper.class | Bin 0 -> 2337 bytes .../GraphicsApp/ObjectSequenceHelper.java | 62 +++++++ .../GraphicsApp/ObjectSequenceHolder.class | Bin 0 -> 957 bytes .../GraphicsApp/ObjectSequenceHolder.java | 39 ++++ .../Task2/GraphicsApp/Rectangle.class | Bin 0 -> 218 bytes .../Task2/GraphicsApp/Rectangle.java | 15 ++ .../Task2/GraphicsApp/RectangleHelper.class | Bin 0 -> 2510 bytes .../Task2/GraphicsApp/RectangleHelper.java | 87 +++++++++ .../Task2/GraphicsApp/RectangleHolder.class | Bin 0 -> 914 bytes .../Task2/GraphicsApp/RectangleHolder.java | 40 +++++ .../GraphicsApp/RectangleOperations.class | Bin 0 -> 397 bytes .../GraphicsApp/RectangleOperations.java | 27 +++ .../Task2/GraphicsApp/RectanglePOA.class | Bin 0 -> 3181 bytes .../Task2/GraphicsApp/RectanglePOA.java | 114 ++++++++++++ .../RectanglePackage/IndexOutOfBounds.class | Bin 0 -> 579 bytes .../RectanglePackage/IndexOutOfBounds.java | 25 +++ .../IndexOutOfBoundsHelper.class | Bin 0 -> 2364 bytes .../IndexOutOfBoundsHelper.java | 72 ++++++++ .../IndexOutOfBoundsHolder.java | 38 ++++ .../Task2/GraphicsApp/Shape.class | Bin 0 -> 206 bytes .../Task2/GraphicsApp/Shape.java | 13 ++ .../Task2/GraphicsApp/ShapeHelper.class | Bin 0 -> 2466 bytes .../Task2/GraphicsApp/ShapeHelper.java | 85 +++++++++ .../Task2/GraphicsApp/ShapeHolder.class | Bin 0 -> 886 bytes .../Task2/GraphicsApp/ShapeHolder.java | 38 ++++ .../Task2/GraphicsApp/ShapeOperations.class | Bin 0 -> 163 bytes .../Task2/GraphicsApp/ShapeOperations.java | 19 ++ .../Task2/GraphicsApp/ShapePOA.class | Bin 0 -> 2109 bytes .../Task2/GraphicsApp/ShapePOA.java | 82 +++++++++ .../GraphicsApp/_GraphicalObjectStub.class | Bin 0 -> 3938 bytes .../GraphicsApp/_GraphicalObjectStub.java | 157 ++++++++++++++++ .../Task2/GraphicsApp/_RectangleStub.class | Bin 0 -> 4443 bytes .../Task2/GraphicsApp/_RectangleStub.java | 140 +++++++++++++++ .../Task2/GraphicsApp/_ShapeStub.class | Bin 0 -> 2868 bytes .../Task2/GraphicsApp/_ShapeStub.java | 91 ++++++++++ week1_TinsaeGhilay/Task2/GraphicsClient.class | Bin 0 -> 2292 bytes week1_TinsaeGhilay/Task2/GraphicsClient.java | 98 ++++++++++ week1_TinsaeGhilay/Task2/GraphicsServer.class | Bin 0 -> 2146 bytes week1_TinsaeGhilay/Task2/GraphicsServer.java | 105 +++++++++++ week1_TinsaeGhilay/Task2/Rect.class | Bin 0 -> 1308 bytes week1_TinsaeGhilay/app/.gitignore | 1 + week1_TinsaeGhilay/app/build.gradle | 37 ++++ week1_TinsaeGhilay/app/libs/.gitkeep | 0 week1_TinsaeGhilay/app/proguard-rules.pro | 21 +++ .../com/tgk/test/ExampleInstrumentedTest.java | 26 +++ .../app/src/main/AndroidManifest.xml | 13 ++ .../app/src/main/java/com/tgk/test/.gitkeep | 0 .../main/java/com/tgk/test/MainActivity.kt | 0 .../drawable-v24/ic_launcher_foreground.xml | 30 ++++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 2521 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 5180 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1620 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 3186 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1882 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3508 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 5313 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 10720 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 6998 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 14167 bytes .../app/src/main/res/values-night/themes.xml | 16 ++ .../app/src/main/res/values/colors.xml | 10 ++ .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/themes.xml | 16 ++ .../java/com/tgk/test/ExampleUnitTest.java | 17 ++ week1_TinsaeGhilay/build.gradle | 17 ++ week1_TinsaeGhilay/gradle.properties | 19 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + week1_TinsaeGhilay/gradlew.bat | 89 +++++++++ week1_TinsaeGhilay/myGrade.txt | 4 + week1_TinsaeGhilay/settings.gradle | 10 ++ week1_TinsaeGhilay/solutions.txt | 4 + week2_TinsaeGhilay.zip | Bin 0 -> 45874 bytes week2_TinsaeGhilay/Task5/.gitignore | 39 ++++ week2_TinsaeGhilay/Task5/.idea/.gitignore | 8 + week2_TinsaeGhilay/Task5/.idea/encodings.xml | 7 + week2_TinsaeGhilay/Task5/.idea/misc.xml | 14 ++ week2_TinsaeGhilay/Task5/.idea/vcs.xml | 6 + week2_TinsaeGhilay/Task5/pom.xml | 24 +++ .../main/java/org/distributed/Consumer.java | 48 +++++ .../main/java/org/distributed/Producer.java | 28 +++ .../src/main/java/org/distributed/Tag.java | 27 +++ week2_TinsaeGhilay/solutions.txt | 5 + 123 files changed, 2946 insertions(+), 1 deletion(-) create mode 100644 week1_TinsaeGhilay/.gitignore create mode 100644 week1_TinsaeGhilay/.zed/debug.json create mode 100644 week1_TinsaeGhilay/.zed/tasks.json create mode 100644 week1_TinsaeGhilay/Greeter.class create mode 100644 week1_TinsaeGhilay/Main.class create mode 100644 week1_TinsaeGhilay/Main.java create mode 100644 week1_TinsaeGhilay/Task1/Hello.idl create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/Hello.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/Hello.java create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloHelper.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloHelper.java create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloHolder.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloHolder.java create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloOperations.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloOperations.java create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.java create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/_HelloStub.class create mode 100644 week1_TinsaeGhilay/Task1/HelloApp/_HelloStub.java create mode 100644 week1_TinsaeGhilay/Task1/HelloClient.class create mode 100644 week1_TinsaeGhilay/Task1/HelloClient.java create mode 100644 week1_TinsaeGhilay/Task1/HelloImpl.class create mode 100644 week1_TinsaeGhilay/Task1/HelloServer.class create mode 100644 week1_TinsaeGhilay/Task1/HelloServer.java create mode 100644 week1_TinsaeGhilay/Task2/Graph.class create mode 100644 week1_TinsaeGhilay/Task2/Graphics.idl create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHelper.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHelper.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHolder.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHolder.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectPOA.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectPOA.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHelper.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHelper.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/Rectangle.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/Rectangle.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHelper.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHelper.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHolder.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHolder.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePOA.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePOA.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBounds.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBounds.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHolder.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/Shape.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/Shape.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_RectangleStub.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_RectangleStub.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_ShapeStub.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsApp/_ShapeStub.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsClient.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsClient.java create mode 100644 week1_TinsaeGhilay/Task2/GraphicsServer.class create mode 100644 week1_TinsaeGhilay/Task2/GraphicsServer.java create mode 100644 week1_TinsaeGhilay/Task2/Rect.class create mode 100644 week1_TinsaeGhilay/app/.gitignore create mode 100644 week1_TinsaeGhilay/app/build.gradle create mode 100644 week1_TinsaeGhilay/app/libs/.gitkeep create mode 100644 week1_TinsaeGhilay/app/proguard-rules.pro create mode 100644 week1_TinsaeGhilay/app/src/androidTest/java/com/tgk/test/ExampleInstrumentedTest.java create mode 100644 week1_TinsaeGhilay/app/src/main/AndroidManifest.xml create mode 100644 week1_TinsaeGhilay/app/src/main/java/com/tgk/test/.gitkeep create mode 100644 week1_TinsaeGhilay/app/src/main/java/com/tgk/test/MainActivity.kt create mode 100644 week1_TinsaeGhilay/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 week1_TinsaeGhilay/app/src/main/res/values-night/themes.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/values/colors.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/values/strings.xml create mode 100644 week1_TinsaeGhilay/app/src/main/res/values/themes.xml create mode 100644 week1_TinsaeGhilay/app/src/test/java/com/tgk/test/ExampleUnitTest.java create mode 100644 week1_TinsaeGhilay/build.gradle create mode 100644 week1_TinsaeGhilay/gradle.properties create mode 100644 week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.jar create mode 100644 week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.properties create mode 100644 week1_TinsaeGhilay/gradlew.bat create mode 100644 week1_TinsaeGhilay/myGrade.txt create mode 100644 week1_TinsaeGhilay/settings.gradle create mode 100644 week1_TinsaeGhilay/solutions.txt create mode 100644 week2_TinsaeGhilay.zip create mode 100644 week2_TinsaeGhilay/Task5/.gitignore create mode 100644 week2_TinsaeGhilay/Task5/.idea/.gitignore create mode 100644 week2_TinsaeGhilay/Task5/.idea/encodings.xml create mode 100644 week2_TinsaeGhilay/Task5/.idea/misc.xml create mode 100644 week2_TinsaeGhilay/Task5/.idea/vcs.xml create mode 100644 week2_TinsaeGhilay/Task5/pom.xml create mode 100644 week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Consumer.java create mode 100644 week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Producer.java create mode 100644 week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Tag.java create mode 100644 week2_TinsaeGhilay/solutions.txt diff --git a/.vscode/settings.json b/.vscode/settings.json index 7b016a8..d53ecaf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "java.compile.nullAnalysis.mode": "automatic" + "java.compile.nullAnalysis.mode": "automatic", + "java.configuration.updateBuildConfiguration": "automatic" } \ No newline at end of file diff --git a/week1_TinsaeGhilay/.gitignore b/week1_TinsaeGhilay/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/week1_TinsaeGhilay/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/week1_TinsaeGhilay/.zed/debug.json b/week1_TinsaeGhilay/.zed/debug.json new file mode 100644 index 0000000..e61eb78 --- /dev/null +++ b/week1_TinsaeGhilay/.zed/debug.json @@ -0,0 +1,18 @@ +// Project-local debug tasks +// +// For more documentation on how to configure debug tasks, +// see: https://zed.dev/docs/debugger +[ + { + "adapter": "Java", + "request": "launch", + "label": "Launch Debugger", + // if your project has multiple entry points, specify the one to use: + // "mainClass": "com.myorganization.myproject.MyMainClass", + // + // this effectively sets a breakpoint at your program entry: + "stopOnEntry": true, + // the working directory for the debug process + "cwd": "$ZED_WORKTREE_ROOT" + } +] diff --git a/week1_TinsaeGhilay/.zed/tasks.json b/week1_TinsaeGhilay/.zed/tasks.json new file mode 100644 index 0000000..e69de29 diff --git a/week1_TinsaeGhilay/Greeter.class b/week1_TinsaeGhilay/Greeter.class new file mode 100644 index 0000000000000000000000000000000000000000..71e0ffa33ffb350cc445a70e4b925eb6ae2726e8 GIT binary patch literal 1259 zcma)5+foxj5IqwvyIEJjB`B95iwJ}TLA;9y2qK^aPy|Zf7BUrA$!==1sQiYHzWC@X zS`wgbE( z0{S%!7|@VX=Aw>4^}S@^GOp;js=n8BTvw4d4BW(!I=*FK7`HWyDEFw2F%5S#j0#m<2Sd2o?&)yQK9`<}M8WCtn9X;+@7O0#EGEAj; zyyq#Rc-r;+ex=<+3v3fjXckDUJaeP&g1yN|d;gB3CfadMpl#(@U}pk#X1{X%$c_TL z;BMLxQ@9@0aM#2n?g^avwIJqqV!U*7s?lyfFa3+mbQkm zfQ3rbBaQ^UZN%HlTjrU{yW}`l#SSW&=vY-;%zi}m7idp*pgW%sD))cPZ|glwCNx;5sY7g$rU}!W>jY`lg&j%(FWE#1Nt{OyIx&WBj&_Q# nppTIbXTKLq=tl=56R6rnQp5RObci3&$2D~7MD5~P4Bfv0VW}7| literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Main.class b/week1_TinsaeGhilay/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..7aa9b928219f7e8231e62e1cf149ec96d67fcedf GIT binary patch literal 517 zcmZut%TB^T6g|VMrB=Zr;0rB^1T}$;JB%9>bb*fqVq#ns7_r!POldWImM$RC#1HVJ zjCat4kT{v#J9FmTd(WA#@ApptM<{F1kV#?%Srs`Ad8{f}Q?afgjtv<$6%-U~F(i&{ z&kjx)qLuv{hS;g-afVdW_V{J!cDUcRIu0Q**Rnl^T;;Agu%4}&V|o2rEAVZvUzdei zON4%xH*85xUJ$t|c{&!LE7;ayqR3D_=Z+)H7vVd-s@Z<9hbC>y>~U9^;@&*-IS;t6 zU`NL;N({;$!k{+7?xQ&pp=?>wu?L-0$w3V1nWU@EfOmsAs5Ke}+$D!1q=)RUep}S8 zNqj&SxaHOvGSeROFwK9GB!^~XEB_mh_oZeOk)%JDD*`4>Q(UB5fij~UKbU~M(t%-# zVqywLsVIdsoh7x7C=~H7XjS*gh-j0_T}YWxdQixNvR^Ye-s8AS4n()IIm z)AgPGgPa`UIuuZa3-XIf5|eUL^*vpDT=PmYODfqI85kLu7?^>Og@G05Y6c*m4M;LE Gumb=&S2Fql literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task1/HelloApp/Hello.java b/week1_TinsaeGhilay/Task1/HelloApp/Hello.java new file mode 100644 index 0000000..5dc4d79 --- /dev/null +++ b/week1_TinsaeGhilay/Task1/HelloApp/Hello.java @@ -0,0 +1,13 @@ +package HelloApp; + + +/** +* HelloApp/Hello.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Hello.idl +* Sunday, November 9, 2025 2:43:24 PM CET +*/ + +public interface Hello extends HelloOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity +{ +} // interface Hello diff --git a/week1_TinsaeGhilay/Task1/HelloApp/HelloHelper.class b/week1_TinsaeGhilay/Task1/HelloApp/HelloHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..4dbdb7568016f2139c513afb89c9c1711b8da3aa GIT binary patch literal 2439 zcmai0X;T|V5Pc&gEv%ONFkrCF5iALe>>L;a1`DtQwm1xg#Llr<#99^zNm;Gz_JqFg8qVyTJCvWok7Ah(}4VnuFN^9;{1z#z6BG90x_XRo<2gVB{mNBxa*tTt@v#D7DRoCrTd2=bZ zZwmA#a#kvqJ4(ftHntYyu^sn@dcnDLHf_(-S2(gO;6F8JO{BBtdhuw_w04ZW3|$1% z*@9`=0%Kv1vv~H^Y+}XCWODI*KIRCs(v@QVXj?{-CLh%^iFj=YE+ZD`4@W!@Rq-}& z+eY$m&B(iP`6L5fw5Y>@-!cu}PI=+;Im?!>imhhzMVpkF#?fq@cmgl2w9SB~FLba` zv@0IG50WGVvxa5mUJ8W0J~s9a%%oipwyl^=J~xwx=DvPr-8h%bxOq~yb44p@K1j=~ zv^jKh$(z=sWI)3RMio5O@HM{CFpdeie5>JOe4^kx4LZKpU|>(fP2AEjgkc3q4f`-P zOd=)_a9nD5hLnb@xF*o)oXF(rjRXI2>znbd_?o~_?M*o`r{t_2QJD)7Lc_|>m&=nHuap7OugXLgTVE3WmpNXI_(0Ny}2#dt1N+$TFAOiNU|G5T9#xv zhOvudsIFbMyDWA6g^?+;Di*x)lrgJ~F6uEEvxg=Q4R)t2K!NUaA@P=jr1AjUw4NDB zQ@4`>^WpQ2dH&=-`hEBU_NrbY5OQ9Bmg7h@=2FHe6xe08ZrtV*(3}?6&rJKg%(;q^ zldgI$*e`mzpc|5xI`4Wa(5$CSTi-V`W{O3|ayZ9dIXla)64`9l3pG}w-oVZqMRxr| z{295zpC}(x*}9Ze+2PKY$QT8OF?WOf3Vs98w-CQl;8^DxbPhvk!gYixOV#^m;2%w* zCHU5&Cuk_aKQVqn+ldl_&R(gw=s|$W?OZ#cp_5V<2GC8H5ky^=*Z7s_jda;~f~I52 z)dBQTmxIgIjyv!`?`xfOT`kbp(`abFhqvIuXRwz;F2hlwfBgpV3Wp{PJZ_?abrW4YQDH-crv^3+Y#G=V z(67B9l>+VlnGAyPB#PW@aV*ey>(Bh;oj}b#`XW$24aY2O_5GRrluk!7zVJo?Gplx$ zRpt6Hmfl$4(C&xv#0{qt_jK_2{fQfeaiT!?<19*(^Mqy7V?{KEUt>R^puG?oq)D04 zhsn2yNY_599CN|E>X?I==V2OO$`8Kkww;Z476xM(Kfm&>Jq!0>S!lvEuw!8tdlsHy z-@*ab1Uh9~a*isBbOUcTaR;L-d6@|8EEqGNFt@6zCWA=Ev^KZu^}@MJR#n}m*M)I! z77CP%s|sX)SNVt+yetL;miP!|2``e)6&+%{&z%E}E5LMqLO9|U+7IpomKm2(V{D<$ z>L%J5*DAP|(xkku4T?va{598{Db!>T~Gd`OXJxWVt=YhsoP0(G5e-eBti-ZJ{hY+Sbp7CxqRhN> zYmkbJ(vpW(y3`{_0F)%Q(04-r)VPF8#tPE^G5k>}fkT?Se073ID A(*OVf literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task1/HelloApp/HelloOperations.java b/week1_TinsaeGhilay/Task1/HelloApp/HelloOperations.java new file mode 100644 index 0000000..802b39d --- /dev/null +++ b/week1_TinsaeGhilay/Task1/HelloApp/HelloOperations.java @@ -0,0 +1,15 @@ +package HelloApp; + + +/** +* HelloApp/HelloOperations.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Hello.idl +* Sunday, November 9, 2025 2:43:24 PM CET +*/ + +public interface HelloOperations +{ + String sayHello (); + void shutdown (); +} // interface HelloOperations diff --git a/week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.class b/week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.class new file mode 100644 index 0000000000000000000000000000000000000000..52af8b29f5f3a7475405faf9fbd8075688eddf79 GIT binary patch literal 2187 zcmah~?NZxD6g`V&%LswPR~iyRAc4e&1}6>8hoNbVF~!ATf+>khQ&pIaG02ifmSK2+ zK1+V|PfKP@Tc&OPb*2x|H)*GLW#bPFQ^sg_@7}$8?z!hmfBpOG?*L|CDHz5~CvMvGZn*c71bsGw(cS@B~Af3{uS6;S7Of-sG$0!Zx=zL>LBH z%bN$*KFz)lw#P|Yb}noca^YBNeLfm4TDE(8IAIpc4&BA|!t7-}>%3I7%o1PH%^ic= zv!TlzQ)QGw|bUS-j9OyfNM2eX>K2IJG_>P z&Th?zF670lIlFl}-4_fcm$+eA(PA;|PKdOLM#yTylr`aQ^YhPTjT*g5+A7;wzL*ze zcDtT*{j?~ViaQuraSNj=Ht~v~*Da)5rvxRE<2J*MR)*)J3tDO|z8>93q(~UARb=qB z2(+c*8@y4mjBjOVD!zkG)Tr1-R>i8gXAHMVb1HVgRlG$`#;%Gy_QYbJWO9LuNM|Me z$OSF#FjN#^3gd3s*|833dZhumDlLYqiG^gOm6FKA=?9cvtC4767&%MtT!}=bbkkwD z)_N#aG2=HbB;U{O%>0pX)q^t}Jz`!`FGyIAXX*(JndJ%o*WT5AD3ewUYZ%p*K-8do>gS zuQzL0CV_2*S?5x9TTZiFx~bxA*VjD3Kn`X^LE>N6;kF^AnR- zenxM@yT=U`r`<)OP>j=rrFtqv^az4FC#O!(cfqk`+D_8Pei?o|te5Q#S;XJ7Q}ky} zFz_B7RFb~IQ%D)l39eS~(JNuNCJa)|ApM4+jHmB<`aQZErS2n4KriWIfJ!t-B+L@F KPsrARNB;qm)eczz literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.java b/week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.java new file mode 100644 index 0000000..c3a5120 --- /dev/null +++ b/week1_TinsaeGhilay/Task1/HelloApp/HelloPOA.java @@ -0,0 +1,80 @@ +package HelloApp; + + +/** +* HelloApp/HelloPOA.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Hello.idl +* Sunday, November 9, 2025 2:43:24 PM CET +*/ + +public abstract class HelloPOA extends org.omg.PortableServer.Servant + implements HelloApp.HelloOperations, org.omg.CORBA.portable.InvokeHandler +{ + + // Constructors + + private static java.util.Hashtable _methods = new java.util.Hashtable (); + static + { + _methods.put ("sayHello", new java.lang.Integer (0)); + _methods.put ("shutdown", new java.lang.Integer (1)); + } + + public org.omg.CORBA.portable.OutputStream _invoke (String $method, + org.omg.CORBA.portable.InputStream in, + org.omg.CORBA.portable.ResponseHandler $rh) + { + org.omg.CORBA.portable.OutputStream out = null; + java.lang.Integer __method = (java.lang.Integer)_methods.get ($method); + if (__method == null) + throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE); + + switch (__method.intValue ()) + { + case 0: // HelloApp/Hello/sayHello + { + String $result = null; + $result = this.sayHello (); + out = $rh.createReply(); + out.write_string ($result); + break; + } + + case 1: // HelloApp/Hello/shutdown + { + this.shutdown (); + out = $rh.createReply(); + break; + } + + default: + throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE); + } + + return out; + } // _invoke + + // Type-specific CORBA::Object operations + private static String[] __ids = { + "IDL:HelloApp/Hello:1.0"}; + + public String[] _all_interfaces (org.omg.PortableServer.POA poa, byte[] objectId) + { + return (String[])__ids.clone (); + } + + public Hello _this() + { + return HelloHelper.narrow( + super._this_object()); + } + + public Hello _this(org.omg.CORBA.ORB orb) + { + return HelloHelper.narrow( + super._this_object(orb)); + } + + +} // class HelloPOA diff --git a/week1_TinsaeGhilay/Task1/HelloApp/_HelloStub.class b/week1_TinsaeGhilay/Task1/HelloApp/_HelloStub.class new file mode 100644 index 0000000000000000000000000000000000000000..71e85ced306d22ccc0bfe831081ca1722d0edd36 GIT binary patch literal 2899 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 literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task1/HelloClient.java b/week1_TinsaeGhilay/Task1/HelloClient.java new file mode 100644 index 0000000..2c981a4 --- /dev/null +++ b/week1_TinsaeGhilay/Task1/HelloClient.java @@ -0,0 +1,38 @@ +// Copyright and License + +import HelloApp.*; +import org.omg.CORBA.*; +import org.omg.CosNaming.*; + +public class HelloClient { + + static Hello helloImpl; + + public static void main(String args[]) { + try { + // create and initialize the ORB + ORB orb = ORB.init(args, null); + + // get the root naming context + org.omg.CORBA.Object objRef = orb.resolve_initial_references( + "NameService" + ); + // Use NamingContextExt instead of NamingContext. This is + // part of the Interoperable naming Service. + NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); + + // resolve the Object Reference in Naming + String name = "Hello"; + helloImpl = HelloHelper.narrow(ncRef.resolve_str(name)); + + System.out.println( + "Obtained a handle on server object: " + helloImpl + ); + System.out.println(helloImpl.sayHello()); + helloImpl.shutdown(); + } catch (Exception e) { + System.out.println("ERROR : " + e); + e.printStackTrace(System.out); + } + } +} diff --git a/week1_TinsaeGhilay/Task1/HelloImpl.class b/week1_TinsaeGhilay/Task1/HelloImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..5d21a8cd813ab6505713c6e0ae5f9c9577eddbaa GIT binary patch literal 522 zcmZutO-sW-5Ph4p`D(PER@+)=1tG0qF5VQO7DS;~vC@OL)P@*Ivn5Si{8tKofCqno zKT4dBpLlk+ ze{s~YDeN;S2Y%?sha|FELxxnBk6ngr&kxZs@+NI5I=JA*>Lk45O=h3x$>#-A(Wy+ONq%4s#9i^)9n|q2LcQxMI|9K6j!iHQAoGQLK409&J(0>t&y-~Qe# z0^WJ4FW_~1k%C>z2k?cwbNTNHGy#ImTG@N%pKpKv`QLy4`{!Q(Ch@a@A&eWCKwL*c z?H?HU5VyMV5hlCwF{U(pVnA0I9n(sD+dvX29Ww?##jK9cx^V|{YMBoqjk`KB2JYd$ zB3sb#KnWjecw}G@<2tfxUsTJIT9yqAU`5C08gd%)3|%vpZOK`NU~FWKp(E`S1w&8P zvc*!ZvMIb(zF8(oM}=E9!$533yT!M8qRj15A}>A5E~V7Lb9u=N&lb7s@@mp5CssVi6`r(2H8qkwMU!Ha9%zY8>DQJ+q|T-y%+mGxVhD+xKX>D^!Mc!2v(oey_DJOFCew*}F zsXDnWH>A@HC&P3Tf5JNzDZ-yl(NS#s{1TaS-Gu*e6wg?b@vt-+2S&2T@#JLe$jP)* zr3Rw1Pc*i)V@t6sGrRJLb>>Xgw{wuD>u*OSKnfb~U!%ERR-mMcS#jjx8uu zlm}02T6U2kMLp0~XA8UuXtdB_oMTlG(&|A8CXm$>vAgG3w&U#{Z{iQlQ?ssa$Qj%y14F1^0+t**eOOElp7v4(!Kc$oaT ziC*&L3P$N|3^By%UQb{ew~(S+{0^pYAGh&{F7q{#aJtMbl2+*IcIn1`j=T5;8T^U` Y{Dy~g9u%9vKX5gSL`m%^2?7}V523v^h5!Hn literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task1/HelloServer.java b/week1_TinsaeGhilay/Task1/HelloServer.java new file mode 100644 index 0000000..4566888 --- /dev/null +++ b/week1_TinsaeGhilay/Task1/HelloServer.java @@ -0,0 +1,73 @@ +// HelloServer.java +import HelloApp.*; +import org.omg.CosNaming.*; +import org.omg.CORBA.*; +import org.omg.PortableServer.*; +import org.omg.PortableServer.POA; + + +class HelloImpl extends HelloPOA { + private ORB orb; + + public void setORB(ORB orb_val) { + orb = orb_val; + } + + // implement sayHello() method + public String sayHello() { + return "\nHello world !!\n"; + } + + // implement shutdown() method + public void shutdown() { + orb.shutdown(false); + } +} + + +public class HelloServer { + + public static void main(String args[]) { + try{ + // create and initialize the ORB + ORB orb = ORB.init(args, null); + + // get reference to rootpoa and activate the POAManager + POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); + rootpoa.the_POAManager().activate(); + + // create servant and register it with the ORB + HelloImpl helloImpl = new HelloImpl(); + helloImpl.setORB(orb); + + // get object reference from the servant + org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl); + Hello href = HelloHelper.narrow(ref); + + // get the root naming context + org.omg.CORBA.Object objRef = + orb.resolve_initial_references("NameService"); + // Use NamingContextExt which is part of the Interoperable + // Naming Service (INS) specification. + NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); + + // bind the Object Reference in Naming + String name = "Hello"; + NameComponent path[] = ncRef.to_name( name ); + ncRef.rebind(path, href); + + System.out.println("HelloServer ready and waiting ..."); + + // wait for invocations from clients + orb.run(); + } + + catch (Exception e) { + System.err.println("ERROR: " + e); + e.printStackTrace(System.out); + } + + System.out.println("HelloServer Exiting ..."); + + } +} diff --git a/week1_TinsaeGhilay/Task2/Graph.class b/week1_TinsaeGhilay/Task2/Graph.class new file mode 100644 index 0000000000000000000000000000000000000000..db45f0e87fe121ce1a848539327f1eebc8807258 GIT binary patch literal 1170 zcmZuvYflqV5IuKGciXxGwgr@zD=4((u?qO$AzJVe69PnxiF`3zx|Ai`-DbO$_@Dfs zMoOZIKfoVlJa=2hBLQ{aab3GCAa(`1JgaI8q&E(&PnPLgUd7xA1IMc@ z3&i}OB#_zggNo@_E9Uyv+qI%e!#8!s@tkl~pg-4Hx|@Gb`~Y*0F+d4NrBf;+a4;>Ssvi#>}d*$vrO_YjJ~IE0#TSchEfef06A3^GCiT{tN1d6KLr~6Uo94D0EGvnz(iu#$dZUEW7<5 z=4Bfue-1`JgGpa+onuXOUky2d93}~AM8I+tBfLpwaZ-tW;i0tvH40AC8W^LMsb@nE gU07CY=s6BO&&&+Q+xh3Am9Lke7nyXIF$MSj0lwMbNdN!< literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/Graphics.idl b/week1_TinsaeGhilay/Task2/Graphics.idl new file mode 100644 index 0000000..3a848fb --- /dev/null +++ b/week1_TinsaeGhilay/Task2/Graphics.idl @@ -0,0 +1,53 @@ +// task 2. + + + +// module +module GraphicsApp +{ + // forward declaration of shape. + // because we use it in rectangle + interface GraphicalObject; + + typedef sequence ObjectSequence; + + // rectangle contains shapes which GraphicalObjects a + interface Rectangle + { + + // exception to be thrown if index out of range + exception IndexOutOfBounds {}; + + // hopping this will be an array of Graphical-objects. + attribute ObjectSequence objects; + + // function to add object + void addObject(in GraphicalObject newShape); + + // and may be remove an object from a position? + void removeObjectAtPosition(in unsigned long index) + raises (IndexOutOfBounds); + }; + + interface Shape + { + // draw to be overriden in java + void draw(); + + // and info + void showInfo(); + }; + + // GraphicalShape object extends Shape + interface GraphicalObject : Shape + { + // unqualified member + attribute boolean is_filled; + + // we cannot set this, so only getter will be implemented. + // only time a shape can change is if it's in the matrix or if Dr.Strange is in town. + readonly attribute string name; + }; + + +}; diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.class b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.class new file mode 100644 index 0000000000000000000000000000000000000000..b6ea11493e254de83d3ef01c3e7794797a58c363 GIT binary patch literal 233 zcmX^0Z`VEs1_l!bUUmi!b_Py%1}=66ZgvJ9Mh33n{L-T2RJY8WR7M67_oBptjLhW3 z9RH-O)Z`Mqti-ZJMh0o9aIs@Sfj*iNMg{?pBK@4iymWntE=C4bJR1B9Qi~ExGV}9_ z85snT)dgoH769F#kYALppP!qq@9ZDsEh#>SCUy$$;QaQ$iT$F U41_EUtUzxu0Qqb{l8J#G084g2`v3p{ literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.java b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.java new file mode 100644 index 0000000..69b75fe --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObject.java @@ -0,0 +1,15 @@ +package GraphicsApp; + + +/** +* GraphicsApp/GraphicalObject.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// GraphicalShape object extends Shape +public interface GraphicalObject extends GraphicalObjectOperations, GraphicsApp.Shape, org.omg.CORBA.portable.IDLEntity +{ +} // interface GraphicalObject diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHelper.class b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..bb2ca9ed92f0661328f533cee1f1c70f4973e1e5 GIT binary patch literal 2576 zcmai0`%@ZM6#gy(i^~!f@eyD36$5A`kD4~3rU)i6foR3rCVgzzb%U!2bXk(-_x=;@ zUtyCOVw;&he#%V$s7}vaR~`$JVdn0=d(Zj4bH01-S^oX+k3Ru?0#n2UmPN#|B4Qk? ze744C_e6Y-1YfT6fo9`KcGHj&v4Q)1`M`&Ve6h)2KN9d*L>d{s^MpHZ3E1}I3+xEU ziWtPQfL#&8_)SXiq99` zs~5_eVKUqfJHQf!SMl@%Ln$5VYB^CV#q7C~-`YRYR5Q+T1??x(P*n22)y_ZC5rD$t zxiE}`BM$P0OafU`QI9i9$&T2?wF!|&8+F`lZ_Q4I}EdCWnaLd1RX~bUAQF)$H+5`HaazMz3NoXHsqRw+CeaQWW6jaT$eU^J!1&SIn9(0w7iz1BBOF>(XVzoDcgwD49Mjs zuUThctxl0W_Y{54Cg@w~g2=Bs%|zZGtS2#J77W*DHBL`PPfzqM*l#ppn4{5ay$qlm z*Ab>UH{C!N{m3O+g)0+1Lsu2g5_a~(O_?t69=94F|wzw++gn_ zdvA2UivGGJBH{4AFCHwBJ#|&v{%3m6m0gX#hlia;|3T;%(&TT1PDy6zcMQ1jEBx;; z`1CD?{-TZHDz2vAp_kSpnFV4QU8rXtrLzX^!i{B8AdUc55X36g!y2iRAPLrS2T9sV zS;~0O<@NVdM0aWt!Y^Ya&gSJ>B~;XxG@Jk-&^whTKm>}q(V;jxCM zfO_Hhi7T+%`w%(dnK$}+6oz)TcKrVE+#SV-0+rX^%!}U$l+1%K0_AQnCROWsGxu{c z9lFt}GxWLBGz*0!s}3U984K*2y&#&{!E|DG`^RsO>@bL8sbYVcg-Lu8^VsxI5|zPa z(8rVbIz%y(JvM<{;mDvtWFND69YCfc#{%aMAs>oCT?c}RjV^cDTnF{ zn}2X B*LMH_ literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHolder.java b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHolder.java new file mode 100644 index 0000000..691e4df --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectHolder.java @@ -0,0 +1,40 @@ +package GraphicsApp; + +/** +* GraphicsApp/GraphicalObjectHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// GraphicalShape object extends Shape +public final class GraphicalObjectHolder implements org.omg.CORBA.portable.Streamable +{ + public GraphicsApp.GraphicalObject value = null; + + public GraphicalObjectHolder () + { + } + + public GraphicalObjectHolder (GraphicsApp.GraphicalObject initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = GraphicsApp.GraphicalObjectHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + GraphicsApp.GraphicalObjectHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return GraphicsApp.GraphicalObjectHelper.type (); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.class b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.class new file mode 100644 index 0000000000000000000000000000000000000000..c7b93a5b891abdc7dc85f57f6badc1f384133cd6 GIT binary patch literal 257 zcmZ`!s}90I5S*nzc?W?b!I89v8XO7(hNPki0z-~+wAUQh%eC-v2tI(1A{>td3}Sc0 z&SU3xzgz)K(R0yu(Q(lwG)1vJ2r2oV;CTLqQ1v$c+Ja(7P8fLpDr09BNT!k?DveOd zjL?emlZp94NXr>54b!QJnGAOskIPVV!%C5>V)B#{#vej4*E;x1CiK5aZzsa=R~n^E g^RIiIK&aSpY%Qm1e?|>>Vf}?J8unsK+Fe2G0Z#itga7~l literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.java b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.java new file mode 100644 index 0000000..426c3cd --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectOperations.java @@ -0,0 +1,24 @@ +package GraphicsApp; + + +/** +* GraphicsApp/GraphicalObjectOperations.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// GraphicalShape object extends Shape +public interface GraphicalObjectOperations extends GraphicsApp.ShapeOperations +{ + + // unqualified member + boolean is_filled (); + + // unqualified member + void is_filled (boolean newIs_filled); + + // only time a shape can change is if it's in the matrix or if Dr.Strange is in town. + String name (); +} // interface GraphicalObjectOperations diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectPOA.class b/week1_TinsaeGhilay/Task2/GraphicsApp/GraphicalObjectPOA.class new file mode 100644 index 0000000000000000000000000000000000000000..ef9c06d63959a874b762245c38a2bf0577a71019 GIT binary patch literal 2715 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 TSyNUeEYL+|Ws>F{Hw*s)aTz}r literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHelper.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHelper.java new file mode 100644 index 0000000..d0b252f --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHelper.java @@ -0,0 +1,62 @@ +package GraphicsApp; + + +/** +* GraphicsApp/ObjectSequenceHelper.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +abstract public class ObjectSequenceHelper +{ + private static String _id = "IDL:GraphicsApp/ObjectSequence:1.0"; + + public static void insert (org.omg.CORBA.Any a, GraphicsApp.GraphicalObject[] that) + { + org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); + a.type (type ()); + write (out, that); + a.read_value (out.create_input_stream (), type ()); + } + + public static GraphicsApp.GraphicalObject[] extract (org.omg.CORBA.Any a) + { + return read (a.create_input_stream ()); + } + + private static org.omg.CORBA.TypeCode __typeCode = null; + synchronized public static org.omg.CORBA.TypeCode type () + { + if (__typeCode == null) + { + __typeCode = GraphicsApp.GraphicalObjectHelper.type (); + __typeCode = org.omg.CORBA.ORB.init ().create_sequence_tc (0, __typeCode); + __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (GraphicsApp.ObjectSequenceHelper.id (), "ObjectSequence", __typeCode); + } + return __typeCode; + } + + public static String id () + { + return _id; + } + + public static GraphicsApp.GraphicalObject[] read (org.omg.CORBA.portable.InputStream istream) + { + GraphicsApp.GraphicalObject value[] = null; + int _len0 = istream.read_long (); + value = new GraphicsApp.GraphicalObject[_len0]; + for (int _o1 = 0;_o1 < value.length; ++_o1) + value[_o1] = GraphicsApp.GraphicalObjectHelper.read (istream); + return value; + } + + public static void write (org.omg.CORBA.portable.OutputStream ostream, GraphicsApp.GraphicalObject[] value) + { + ostream.write_long (value.length); + for (int _i0 = 0;_i0 < value.length; ++_i0) + GraphicsApp.GraphicalObjectHelper.write (ostream, value[_i0]); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.class b/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..b9f4659230b606f1d097abfcbda054d518d1f623 GIT binary patch literal 957 zcmaKqZ%@-u6vm(1t*fh*4P+n#VJJxH5*s7$FeZpWO%|6h!W&*J-F7ody0%_gh~G*R zh>I`y0DLIpxov}#xV`APe|mqB`oQvV_Ak38J=rc)v%_a z!Ju9^Ud$O*Pg{4kC>5gi-tN}|-g z6mCTF=0v0&M|no=M&Cn1>gM)?YmR7N=1*nmogfx{e&EX7m(prG{9DZZKK~qe11?^l zITwzB$1n_(p=($-@B%LlY+%#CE7TYo_pSS%218Y<*q-AL?eqXSHKF#j?9|O^%G?XN zpiZP-ew=7b&dce|q1I$RA54_X`8-`Nc_^|8ctfvH1H&Wwn6!~zs7f<(mEsdxSx{&O z=+-YVi(NzcNh^jKiZdustfELK%a~2LO2)kswc{I%6gfQIXunoyhEDS6_hcG|58nnH9{J6cpkM3S)oyuR~$qAL1S82 ODcRegxIlXf7XJdY5!d1X literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.java new file mode 100644 index 0000000..9885fbe --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ObjectSequenceHolder.java @@ -0,0 +1,39 @@ +package GraphicsApp; + + +/** +* GraphicsApp/ObjectSequenceHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public final class ObjectSequenceHolder implements org.omg.CORBA.portable.Streamable +{ + public GraphicsApp.GraphicalObject value[] = null; + + public ObjectSequenceHolder () + { + } + + public ObjectSequenceHolder (GraphicsApp.GraphicalObject[] initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = GraphicsApp.ObjectSequenceHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + GraphicsApp.ObjectSequenceHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return GraphicsApp.ObjectSequenceHelper.type (); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/Rectangle.class b/week1_TinsaeGhilay/Task2/GraphicsApp/Rectangle.class new file mode 100644 index 0000000000000000000000000000000000000000..2230c9562477d6dee0196fea9c1988303b91ef25 GIT binary patch literal 218 zcmZusNeaR+0Gw29v@Uqiv%bJw{6Jk1ghG8mT0%{UO-Q5Q*F5+DA0@_1L6Cug*$(r1 zKb`=V7*cd8dK3{wpJG4|o%Ge_Vkea#7^Nb2yegDfl>EjCrhCiHS>|+CNmCgX8QP)nf|Cw?+W3!>3C+ftG)N0v*+Hu@<0Fn{s(}MVab@pqKqV#WK3XL z%vQwgu8hx+63bOF&};&0y)>-LxQF{<`M`&VVzD7!Ka%iRMj9Eh^F%mrO4#z_b8Jh< z${50;gdG_p_(DcdKnAhv!Gg__8#g+LcF4}VWE2c*g<{P`cNyGg4t;5(pg*Y`@9E}_x|gRA zUZYUfO^f0BTuZQ2;Z-vIz*I{IhE`6MN{MYftXTCxU5+P|@fK9mEWTt&w1(Q;J0uM+AQ7w-v;$o`()X3~AigCn@1#=B z7AvNv-#0|!!nJff)bl0XToBT5Ok+mEGmfwE4aYpFh~e{(^jh;&h};Uo-x`}F5Ijy7Vh<<)YTE@X2U=bkcfyD2E=u9sUg z=@<%4!kt1ecod_os6v+x=X%BvP;$DZ?CW_wM@2^E(57FlBGw%vQZt~Go4jUPiM2aL zcimI;HJYR^oeQ$K)-;nv2e6-nj2SRorPTyI89hC*w_v~0gkhFOul+KBUR=W*&4uYb z^w5u7VpX^@u~YO^;f~Lrl5e~Uuf3M)A%@@~;{h7O;2132&E8|B`JvMaP&X^sBf| zJ3U}w0;kUBgd4Y^0rzY4wF1Y;lDej28KJO(rW^|es{%OGYM&r`>bnj0F0%K==BpT} zOCnPo@#n*XTVzi?)Up4G-V0@yWAEW%C$YZ~{+TrS3*i%zng51C7k+{N9fqF1#qgiB zF;d0l^g9G;J(`IV%2>R9`WWRJxC1v9Nr5B+SV9QPR1YhpPKqR0#ciz7&bqCP2R&Z@ z05Q5m&{Sblg$D*68rU+h zEuf#fej)`Lz4wtDo_eD%2Vv+O$x-aiCcfMksJ!%MUi@01)Y<(kP(BRCJYVa1Gx;f* z4rO%W4t-`eIt3Dn(g%@r#{xT@UJy;3U^;OQ`$umNoG^%D#XBEoVG%@Sy1-wp)2GM28Wrf=dfvVk|qm)C< zRJqBnH+i^@yEl=p{SDe2<$tYa$TpD{53jOrRz(S@@yc`PSA1uKRnlCWah*90jlTyz B$1(r_ literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHolder.java b/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHolder.java new file mode 100644 index 0000000..6d10172 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleHolder.java @@ -0,0 +1,40 @@ +package GraphicsApp; + +/** +* GraphicsApp/RectangleHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// rectangle contains shapes which GraphicalObjects a +public final class RectangleHolder implements org.omg.CORBA.portable.Streamable +{ + public GraphicsApp.Rectangle value = null; + + public RectangleHolder () + { + } + + public RectangleHolder (GraphicsApp.Rectangle initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = GraphicsApp.RectangleHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + GraphicsApp.RectangleHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return GraphicsApp.RectangleHelper.type (); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.class b/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.class new file mode 100644 index 0000000000000000000000000000000000000000..371821806609c8bd83096cbc7771d8f78968c1c9 GIT binary patch literal 397 zcmaKoKTpFj5XIk>P}B0SEQk%*(gCutF%=0=C8Sg!u`nIZQBp!|#YxrA#=r;QLm})G zB!;Sk_1@XPce?Y}_s1uI3mhoyDeM!Jd7g=`9pNM%KHc3`Y+rNjM%E_3o{O|aE(xdc zdSduU=y8@U1EJ;Gh5QOirYSSm kB@jCPJAo)7Y#{O`=w_>3s8+Yo^IShrUbp?(@xFuIAMpNd+5i9m literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.java b/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.java new file mode 100644 index 0000000..b2483a9 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/RectangleOperations.java @@ -0,0 +1,27 @@ +package GraphicsApp; + + +/** +* GraphicsApp/RectangleOperations.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// rectangle contains shapes which GraphicalObjects a +public interface RectangleOperations +{ + + // hopping this will be an array of shapes. + GraphicsApp.GraphicalObject[] objects (); + + // hopping this will be an array of shapes. + void objects (GraphicsApp.GraphicalObject[] newObjects); + + // function to add shape + void addObject (GraphicsApp.GraphicalObject newShape); + + // and may be remove a shape from a position? + void removeObjectAtPosition (int index) throws GraphicsApp.RectanglePackage.IndexOutOfBounds; +} // interface RectangleOperations diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePOA.class b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePOA.class new file mode 100644 index 0000000000000000000000000000000000000000..fe0f146fef0c2600f6c040315ba7ad3af0d3137e GIT binary patch literal 3181 zcma)8>r+!#5dR%Wa>L~!Di4kL08tFjXth3quMkjD1BrlGiZ;C@ha{5R8*gq<`?9rF z`?4?lr5~Mf>P$a$tWJT}Y3qm1IMe^Bo$g6O5+IQ>l_rJgW0pJk6 zlhJ`wHQ0;OGFsq~Fd)HOgFy_*u;Ppi3(m^K9_NbzXI4%y_~ztfph8I+Ni24AxL6F8B@8Ie~<#MP1{j z5!a%`wH=RZaq}cYwX<`Q!Q#~;oT1(y*Z62AIm3+!p@u;U#kF~Tj=pX?*Xr@>M%1Mz zqb_e?Y{276=|CfVX@vcHnd7*D5kEzO5jEt23ye`h7ZK*lU;W2hT9)$rVi zn#y`8A(>6o1#&*5CKBYX$&Fbx%nABIXF+E$@7g#w=DFbt20Z=K1D$0g zJN;)3H5H48)1FkyHO9jx#V{M(o}%U)biz*vDv8^VhZFgD%j0^+2=g;>5#3D%o#arT z$fJT@^eN~>mjVqsiDa{zO`eaSMY+MyvNG%gp21KcI5g&&@C8OCq!e6*Arz$*n8+xY z$2AGp72Lqv65dhpF5Xk{K5h!m2NFIMi(3jfK9caUg4<%xEbcJ$mIV}~_^VM)S&s1Q zl%2rrfS%DJWbLjn@QE<+se*3wP^l~U44*6b0{0|*so*PoEf(KUU6v_Z1|<~bW=Nm8 zLcu15y||;`Tih3nbdkYOqedcutQ14D!ISzt&n-P>P*2CrxUMm5EXFQZ_zXLIgMN2e zRPFQ$g@-j^C|8r-ZgtaEk2zNy`SD;x}dB1Se8YZu)UK*(g z%bZ3fd&%S*9krb`rCKQdma@Q>0oXLvF!XB-uGL8L3MyYp-D`Ga@3575DY#KhcQC`z zGTmk^yfTO_ZS?->Ko$1ENuw-oIC^%;;+CM<2D)s}N27~YJ7{J!Te}v)ex?tG{dpmv zj#dZo3XLSnG$uSu>VMs!2Rq9 zRMWhRes21mr(cY@ZCwkfaoc)-h0Nf#I4lm^5^5hI*0ThKxDML_>Xx~WaGuB;^5ps= z+1;~%jfZVrO(eakNN&$6ZYU~le6-3(%VUCd4-fDVn<+{Hw1Mq3wvw}LsK;(JqMcTI z=~>#1vlP1#irWQ>+$9P}2#4tsKY}?NMHK)0}$G@m2zetb{69uVY* z7{w3taQz8E{6f#xB~0QkOyM9|Y=ZqCv`RQ6;nntS&CQb%4mZ@2dq+rlE=_xB7BQ@Q zf~EyDKgSmOe@ukZbj{G}7=<{u#YwZsterBubqS85^oFdeC~;$yQZXMxKaHXuIw=-a zG}m->FJfDnZAoHl^hi&_j^l+gx=R%CH~kDPQ;XRC6jf9rn|C~eWvY4+I~TC)q9C*i zf~ADeCJ5FN!frvJGRkhT{Eqgi>dkw`pQ5Q)oZF~|fd;DRW_rDEq0DT>2{$yZM9tw+oBEZ;RR;z;=JmL%vGK@!>gKzv;~ z_8s1BCUNt&5hT9TS(O|WMFaCF8PGAoP#Dx{B*JreB+Fw47O=>ml*FV7;>NL^}h`I#rXN_7K0WC-!@_m8jVRV1!O432n~vszhXeEJ%jb3 zJW-BeoKU98Q$gkv D33!GG literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBounds.java b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBounds.java new file mode 100644 index 0000000..3cf1082 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBounds.java @@ -0,0 +1,25 @@ +package GraphicsApp.RectanglePackage; + + +/** +* GraphicsApp/RectanglePackage/IndexOutOfBounds.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public final class IndexOutOfBounds extends org.omg.CORBA.UserException +{ + + public IndexOutOfBounds () + { + super(IndexOutOfBoundsHelper.id()); + } // ctor + + + public IndexOutOfBounds (String $reason) + { + super(IndexOutOfBoundsHelper.id() + " " + $reason); + } // ctor + +} // class IndexOutOfBounds diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.class b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..c518ada6f559d6fbfaefab9f559e34f40f954c63 GIT binary patch literal 2364 zcmb7GYg5}+5Iq+gWQ2H`M*@L1326Y^*hy%c7ATZwpctG2ffCxfLMTS5u{}a2A6B+Y)ogcX6{`{yL->>o?ZE`f8V|X@G-VkbmFm!&+xg5 z4h%_YSV|)*zQCxw9g_>C4t!b5Wn968+$U8`VOmNvQhK6bR_e?J@RhuuR}fdxDt#|t zQ94Tm@KnLq3YG+XNoz|W7=Nkn>9Mq)NyU~O+sdSd1=M8Hd7U#SvsJUKWh`fuuKW5|1^lP>jd3euF6MVOO?yS(OjEbU z%Iuo9BQV`p=6gKzdN}^X)^ppIu{)m2#g~^w;CScp@wdJ zAkbc!avDCwZ3W+H_#R0Ox6q~G2k0zRsXkMfH=G4ia!x}OF@dIXh#EFw2n<|{Z3?zD zn22e3fs{aWZYn-h(ZMC24n2%M5E!hed=4odOAiDFYIk~|gdI+r-VMKUEF~Bc*6yuzi^PHk#S~S7`4|)_t zx~CKj{7vw+a_o8Gba9tIKS7rV{+ODayPjqYRlI=4U(ve$25oVst9>n8G-_}QGs4=A zq8?*3<{0;k?|H@nR;;;z8^sE#uG48K3^l-iJZGGUdcYcjH;>RDyqp#7PEV_6WxIHi MWY8xBSA|di1H{5f!~g&Q literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.java b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.java new file mode 100644 index 0000000..442bdca --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.java @@ -0,0 +1,72 @@ +package GraphicsApp.RectanglePackage; + + +/** +* GraphicsApp/RectanglePackage/IndexOutOfBoundsHelper.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +abstract public class IndexOutOfBoundsHelper +{ + private static String _id = "IDL:GraphicsApp/Rectangle/IndexOutOfBounds:1.0"; + + public static void insert (org.omg.CORBA.Any a, GraphicsApp.RectanglePackage.IndexOutOfBounds that) + { + org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); + a.type (type ()); + write (out, that); + a.read_value (out.create_input_stream (), type ()); + } + + public static GraphicsApp.RectanglePackage.IndexOutOfBounds extract (org.omg.CORBA.Any a) + { + return read (a.create_input_stream ()); + } + + private static org.omg.CORBA.TypeCode __typeCode = null; + private static boolean __active = false; + synchronized public static org.omg.CORBA.TypeCode type () + { + if (__typeCode == null) + { + synchronized (org.omg.CORBA.TypeCode.class) + { + if (__typeCode == null) + { + if (__active) + { + return org.omg.CORBA.ORB.init().create_recursive_tc ( _id ); + } + __active = true; + org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [0]; + org.omg.CORBA.TypeCode _tcOf_members0 = null; + __typeCode = org.omg.CORBA.ORB.init ().create_exception_tc (GraphicsApp.RectanglePackage.IndexOutOfBoundsHelper.id (), "IndexOutOfBounds", _members0); + __active = false; + } + } + } + return __typeCode; + } + + public static String id () + { + return _id; + } + + public static GraphicsApp.RectanglePackage.IndexOutOfBounds read (org.omg.CORBA.portable.InputStream istream) + { + GraphicsApp.RectanglePackage.IndexOutOfBounds value = new GraphicsApp.RectanglePackage.IndexOutOfBounds (); + // read and discard the repository ID + istream.read_string (); + return value; + } + + public static void write (org.omg.CORBA.portable.OutputStream ostream, GraphicsApp.RectanglePackage.IndexOutOfBounds value) + { + // write the repository ID + ostream.write_string (id ()); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHolder.java b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHolder.java new file mode 100644 index 0000000..1143f43 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/RectanglePackage/IndexOutOfBoundsHolder.java @@ -0,0 +1,38 @@ +package GraphicsApp.RectanglePackage; + +/** +* GraphicsApp/RectanglePackage/IndexOutOfBoundsHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public final class IndexOutOfBoundsHolder implements org.omg.CORBA.portable.Streamable +{ + public GraphicsApp.RectanglePackage.IndexOutOfBounds value = null; + + public IndexOutOfBoundsHolder () + { + } + + public IndexOutOfBoundsHolder (GraphicsApp.RectanglePackage.IndexOutOfBounds initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = GraphicsApp.RectanglePackage.IndexOutOfBoundsHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + GraphicsApp.RectanglePackage.IndexOutOfBoundsHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return GraphicsApp.RectanglePackage.IndexOutOfBoundsHelper.type (); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/Shape.class b/week1_TinsaeGhilay/Task2/GraphicsApp/Shape.class new file mode 100644 index 0000000000000000000000000000000000000000..de12075787291053c555927f4f39410c338ab54f GIT binary patch literal 206 zcmZWjNeaR+0Gw29v??fg^WqE4#ShdKK`7`8(h|~?+JrO;e$9gq@KIvwK@b@jm<{In zx<3FcFr?^G^e7^VKE;3_I_Zne#8#D}5ji(vUhpd?81F1MxytI;81@MWMoq*@UP+du zg~%Mi^skl}VYySfstG3AN~X_}t&-z1{*Gq9w$aw{v=nT=K5Qzd+$|&^2+;CqqvOBB J>(Fxm`Ud5YHE{p{ literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/Shape.java b/week1_TinsaeGhilay/Task2/GraphicsApp/Shape.java new file mode 100644 index 0000000..c7c71f1 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/Shape.java @@ -0,0 +1,13 @@ +package GraphicsApp; + + +/** +* GraphicsApp/Shape.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public interface Shape extends ShapeOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity +{ +} // interface Shape diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.class b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..bdce1ad768c519c5f8d8f5ac03261d1084291093 GIT binary patch literal 2466 zcmai0`%@EF6#i~VvSD*0Ap`^jl}9lNNVE?Xf?xm@G(04fR{Pj4%NiC!l5RFyfA2rh z{uNYbBCRv6{^U&ms7}vamOM709cJ#{$2sTw?sv{T;qQO`_!GeAuw-1utc(=qWDMi3 zn9YmXf{c4ei{+viXf}+cP8ybF+{Xj4d>FurSgeZeM-m>($Y4#JtPAH237bJY!Ip%q zj6Tdt*p|_cFJ*)UWEeXEd?n#)2~Qb16l0Gek~vUcsL8xq$R)FuX%uoP23b+8S0#O^ zxTiDpXNqPnSv<-mmo~N*)5&e;gzWrtM!~S=DON1L!{9x2=*k!ceZ6wDtDD>EZk|H; zjY3&BErxi^6)atNmC8Ic)zZG9mD8nCGP|#q^puDu=|5Sfs*zW$omae#8&MFv83to< z7f=K1P}Wkl!!@qUTGxIW45%7{j=PXB^+)TaHOgiQzkrPw|Q9wz@cK7;|6YWj9^rP z#<2&TV;V^YpB<9pIdU9VaFwC2G1rQHoV6;u681R^9B_IdUvL~E&(PgyYFkP;;wYfV zaIv{07t_niW_l~V#xT-+Qp?k+N~=euJVyyXa+oMH46H6^W?OJ(Z%*GJjF$aVZAhtl zp`3;#vdyqm)>Kj&RfVN1MLWGp*)9@>Yb~`|C)rpC442%gt`)JUh_PnKwm}$r91@18 z(;A0~^EosYG<5<||H=zBU!e+FaPz5QHaea6@C0X>4$%7H&VMw4(R0*mxCukhzWrH_sd?2Czm!+YWqNeYVVt+f!0kt`oVgCT zm2(V*Ced~w=94X93sjz41vDLLIz_Vm1-qavenXwk2hon^;})C?)*Ca-Zf zu~w(}j(3E9VJ_3Jmj|+V#x#?~Yq!6IjBzl0LaSl=GWz-wZ^3?}3Bv@9etR>BPFzEb z=EC$oI_QsF5>5opU1Nk$ z$8eoaI>4d?PF>CkH)KNt-q+}I1INgcI;3McN?`>}IS~n01#rY|f1T{9$2Qn|$ljlr ztfHqbiA-@oc0RJ~6n)dN|C#oMvUd|7;bX^%4~YIkn!HE!m}KU^qt}C95qyWfr*Cob zFFNS2Vj%MlVOkHaO%ckasru~`lxyHNytqRO%pinW%0Y_iVUE;UAPMf_7SiJ17F!t~ zI{d*NVsxv7{mtE-zF8*6C2eFk3UGZw`;XH bVT(*MM~2>@i&0YD(uGJmk+wU8;K9tlJuf`? literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.java new file mode 100644 index 0000000..59328a6 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHelper.java @@ -0,0 +1,85 @@ +package GraphicsApp; + + +/** +* GraphicsApp/ShapeHelper.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +abstract public class ShapeHelper +{ + private static String _id = "IDL:GraphicsApp/Shape:1.0"; + + public static void insert (org.omg.CORBA.Any a, GraphicsApp.Shape that) + { + org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); + a.type (type ()); + write (out, that); + a.read_value (out.create_input_stream (), type ()); + } + + public static GraphicsApp.Shape extract (org.omg.CORBA.Any a) + { + return read (a.create_input_stream ()); + } + + private static org.omg.CORBA.TypeCode __typeCode = null; + synchronized public static org.omg.CORBA.TypeCode type () + { + if (__typeCode == null) + { + __typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (GraphicsApp.ShapeHelper.id (), "Shape"); + } + return __typeCode; + } + + public static String id () + { + return _id; + } + + public static GraphicsApp.Shape read (org.omg.CORBA.portable.InputStream istream) + { + return narrow (istream.read_Object (_ShapeStub.class)); + } + + public static void write (org.omg.CORBA.portable.OutputStream ostream, GraphicsApp.Shape value) + { + ostream.write_Object ((org.omg.CORBA.Object) value); + } + + public static GraphicsApp.Shape narrow (org.omg.CORBA.Object obj) + { + if (obj == null) + return null; + else if (obj instanceof GraphicsApp.Shape) + return (GraphicsApp.Shape)obj; + else if (!obj._is_a (id ())) + throw new org.omg.CORBA.BAD_PARAM (); + else + { + org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate (); + GraphicsApp._ShapeStub stub = new GraphicsApp._ShapeStub (); + stub._set_delegate(delegate); + return stub; + } + } + + public static GraphicsApp.Shape unchecked_narrow (org.omg.CORBA.Object obj) + { + if (obj == null) + return null; + else if (obj instanceof GraphicsApp.Shape) + return (GraphicsApp.Shape)obj; + else + { + org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate (); + GraphicsApp._ShapeStub stub = new GraphicsApp._ShapeStub (); + stub._set_delegate(delegate); + return stub; + } + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.class b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..c5428f6bf2524c987e60f536afeec49d69807204 GIT binary patch literal 886 zcmZ{iZ)?*~6vm&MHjRyOt^4ch+?;bROTi%eMk>M__y>vwJA7Nx_R?jfO^C_FZ>6AE zeBlT1Ly6B#!X(>0Q# zpkI1HDh1ZMuVODc_eUR2qR8!^dy(u2)Sme>KY1=tv5(&iR8PY(Ya3mECf}yhp^VSG zVZh9$y#QB)K8U3^7C5rIVLWle>BK$ly?b%uMq!*N)_pUJ(xjiTY}!#oZSXPn6KdK^ zkzSgV8GVp^iiouADWqUG@MaUYH@uLeL|}i(r1_A!VG9Ih5XqPx=Y~C9I(^Bo z1-8@l!oki`jgo^4G_s$qJjEkk9|Ho{_y}bWua?dg-D14Kodb<4z;wPtIN}?$FWd>N zFs`7&*g%!lbu=@sQE-pRY3l10=d?@kDluTKfY&LuL9~gRg}`AUPLYlJ|Orw4JZe=BWN{HAi-d?6G(~J4=nX!<`zhI*0z5?|iUYmOEhFWKP4@A8Y@+ Af&c&j literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.java new file mode 100644 index 0000000..71104c1 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeHolder.java @@ -0,0 +1,38 @@ +package GraphicsApp; + +/** +* GraphicsApp/ShapeHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public final class ShapeHolder implements org.omg.CORBA.portable.Streamable +{ + public GraphicsApp.Shape value = null; + + public ShapeHolder () + { + } + + public ShapeHolder (GraphicsApp.Shape initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = GraphicsApp.ShapeHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + GraphicsApp.ShapeHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return GraphicsApp.ShapeHelper.type (); + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.class b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.class new file mode 100644 index 0000000000000000000000000000000000000000..06a7622643c1fafe6b432d1a686116dede9e6526 GIT binary patch literal 163 zcmZ9Fu?~VT6h-etq{!sp<`3v%7k|J-(Ir*m$mXjoVHg{QGJ5>)Efsn*Jkfbq*6o{Npj88W05I-g(COQBB literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.java new file mode 100644 index 0000000..214172b --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapeOperations.java @@ -0,0 +1,19 @@ +package GraphicsApp; + + +/** +* GraphicsApp/ShapeOperations.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public interface ShapeOperations +{ + + // draw to be overriden in java + void draw (); + + // and info + void showInfo (); +} // interface ShapeOperations diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.class b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.class new file mode 100644 index 0000000000000000000000000000000000000000..600b4ee81ffd355ca4abe9a215cbe9c9d52c8843 GIT binary patch literal 2109 zcmah~T~pge6g`V&WQ4%ss|h6`P)K4!!6BqH7?Q>Yg5B7dVoK`L)D>p2MPx}M%P{=` z{VjdyOPkC~st<~<{d-t4k?_Iz9_xC>mJcO=b2(umd5Dyjf z;u9HjGCu9VBg`uZBCbHffa#g8LJ}BYzQgg zniiAKLwGJD6GB$Tnv9%`bs1kUgo;(}R;=9`!$4+VJJ4cvS2toQtyXch9fL101dByo z?DuV-8W@^cj^$lPH_No!zNnkJ`-CA7iEc4SOV%!D2xoMYuhpwN+}RXi804aE9$2sF z?T3gzPR4S|F{@gRE#)?niI{CU-s!QlY1dski)+<|t86xS&9=-MPif|^!JUQZRff5` z+lxwEI0IPsp1oCjQQ;L3C7fIG4ETw-B68EvUc zu;^BFp=unKqL*q3+m7Wcnk`g~G^3t!CgKFWm1$_PWHdxp@>bm`@n^b_w9AV{ zAf`p)RD6Un6~nl#B9Bdm9xt6T6L$R2939b|~WRsVJjD zWml_MhiP-qVz}0Xd0JEqgX!f=+^0l*X8Jxuzi*ucU>H6l_FjrarZm$f=03li%^l6v zsdN~|&)j|WCu+7)Sqx)Wm|d(a>Vz_<1Mgle^W4rpFS(T8CfUZ)1?Z<|FIiRF-~t!b zr&}j*;iX)5J+rd8vRuq23dt3Qk@Jdd?L+l79!dY7k?7YDRr;1@)G2k;z-fYg1;zKe zjG?ncUFq@-ZX4e-+@mtT!tp%;cb4I`kFW_NLqp2GAUUHt7dR#{wn zjkd`n1l~f52M2?HBYc8jA@CaQ$B_RT3?3o$6IlZD^lS6pK#)XqU}EA39aFzSVTemV zVwk3#&FSSx($8K10cj3h^t_1xVGa|geqtpUJtct4h#-R~a=1?y)eN@rfNqmH>=S?p zd4&=D2O~0~GA3?!cMD#V__)FA4vhga>Us_J2wiW{OY zzv5ccy4wr2O1mkNON>*9(NhQ*B`Jg$9TSts=xO1WrR_EPd(I+6M9xz5l2*iL{sg^+ zWAwd28_D0>e*&oxIL5#cK6oJ(u8Re!u^|0{8-+mcVEzr%W?Fj*6VOAo&`;?YAPF85 Lwi#M$!-M|-W)u6l literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.java b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.java new file mode 100644 index 0000000..fa39dc7 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/ShapePOA.java @@ -0,0 +1,82 @@ +package GraphicsApp; + + +/** +* GraphicsApp/ShapePOA.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + +public abstract class ShapePOA extends org.omg.PortableServer.Servant + implements GraphicsApp.ShapeOperations, org.omg.CORBA.portable.InvokeHandler +{ + + // Constructors + + private static java.util.Hashtable _methods = new java.util.Hashtable (); + static + { + _methods.put ("draw", new java.lang.Integer (0)); + _methods.put ("showInfo", new java.lang.Integer (1)); + } + + public org.omg.CORBA.portable.OutputStream _invoke (String $method, + org.omg.CORBA.portable.InputStream in, + org.omg.CORBA.portable.ResponseHandler $rh) + { + org.omg.CORBA.portable.OutputStream out = null; + java.lang.Integer __method = (java.lang.Integer)_methods.get ($method); + if (__method == null) + throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE); + + switch (__method.intValue ()) + { + + // draw to be overriden in java + case 0: // GraphicsApp/Shape/draw + { + this.draw (); + out = $rh.createReply(); + break; + } + + + // and info + case 1: // GraphicsApp/Shape/showInfo + { + this.showInfo (); + out = $rh.createReply(); + break; + } + + default: + throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE); + } + + return out; + } // _invoke + + // Type-specific CORBA::Object operations + private static String[] __ids = { + "IDL:GraphicsApp/Shape:1.0"}; + + public String[] _all_interfaces (org.omg.PortableServer.POA poa, byte[] objectId) + { + return (String[])__ids.clone (); + } + + public Shape _this() + { + return ShapeHelper.narrow( + super._this_object()); + } + + public Shape _this(org.omg.CORBA.ORB orb) + { + return ShapeHelper.narrow( + super._this_object(orb)); + } + + +} // class ShapePOA diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.class b/week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.class new file mode 100644 index 0000000000000000000000000000000000000000..65b20f5b7a0e52f703b386154080ce43bcb06f93 GIT binary patch literal 3938 zcmb`JZF3XX703T;OIlf8fiZ|68-tA#kmZNPl-fl&PGl2Zc5S|jl_kCDIO3coyxZs0|i(+_M#WOzmu%u#Hyu9Sa zvpzhBABcyv7tf1hhIm-MY#{4H4tX)yDhk4q ztKvXWtdzvy_)x|*6`NjM_u>T=KUDD}1@3g(S}iHqdnta!xMt{CBfqAnoT8OqJFUPo zW#uhrT0whg=%NDGti5U~*d4d>X0n`HF^lJol`K~}tWx^2mCc%~a_h1Jf66g38wsNz zcgWjbqz_1};>Xk!T9yj)Mvlk#g@&5l?piGxn+m+8b$c_GzijhZ)!0C2sHwTWqG_xy ztXwfOj)Fs>s!q$+t4pzbq3jUNG;*hhE~zLFZ=C za?CANhj*%4C_9b1UZI&&nQYBlzLZ@qX3RND_$HV>TQmymR>sIy^`)Hh%9wDrhEa?u z*p*&0o%FT`HN1+~H2e&&t9Vhv8#tli=Xg`Wuw7i!?cAC^yRbMD)eCmf5#HCMg+i9v zh4I@I8s5U&8h!x=G0=D}5nW83i^j#}HxvvtzT8&2Xy%M!Y2C=ysT{`%VQs12S`{}n zyn|C3#&L>?AX!9IHT)8%HAKWPg)t3}ieVTdOk54`;yngH!~4R({+feIBpGYwEfpVV z_z)j4R2n|UCmMc*TM7nR*j@{Fu8`I6DL&KiYy3vTZ^iwe;|mq9X!xCA@7kI13I=0m z;*mOY^c}H_jE@~>NO$f^ts4ci`mP>EZw8~F_rF}A;7ALqy7Xna-Z%aHdePpjmSIq? zHcNQcn0!}utgQZ2(Jq)p$1+*>dm3+JW^E~_n%Kg2^cD0pDz7gACV#qUUM-s?)?K7l zEcKmac_`j^&vu^Gt6?grX)Axt-eB3xhaTuiOT~5WqFzmOhV+VUXH6r|?nHArE18RC zA^U=YV=XVMS0g&sF4k(@nu4S3T`kz^_R$2lILZDPXyPBCd9a0+dJoZZ*_iH=bV{(2 zY}mXbleP2TYN*wE5Z)D=FPxuK5YE^+y;RQY8N0Y*=p|FPSS~srWQN2R7H8MZ%tnlh zLaUfdFWpbO+Hb_S`?l=sq7f>X4mD}h)e}1s@$^n7G7)KTR~0Pn*lD}g*2B%*w<7}E zz<$||RvGIx!=YaWTLaWBZVRR#%z-MVsl=RW(+ay%ian-5B4R zjZJ^}yfVlP6bASk-Ver$e?HMY`K96GoIe~Kbw2e`DwOW zw*C|CTnFZrc(}XGRY7|qJW_!xK3su&x^Kc2=EM_leVO2@H_o9W`4{+>M!!PmH;Hfs z{%N_R@5_i=PJ-@l;6@t`&_-3tlhCA$@|u1&e<7oom9kA5Hitc2+s9q|N%9c7cshU} z#{segd8&uAUL3_i^7iq&>JYw*!_+l^$0(ze=Wqnyp_U%B-{XNc6(?10QdCT&R7}QI zd{2U(s)7Hj2L7ay2zT!i;K|Y63U-G_NiTiixs&AFo8Zt9aS7<4OHe1n+}9<%@F$`dW3}ZZ@llC~t#&L|{ z8YkTel27vel+-qXIm#Hh1ouI>?(tANxyf7w=cmrISw zAN(49N>YiqMuV=eaVX*rx>?tUBc7n=F8V7Nh^XP9TEUT^yMjTH4PH45dYKKP-5qBk zf`1Vyt5KhTpKGr&>s~`AKi~a$oz8fJyWeDnzeNYU&2u-H**AIW26=9>4&IUQhtYPA ziyqm?W>n0o=uvS-Wl^xeS<`b=?IPh>UVn}yQRTWtsq)Q;l2DQ(qXNYhbg@xC9B~f| ziysLx86<#5&Vn8Z(8)eKz;go_l(GsCX8gb}@-}?HyFMhu$JmQcxc3%&@Tc5)3n9v3 zd?t-PD2yI}TN?djYm2=s->pmyQ?vNj?fxr{F12?bOD(y&L#aREz|Nnp>!giyXB!g# E0S|~<1ONa4 literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.java b/week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.java new file mode 100644 index 0000000..f9016b0 --- /dev/null +++ b/week1_TinsaeGhilay/Task2/GraphicsApp/_GraphicalObjectStub.java @@ -0,0 +1,157 @@ +package GraphicsApp; + + +/** +* GraphicsApp/_GraphicalObjectStub.java . +* Generated by the IDL-to-Java compiler (portable), version "3.2" +* from Graphics.idl +* Tuesday, November 11, 2025 6:46:29 PM CET +*/ + + +// GraphicalShape object extends Shape +public class _GraphicalObjectStub extends org.omg.CORBA.portable.ObjectImpl implements GraphicsApp.GraphicalObject +{ + + + // unqualified member + public boolean is_filled () + { + org.omg.CORBA.portable.InputStream $in = null; + try { + org.omg.CORBA.portable.OutputStream $out = _request ("_get_is_filled", true); + $in = _invoke ($out); + boolean $result = $in.read_boolean (); + return $result; + } catch (org.omg.CORBA.portable.ApplicationException $ex) { + $in = $ex.getInputStream (); + String _id = $ex.getId (); + throw new org.omg.CORBA.MARSHAL (_id); + } catch (org.omg.CORBA.portable.RemarshalException $rm) { + return is_filled ( ); + } finally { + _releaseReply ($in); + } + } // is_filled + + + // unqualified member + public void is_filled (boolean newIs_filled) + { + org.omg.CORBA.portable.InputStream $in = null; + try { + org.omg.CORBA.portable.OutputStream $out = _request ("_set_is_filled", true); + $out.write_boolean (newIs_filled); + $in = _invoke ($out); + return; + } catch (org.omg.CORBA.portable.ApplicationException $ex) { + $in = $ex.getInputStream (); + String _id = $ex.getId (); + throw new org.omg.CORBA.MARSHAL (_id); + } catch (org.omg.CORBA.portable.RemarshalException $rm) { + is_filled (newIs_filled ); + } finally { + _releaseReply ($in); + } + } // is_filled + + + // only time a shape can change is if it's in the matrix or if Dr.Strange is in town. + public String name () + { + org.omg.CORBA.portable.InputStream $in = null; + try { + org.omg.CORBA.portable.OutputStream $out = _request ("_get_name", true); + $in = _invoke ($out); + String $result = $in.read_string (); + return $result; + } catch (org.omg.CORBA.portable.ApplicationException $ex) { + $in = $ex.getInputStream (); + String _id = $ex.getId (); + throw new org.omg.CORBA.MARSHAL (_id); + } catch (org.omg.CORBA.portable.RemarshalException $rm) { + return name ( ); + } finally { + _releaseReply ($in); + } + } // name + + + // draw to be overriden in java + public void draw () + { + org.omg.CORBA.portable.InputStream $in = null; + try { + org.omg.CORBA.portable.OutputStream $out = _request ("draw", true); + $in = _invoke ($out); + return; + } catch (org.omg.CORBA.portable.ApplicationException $ex) { + $in = $ex.getInputStream (); + String _id = $ex.getId (); + throw new org.omg.CORBA.MARSHAL (_id); + } catch (org.omg.CORBA.portable.RemarshalException $rm) { + draw ( ); + } finally { + _releaseReply ($in); + } + } // draw + + + // and info + public void showInfo () + { + org.omg.CORBA.portable.InputStream $in = null; + try { + org.omg.CORBA.portable.OutputStream $out = _request ("showInfo", true); + $in = _invoke ($out); + return; + } catch (org.omg.CORBA.portable.ApplicationException $ex) { + $in = $ex.getInputStream (); + String _id = $ex.getId (); + throw new org.omg.CORBA.MARSHAL (_id); + } catch (org.omg.CORBA.portable.RemarshalException $rm) { + showInfo ( ); + } finally { + _releaseReply ($in); + } + } // showInfo + + // Type-specific CORBA::Object operations + private static String[] __ids = { + "IDL:GraphicsApp/GraphicalObject:1.0", + "IDL:GraphicsApp/Shape:1.0"}; + + public String[] _ids () + { + return (String[])__ids.clone (); + } + + private void readObject (java.io.ObjectInputStream s) throws java.io.IOException + { + String str = s.readUTF (); + com.sun.corba.se.impl.orbutil.IORCheckImpl.check(str, "GraphicsApp._GraphicalObjectStub"); + String[] args = null; + java.util.Properties props = null; + org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, props); + try { + org.omg.CORBA.Object obj = orb.string_to_object (str); + org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate (); + _set_delegate (delegate); + } finally { + orb.destroy() ; + } + } + + private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException + { + String[] args = null; + java.util.Properties props = null; + org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, props); + try { + String str = orb.object_to_string (this); + s.writeUTF (str); + } finally { + orb.destroy() ; + } + } +} // class _GraphicalObjectStub diff --git a/week1_TinsaeGhilay/Task2/GraphicsApp/_RectangleStub.class b/week1_TinsaeGhilay/Task2/GraphicsApp/_RectangleStub.class new file mode 100644 index 0000000000000000000000000000000000000000..46307cbd5e394dcf3cc2a8498e7b61321df47d1c GIT binary patch literal 4443 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 Name: " + name + ", Filled: " + filled); + } + + // getter for is filled + public boolean is_filled() { + return filled; + } + + // setter for is filled + public void is_filled(boolean value) { + this.filled = value; + } + + + // name getter, not setting it. + public String name() { + return name; + } +} + +public class GraphicsClient +{ + static Rectangle rect; + + public static void main(String args[]) + { + try{ + // create and initialize the ORB + ORB orb = ORB.init(args, null); + + // get reference to rootpoa and activate the POAManager + POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); + rootpoa.the_POAManager().activate(); + + // reversing steps from HelloServer here as well. + // create servant and register it with the ORB + Graph graph = new Graph("Circle", true); + graph.setORB(orb); + + // get object reference from the servant + org.omg.CORBA.Object ref = rootpoa.servant_to_reference(graph); + GraphicalObject object = GraphicalObjectHelper.narrow(ref); + + + // get the root naming context + org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); + + // Use NamingContextExt instead of NamingContext. This is + // part of the Interoperable naming Service. + NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); + + // resolve the Object Reference in Naming + String name = "Graphics"; + rect = RectangleHelper.narrow(ncRef.resolve_str(name)); + + + System.out.println("Obtained a handle on server object: " + rect); + rect.addObject(object); + rect.removeObjectAtPosition(0); + + } catch (Exception e) { + System.out.println("ERROR : " + e) ; + e.printStackTrace(System.out); + } + } + +} diff --git a/week1_TinsaeGhilay/Task2/GraphicsServer.class b/week1_TinsaeGhilay/Task2/GraphicsServer.class new file mode 100644 index 0000000000000000000000000000000000000000..79b7b21d8eab8479032b0bce344b6eaab9af13d8 GIT binary patch literal 2146 zcmah~+g2M@82)wwnaMCMG#pBb)wH07V?1ER1W`ySXam6nu@!CHB)efCnVC*@ICyvg z@4VC(@VdQ7!LHQ@@P)i{`R{}@9D>bS*?Z>S-+cf1-+%x6*GmA?_{G32OcWKm{HByc%<1^73!h_NEek;;aaYHpfqPg| zWXl@9P{J=Y+&3_Y2^}f5uc&2JEolP-Skv*9hKzFkB)9IbR?aEVCYU+ zwpgu}w}iLOw@M`GD09nZ7>I7BcK9BTmAGAuWu<4?#f19sN>=jx?h1G7c(Q}R$U0Ro zFYa0D``#swyW3X2k`>;b@TL@riQ5>~ux{dO5QUa;9J!XBH}MS~Xn1JiTWo6h&cye4 zq#xCqLOYi=uO2MEE7A}HBmxYgKffr z%P`VBZx|Nw1TP#$xLt_sb4!wYk*TRE4NpvXsF;w-gx*#N77y~mm6k(vRYiBbb<~K? zLe(l2gh%czW-{qaJYr%G`)WBbaflyH{DhwwZk#h?@!*wmhO1`}8G2e;(px(e4~A=w zSByF3Vl0`?EX>Dfp-`#ZGR(D0S|g2BX_aDYp5qEnTB4E|Oc?aQJ>R!~LS-1D4$hUsW~mX?hd zNtCgdtDs2AZIL5oE8ONqrS0wL|IwYmi1pUxtgpCqo|o1hmsIY7ijegb3|w#`vruoC zz6w<;w`EQ`t#C5TwD9M=Q;{P4#S}GTJJhU_dDo4pCZQHBiDp=1E#i|3X?!=DYWo?v z9BsOsbSl(Z)C#f2mUL_>4&>s2Y?9AjO8$Bd(scXvDC!>yluaGZaHn0xZMKT#w7DYb zlwHRb6gbL?C$=oRz>uJhXsh!Syai}9)JeE#P@U?&>|sTUGEGmXN{!av=mg85ma=R~ z13>UH>21u5vtn|{RiF}0)&6!4ks`lWrBlD~R9kS@70UL>cHj#wcrtcK`5Am;T2KwO z2FRH)MR;904G}{hHOF}%A-d~^*9ZQ($Mckt!4sR#x=3|S*Ik7E>gNL`8pE`X(A!Pg z8SR~8&%vJ31GOTpfx0k>Al|{d^h{6|h93r<{V~Rl;7g5%{55nOp>t*87y*W3Xbdl) zKYWhh>g0G0#>C_?x_pRtgb8NGJI6y;=!tQXdAESprL3#{^JCAYA zk7o#ldTZz-lKww2l6r>gFEB{N;n0m5hDiKI4L22lkTtxi@Nd!U)4J7VxOBPt>V9mX zpDbP`f9|6PDGVV^uCF1AEZz6(n4vo^fd_PpZ(<3L2$jPI-EVZO!Gb^;yTrDQC-n9! d-CDnq temp = new ArrayList<>(Arrays.asList(this.objects)); + temp.add(newObject); + this.objects = temp.toArray(new GraphicalObject[0]); + } + + + // remove an object + public void removeObjectAtPosition(int index) + throws GraphicsApp.RectanglePackage.IndexOutOfBounds { + + if (index < 0 || index >= this.objects.length) { + throw new GraphicsApp.RectanglePackage.IndexOutOfBounds(); + } + + List temp = new ArrayList<>(Arrays.asList(this.objects)); + temp.remove(index); + this.objects = temp.toArray(new GraphicalObject[0]); + } +} + + +public class GraphicsServer { + + public static void main(String args[]) { + try{ + // create and initialize the ORB + ORB orb = ORB.init(args, null); + + // get reference to rootpoa and activate the POAManager + POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); + rootpoa.the_POAManager().activate(); + + // create servant and register it with the ORB + Rect rect = new Rect(); + rect.setORB(orb); + + // get object reference from the servant + org.omg.CORBA.Object ref = rootpoa.servant_to_reference(rect); + Rectangle href = RectangleHelper.narrow(ref); + + // get the root naming context + org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); + + // Use NamingContextExt which is part of the Interoperable + // Naming Service (INS) specification. + NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); + + // bind the Object Reference in Naming + String name = "Graphics"; + NameComponent path[] = ncRef.to_name( name ); + ncRef.rebind(path, href); + + System.out.println("GraphicsServer ready and waiting ..."); + + // wait for invocations from clients + orb.run(); + } + + catch (Exception e) { + System.err.println("ERROR: " + e); + e.printStackTrace(System.out); + } + + System.out.println("GraphicsServer Exiting ..."); + + } +} diff --git a/week1_TinsaeGhilay/Task2/Rect.class b/week1_TinsaeGhilay/Task2/Rect.class new file mode 100644 index 0000000000000000000000000000000000000000..8cca025f7f6a3ce07d6b4ff4129cc3fb2dae5faa GIT binary patch literal 1308 zcmai!ZBNrs6vzK}gH^hY;U*IpA|OaN9*WN*4`vWGB*PIf8uV4S)ma?t(scwsi?93! znn)0d=xaZe@qf1x2AP;9r?>Z>^E>}@PTSvqz8?d)izO9Nj42rJLN{(oGoe6NkwRKU zCnm#~!n8Cq3gQY36=96Y=UD}}6xRq$#8 zLvOOrT(kPlF4QvBs^PEAa<1V(*U*ApvAreo^wdj%juoe92}HAY#d==f$y@FVGhgOT zsAhSD3ncV5DP`!ep88+15&dEhiRm(n#ilxmyimP#Pq@~OvuiaYGTypVvpw6Xuo8V$ zo<}x4v+#b+ton7RPxcB{Rl2Y{>ZVh73)WLxRv15N)TZU`TJFrYxoc{;f?k2-$x)jg zYKS4Op$C_VkTFKxv&%-tb>uB6%y_F=%wUGXi3RF{)F%m!dnN>exA>lJVfMQ`2vlO4sZbA lJ08Ithp>P#Eb_OtMEjUS1Jwi~3fm!9f`2uEQLY2H@fS218K(dM literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/.gitignore b/week1_TinsaeGhilay/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/week1_TinsaeGhilay/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/build.gradle b/week1_TinsaeGhilay/app/build.gradle new file mode 100644 index 0000000..924061d --- /dev/null +++ b/week1_TinsaeGhilay/app/build.gradle @@ -0,0 +1,37 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 31 + + defaultConfig { + applicationId "com.tgk.test" + minSdk 21 + targetSdk 31 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/libs/.gitkeep b/week1_TinsaeGhilay/app/libs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/week1_TinsaeGhilay/app/proguard-rules.pro b/week1_TinsaeGhilay/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/week1_TinsaeGhilay/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/androidTest/java/com/tgk/test/ExampleInstrumentedTest.java b/week1_TinsaeGhilay/app/src/androidTest/java/com/tgk/test/ExampleInstrumentedTest.java new file mode 100644 index 0000000..470d75a --- /dev/null +++ b/week1_TinsaeGhilay/app/src/androidTest/java/com/tgk/test/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.tgk.test; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.tgk.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/AndroidManifest.xml b/week1_TinsaeGhilay/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..fb69ac2 --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/java/com/tgk/test/.gitkeep b/week1_TinsaeGhilay/app/src/main/java/com/tgk/test/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/week1_TinsaeGhilay/app/src/main/java/com/tgk/test/MainActivity.kt b/week1_TinsaeGhilay/app/src/main/java/com/tgk/test/MainActivity.kt new file mode 100644 index 0000000..e69de29 diff --git a/week1_TinsaeGhilay/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/week1_TinsaeGhilay/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/drawable/ic_launcher_background.xml b/week1_TinsaeGhilay/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..801563dc7729117de9a93ef01e20d524f800d672 GIT binary patch literal 2521 zcmZWqNl#l>7=3`vY=$I^0S97+gvo(0RbWgQjZMK!!J-VN5U>f@h1irZs_Cw(plqsE zN)uI;TB+(HQK-~GC5u9tRCG+4b@$!7%F!vW2YUg8zF1hS@p+iw!5Y(Q-2BqcuFg{>`RNk;VQ=9G7tQ*YM-eAaK! z0C^JytCH)xd3r3o<#1bz=XxDH9KkJ^4Um^ZpodW#GfpxsFrl{%OY)4egSf|x9INi& z8}-<^IisiVTQCo1s6S_AmS7ltyBz7a5H^+pfW$!=Yi#+a9 zsGFaz8(^q1UN&1;7k4FiuYj$?Z;M?m72N!Oh|X(^a)rZTHRC~mJqYmNm*e>%;BWeE zkT=oFyUee|S|zXU%B!94*I+HIVgXpj&thf56==r{kDAv)1J@6XEch=avuBf%wV{(o zJM9SacnAQiDX3TP7b0$x#{pb+`}o^gwjuXj*{yaDe4xxN*3&vsTNUy9Jw)ZRnb(tA zx#hafy4C$n>pEQC8PhmKz)G0g(p(Z%i;4ELKlzaZ3ZHL}3ty!8${psr6{{_-QX3!4S;oh&^*U5l#xonY|#;{_EGqTyd-0 z#Iova0$}{$lQfPN=Z$f?KvIRd29_NOWPk&C*BiL@I~ja2z!np*f)_j2BTpWD29JgD z$pDmBO@o{3W=ow$XrAak$uABW;k0TGd7^sk<}rgAiN5pP)&SVTt75HTaRqEDfo@Pg zU3Kswf}CzY`==5dl(8@|n*Ot6DwAN;5FcdgPDK@{i>}~5SXNg4LVBt^k~6}_7?(h; zs{~Mkc;&pdzkLN+V#l;jZ%7_`4dj*S)H0EN&GnmjdVI6NbP>w!a5)w~BcRvYWD<{y z7!#M5#ZkmpWP@ydR;eA-z?OLV-9vV*fX4;!2Y_00?q=*VWQlp!|G(WWD8OIFp40jE zo^XZFHYF?i{D=82czP`tWOd555Kg0702gNmirx~dwuwE!Dgzy$liv=$j|JzqqTdH8 k1S2>MaKph8UVub!jw=Ez#p)yy2L9X*hzGrv-l!=51J$ioUjP6A literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..14ecbb5f648a69c6f2d467d9ac7eb7f216b8cf9e GIT binary patch literal 5180 zcmZ`+X-}Nj6&|+1W()(EWdaPVSq98z78@|bVz$9B3}aTq%&^<+dteL$uF|Se)i_c= zG-=#4l9Mz}+A50NT5glNQetB#4XKwPE45pzANr*q+7JB$eICxu3wBiLInP<{JMX>s z+;i>=PFq7mvq7ipuCH};IZpJ1=ybYpNaHSQS{zOP`O_Z*bUHt%na9@)ZP2lvkuj)| z<@$#5v_D_pxjy~)I(#4mGTjGqh%fx)<4w&qhDRKRb2djJ+1daM{b<}|M>vd$C{QRQ z(M0M1)lM%z_;C=77a_o`s1c}uV9=CX0`V(m7NK`XMo`QEgwnWZ^8#84&XHVlLD?gweSK z&{9ooPrv=nMKjMZw*Yjex#`mnp_#pVe*ooizoBJWV4&cF9_;l$IxrubuGWEoe*=ig z;kv6WpvF~@zzOB4<2e9ob+CBq(-IWs?*%L_;K2_;EB)eVtOl0`%MglF9!wrBVC71` zyaKAVEZ==gg2E-)>glf4q*9hMkf;{KkxB`Hr)wb1a7;2!GiQ(cpn~V!RM+ zp8+|>%Xzl;W{|-C`7hhOY>j_j`ibfZ8EEgUVe<$~nVFgmqh52;xw$Y1Gay)pYFJ+G z6Yn%s|6Z0Q2T&avUr1;_fAKrx%=SB6GB3M^Wf@Z{q(ra7w<>uo zSf?vUV~P7^H|d&m*4!xAOd$|DJ*hk7H`J#)+6XUMg6_N5^I;|V#0_hlQQH$=covE! zo>X9b_$oA0zA;eMUDc_67LR~#lM53Zhf=ALz+S=ah4&`n;R$FhY2N=c!u-O{U~FZ9 zuc&I?1gq0yRj7Qz0#q}xrhU;MwgIoa{otfNNY(f*w`||chu5V&GF0$P^JwubvHV31 zK9uVNJ5`F)-d_SMiO90FUV3froFlpA_X-TNN5qhE*#CLF!28iI!)pQ>$J|Qrb zh~9a*VE5A~-s#a&7!5To;(A%gF-#dN-pyW$=B)D}tAR}RX^5bD?*5ya10yATi05@2 zqUst}B1AB;6315qR;KnvzKDOza9*xJ4Z;HAL=CFhbhT{3rO5>T0N^nJ|9ItHG1$XF zVuELe0+h1^@2hL&{4u||fV(^8e6^Thbq($~BHr0iko4`}1gxBzD@}%-ax8I;UlZETY!*Jy#ZRi+B~H92aViF; zr;hjUDM;t;CFC>9xcx=w!CN1T_w`G;tfy&JR4|Wis!TN+56{jV@SIa$(@tacts59G zR_U<50Eb%+gs?VM!s`lP15=&df4eN^0QbX&4rOht*Tc$zSRsow5n$lfYdu`>e(>qR z{Q*`0u>BrL6<%(hDo-1;n`q*lRbUzgt2T!9T|{uGCu+%dhnp@$0}DlOzw^eo_l>g`0TvnW`t7$tK(fID=2BOz@e&%e z_{1m@#dKvbf9A>0Eo?XU3|2XZRinjVbf?d$!LuxlfO;O;a1%&Cm*wZ3FqA;Wt5Q_c$urz< zDdg!*@sr&=z|Yy%sr>UX&bwJQA9PR#-Mo4E8D^pIZQ1o8z-@{E`@H~K>j$X|MV|&+ zVC7M<9Y=JxKZ4>9xoAO?S#2?L?@Px{39DG+z`w4%2Yz_9^7iFq7$d3#l9+6NeN{Tt zw;ceJ$DkS(7H|R*+sVc8JPttsGo-RpA6CeP0U<7z7!D{33reu6exe1$U>-RaU=$_1 zH+PzcTU=*0xCZWs8DViU=NHtbGcDUc8?bjE0<@J)*~Jp(Qdm#wtt>T;XG4HK2-_=C zm0&ziCLAJo@bevYuJGq1X4Xc{gPN&ot&Qzt$sCb5OE}9Q_GljS7uOogesM!AkeU2v zmRg384HDtbRy*@?M^?M-K>LPgUzn3mv-OT6vqXJyuF%~6I_w~Er z*h(hR-33y!g~2pbS#zLxDUCu}hsL_&zPSPG(T@@`%sr}6;j`ud_V8*Et4A=`rkSHA zF=r#$%Yd6L#77@pVGHod#AItP)D*V}oE#dh5$icl-1-oag}GtYWJKs<)_6sJPYAQh zoN~n$zxAeyX_iCIO1erklP2KKH;Ym=zhZ3rRXFUasM2uWIu0(<3^}(rz@1Nq^6ZX4 z04Ie1t?^<4&atK%AtyOd3*q3C@8^QgKr}RNs1riOd7i&Yg0PM_6Hve|N%-PT@9d*1 z5&`q2EQcsFPgLN{%7_Bi>=HY<;E^Xc*2=hoDYnRpMaP4P0Oh*8@12at~y3nPs$M3#^3F`Nx;* GbpHeEItKIr literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..19b45496afc8f644fc2f28e63e56e06da912f820 GIT binary patch literal 1620 zcmZ8gOHY$g5dGTn5CsawDnS|qL>^KBjTD0*Z;H1r>yXv~lNN<0BGR zCYTUisL_~cTo@xRjDQA}7#kY4cr3vKg!1yC=7*nLp!HAorAMu6iYdmuiW zB~`K}cCQf?%;e)s;J)jLxl(86f;2bu$BV%sb=8jMnPaH<g$RNKh`QftSe^{nUg5<6M@1xZbZ-7+GU(cmz;6fGaU{Mi z>&(GT1-K_ZkQWfk<7;f(Dd8Rn;*zwjtrWZVM3=I{MeyrS5qP=~ubCI4QLCLIx+jQa+>@l-g~QBoVF|^Y}g8Nkh|c}Ihz{?KRu9A zDa6fJ&A(q6=0PrkP7s(7@%sA2NaT%jP5{p)@Tia2|2%%Ki!d`^A8y=}LJedjFqR`3 zPZYxvP{_V=46|g2(@mUPEZA6uz%}Gs1#7qK7R0GWxdWwn1NJ4U9!^llS6|`XavKNK z?#QQnTwNd^bcuCC+PRoqZ?#{|@+dDlKkvh9_zKs6RAN(HJA>#;zbu7xJ{7CpFUb`D cA4B53B7p*ELtnIHvzf{2Cy-b9c|i^T0L9!P#sB~S literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..2155e20fea8549203f3c27cc3f430014685b7ecb GIT binary patch literal 3186 zcmZuz*-zA06#lUdBaSR~W{`E*hG7vLWUnkTFo1|Mh%5>W+ps8$0%a*MOzMMOVoaOb z`eG{8q)B7b2iuyMZi!7yYFuJ%w5b}OjOk08^e^c5d2WA$iOF}qbMC_ZoqLu$9NO2| z_|MNj8Z@oj?ecVaDte+cO^b!>dWpJLPjg?WriEbB+@e>?s73+@<@F<172+zx###x7B9 zJE6nHu7tYzLu9RtY`3pOipBmfn57&LdOt{ zIH!FF6op47R=pkSbTcA(?w-XsZ->*JgFyw40gP>VV3#$CldYUgfB^N+&fPd8Cak6X?wA70pjrKd5_p$ z`Yce{@0d(*C8wXn+?=6WRYtn(V8~r!f@hc4JxNgyzaB9b$y@WqhD!7-c|CCTyarL}dh+*M5kK2&_nM;WNWtSH%kJwb(t-5Re4}6pLyzcqYFNxOkv%_y`M` zO$_kp%IKo$H=(CeKoi{m>?06RQXK49nE|tBM_H3RB3m^V%zY+HJe2$4hU$Y=W)|pV z*!`+jmtYUg?*K<+g8*Ymx5{F%XWoyAYDlxJfn#DAUVao9{QV*i4KTid`Vg$=SHF`f zutT@hC1uP?7A)nK>o$zLmp6~x>TJf*wKujg*%Ew7FvZGnGR~)+2A zWuAW*2WcNEw3t*5%Zq1aQLRClqF7BmE9^vIuxx#yas z&9i_0RB6rJo=`VIkF4z=Lp8_|YGd6qngbo6cu4SSyjKPUP&w!KRD~|fg2$qI5JN8{ zm3hkxZ(=dL7Qtt-QT;&3Hr3V`(7V4czVCeT?x(QkWf|-r#&!G9{ zuQpf=*~gS)Hb0x88$h!^E!}<66vno}NkxVb;53Id}#2 zbkL;}5C@CLm3A~X)yqiy`{l>q@Oj{}`qXmOn1nqhaarH51= zcr&`?Q{iM|K4AodSFU3$LmEI!JU$kZ2LUP|;}8~5<5m#x%X!d~b211vDaN);hs9;) zFPlYHv+Y(f%B}TcoGk9h6iavtN*e^Rmy#DiED2wmrwR(_%o5FpT{F@%0iU#aNayX- z$}KJUHu|w(hisb!0naaA3$LY1+qriP5(-(h9s(Cm&GEM&`Tk{a9^Db7Icj)mz|z{A z8V0R~yhv*Xt8|ZP1e^?MQ{@8lk1L>w7iTwec##Om3d>Otj28c(<(1!6eUon7z0|NA z-elt$0DlEo+=5-T=H&S*FK-FN@*hEfdw|3H;|2=E1ovlxRQGRz*~PL_9UJh&E`$Kg zGf=w9(C_ch2OogU#`m@GuUT33wd(0!E#;Entr%!V;UI*)1F&xZTen{f@WJl6HSPo! z?_B_|XwLi?re4tg;1f?Of1l`i?~(hbXQ0;~oeiWwPe6b|)?*FCbsV&i!!!c(bq(dw H&6@TfB5C$9 literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6b14be7c277e8108f10108eba22b7dc7b59a41b GIT binary patch literal 1882 zcmZWpO;1x<7``o&0%d4R6~QQ2KC~jr00M%7v}j8Lque2-CoAHLg4nojL|Lj5oVs1r=AJ>`3D$ zS&7;*7?7F=VLs$IfZw8B;UC;&lB~_wzjuUNwyubH)1!e;$>L8q$fCbD0-5Y=Exmtb_ zs86_kg9vg!bA!LG8qS&g1P+1UBh-l;yDrq9P0laIq``rTCaYVd^~39%`a1{?fm{tY z(CIDbFgn;-&YltHdG?&qBl&DIyx)wocxc3Bxco+`u{JZKveH zL0AW98C1PVnsc90Tg%xsfYBM26Zr6a`C=PawEhHgL6Xp+d42|P|J&_cFA2Az|RuxrE^m?w*~{}BX|^^7g}jA!^>;M3Dvu*$qo*E#e0GKh{~5yAwk z%)|Qj?uYvc{h2BRZv)V{44IU;9HzEH5@DFTcgE=PCVQVc5t(%%uT|AU-#r_y3w`{J z^W)Dj5qFh#uo}EL8M&j-lo&*?FAsiA;wX%BQyY-%Umn-AmPi1#cbKzby#GKW*eYSo z-%Rkd+m5Q`urfgO|CI+4?bNt5SeuERd0s7m_2!xYQ;)ScEMa>a{NEQj@obOd-J{Mi z{^Gpg&nz6U$Sq7Oo8h|JTG#;81Wmg)A94q;@OJ^Ilfx^|weLSht?)x?I@Bb%jxWc+ BtuFuo literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..ebe3ce071b8947a7f7db6c412af54b2701e1b065 GIT binary patch literal 3508 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 literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/week1_TinsaeGhilay/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..3ed8cc3c56a001ed4618955762010bbc8ba4fdba GIT binary patch literal 5313 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 literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/app/src/main/res/values-night/themes.xml b/week1_TinsaeGhilay/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..dd8a87e --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/values/colors.xml b/week1_TinsaeGhilay/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/values/strings.xml b/week1_TinsaeGhilay/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..ce714ae --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Test + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/main/res/values/themes.xml b/week1_TinsaeGhilay/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..e6a340f --- /dev/null +++ b/week1_TinsaeGhilay/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/week1_TinsaeGhilay/app/src/test/java/com/tgk/test/ExampleUnitTest.java b/week1_TinsaeGhilay/app/src/test/java/com/tgk/test/ExampleUnitTest.java new file mode 100644 index 0000000..c63113b --- /dev/null +++ b/week1_TinsaeGhilay/app/src/test/java/com/tgk/test/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.tgk.test; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/week1_TinsaeGhilay/build.gradle b/week1_TinsaeGhilay/build.gradle new file mode 100644 index 0000000..2106b82 --- /dev/null +++ b/week1_TinsaeGhilay/build.gradle @@ -0,0 +1,17 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.2" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/week1_TinsaeGhilay/gradle.properties b/week1_TinsaeGhilay/gradle.properties new file mode 100644 index 0000000..52f5917 --- /dev/null +++ b/week1_TinsaeGhilay/gradle.properties @@ -0,0 +1,19 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true \ No newline at end of file diff --git a/week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.jar b/week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.properties b/week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..488723f --- /dev/null +++ b/week1_TinsaeGhilay/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Oct 18 19:16:13 CEST 2021 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/week1_TinsaeGhilay/gradlew.bat b/week1_TinsaeGhilay/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/week1_TinsaeGhilay/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/week1_TinsaeGhilay/myGrade.txt b/week1_TinsaeGhilay/myGrade.txt new file mode 100644 index 0000000..6e0f160 --- /dev/null +++ b/week1_TinsaeGhilay/myGrade.txt @@ -0,0 +1,4 @@ +Exercise 1: done 100% +Exercise 2: done 100% +--------------------- +Total: 100% diff --git a/week1_TinsaeGhilay/settings.gradle b/week1_TinsaeGhilay/settings.gradle new file mode 100644 index 0000000..81b63de --- /dev/null +++ b/week1_TinsaeGhilay/settings.gradle @@ -0,0 +1,10 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + jcenter() // Warning: this repository is going to shut down soon + } +} +rootProject.name = "Test" +include ':app' diff --git a/week1_TinsaeGhilay/solutions.txt b/week1_TinsaeGhilay/solutions.txt new file mode 100644 index 0000000..6e0f160 --- /dev/null +++ b/week1_TinsaeGhilay/solutions.txt @@ -0,0 +1,4 @@ +Exercise 1: done 100% +Exercise 2: done 100% +--------------------- +Total: 100% diff --git a/week2_TinsaeGhilay.zip b/week2_TinsaeGhilay.zip new file mode 100644 index 0000000000000000000000000000000000000000..fc3984ade317e7db178a8afdeb2403a6b1be6357 GIT binary patch literal 45874 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 JfZBqC`# + + + + + + \ No newline at end of file diff --git a/week2_TinsaeGhilay/Task5/.idea/misc.xml b/week2_TinsaeGhilay/Task5/.idea/misc.xml new file mode 100644 index 0000000..0c04b52 --- /dev/null +++ b/week2_TinsaeGhilay/Task5/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/week2_TinsaeGhilay/Task5/.idea/vcs.xml b/week2_TinsaeGhilay/Task5/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/week2_TinsaeGhilay/Task5/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/week2_TinsaeGhilay/Task5/pom.xml b/week2_TinsaeGhilay/Task5/pom.xml new file mode 100644 index 0000000..c1f12da --- /dev/null +++ b/week2_TinsaeGhilay/Task5/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.distributed + Task5 + 1.0-SNAPSHOT + + + 25 + 25 + UTF-8 + + + + org.apache.kafka + kafka-clients + 3.9.1 + + + + \ No newline at end of file diff --git a/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Consumer.java b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Consumer.java new file mode 100644 index 0000000..2861318 --- /dev/null +++ b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Consumer.java @@ -0,0 +1,48 @@ +package org.distributed; + +import org.apache.kafka.clients.consumer.*; + +import java.time.Duration; +import java.util.Collections; +import java.util.Properties; + +public class Consumer { + public static void main(String[] args) { + + // Kafka configuration properties + Properties props = new Properties(); + props.put(Tag.SERVER.label, Tag.SERVER_URL.label); + props.put(Tag.DESERIALISER_KEY.label, Tag.DESERIALISER.label); + props.put(Tag.DESERIALISER_VAL.label, Tag.DESERIALISER.label); + props.put(Tag.GID.label, Tag.GROUP.label); + + // Creating KafkaConsumer instance + KafkaConsumer consumer = new KafkaConsumer<>(props); + + // subscribe to topic + + consumer.subscribe(Collections.singletonList(Tag.TOPIC.label)); + // Starting consuming the messages + while (true) { + + try (consumer) { // it gave me no other way to close consumer + + // Providing poll for new records from Kafka topic + ConsumerRecords records = consumer.poll(Duration.ofMillis(100)); + + // Processing the received records + for (ConsumerRecord record : records) { + // Printing the received message + System.out.println("Nerds Received a message: " + record.value()); + + } + + } catch (Exception e) { + System.err.println("Consumer: " + e.getMessage()); + } + + } + + } + +} diff --git a/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Producer.java b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Producer.java new file mode 100644 index 0000000..718c1bd --- /dev/null +++ b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Producer.java @@ -0,0 +1,28 @@ +package org.distributed; + +import java.util.Properties; +import org.apache.kafka.clients.producer.*; + +public class Producer { + public static void main(String[] args) { + + // Kafka configuration properties + Properties props = new Properties(); + props.put(Tag.SERVER.label, Tag.SERVER_URL.label); + props.put(Tag.SERIALISER_KEY.label, Tag.SERIALISER.label); + props.put(Tag.SERIALISER_VAL.label, Tag.SERIALISER.label); + + // Creating KafkaProducer instance + KafkaProducer producer = new KafkaProducer<>(props); + + // Topic and message that we want to send + String message = "Hello, Nerds Welcome to Kafka!"; + + // Sending our message to Kafka topic + producer.send(new ProducerRecord<>(Tag.TOPIC.label, message)); + + // Closing the producer + producer.close(); + } + +} diff --git a/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Tag.java b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Tag.java new file mode 100644 index 0000000..78f3347 --- /dev/null +++ b/week2_TinsaeGhilay/Task5/src/main/java/org/distributed/Tag.java @@ -0,0 +1,27 @@ +package org.distributed; + +public enum Tag { + // Server + SERVER("bootstrap.servers"), + SERVER_URL("localhost:9092"), + // deserialiser + DESERIALISER_KEY("key.deserializer"), + DESERIALISER_VAL("value.deserializer"), + DESERIALISER("org.apache.kafka.common.serialization.StringDeserializer"), + // serialiser + SERIALISER_KEY("key.serializer"), + SERIALISER_VAL("value.serializer"), + SERIALISER("org.apache.kafka.common.serialization.StringSerializer"), + // ids + GID("group.id"), + GROUP("consumer_GROUP"), + // Topic + TOPIC("nerds"); + + public final String label; + + private Tag(String label) { + this.label = label; + } + +} diff --git a/week2_TinsaeGhilay/solutions.txt b/week2_TinsaeGhilay/solutions.txt new file mode 100644 index 0000000..8a14a0b --- /dev/null +++ b/week2_TinsaeGhilay/solutions.txt @@ -0,0 +1,5 @@ +Exercise 1: not mandatory +Exercise 2: done 100% +Exercise 3: done 100% +Exercise 4: done 100% +Exercise 5: not mandatory, done 100%