From eb0af2c831ebc9bba320b0d3593805be4b1ce371 Mon Sep 17 00:00:00 2001 From: anon Date: Tue, 10 Dec 2024 20:31:31 +0100 Subject: [PATCH] +spring farm example --- Java/spring/Farm/.not_git/HEAD | 1 + Java/spring/Farm/.not_git/config | 5 + Java/spring/Farm/.not_git/description | 1 + Java/spring/Farm/.not_git/gitui | 13 ++ .../Farm/.not_git/hooks/applypatch-msg.sample | 15 ++ .../Farm/.not_git/hooks/commit-msg.sample | 24 +++ .../.not_git/hooks/fsmonitor-watchman.sample | 174 ++++++++++++++++++ .../Farm/.not_git/hooks/post-update.sample | 8 + .../Farm/.not_git/hooks/pre-applypatch.sample | 14 ++ .../Farm/.not_git/hooks/pre-commit.sample | 49 +++++ .../.not_git/hooks/pre-merge-commit.sample | 13 ++ .../Farm/.not_git/hooks/pre-push.sample | 53 ++++++ .../Farm/.not_git/hooks/pre-rebase.sample | 169 +++++++++++++++++ .../Farm/.not_git/hooks/pre-receive.sample | 24 +++ .../.not_git/hooks/prepare-commit-msg.sample | 42 +++++ .../.not_git/hooks/push-to-checkout.sample | 78 ++++++++ Java/spring/Farm/.not_git/hooks/update.sample | 128 +++++++++++++ Java/spring/Farm/.not_git/index | Bin 0 -> 1400 bytes Java/spring/Farm/.not_git/info/exclude | 6 + Java/spring/Farm/.not_git/logs/HEAD | 2 + .../Farm/.not_git/logs/refs/heads/master | 2 + .../0a/dc8e1a53214b5f72ec3dfc95f7eacd239b7f27 | Bin 0 -> 3918 bytes .../0c/4e485baa3e2f555fcb52ca67f4c1fc49987a2b | Bin 0 -> 446 bytes .../0f/1dd27c2b2cfbbbc514230d68ccbb1448fecf07 | 4 + .../1d/c6deca822fbb5269c8346ab0eccaeb7bbf11bf | Bin 0 -> 74 bytes .../1f/9ac0575e06bf775bdae3f7e17387f83cf6cf85 | Bin 0 -> 139 bytes .../2b/786a777286ad8a3226309edc71445dd18ac796 | 1 + .../2d/c62b6e7a947d857f556f9c1b10224bca7ed227 | Bin 0 -> 96 bytes .../31/4b5a581017a6ba6032851f8d1157dce7768d4e | Bin 0 -> 171 bytes .../32/73876c7cb5657b5051757ff32fec7e7e1dd3d5 | Bin 0 -> 74 bytes .../34/4b908939ae4cf232346ab8ddeb99844de76f75 | Bin 0 -> 161 bytes .../34/5c72a664bda15f3be7207cad7b2305d0973a07 | Bin 0 -> 49 bytes .../42/ce488bec82122891631fc82928a3cde56cea38 | Bin 0 -> 242 bytes .../48/9b429e8399089f130b6e61c2adc740877cc605 | Bin 0 -> 47 bytes .../57/f72b2861244ee252e1674185e36baf7ef5bc42 | Bin 0 -> 46 bytes .../66/89b85beecde676054c39c2408085f41e6be6dc | Bin 0 -> 1287 bytes .../71/bb7686de653af0724cbe5045a23c1c05442930 | Bin 0 -> 46 bytes .../72/f02996e6dea8a319008c8faa4144e739a4d777 | Bin 0 -> 101 bytes .../75/c6ea959156f2b854172f50c3c9c31afe7ba4d5 | Bin 0 -> 49 bytes .../7d/b42da7c511cd23d5c0087113049c400129a1e8 | Bin 0 -> 49 bytes .../7f/93135c49b765f8051ef9d0a6055ff8e46073d8 | Bin 0 -> 57972 bytes .../81/45ac11c676ecf1b615ed2bb2f505fd65dbe9a0 | Bin 0 -> 45 bytes .../82/0f7ec75be5ed358e3c5b54925d9566ce14bd96 | Bin 0 -> 137 bytes .../82/4aca377fb0c5308c9a0258d48aea9a03c62793 | Bin 0 -> 95 bytes .../83/1d81cc77a3aae8f139b34d1fb46345bd45a079 | Bin 0 -> 49 bytes .../8a/c7f9a4aa7bcc3498e8ae9652a0d989ebd1c1a5 | Bin 0 -> 242 bytes .../8b/137891791fe96927ad78e64b0aad7bded08bdc | Bin 0 -> 16 bytes .../8c/2cd9e05f5765bd842f9b9cb72768ed68fdf907 | Bin 0 -> 79 bytes .../92/499e145fe0305106eaa344c474e5369be39926 | Bin 0 -> 42 bytes .../ac/4e1ae211f9dd91e0784387cb4ce5bc3fcd9a65 | Bin 0 -> 872 bytes .../ac/72c34e8acc978473b33b96ccae60a818c13855 | 4 + .../ac/8cb1bfefcafbffcc11abbf38b826df79bdcabb | Bin 0 -> 90 bytes .../b6/02d71a7cd17701d9e464be736c17694130da03 | 2 + .../bd/6cd0d8d022afbe0214cad569726133d52e07f1 | Bin 0 -> 80 bytes .../c2/065bc26202b2d072aca3efc3d1c2efad3afcbf | 2 + .../c5/2d737a1f275f0b7aac2f23e77153e8ccc39fc8 | Bin 0 -> 46 bytes .../c5/5a03b592bff473d4c07c08579db9e747796cd3 | Bin 0 -> 566 bytes .../cf/a1aefcd6bee0767f61d81319303236d3cd6713 | 1 + .../d3/e5f7f497c9d421f6d00dc8fc99074f34ee2be8 | 1 + .../e9/b376107f325548f99a248a8761b9d40cc82def | Bin 0 -> 85 bytes .../ef/14ba3b749fc0e21a0c46da4f0523d4922ad933 | Bin 0 -> 67 bytes .../f2/217ec89c1c1b8eaad09e49e3c7043adb2219a7 | Bin 0 -> 70 bytes .../f3/805c95953b939c5448a78cde340638970b7c73 | Bin 0 -> 46 bytes .../f4/0b699ec2fc66beb4add566506e54a5e790a7d9 | Bin 0 -> 45 bytes Java/spring/Farm/.not_git/refs/heads/master | 1 + Java/spring/Farm/build.gradle | 48 +++++ Java/spring/Farm/settings.gradle | 1 + .../com/example/Farm/AnimalRepository.java | 6 + .../com/example/Farm/FarmApplication.java | 108 +++++++++++ .../src/main/java/com/example/Farm/Sheep.java | 5 + .../src/main/resources/application.properties | 4 + .../Farm/src/main/resources/schema-all.sql | 9 + .../src/main/resources/static/animals.csv | 48 +++++ .../src/main/resources/templates/index.tpl | 32 ++++ .../src/main/resources/templates/secret.tpl | 6 + .../example/Farm/FarmApplicationTests.java | 13 ++ 76 files changed, 1117 insertions(+) create mode 100644 Java/spring/Farm/.not_git/HEAD create mode 100644 Java/spring/Farm/.not_git/config create mode 100644 Java/spring/Farm/.not_git/description create mode 100644 Java/spring/Farm/.not_git/gitui create mode 100755 Java/spring/Farm/.not_git/hooks/applypatch-msg.sample create mode 100755 Java/spring/Farm/.not_git/hooks/commit-msg.sample create mode 100755 Java/spring/Farm/.not_git/hooks/fsmonitor-watchman.sample create mode 100755 Java/spring/Farm/.not_git/hooks/post-update.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-applypatch.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-commit.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-merge-commit.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-push.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-rebase.sample create mode 100755 Java/spring/Farm/.not_git/hooks/pre-receive.sample create mode 100755 Java/spring/Farm/.not_git/hooks/prepare-commit-msg.sample create mode 100755 Java/spring/Farm/.not_git/hooks/push-to-checkout.sample create mode 100755 Java/spring/Farm/.not_git/hooks/update.sample create mode 100644 Java/spring/Farm/.not_git/index create mode 100644 Java/spring/Farm/.not_git/info/exclude create mode 100644 Java/spring/Farm/.not_git/logs/HEAD create mode 100644 Java/spring/Farm/.not_git/logs/refs/heads/master create mode 100644 Java/spring/Farm/.not_git/objects/0a/dc8e1a53214b5f72ec3dfc95f7eacd239b7f27 create mode 100644 Java/spring/Farm/.not_git/objects/0c/4e485baa3e2f555fcb52ca67f4c1fc49987a2b create mode 100644 Java/spring/Farm/.not_git/objects/0f/1dd27c2b2cfbbbc514230d68ccbb1448fecf07 create mode 100644 Java/spring/Farm/.not_git/objects/1d/c6deca822fbb5269c8346ab0eccaeb7bbf11bf create mode 100644 Java/spring/Farm/.not_git/objects/1f/9ac0575e06bf775bdae3f7e17387f83cf6cf85 create mode 100644 Java/spring/Farm/.not_git/objects/2b/786a777286ad8a3226309edc71445dd18ac796 create mode 100644 Java/spring/Farm/.not_git/objects/2d/c62b6e7a947d857f556f9c1b10224bca7ed227 create mode 100644 Java/spring/Farm/.not_git/objects/31/4b5a581017a6ba6032851f8d1157dce7768d4e create mode 100644 Java/spring/Farm/.not_git/objects/32/73876c7cb5657b5051757ff32fec7e7e1dd3d5 create mode 100644 Java/spring/Farm/.not_git/objects/34/4b908939ae4cf232346ab8ddeb99844de76f75 create mode 100644 Java/spring/Farm/.not_git/objects/34/5c72a664bda15f3be7207cad7b2305d0973a07 create mode 100644 Java/spring/Farm/.not_git/objects/42/ce488bec82122891631fc82928a3cde56cea38 create mode 100644 Java/spring/Farm/.not_git/objects/48/9b429e8399089f130b6e61c2adc740877cc605 create mode 100644 Java/spring/Farm/.not_git/objects/57/f72b2861244ee252e1674185e36baf7ef5bc42 create mode 100644 Java/spring/Farm/.not_git/objects/66/89b85beecde676054c39c2408085f41e6be6dc create mode 100644 Java/spring/Farm/.not_git/objects/71/bb7686de653af0724cbe5045a23c1c05442930 create mode 100644 Java/spring/Farm/.not_git/objects/72/f02996e6dea8a319008c8faa4144e739a4d777 create mode 100644 Java/spring/Farm/.not_git/objects/75/c6ea959156f2b854172f50c3c9c31afe7ba4d5 create mode 100644 Java/spring/Farm/.not_git/objects/7d/b42da7c511cd23d5c0087113049c400129a1e8 create mode 100644 Java/spring/Farm/.not_git/objects/7f/93135c49b765f8051ef9d0a6055ff8e46073d8 create mode 100644 Java/spring/Farm/.not_git/objects/81/45ac11c676ecf1b615ed2bb2f505fd65dbe9a0 create mode 100644 Java/spring/Farm/.not_git/objects/82/0f7ec75be5ed358e3c5b54925d9566ce14bd96 create mode 100644 Java/spring/Farm/.not_git/objects/82/4aca377fb0c5308c9a0258d48aea9a03c62793 create mode 100644 Java/spring/Farm/.not_git/objects/83/1d81cc77a3aae8f139b34d1fb46345bd45a079 create mode 100644 Java/spring/Farm/.not_git/objects/8a/c7f9a4aa7bcc3498e8ae9652a0d989ebd1c1a5 create mode 100644 Java/spring/Farm/.not_git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc create mode 100644 Java/spring/Farm/.not_git/objects/8c/2cd9e05f5765bd842f9b9cb72768ed68fdf907 create mode 100644 Java/spring/Farm/.not_git/objects/92/499e145fe0305106eaa344c474e5369be39926 create mode 100644 Java/spring/Farm/.not_git/objects/ac/4e1ae211f9dd91e0784387cb4ce5bc3fcd9a65 create mode 100644 Java/spring/Farm/.not_git/objects/ac/72c34e8acc978473b33b96ccae60a818c13855 create mode 100644 Java/spring/Farm/.not_git/objects/ac/8cb1bfefcafbffcc11abbf38b826df79bdcabb create mode 100644 Java/spring/Farm/.not_git/objects/b6/02d71a7cd17701d9e464be736c17694130da03 create mode 100644 Java/spring/Farm/.not_git/objects/bd/6cd0d8d022afbe0214cad569726133d52e07f1 create mode 100644 Java/spring/Farm/.not_git/objects/c2/065bc26202b2d072aca3efc3d1c2efad3afcbf create mode 100644 Java/spring/Farm/.not_git/objects/c5/2d737a1f275f0b7aac2f23e77153e8ccc39fc8 create mode 100644 Java/spring/Farm/.not_git/objects/c5/5a03b592bff473d4c07c08579db9e747796cd3 create mode 100644 Java/spring/Farm/.not_git/objects/cf/a1aefcd6bee0767f61d81319303236d3cd6713 create mode 100644 Java/spring/Farm/.not_git/objects/d3/e5f7f497c9d421f6d00dc8fc99074f34ee2be8 create mode 100644 Java/spring/Farm/.not_git/objects/e9/b376107f325548f99a248a8761b9d40cc82def create mode 100644 Java/spring/Farm/.not_git/objects/ef/14ba3b749fc0e21a0c46da4f0523d4922ad933 create mode 100644 Java/spring/Farm/.not_git/objects/f2/217ec89c1c1b8eaad09e49e3c7043adb2219a7 create mode 100644 Java/spring/Farm/.not_git/objects/f3/805c95953b939c5448a78cde340638970b7c73 create mode 100644 Java/spring/Farm/.not_git/objects/f4/0b699ec2fc66beb4add566506e54a5e790a7d9 create mode 100644 Java/spring/Farm/.not_git/refs/heads/master create mode 100644 Java/spring/Farm/build.gradle create mode 100644 Java/spring/Farm/settings.gradle create mode 100644 Java/spring/Farm/src/main/java/com/example/Farm/AnimalRepository.java create mode 100644 Java/spring/Farm/src/main/java/com/example/Farm/FarmApplication.java create mode 100644 Java/spring/Farm/src/main/java/com/example/Farm/Sheep.java create mode 100644 Java/spring/Farm/src/main/resources/application.properties create mode 100644 Java/spring/Farm/src/main/resources/schema-all.sql create mode 100644 Java/spring/Farm/src/main/resources/static/animals.csv create mode 100644 Java/spring/Farm/src/main/resources/templates/index.tpl create mode 100644 Java/spring/Farm/src/main/resources/templates/secret.tpl create mode 100644 Java/spring/Farm/src/test/java/com/example/Farm/FarmApplicationTests.java diff --git a/Java/spring/Farm/.not_git/HEAD b/Java/spring/Farm/.not_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/Java/spring/Farm/.not_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/Java/spring/Farm/.not_git/config b/Java/spring/Farm/.not_git/config new file mode 100644 index 0000000..515f483 --- /dev/null +++ b/Java/spring/Farm/.not_git/config @@ -0,0 +1,5 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true diff --git a/Java/spring/Farm/.not_git/description b/Java/spring/Farm/.not_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/Java/spring/Farm/.not_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/Java/spring/Farm/.not_git/gitui b/Java/spring/Farm/.not_git/gitui new file mode 100644 index 0000000..98aad99 --- /dev/null +++ b/Java/spring/Farm/.not_git/gitui @@ -0,0 +1,13 @@ +( + tab: 0, + diff: ( + ignore_whitespace: false, + context: 3, + interhunk_lines: 0, + ), + status_show_untracked: None, + commit_msgs: [ + "JPA/REST - Snapshot", + "oauth2", + ], +) \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/hooks/applypatch-msg.sample b/Java/spring/Farm/.not_git/hooks/applypatch-msg.sample new file mode 100755 index 0000000..a5d7b84 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/Java/spring/Farm/.not_git/hooks/commit-msg.sample b/Java/spring/Farm/.not_git/hooks/commit-msg.sample new file mode 100755 index 0000000..b58d118 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/Java/spring/Farm/.not_git/hooks/fsmonitor-watchman.sample b/Java/spring/Farm/.not_git/hooks/fsmonitor-watchman.sample new file mode 100755 index 0000000..23e856f --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/Java/spring/Farm/.not_git/hooks/post-update.sample b/Java/spring/Farm/.not_git/hooks/post-update.sample new file mode 100755 index 0000000..ec17ec1 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/Java/spring/Farm/.not_git/hooks/pre-applypatch.sample b/Java/spring/Farm/.not_git/hooks/pre-applypatch.sample new file mode 100755 index 0000000..4142082 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/Java/spring/Farm/.not_git/hooks/pre-commit.sample b/Java/spring/Farm/.not_git/hooks/pre-commit.sample new file mode 100755 index 0000000..e144712 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/Java/spring/Farm/.not_git/hooks/pre-merge-commit.sample b/Java/spring/Farm/.not_git/hooks/pre-merge-commit.sample new file mode 100755 index 0000000..399eab1 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/Java/spring/Farm/.not_git/hooks/pre-push.sample b/Java/spring/Farm/.not_git/hooks/pre-push.sample new file mode 100755 index 0000000..4ce688d --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/Java/spring/Farm/.not_git/hooks/pre-rebase.sample b/Java/spring/Farm/.not_git/hooks/pre-rebase.sample new file mode 100755 index 0000000..6cbef5c --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/Java/spring/Farm/.not_git/hooks/pre-receive.sample b/Java/spring/Farm/.not_git/hooks/pre-receive.sample new file mode 100755 index 0000000..a1fd29e --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/Java/spring/Farm/.not_git/hooks/prepare-commit-msg.sample b/Java/spring/Farm/.not_git/hooks/prepare-commit-msg.sample new file mode 100755 index 0000000..10fa14c --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/Java/spring/Farm/.not_git/hooks/push-to-checkout.sample b/Java/spring/Farm/.not_git/hooks/push-to-checkout.sample new file mode 100755 index 0000000..af5a0c0 --- /dev/null +++ b/Java/spring/Farm/.not_git/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/Java/spring/Farm/.not_git/index b/Java/spring/Farm/.not_git/index new file mode 100644 index 0000000000000000000000000000000000000000..d88137f0d0afe04fddf0edd6e99427d261c0f690 GIT binary patch literal 1400 zcmZ?q402{*U|<4bzEm%cWQzwYuB57U)B*Vn42;ao3|U-2xyB_749qWpBENuwdk(Qh zA4+1{bfIX?;`fIy9(upl>d$@#F1_^3lFanH{GwE_ULcXG{%nEz)X0rsx=p+gES|-6 z4`Ck2Oy+mm6O#4CS&2mq zILr@1HJ{I1ar zEh3y1_jBFplL}V!jxTy+`)BI+S7()H*Q+zIL+mLBg)eq<{7~J?ZIafxBl_LhXJxED zmWLb~TEEC;KfA-g4K+tEDX|0^VK~gQLp6^T1b3={VSNDw%R({~Le4)7+28^V$XMrN1K zrVBG@60kQoBQ>=EVjCh{H@`JAN<0s>=RTS}uT8usbXu-%XTFgwaWJjhTnN! z*6YWh2KNubo|05x{3VtEZOqI|Nv+T;DaZlE4Z@zCrD`5WjzaCZj%p7>(3+l&``@4X z{r`;M>irfw)b3aAJ++%b9j`sbsmVpDB~XjN_WaikK`TF!(Cj&P`RVsB(@$Pe{C0u& z#Gje${wD9VUocpJ>;XEx1V?&AOBW$PmBrA+;oEI`RdM 1697091226 +0200 commit (initial): JPA/REST - Snapshot +b602d71a7cd17701d9e464be736c17694130da03 1f9ac0575e06bf775bdae3f7e17387f83cf6cf85 anon 1697113827 +0200 commit: oauth2 diff --git a/Java/spring/Farm/.not_git/logs/refs/heads/master b/Java/spring/Farm/.not_git/logs/refs/heads/master new file mode 100644 index 0000000..1011377 --- /dev/null +++ b/Java/spring/Farm/.not_git/logs/refs/heads/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 b602d71a7cd17701d9e464be736c17694130da03 anon 1697091226 +0200 commit (initial): JPA/REST - Snapshot +b602d71a7cd17701d9e464be736c17694130da03 1f9ac0575e06bf775bdae3f7e17387f83cf6cf85 anon 1697113827 +0200 commit: oauth2 diff --git a/Java/spring/Farm/.not_git/objects/0a/dc8e1a53214b5f72ec3dfc95f7eacd239b7f27 b/Java/spring/Farm/.not_git/objects/0a/dc8e1a53214b5f72ec3dfc95f7eacd239b7f27 new file mode 100644 index 0000000000000000000000000000000000000000..4aa26008ff93d9626654f23cea1bffb6954b1517 GIT binary patch literal 3918 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 literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/0c/4e485baa3e2f555fcb52ca67f4c1fc49987a2b b/Java/spring/Farm/.not_git/objects/0c/4e485baa3e2f555fcb52ca67f4c1fc49987a2b new file mode 100644 index 0000000000000000000000000000000000000000..234e8311d3a5ffb4302ebb89a58c603986bd08cf GIT binary patch literal 446 zcmV;v0YUzF0i{zxZrd;r?A3aOZcGA*jhz-n1msWzDB2tv18yHcNo$2R$z_+66QRi8 zyCj_=hvZ}(B!Ze9?#vE5gI#^S`uxG0Y1A&%f2)NaYOzxXCCUMcrwmF+^vd< zYds=#l92RfzFNFzVq2VTlA%qAiXu?McHm)dA~1=H5R$W}@I69zD#f6pYIZ(l;F)32BW9S>BDW1M_ zHk%fIoMKrb$PtPv?1OY1{NYUG-SZTjDZt%tr{kIjv_-Nd1lbc2XI0$4DNv>&-Mkz6>8PE>ai&0Q~w#?N&k6w*UYD literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/0f/1dd27c2b2cfbbbc514230d68ccbb1448fecf07 b/Java/spring/Farm/.not_git/objects/0f/1dd27c2b2cfbbbc514230d68ccbb1448fecf07 new file mode 100644 index 0000000..3d4d72c --- /dev/null +++ b/Java/spring/Farm/.not_git/objects/0f/1dd27c2b2cfbbbc514230d68ccbb1448fecf07 @@ -0,0 +1,4 @@ +xUA +0a9@ Ѝ q 4&a"݊|6I j + ^2DY,oY*b Q؀U‹tMC,'Д)rF{:[Q +~NRO^zE^ \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/1d/c6deca822fbb5269c8346ab0eccaeb7bbf11bf b/Java/spring/Farm/.not_git/objects/1d/c6deca822fbb5269c8346ab0eccaeb7bbf11bf new file mode 100644 index 0000000000000000000000000000000000000000..ca9d9239b7821979ba4dd5c15aa7ab0b85da8543 GIT binary patch literal 74 zcmV-Q0JZ;k0V^p=O;s>6VlXiP0)^bf%shr3otqEh!&CRR=+BSܯyUZ,8($ <MǶ|')׉-7,X"E}b;w%$(1K4\{8mUܐ];J:GA-پLe=)@/- TVH I>^OZܤ*Pe \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/2d/c62b6e7a947d857f556f9c1b10224bca7ed227 b/Java/spring/Farm/.not_git/objects/2d/c62b6e7a947d857f556f9c1b10224bca7ed227 new file mode 100644 index 0000000000000000000000000000000000000000..98e09da8e1942cc1c38809fdd29e9490b7ee6f58 GIT binary patch literal 96 zcmV-m0H6PO0V^p=O;xb8WH2-^Ff%bxNH0oE$w}2MFG?&ZNG;OKN-ScipDY~Xxjpp< ztK82E%UI)oJV_|Nfn9Y$Q9e*pNoHy>!P6lr-jRHn(DB=XgGd)S;V#~tSGrq`Tx5$VKaF(<<(SThh-R$YQr zPoI#_u|`iJ-y2CUj!paDu+LJ0QC`qBMn2W5biD-t;^CY%Jp>RG-)OHpBs{~K%~Y5+ Z$oa~jUP);|KlX*rx7e<2*c+9WR!A6OP;CGJ literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/32/73876c7cb5657b5051757ff32fec7e7e1dd3d5 b/Java/spring/Farm/.not_git/objects/32/73876c7cb5657b5051757ff32fec7e7e1dd3d5 new file mode 100644 index 0000000000000000000000000000000000000000..7083ed4ff056d46f502e85422749b8530db13e8b GIT binary patch literal 74 zcmV-Q0JZ;k0V^p=O;s>6VlXiP0)^bf%shs@ITvnRP+Gr_N#xYk%%Vi&t9tAoA<`wO g#U%_Lvz_KO&*Ydd%$=8bXzg)__L^g?0EN#Q%%YJaR{#J2 literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/34/4b908939ae4cf232346ab8ddeb99844de76f75 b/Java/spring/Farm/.not_git/objects/34/4b908939ae4cf232346ab8ddeb99844de76f75 new file mode 100644 index 0000000000000000000000000000000000000000..c02ce880ee8c3894e749cf72cca04728126345cf GIT binary patch literal 161 zcmV;S0ABxi0iBLP4#FT106q5=en3)6fpX}<7(ZbAzye#k5y4QZ@%Nf&e1O-PWHL5p zyX}PB#2f-87V(ae9VK6ZO0)^Cy#N2|MREDFv#Z~g^@!VBw^p&3%2ERCSc>W0h H7_<+_{Ua6- literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/42/ce488bec82122891631fc82928a3cde56cea38 b/Java/spring/Farm/.not_git/objects/42/ce488bec82122891631fc82928a3cde56cea38 new file mode 100644 index 0000000000000000000000000000000000000000..77d37fcdc8fc1f15ae3c5d1ebbff8b6e8cf2396f GIT binary patch literal 242 zcmV5wO}wbFfcPQQP4}zEXhpI%P&f0IK&oxD2Zv)g`zc!-ygns z=>1x&Kl`Dol1ejkQuNY`5>s+g8F>6WqF34JhsK`{I+gzA;2+N!RoW&7K%f9sP`gEU z`BA~M%2y9?6biG(260t!Q8I&3aeGe9*3{~Nz|#89`fuv$WG`O@0MN8+fuXu~D*ylh literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/48/9b429e8399089f130b6e61c2adc740877cc605 b/Java/spring/Farm/.not_git/objects/48/9b429e8399089f130b6e61c2adc740877cc605 new file mode 100644 index 0000000000000000000000000000000000000000..d64905f89ed3918c0defdc57bbee753b9e8ad95c GIT binary patch literal 47 zcmV+~0MP$<0V^p=O;s>9WH2!R0)?!^vP6bP*ENF2%HDk3Ci+%;(^uBNskdJ)000YE F5Ztwk6W;&; literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/57/f72b2861244ee252e1674185e36baf7ef5bc42 b/Java/spring/Farm/.not_git/objects/57/f72b2861244ee252e1674185e36baf7ef5bc42 new file mode 100644 index 0000000000000000000000000000000000000000..8a611ba5347b6fa661379350f2f0ab40c56da0d2 GIT binary patch literal 46 zcmV+}0MY+=0V^p=O;s>9U@$QN0)^!KT!zwPucl56`?MoOTtDFO$-`3rs+U{^00Gqy E7oXn~3jhEB literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/66/89b85beecde676054c39c2408085f41e6be6dc b/Java/spring/Farm/.not_git/objects/66/89b85beecde676054c39c2408085f41e6be6dc new file mode 100644 index 0000000000000000000000000000000000000000..c94ad7fd5425fc4eefddddfcd34b5ef5b4142aa6 GIT binary patch literal 1287 zcmV+i1^D`S0mW8bZ`(E$-LnDzhdT{g+aa;rU@M9YE~>^#O{H`}XPxKt zlzj*OQ}FC}?`5mkl#4AD+S0m`aHA?(s!Wo6Ok`1q+udw79pTdNXtU~Ob#Ya9IJk&M)A$r69BsZS zGFeq*xL0K#HRqC}R7SRnUIY#eSYBk|2@u3}@9RmJLrD!sHDVWdYORh2brv9?E0 z`uYfH92x*jQBV*~X)q1wZ8RNBPrRSI!R%^$Go!m`GKogBK|H1Lgf7OT{$Ms3kMMR$ z(dZNXF&OnvNCHT7O+J=}>p+tggDle>qEpGuXqrh&nDBd5%0w+yf*Om}TC60k^n)}7 zN~2PmTvgoi3TdW3u}tO43hP$)vvSR8NkQ0;-`>0ngI+HP=#5P7HM+R;o__jn zKea>emfjhWqHC2E#;!}M5~DDAT=AVMQoX5;%)eU_Ke?)zhEr)N(+NmdVQ^&w_Jc5r z2db(Ee^X~eqZw8AGRxX62ibV)@bbCNN3(z`X`MfgfM@CtCZp&>+zY>^B?h@hx?b~G zA6o5ZV8&#`Z=p>tvTO^ggQMsx8%NjIa|~cS_l^tr-K}4ZIhGF^Hf2s^rLzZ#+1OIh z33x{E9}l1hyW?%lmR$TPNm&%Bjgj({d;RkZ7blD-lksF2 z-^Rm`AY$|!JVqeokwA*rHqEp1W9RdcxtKuvq83lIV2?S>#y; z>A7)`dPCRI?8-ac`M%Difbz2|7MOkIyXkK>%i=*9UF5QWDUXRw+-cyG(cO2!0WBY) z@6ffTBf-B0+99KXGirGdnZiip%t@>^+jBYyf84VF7uIHu+%;n=Sy#EcyYa{{<+}mC z7)H}64@Pg#?9VHw$)7g{$Eq~`_0+$1z6is+y@1E{(0Uzjw~o-piE_-y&|}6t$MXTp zLr}Dj-|@a-i0#Z8`U zPRJMp`LFW-Eh6WL1ivoQ(hd9WplN93D~~@8W^>#VrsH8ukRZO274F`Ge$8ufo8zWq z*M{$6DWn;ck|G7q+Aa3Vjh!cX$|^?P+nQln#1!PLc0>}*5BtdaJvPlk469h literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/71/bb7686de653af0724cbe5045a23c1c05442930 b/Java/spring/Farm/.not_git/objects/71/bb7686de653af0724cbe5045a23c1c05442930 new file mode 100644 index 0000000000000000000000000000000000000000..afdd18f68481d31de6ff27d2f35860da124dcb45 GIT binary patch literal 46 zcmV+}0MY+=0V^p=O;s>9WH2!R0tL6kqFjbgighRE$Vm6Cx-if4@o^Tb+e(tl0skKk EkCVz22LJ#7 literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/72/f02996e6dea8a319008c8faa4144e739a4d777 b/Java/spring/Farm/.not_git/objects/72/f02996e6dea8a319008c8faa4144e739a4d777 new file mode 100644 index 0000000000000000000000000000000000000000..bbf8d1687b7d1e0dc5c702a985796d77873c3d6f GIT binary patch literal 101 zcmV-r0Gj`J0V^p=O;xZkV=y!@Ff%bxNGvGG$xKcx$;{8wD=5k@NG&SKOf6pqiJP%LM9;LOp)YQt4_>+i literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/75/c6ea959156f2b854172f50c3c9c31afe7ba4d5 b/Java/spring/Farm/.not_git/objects/75/c6ea959156f2b854172f50c3c9c31afe7ba4d5 new file mode 100644 index 0000000000000000000000000000000000000000..5e71791bc5708f2e2b2c7e18771acfc1e1d45574 GIT binary patch literal 49 zcmV-10M7q-0V^p=O;s>9VK6ZO0)^Cy#N2|MREEzDF;k~nPo5LvvApM=37f@q?wVo% HEa(qQ(&rS( literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/7d/b42da7c511cd23d5c0087113049c400129a1e8 b/Java/spring/Farm/.not_git/objects/7d/b42da7c511cd23d5c0087113049c400129a1e8 new file mode 100644 index 0000000000000000000000000000000000000000..39a45175b9d17c718e905e88629526a31ce15cb3 GIT binary patch literal 49 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
<@OY4ZW@*o}=HInHwEE0ws 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

Ozv{FoR? z)jS>f7L`Y2KV&;H88bX`$TGmuV|ydw4P`5y%OIiROu$F1jy+$ak`g zpgv-gkWb@X)Pu3Rw>6V#dUV-qK?7*5%-qpArnwA7{PlB^^c5|$MJ zOYzHMA_Ec3Wob~P9~ToxVmvnKU9(L^*#9`Mg!SmXt8HacD2De)z^p%MHp?b9ir_|L zXq`35W*`}ZFEyJ|;4X#9HCHQ-N3IBZ^!%0ALbs=Hdq*IVC&{anLqM3tduStrd=WdT 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 RR6OABVCnd${{z9zLP>*~D1rb0 literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/81/45ac11c676ecf1b615ed2bb2f505fd65dbe9a0 b/Java/spring/Farm/.not_git/objects/81/45ac11c676ecf1b615ed2bb2f505fd65dbe9a0 new file mode 100644 index 0000000000000000000000000000000000000000..1d71afa44f79958d8308b26cb3eda0b2ce7f3dc6 GIT binary patch literal 45 zcmV+|0Mh?>0V^p=O;s>9U@$QN0)^!KT!v=Z#xv!MSH1XXx!G5KOS0=;*9DaT__Pk- Dpz##` literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/82/0f7ec75be5ed358e3c5b54925d9566ce14bd96 b/Java/spring/Farm/.not_git/objects/82/0f7ec75be5ed358e3c5b54925d9566ce14bd96 new file mode 100644 index 0000000000000000000000000000000000000000..5ac04018308e80a6748f12c21b80370090695434 GIT binary patch literal 137 zcmV;40CxX)0V^p=O;s>7Hf1n0FfcPQQE<%5%uUP*N-fAQ&Me6;7EZ_n@pk@rJOZfsxtev+2SB-_|(fzbQpg literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/82/4aca377fb0c5308c9a0258d48aea9a03c62793 b/Java/spring/Farm/.not_git/objects/82/4aca377fb0c5308c9a0258d48aea9a03c62793 new file mode 100644 index 0000000000000000000000000000000000000000..7721740b611ad72a6566c4a708f770c791c22a9d GIT binary patch literal 95 zcmV-l0HFVP0V^p=O;xZkV=y!@Ff%bxa7!%8bu1{z$xKcx$;{8w%StRuWH=hdymiw4 zFU405)Nq8)-TBeQ-u5wO}wbFfcPQQP4}zEXhpI%P&f0IK&oxD2Zv)g`zc!-ygns z=>1x&Kl`Dol1ejkQuNY`5>s+g8MG_1%8T08b{VM|%)3+Q5__@h_%ss(AW(oRsNJHw z{HWkr<*Nrc3WZtbI5281d;v7b+|(4RqMU*2PM=h;qIZ1J8{0oqzrQ-GJiA^UY8S+i za=oO)5{9(S9ntU3J}YDOu{`9^(E3F#``I0+vf|W|lFYpHVwkHYdCn7we_#;E_G+=q sk&>rovmeh?gSe`=D49X_*u7It`n!WNPncwFcysD?^?t$q01TvU8AyG4{Qv*} literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc b/Java/spring/Farm/.not_git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc new file mode 100644 index 0000000000000000000000000000000000000000..9d8f60531ebc0489c29cf79c42b6fc0e3583f9d9 GIT binary patch literal 16 Xcmbgf0V^p=O;s>6XD~4U0)?!^vP6dP@7fxPDt?cG9;Q3CKF(fW_jQjGM7k)o lIKQ+gIklLf=!538XZKbtmSpJZU*+iX+;YkFasU%y9;{suCRhLf literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/92/499e145fe0305106eaa344c474e5369be39926 b/Java/spring/Farm/.not_git/objects/92/499e145fe0305106eaa344c474e5369be39926 new file mode 100644 index 0000000000000000000000000000000000000000..93abbda70b680eea7449dcf39db02a5f9d8275e9 GIT binary patch literal 42 xcmbx1seNG_Z<*Rq`wD%d`&<&vh<=#4{LZ34+oap0v3jliM5-I=y literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/ac/4e1ae211f9dd91e0784387cb4ce5bc3fcd9a65 b/Java/spring/Farm/.not_git/objects/ac/4e1ae211f9dd91e0784387cb4ce5bc3fcd9a65 new file mode 100644 index 0000000000000000000000000000000000000000..2625ff82cbb29007fd09380abd04aebe0c3a4891 GIT binary patch literal 872 zcmV-u1DE`G0i{*RZrd;r?N#~;!Y3(6*(PmIX#zXW(g02lNf4kYih`ELG8>9iNy8T71j2WwZiqP!2K!y0yAhx}c`gTox0}N|-BsOUFvtx2Uk%s!YiVFKP|+ z%6mCP+d)+co-xand@&B%T3A@hq*T_czY=v0V>;$Cf4fD^>AA{5yokfOHK1n#Y|tLa z{D#B)MI!@Qt+`!NXMNQiPPnk3hf~I1&U|GY=kTg~m9pGV)aA z9{L^D#;TJ41x@GNPLE*1YGDobO#jJp#Z^7V(#4rz#t_$Dom!H+IO-oui%G{(P$U6M z90h}c0g4eLmUUK zga92!o4l@XJW3q28PZ55Tr#mr@e(R!xK(;d^y=4hvNlfwJx{838CW~O?A8azx6iPD z3ig~;71ku_edxKO`7vt-2MNw$(PX`GQL>q17UrZYPEzMN!b_Y(>qhSaOOW)un_jqV z$U~iHPzYRZ9*Nt2Uqhk?#IWVBDF~r9Yp~9VB8&Mzh=AdV?1U<~^p2Yz@`6owy`c0A zGMq|8|Cps9|9_fV|DME$Jca%`1SZ>|jiaF|OD6LXmvC82oKTXLxzMk7N8>zUx-cnu ze-MVIL#AOfNL+cFIqV&(ac`S^+9o?6Q(wq?MCn_86Vlb=4NA&o*r!Q%4U#GD#1w}} ztGOY^iwr9F(0C*bJg4FMDWdp7O_j#|=R91(pBl%^B>paPcdHao*`28lI_J!0Q(VB< z+%37@7vT28hYj+kW1lzM>ZR_*ExBFw7Am`i6h&@a5S(%mcSo+hlJ0g+(newIo`J+2 y8qOXp-I?M!DeiBp9eCApigX literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/b6/02d71a7cd17701d9e464be736c17694130da03 b/Java/spring/Farm/.not_git/objects/b6/02d71a7cd17701d9e464be736c17694130da03 new file mode 100644 index 0000000..eb1ea02 --- /dev/null +++ b/Java/spring/Farm/.not_git/objects/b6/02d71a7cd17701d9e464be736c17694130da03 @@ -0,0 +1,2 @@ +x11  +H#8BPP!ct#ЌJgpV&UP#:D.x#"({2)CSNm7,v576V?ܢF~7E|X]'~\q2 \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/bd/6cd0d8d022afbe0214cad569726133d52e07f1 b/Java/spring/Farm/.not_git/objects/bd/6cd0d8d022afbe0214cad569726133d52e07f1 new file mode 100644 index 0000000000000000000000000000000000000000..1674bbfe04636f44f1fe4b1b86c81b3a6bcff61f GIT binary patch literal 80 zcmV-W0I&ae0V^p=O;s>6XD~4U0)?!^vP6b2+?n$Z{Yl%mW$o3pfV_~U&nGOu36U;J mEzU13N=_|icrUWcx@7)=M^Zd)xBOX^uT0XqX$$~slph;yU?Xq< literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/c2/065bc26202b2d072aca3efc3d1c2efad3afcbf b/Java/spring/Farm/.not_git/objects/c2/065bc26202b2d072aca3efc3d1c2efad3afcbf new file mode 100644 index 0000000..392ebda --- /dev/null +++ b/Java/spring/Farm/.not_git/objects/c2/065bc26202b2d072aca3efc3d1c2efad3afcbf @@ -0,0 +1,2 @@ +xeMj0S8xghJ)nX: +,IBo_RJJ6hhPu]w}}1Ԗ`8%lSٶŊ4A I_n)U u]WG_zQ@GރFsƇ@ADb6nI[ ǮU;A"]@K=m3фsKR}ȷkv#^1 e8%LjE72g_=Κ2)% \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/c5/2d737a1f275f0b7aac2f23e77153e8ccc39fc8 b/Java/spring/Farm/.not_git/objects/c5/2d737a1f275f0b7aac2f23e77153e8ccc39fc8 new file mode 100644 index 0000000000000000000000000000000000000000..84c99fb0d5b01409930deb58f3ce64727bb90e3f GIT binary patch literal 46 zcmV+}0MY+=0V^p=O;s>9WH2!R0tL6kqFjb1uT$pr8;%-tfv{-R?Im)?^X9#IGtQ*WU@-Xj;Z@D^H7^lzT`_#%RV|Ty;iekKv8ZZo9Q@%M z&Kf5qn+fZNU3krnf_WE?IP04I+gesSYSGd(?%`&as|D^E7>0GO&C>w+9 zzO6DL?6|I_$hi|*{ga2V4j&xjN@>@ozrec1jAcR<7l?TDEO%Tt8R>{~$*l$N)tNAO zjHA)5a>DK6C?taQBJwy2fUy!4mp(5VO$-0MLxqMrEWUHuU}ByBDR*!MhZ|~mv8$0y zKi_^^Ocy^=Ld~=)K@>Em=*V;Lyx*Y6?;%BnazK+k9=9mU6^)N>f`lZ6M;OAs3!D|` z!vP)+0Zaf&j@(LE=2=MLkt_uLB3&IxLnt6AdgPCy{h4OZQlcA|n51oSgRU_OT8@Ky zQs^P0Ia+r^vo%^uG;#FQ*Y2iONn5ia8(}FFm!}rzSZgbsHajq{ z6`=0AAMbbD;ph(CS6FMC&2^aX8M);fOcZY6urj@g&U$@# z--p4wG$|3n E+ljFivj6}9 literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/cf/a1aefcd6bee0767f61d81319303236d3cd6713 b/Java/spring/Farm/.not_git/objects/cf/a1aefcd6bee0767f61d81319303236d3cd6713 new file mode 100644 index 0000000..cfb082c --- /dev/null +++ b/Java/spring/Farm/.not_git/objects/cf/a1aefcd6bee0767f61d81319303236d3cd6713 @@ -0,0 +1 @@ +x10 F>AS&&.DNF8qT;O/:ι (jq-_{;HhZJ^(ѭB] % <CRYկ}& \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/d3/e5f7f497c9d421f6d00dc8fc99074f34ee2be8 b/Java/spring/Farm/.not_git/objects/d3/e5f7f497c9d421f6d00dc8fc99074f34ee2be8 new file mode 100644 index 0000000..3d5ac7d --- /dev/null +++ b/Java/spring/Farm/.not_git/objects/d3/e5f7f497c9d421f6d00dc8fc99074f34ee2be8 @@ -0,0 +1 @@ +xU0 DYX&67 UhGJNZX,έVU$=Poff$%_X9-^M1y4`,(BA(xYcѿ+CjafzTͼBdەw3SכbW%L \ No newline at end of file diff --git a/Java/spring/Farm/.not_git/objects/e9/b376107f325548f99a248a8761b9d40cc82def b/Java/spring/Farm/.not_git/objects/e9/b376107f325548f99a248a8761b9d40cc82def new file mode 100644 index 0000000000000000000000000000000000000000..7eef3e62c3d004b31d6b8d9ca0f8971d89bd5fb0 GIT binary patch literal 85 zcmV-b0IL6Z0V^p=O;s>AWiT`_Ff%bx$jnPgt_u_rE{&`~Mli)%z`WsNJvJdulfTnDHUID~~DR literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/ef/14ba3b749fc0e21a0c46da4f0523d4922ad933 b/Java/spring/Farm/.not_git/objects/ef/14ba3b749fc0e21a0c46da4f0523d4922ad933 new file mode 100644 index 0000000000000000000000000000000000000000..826fe8b8bc1eceb947f91b5584cb36268471b3d2 GIT binary patch literal 67 zcmV-J0KETr0V^p=O;s>8U@$Z=Ff%bxNGvGG$xKcx$;{8wD=5k@NG&SKOf6>U7Ot3B ZDgQE4eQm`vZ?3h~_bznb0RTTy7U?HC8jk<~ literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/f2/217ec89c1c1b8eaad09e49e3c7043adb2219a7 b/Java/spring/Farm/.not_git/objects/f2/217ec89c1c1b8eaad09e49e3c7043adb2219a7 new file mode 100644 index 0000000000000000000000000000000000000000..a968485ad3dc113862af98b20c565f78ad1dde8d GIT binary patch literal 70 zcmV-M0J;Bo0V^p=O;s>8W-v4`Ff%bxa7!%8bu1{z$xKcx$;{6SNi8lZ*2_vPOJunG c^!u0TC$A`eyTE(m&rEiIlXu!L0H&=P7^PGl@Bjb+ literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/f3/805c95953b939c5448a78cde340638970b7c73 b/Java/spring/Farm/.not_git/objects/f3/805c95953b939c5448a78cde340638970b7c73 new file mode 100644 index 0000000000000000000000000000000000000000..4d2ab6fec54d390a2d644d9de05ace30d9924877 GIT binary patch literal 46 zcmV+}0MY+=0V^p=O;s>9WH2!R0tL6kqFjb1{<`DQPv4sM*+hp-ik+HvPGs*i0QqbV EpQ5%DNdN!< literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/objects/f4/0b699ec2fc66beb4add566506e54a5e790a7d9 b/Java/spring/Farm/.not_git/objects/f4/0b699ec2fc66beb4add566506e54a5e790a7d9 new file mode 100644 index 0000000000000000000000000000000000000000..a895a36cafc10d1af5ecec35d0567eca036c8005 GIT binary patch literal 45 zcmbV)x!&gK`uRT+hxJ%TU;du)$8vtRk B5QYE% literal 0 HcmV?d00001 diff --git a/Java/spring/Farm/.not_git/refs/heads/master b/Java/spring/Farm/.not_git/refs/heads/master new file mode 100644 index 0000000..08cb3e2 --- /dev/null +++ b/Java/spring/Farm/.not_git/refs/heads/master @@ -0,0 +1 @@ +1f9ac0575e06bf775bdae3f7e17387f83cf6cf85 diff --git a/Java/spring/Farm/build.gradle b/Java/spring/Farm/build.gradle new file mode 100644 index 0000000..d2f8663 --- /dev/null +++ b/Java/spring/Farm/build.gradle @@ -0,0 +1,48 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.1.4' + id 'io.spring.dependency-management' version '1.1.3' +} + +group = 'com.example' +version = '0.0.1-SNAPSHOT' + +java { + sourceCompatibility = '17' +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-groovy-templates' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + // + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + compileOnly 'org.projectlombok:lombok' + runtimeOnly 'com.h2database:h2' + runtimeOnly 'com.mysql:mysql-connector-j' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + // + implementation 'org.springframework.boot:spring-boot-starter-batch' + runtimeOnly 'org.hsqldb:hsqldb' +} + +tasks.named('test') { + useJUnitPlatform() +} + +apply plugin: 'java' +javadoc { + source = sourceSets.main.allJava + include 'com/**' +} diff --git a/Java/spring/Farm/settings.gradle b/Java/spring/Farm/settings.gradle new file mode 100644 index 0000000..92499e1 --- /dev/null +++ b/Java/spring/Farm/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'Farm' diff --git a/Java/spring/Farm/src/main/java/com/example/Farm/AnimalRepository.java b/Java/spring/Farm/src/main/java/com/example/Farm/AnimalRepository.java new file mode 100644 index 0000000..0f1dd27 --- /dev/null +++ b/Java/spring/Farm/src/main/java/com/example/Farm/AnimalRepository.java @@ -0,0 +1,6 @@ +package com.example.Farm; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface AnimalRepository extends JpaRepository {} + diff --git a/Java/spring/Farm/src/main/java/com/example/Farm/FarmApplication.java b/Java/spring/Farm/src/main/java/com/example/Farm/FarmApplication.java new file mode 100644 index 0000000..e33cd11 --- /dev/null +++ b/Java/spring/Farm/src/main/java/com/example/Farm/FarmApplication.java @@ -0,0 +1,108 @@ +package com.example.Farm; + +import java.util.List; +import jakarta.persistence.*; +import org.springframework.boot.*; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.ui.Model; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import static org.springframework.security.config.Customizer.withDefaults; + +@SpringBootApplication +public +class FarmApplication { + public + record FarmAnimal(String name, String animal, String type, int quantity, String location) { + } + + @Entity + public static + class Animal { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + Long id; + + public String name; + int age; + int weight; + + Animal() { ; } + Animal(String name, int age, int weight) { + this.name = name; + this.age = age; + this.weight = weight; + } + + public int getAge(){ + return this.age; + } + } + + @RestController + static + class Controller { + private final + AnimalRepository repository; + + Controller(AnimalRepository repository) { + this.repository = repository; + } + + @GetMapping("/") + ModelAndView index(){ + ModelAndView mav = new ModelAndView(); + mav.setViewName("index"); + return mav; + } + + @GetMapping("/list") + List say_hello(){ + return repository.findAll(); + } + + @GetMapping("/login") + String login(){ + return "login"; + } + + @GetMapping("/secret") + ModelAndView secret(){ + ModelAndView mav = new ModelAndView(); + mav.setViewName("secret"); + return mav; + } + } + + @Bean + public + CommandLineRunner cmdlr(AnimalRepository repository) { + return (args) -> { + repository.save(new Animal("Bob", 3, 10)); + }; + } + + @Bean + public + SecurityFilterChain myFilter(HttpSecurity http) throws Exception { + return http + .authorizeHttpRequests( + auth -> { + auth.requestMatchers("/secret").authenticated(); + auth.requestMatchers("/*").permitAll(); + } + ) + .oauth2Login(withDefaults()) + .build() + ; + } + + public static + void main(String[] args) { + SpringApplication.run(FarmApplication.class, args); + } + +} diff --git a/Java/spring/Farm/src/main/java/com/example/Farm/Sheep.java b/Java/spring/Farm/src/main/java/com/example/Farm/Sheep.java new file mode 100644 index 0000000..cfa1aef --- /dev/null +++ b/Java/spring/Farm/src/main/java/com/example/Farm/Sheep.java @@ -0,0 +1,5 @@ +//package com.example.Farm; +// +//public class Sheep extends Animal { +// boolean is_ready_for_shearing; +//} diff --git a/Java/spring/Farm/src/main/resources/application.properties b/Java/spring/Farm/src/main/resources/application.properties new file mode 100644 index 0000000..344b908 --- /dev/null +++ b/Java/spring/Farm/src/main/resources/application.properties @@ -0,0 +1,4 @@ +loggin.level.org.springframework.security=TRACE + +spring.security.oauth2.client.registration.github.client-id=661e96c42931da0e9c71 +spring.security.oauth2.client.registration.github.client-secret=a3a96e533eb83a6879df95d61d5bb064ab98bc77 diff --git a/Java/spring/Farm/src/main/resources/schema-all.sql b/Java/spring/Farm/src/main/resources/schema-all.sql new file mode 100644 index 0000000..2bce6cc --- /dev/null +++ b/Java/spring/Farm/src/main/resources/schema-all.sql @@ -0,0 +1,9 @@ +DROP TABLE FarmAnimals IF EXISTS; +CREATE TABLE FarmAnimals ( + ID INT PRIMARY KEY AUTO_INCREMENT, + Name VARCHAR(50) NOT NULL, + Animal VARCHAR(50) NOT NULL, + Type VARCHAR(50), + Quantity INT, + Location VARCHAR(50) +); diff --git a/Java/spring/Farm/src/main/resources/static/animals.csv b/Java/spring/Farm/src/main/resources/static/animals.csv new file mode 100644 index 0000000..66c26da --- /dev/null +++ b/Java/spring/Farm/src/main/resources/static/animals.csv @@ -0,0 +1,48 @@ +Name,Animal,Type,Quantity,Location +Molly,Cow,Jersey,4,Barn +Buddy,Horse,Quarter Horse,2,Stable +Cluckers,Chicken,Rhode Island Red,15,Coop +Wilbur,Pig,Yorkshire,5,Pen +Daisy,Goat,Nubian,3,Barn +Charlie,Rooster,Barred Plymouth Rock,1,Coop +Bessie,Cow,Holstein,6,Barn +Bailey,Horse,Appaloosa,3,Stable +Feathers,Chicken,Leghorn,12,Coop +Porkchop,Pig,Hampshire,4,Pen +Lola,Goat,Alpine,4,Barn +Sammy,Rooster,Orpington,2,Coop +Rosie,Cow,Hereford,3,Barn +Rusty,Horse,Arabian,2,Stable +Penny,Chicken,Wyandotte,8,Coop +Oinkers,Pig,Berkshire,6,Pen +Maggie,Goat,Saanen,2,Barn +Peepers,Chicken,Plymouth Rock,7,Coop +Fluffy,Horse,Shire,1,Stable +Wiggles,Pig,Tamworth,2,Pen +Trixie,Goat,Oberhasli,3,Barn +Sunshine,Chicken,Sussex,9,Coop +Squealers,Pig,Gloucestershire Old Spot,5,Pen +Hazel,Goat,LaMancha,2,Barn +Roxy,Cow,Angus,5,Barn +Thunder,Horse,Clydesdale,1,Stable +Henny,Chicken,Australorp,6,Coop +Bacon,Pig,Duroc,4,Pen +Billy,Goat,Boer,4,Barn +Lucy,Cow,Simmental,3,Barn +Blue,Horse,Friesian,2,Stable +Nugget,Chicken,Silkie,5,Coop +Hamlet,Pig,Pietrain,3,Pen +Mocha,Goat,Pygmy,2,Barn +Princess,Cow,Gelbvieh,4,Barn +Misty,Horse,Mustang,1,Stable +Buttercup,Chicken,Easter Egger,10,Coop +Truffles,Pig,Red Wattle,3,Pen +Bella,Goat,Toggenburg,2,Barn +Barnie,Chicken,Buff Orpington,8,Coop +Pepper,Pig,Yorkshire,4,Pen +Spot,Goat,Kiko,2,Barn +Duke,Cow,Charolais,4,Barn +Midnight,Horse,Andalusian,1,Stable +Chirpy,Chicken,Jersey Giant,5,Coop +Winston,Pig,Berkshire,6,Pen +Lulu,Goat,Nigerian Dwarf,2,Barn diff --git a/Java/spring/Farm/src/main/resources/templates/index.tpl b/Java/spring/Farm/src/main/resources/templates/index.tpl new file mode 100644 index 0000000..314b5a5 --- /dev/null +++ b/Java/spring/Farm/src/main/resources/templates/index.tpl @@ -0,0 +1,32 @@ +yieldUnescaped '' +html(lang:'en') { + body { + div { + h1 { yield 'Index' } + } + + div { + a (href: '/list') { + button { + yield 'list' + } + } + } + + div { + a (href: '/login') { + button { + yield 'login' + } + } + } + + div { + a (href: '/secret') { + button { + yield 'secret' + } + } + } + } +} diff --git a/Java/spring/Farm/src/main/resources/templates/secret.tpl b/Java/spring/Farm/src/main/resources/templates/secret.tpl new file mode 100644 index 0000000..ac8cb1b --- /dev/null +++ b/Java/spring/Farm/src/main/resources/templates/secret.tpl @@ -0,0 +1,6 @@ +yieldUnescaped '' +html(lang:'en') { + body { + yield 'secret' + } +} diff --git a/Java/spring/Farm/src/test/java/com/example/Farm/FarmApplicationTests.java b/Java/spring/Farm/src/test/java/com/example/Farm/FarmApplicationTests.java new file mode 100644 index 0000000..d3e5f7f --- /dev/null +++ b/Java/spring/Farm/src/test/java/com/example/Farm/FarmApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.Farm; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class FarmApplicationTests { + + @Test + void contextLoads() { + } + +}