diff --git a/phonebook/.gitattributes b/phonebook/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..00a51aff5e5a83d6313f3bd15fadc601a205b66f --- /dev/null +++ b/phonebook/.gitattributes @@ -0,0 +1,6 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# These are explicitly windows files and should use crlf +*.bat text eol=crlf + diff --git a/phonebook/.gitignore b/phonebook/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f198ec547b9190a094cdd1e56458a0ed7b8c23c8 --- /dev/null +++ b/phonebook/.gitignore @@ -0,0 +1,216 @@ +# Created by https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode +# Edit at https://www.gitignore.io/?templates=java,gradle,eclipse,intellij,visualstudiocode + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +.idea/**/sonarlint/ + +# SonarQube Plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator/ + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### Gradle Patch ### +**/build/ + +# End of https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode \ No newline at end of file diff --git a/phonebook/bin/main/io/fp/phonebook/App.class b/phonebook/bin/main/io/fp/phonebook/App.class deleted file mode 100644 index de2da0176f6859bc578771cb4631221f04a705d8..0000000000000000000000000000000000000000 Binary files a/phonebook/bin/main/io/fp/phonebook/App.class and /dev/null differ diff --git a/phonebook/bin/main/io/fp/phonebook/PhoneBook.class b/phonebook/bin/main/io/fp/phonebook/PhoneBook.class deleted file mode 100644 index e6b23d6e2d1991ad97666ad9f2a07a484d690d3c..0000000000000000000000000000000000000000 Binary files a/phonebook/bin/main/io/fp/phonebook/PhoneBook.class and /dev/null differ diff --git a/phonebook/bin/main/io/fp/phonebook/PhoneBookException.class b/phonebook/bin/main/io/fp/phonebook/PhoneBookException.class deleted file mode 100644 index 6a792f5fd24fd3c2853dd0181f1871ce266831cf..0000000000000000000000000000000000000000 Binary files a/phonebook/bin/main/io/fp/phonebook/PhoneBookException.class and /dev/null differ diff --git a/phonebook/bin/test/io/fp/phonebook/PhoneBookTest.class b/phonebook/bin/test/io/fp/phonebook/PhoneBookTest.class deleted file mode 100644 index 2e78c5b0846fab5a3a0f567131f9b08b0e2984d5..0000000000000000000000000000000000000000 Binary files a/phonebook/bin/test/io/fp/phonebook/PhoneBookTest.class and /dev/null differ diff --git a/phonebook/build.gradle b/phonebook/build.gradle index 037b0dcbbfcadee2ed538f42e89693b81dd390fc..214ea8ead3ad540e622efeeada4c170ea8c66362 100644 --- a/phonebook/build.gradle +++ b/phonebook/build.gradle @@ -3,14 +3,14 @@ * * This generated file contains a sample Java project to get you started. * For more details take a look at the Java Quickstart chapter in the Gradle - * User Manual available at https://docs.gradle.org/5.6.1/userguide/tutorial_java_projects.html + * User Manual available at https://docs.gradle.org/6.3/userguide/tutorial_java_projects.html */ plugins { // Apply the java plugin to add support for Java id 'java' - // Apply the application plugin to add support for building a CLI application + // Apply the application plugin to add support for building a CLI application. id 'application' } @@ -22,17 +22,17 @@ repositories { dependencies { // This dependency is used by the application. - implementation 'com.google.guava:guava:28.0-jre' + implementation 'com.google.guava:guava:28.2-jre' // Use JUnit Jupiter API for testing. - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' // Use JUnit Jupiter Engine for testing. - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0' } application { - // Define the main class for the application + // Define the main class for the application. mainClassName = 'io.fp.phonebook.App' } diff --git a/phonebook/gradle/wrapper/gradle-wrapper.jar b/phonebook/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644 Binary files a/phonebook/gradle/wrapper/gradle-wrapper.jar and b/phonebook/gradle/wrapper/gradle-wrapper.jar differ diff --git a/phonebook/gradle/wrapper/gradle-wrapper.properties b/phonebook/gradle/wrapper/gradle-wrapper.properties index 59b5f89288842bf8ef144d802e597dcf482b3d70..a4b4429748d92848a3d820c7b099fbeb941066ae 100644 --- a/phonebook/gradle/wrapper/gradle-wrapper.properties +++ b/phonebook/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/phonebook/gradlew b/phonebook/gradlew index 83f2acfdc319a24e8766cca78f32474ad7a22dd6..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3 100644 --- a/phonebook/gradlew +++ b/phonebook/gradlew @@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,14 +175,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/phonebook/gradlew.bat b/phonebook/gradlew.bat index 9618d8d9607cd91a0efb866bcac4810064ba6fac..62bd9b9ccefea2b65ae41e5d9a545e2021b90a1d 100644 --- a/phonebook/gradlew.bat +++ b/phonebook/gradlew.bat @@ -29,6 +29,9 @@ 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" diff --git a/phonebook/settings.gradle b/phonebook/settings.gradle index 33974448d524157eb63e8a0482ef297f5d253ef4..43621cc760e4afdf4cb9308dd5ac963f116b471d 100644 --- a/phonebook/settings.gradle +++ b/phonebook/settings.gradle @@ -4,7 +4,7 @@ * The settings file is used to specify which projects to include in your build. * * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/5.6.1/userguide/multi_project_builds.html + * in the user manual at https://docs.gradle.org/6.3/userguide/multi_project_builds.html */ -rootProject.name = 'phonebook' +rootProject.name = 'campus' diff --git a/phonebook/src/test/java/io/fp/phonebook/PhoneBookTest.java b/phonebook/src/test/java/io/fp/phonebook/PhoneBookTest.java deleted file mode 100644 index 2f3bf038a2cf15fd73c90b51ca005b3fec9df8c5..0000000000000000000000000000000000000000 --- a/phonebook/src/test/java/io/fp/phonebook/PhoneBookTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package io.fp.phonebook; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; - -import java.util.Map; -import java.util.Set; - - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -public class PhoneBookTest { - PhoneBook phoneBook; - Integer[] numbers = { 1, 2, 3 }; - - @BeforeEach - public void setUp() { - phoneBook = new PhoneBook(); - } - - @Test - public void testCreateContactArray() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person", numbers); - for (int i = 0; i < numbers.length; i++) { - assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(numbers[i])); - } - assertEquals(3, phoneBook.getPhoneNumbers("Person").size()); - - }); - } - - @Test - public void testCreateContactArrayTwoTimes() throws PhoneBookException { - assertThrows(PhoneBookException.class, () -> { - phoneBook.createContact("Person", numbers); - phoneBook.createContact("Person", numbers); - }); - } - - @Test - public void testCreateContactSingleNumber() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person", 1); - assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(1)); - assertEquals(1, phoneBook.getPhoneNumbers("Person").size()); - - }); - } - - @Test - public void testDeleteEntryByPhoneNumber() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person1", numbers); - phoneBook.createContact("Person2", 4); - String deletedPerson = phoneBook.deleteEntryByPhoneNumber(1); - assertEquals("Person1", deletedPerson); - assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(2)); - assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(3)); - assertEquals(true, phoneBook.getPhoneNumbers("Person2").contains(4)); - assertEquals(2, phoneBook.getPhoneNumbers("Person1").size()); - assertEquals(1, phoneBook.getPhoneNumbers("Person2").size()); - }); - } - - @Test - public void testDeleteEntriesOfAPerson() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person1", numbers); - phoneBook.createContact("Person2", 4); - Set<Integer> deletedSet = phoneBook.deleteEntriesOfAPerson("Person1"); - - for (int i = 0; i < numbers.length; i++) { - assertEquals(true, deletedSet.contains(numbers[i])); - } - assertEquals(true, phoneBook.getPhoneNumbers("Person2").contains(4)); - assertEquals(1, phoneBook.getPhoneNumbers("Person2").size()); - assertEquals(0, phoneBook.getPhoneNumbers("Person1").size()); - }); - } - - @Test - public void testDeleteEntriesOfAPersonUnknownPerson() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person1", numbers); - Set<Integer> deletedSet = phoneBook.deleteEntriesOfAPerson("Person2"); - for (int i = 0; i < numbers.length; i++) { - assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(numbers[i])); - } - assertEquals(3, phoneBook.getPhoneNumbers("Person1").size()); - assertEquals(0, deletedSet.size()); - }); - } - - @Test - public void testDeleteEntryByPhoneNumberUnknownNumber() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person", numbers); - String deletedPerson = phoneBook.deleteEntryByPhoneNumber(4); - assertEquals(null, deletedPerson); - for (int i = 0; i < numbers.length; i++) { - assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(numbers[i])); - } - assertEquals(3, phoneBook.getPhoneNumbers("Person").size()); - }); - } - - @Test - public void testGetMap() { - assertDoesNotThrow(()-> { - phoneBook.createContact("Person", numbers); - Map<Integer, String> phoneBookMap = phoneBook.getBook(); - assertEquals("Person", phoneBookMap.get(1)); - assertEquals("Person", phoneBookMap.get(2)); - assertEquals("Person", phoneBookMap.get(3)); - assertEquals(3, phoneBookMap.size()); - }); - } - -} diff --git a/phonebook/src/test/java/io/fp/phonebook/test.keep b/phonebook/src/test/java/io/fp/phonebook/test.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391