From ff253c31dda8ad7583dd13ce6796dc7d303fe9ec Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 16 Oct 2017 14:22:38 +0300 Subject: [PATCH 1/4] codestyle format --- kek2/Java | 1 + 1 file changed, 1 insertion(+) create mode 160000 kek2/Java diff --git a/kek2/Java b/kek2/Java new file mode 160000 index 0000000..d207fbc --- /dev/null +++ b/kek2/Java @@ -0,0 +1 @@ +Subproject commit d207fbc8f6316ee94011c17d43e488e48f2e61eb From 66865afcebe7d64f67ad9e3b530bbcdceee4545f Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 16 Oct 2017 14:23:18 +0300 Subject: [PATCH 2/4] codestyle format --- Untitled Folder 2/Java/.gitignore | 49 +++++++++++ Untitled Folder 2/Java/.idea/compiler.xml | 16 ++++ Untitled Folder 2/Java/.idea/misc.xml | 13 +++ Untitled Folder 2/Java/.idea/modules.xml | 8 ++ Untitled Folder 2/Java/Maybe.iml | 17 ++++ Untitled Folder 2/Java/pom.xml | 36 ++++++++ .../java/ru/spbau/mit/kazakov/Maybe/Main.java | 63 +++++++++++++ .../ru/spbau/mit/kazakov/Maybe/Maybe.java | 83 ++++++++++++++++++ .../kazakov/Maybe/getNothingException.java | 7 ++ .../ru/spbau/mit/kazakov/Maybe/MainTest.java | 47 ++++++++++ .../ru/spbau/mit/kazakov/Maybe/MaybeTest.java | 60 +++++++++++++ .../ru/spbau/mit/kazakov/Maybe/Main.class | Bin 0 -> 3978 bytes .../ru/spbau/mit/kazakov/Maybe/Maybe.class | Bin 0 -> 2100 bytes .../kazakov/Maybe/getNothingException.class | Bin 0 -> 339 bytes .../compile/default-compile/createdFiles.lst | 3 + .../compile/default-compile/inputFiles.lst | 3 + .../default-testCompile/createdFiles.lst | 2 + .../default-testCompile/inputFiles.lst | 2 + ...ST-ru.spbau.mit.kazakov.Maybe.MainTest.xml | 64 ++++++++++++++ ...T-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml | 70 +++++++++++++++ .../ru.spbau.mit.kazakov.Maybe.MainTest.txt | 4 + .../ru.spbau.mit.kazakov.Maybe.MaybeTest.txt | 4 + .../ru/spbau/mit/kazakov/Maybe/MainTest.class | Bin 0 -> 2225 bytes .../spbau/mit/kazakov/Maybe/MaybeTest.class | Bin 0 -> 3912 bytes 24 files changed, 551 insertions(+) create mode 100644 Untitled Folder 2/Java/.gitignore create mode 100644 Untitled Folder 2/Java/.idea/compiler.xml create mode 100644 Untitled Folder 2/Java/.idea/misc.xml create mode 100644 Untitled Folder 2/Java/.idea/modules.xml create mode 100644 Untitled Folder 2/Java/Maybe.iml create mode 100644 Untitled Folder 2/Java/pom.xml create mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java create mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java create mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java create mode 100644 Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java create mode 100644 Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java create mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class create mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Maybe.class create mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/getNothingException.class create mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MainTest.xml create mode 100644 Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml create mode 100644 Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt create mode 100644 Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt create mode 100644 Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class create mode 100644 Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class diff --git a/Untitled Folder 2/Java/.gitignore b/Untitled Folder 2/Java/.gitignore new file mode 100644 index 0000000..345e61a --- /dev/null +++ b/Untitled Folder 2/Java/.gitignore @@ -0,0 +1,49 @@ +# 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/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# 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 diff --git a/Untitled Folder 2/Java/.idea/compiler.xml b/Untitled Folder 2/Java/.idea/compiler.xml new file mode 100644 index 0000000..067d5ff --- /dev/null +++ b/Untitled Folder 2/Java/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/.idea/misc.xml b/Untitled Folder 2/Java/.idea/misc.xml new file mode 100644 index 0000000..e8942bd --- /dev/null +++ b/Untitled Folder 2/Java/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/.idea/modules.xml b/Untitled Folder 2/Java/.idea/modules.xml new file mode 100644 index 0000000..65c89bb --- /dev/null +++ b/Untitled Folder 2/Java/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/Maybe.iml b/Untitled Folder 2/Java/Maybe.iml new file mode 100644 index 0000000..57f498f --- /dev/null +++ b/Untitled Folder 2/Java/Maybe.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/pom.xml b/Untitled Folder 2/Java/pom.xml new file mode 100644 index 0000000..fe36c91 --- /dev/null +++ b/Untitled Folder 2/Java/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + ru.spbau.mit.kazakov.Maybe + Maybe + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + junit + junit + 4.8 + + + org.jetbrains + annotations + 13.0 + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java new file mode 100644 index 0000000..8bd1447 --- /dev/null +++ b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java @@ -0,0 +1,63 @@ +package ru.spbau.mit.kazakov.Maybe; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.*; +import java.util.ArrayList; +import java.util.Scanner; + +/** + * Reads numbers from input file and writes squared values to output file. If read data isn't a number writes "null" instead. + */ +public class Main { + /** + * Primary method. + * + * @param args the first argument is input file and the second one is output file + */ + public static void main(@NotNull String[] args) throws IOException, getNothingException { + ArrayList> readData = new ArrayList<>(); + try (Scanner scanner = new Scanner(new File(args[0]))) { + while (scanner.hasNextLine()) { + Integer value = tryParse(scanner.nextLine()); + if (value == null) { + readData.add(Maybe.nothing()); + } else { + readData.add(Maybe.just(value)); + } + } + } + + ArrayList> squaredNumber = new ArrayList<>(); + for (Maybe maybeInt : readData) { + squaredNumber.add(maybeInt.map(value -> value * value)); + } + + try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(args[1]))) { + for (Maybe maybeInt : squaredNumber) { + if (maybeInt.isPresent()) { + bufferedWriter.write(maybeInt.get().toString()); + } else { + bufferedWriter.write("null"); + } + bufferedWriter.newLine(); + } + } + } + + /** + * Parses specified String to Integer. + * + * @return Integer if String was a number, and null otherwise + */ + @Nullable + private static Integer tryParse(@NotNull String parsingString) { + try { + return Integer.parseInt(parsingString); + } catch (NumberFormatException e) { + return null; + } + } + +} diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java new file mode 100644 index 0000000..b0216f4 --- /dev/null +++ b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java @@ -0,0 +1,83 @@ +package ru.spbau.mit.kazakov.Maybe; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Function; + +/** + * Generic container for storing a value or nothing. + */ +public class Maybe { + @Nullable + private final T value; + + /** + * Assigns specified value to class's storing field. + * + * @param t specified value + */ + private Maybe(T t) { + value = t; + } + + /** + * Creates an object for storing specified value. + * + * @param t specified value + * @return new object + */ + @NotNull + public static Maybe just(T t) { + return new Maybe(t); + } + + /** + * Creates an object for strong nothing. + * + * @return new object + */ + @NotNull + public static Maybe nothing() { + return new Maybe(null); + } + + /** + * Returns stored value or throws exception if there is no value. + * + * @return stored value + * @throws getNothingException if there is no stored value + */ + @NotNull + public T get() throws getNothingException { + if (isPresent()) { + return value; + } else { + throw new getNothingException(); + } + } + + /** + * Checks if there is stored value. + * + * @return true if there is stored value, and false otherwise + */ + public boolean isPresent() { + return value != null; + } + + /** + * Maps stored value of type T to another value of type U. + * + * @param mapper a function acting from T to V + * @param image's type + * @return Maybe object storing mapped value if there is a storing value, and Maybe object storing nothing otherwise + */ + @NotNull + public Maybe map(@NotNull Function mapper) { + if (!isPresent()) { + return nothing(); + } + return just(mapper.apply(value)); + } +} diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java new file mode 100644 index 0000000..7789bf9 --- /dev/null +++ b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java @@ -0,0 +1,7 @@ +package ru.spbau.mit.kazakov.Maybe; + +/** + * Exception thrown when there is no value to return. + */ +public class getNothingException extends Exception { +} diff --git a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java new file mode 100644 index 0000000..90c6fe1 --- /dev/null +++ b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java @@ -0,0 +1,47 @@ +package ru.spbau.mit.kazakov.Maybe; + +import org.junit.Test; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Scanner; + +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; + +import static org.junit.Assert.*; + +public class MainTest { + @Rule + public TemporaryFolder testFolder = new TemporaryFolder(); + + @Test + public void testMain() throws IOException, getNothingException { + File input = testFolder.newFile("input.txt"); + File output = testFolder.newFile("output.txt"); + + try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(input))) { + bufferedWriter.write("1\n0\n-3\nj\njava\n1b\n11 22\n"); + } + + Main.main(new String[]{input.getAbsolutePath(), output.getAbsolutePath()}); + + + assertEquals("1\n0\n9\nnull\nnull\nnull\nnull\n", new String(Files.readAllBytes(Paths.get(output.getAbsolutePath())))); + } + + @Test + public void testMainEmpty() throws IOException, getNothingException { + File input = testFolder.newFile("input.txt"); + File output = testFolder.newFile("output.txt"); + + Main.main(new String[]{input.getAbsolutePath(), output.getAbsolutePath()}); + + assertEquals("", new String(Files.readAllBytes(Paths.get(output.getAbsolutePath())))); + } + +} \ No newline at end of file diff --git a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java new file mode 100644 index 0000000..54b7846 --- /dev/null +++ b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java @@ -0,0 +1,60 @@ +package ru.spbau.mit.kazakov.Maybe; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class MaybeTest { + @Test + public void testJustInteger() throws getNothingException { + Maybe maybeInteger = Maybe.just(5); + int storedValue = maybeInteger.get(); + assertEquals(5, storedValue); + } + + @Test + public void testNothingBoolean() { + Maybe maybeBoolean = Maybe.nothing(); + assertFalse(maybeBoolean.isPresent()); + } + + @Test + public void testGetDouble() throws getNothingException { + Maybe maybeDouble = Maybe.just(-7.0); + double storedValue = maybeDouble.get(); + assertEquals(-7.0, storedValue, 0.000000001); + } + + @Test(expected = getNothingException.class) + public void testGetCharacterThrowsException() throws getNothingException { + Maybe maybeCharacter = Maybe.nothing(); + char storedValue = maybeCharacter.get(); + } + + @Test + public void testIsPresentFalse() { + Maybe maybeBoolean = Maybe.nothing(); + assertFalse(maybeBoolean.isPresent()); + } + + @Test + public void testIsPresentTrue() { + Maybe maybeString = Maybe.just("abacaba"); + assertTrue(maybeString.isPresent()); + } + + @Test + public void testMapJust() throws getNothingException { + Maybe maybeInteger = Maybe.just(10); + Maybe mappedMaybeInteger = maybeInteger.map(value -> value * value); + int mappedValue = mappedMaybeInteger.get(); + assertEquals(100, mappedValue); + } + + @Test + public void testMapNothing() throws getNothingException { + Maybe maybeInteger = Maybe.nothing(); + Maybe mappedMaybeInteger = maybeInteger.map(value -> value * value); + assertFalse(mappedMaybeInteger.isPresent()); + } +} \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class b/Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..6bafd51dadac3eb34fc19d52644fad85854c4d65 GIT binary patch literal 3978 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml b/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml new file mode 100644 index 0000000..8af6efe --- /dev/null +++ b/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt new file mode 100644 index 0000000..adbb610 --- /dev/null +++ b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: ru.spbau.mit.kazakov.Maybe.MainTest +------------------------------------------------------------------------------- +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 sec - in ru.spbau.mit.kazakov.Maybe.MainTest diff --git a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt new file mode 100644 index 0000000..15d544e --- /dev/null +++ b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: ru.spbau.mit.kazakov.Maybe.MaybeTest +------------------------------------------------------------------------------- +Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.07 sec - in ru.spbau.mit.kazakov.Maybe.MaybeTest diff --git a/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class b/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3f48d60837c6182b50031c73aeaf1e02f1a8ebe6 GIT binary patch literal 2225 zcma)7*-{%v6g`b3MvMou8Y4Ri;3aGZ0nTEC?SwUUB9;KbmdQ4f1{fI4$fFr!@{o^6 z-s0C(`6;P#RRUC~#BYAcM}?f85kgSdNr8H~ef#ve=icu5`=3Al0`MM6DlTJGK}tmp zM(c11V{zP;lRI(TRq&C5k5$xRTtyrcaZJj7N;cC9W>hrb69xBF+{dRXK0`W=Srv1b zSFwQ4RWxBy#S)g|_(H*of(HVsXOz4d$I2V7Kv&vv*OQyRZF))9w~SJ9*(ekpS9f

nBUatnMcZWVWS$r*An=lC%0w)?jPe z%Z!0%#bqpVE^t2UudNxbk$>Qto(!!$y{SLZlctlLII+TQG1D&k9`{sSX3UVg<9oqM z{gS8Wwr2HWz$=jMVUUa&3OM~VXA}bg6l4@UIw?b$TKy5V=|a)l;jSgecXNh3NTB{G zhC#_uLnpcfI{qUS8s5U&0(AlTLGP)jVHIBzIV3GD0&QmpO}UR2B!f^RdG1%T`C8!O zusWm;+*CJJ>8B27)#2gJkr7qHH~3bAE(x{-5SDJQCzm%|XIth?Ll!v-aJ;nSxu(6Y z;Gu>*3BEE}R7`*K?Lrk_Dva^GklQ=o+Pxk!P`2`&W_^KsGRf@odSl ze9u_WJ!Yb{r_8XLH0$pTDuj0|S_rOMThHnlLCcr|v2BLA#v)6~(|DO9Bp@(W&9E%g zSui2;2@KxYQ^-<9B5SUp=f^E;VuzRQScH?Cdsio@ThHo*)VJ~Yj*U|}S5}A~45lCZ zxc#-SPGO&6BzbILi}MA(XL2416zQWTKs(z6TB&q5RUV+u3mj+I ze@~r%q$0o2TPoH^?XKYwdeBP*>QmNE#m`*pr-rTg2{$;ZArAOej31ItOu?XnWbi+v zU>JhUxfwS1_&ekmR5|TY@roQ0D^gh|=m>wcG~VQ={iqz?r%f>Uasu%KrH}-t&Pw3f vvL;?H>rnx<5fv0kr2wrAxR;?$GEgZ^XLw#kkW@vGp|T*a=lvn~*WlK_9R~(P literal 0 HcmV?d00001 diff --git a/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class b/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fe9ccbf84598e037745c1e9f962681c7c236ddc4 GIT binary patch literal 3912 zcmb7HX;;){6nIA23#v>5l37`TkD3>D!5<=wMuDg?Gk1p1cqcxGAP#8Zg$^W zyV)PnexV#c^!T}_pZgp7D|-68Z!(#gf+(CbN#5n&`@GM6?oIgf-+O-m*oR* z{e4I7c{PUDG<4$iMi_EDk)XwtbYYcT=MoT@ieV;(yg;}+9iVZtb;XDvTHW85%ioVoO< zF+X7j*D=%c2k6%4{Y=sGM{M7mG+hCGR&I)hTOR6(UYb4Man0PgkuMUM7!l~I1~*?Q z0X*PvcBn#O}WlBFJeQWRRxRInSmjJL#v7x8LNTnm?*{ch~Ui4jN za<#k$R?2m=bUkVmr1}YZ)+iLroI(`Gq*BX> zc>6MQ0`+r2)pRVonyd~XvG(p^EnIYpZq__$$wttsK#%b>yJh9*=)qNA7qozOQF?^ynP(Uh>lP2sgBR^IVZjl=zWy- zRR!+c#55HvuzLl|W#merivM$0*t1e2%crPk1)qw0cIj!QqWzV546|Q;#U1GTfp2Iq>OI?zFJ5$4zP{Ve`%{kQo%V^p88dAfgODrR zR;nTNJY?ka7cDmO814#eUBb_D=MmVn@;+>40=m^lS2Mqw*y?!Q!f~2+!FzrG?-0N7 zp$3oh+Mp(5=;gB>Y`|9ZaU`&f# zNuRaKXM(!{4UK3<2fc1Ui}K$S_z3+sB8e2XGfoGZ(2pHNw3BucMXsui5g#{+M4quHiIzpQl^KaIpnZgssU#AMNS1K~oU9=$Yx%LejwxDS!AVbuMI*NT z3QH%^_TxYWC&Ai5qIwV~ha!Aa+$HlB4>@73Iv3D&w2UX_gLEfHTRg!uMW-E`~r@%Z~lAd9d>LeYDVqWH& z6h>=eO_(4`W9|Pb=w~W-P@p?2qPB(_LAY-VEoDW>HrCS5-XnigWcgQ4RJOB2 z3QEwvJy1;E?SL~y-S^tnNbz$EPmi!qq{r!3EwlnS&rqYa@=F$3MRv+X-xhH D_sVhV literal 0 HcmV?d00001 From 730b58333d6fd8c7544480b8561ad6315d5becc9 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 13 Dec 2017 16:32:55 +0300 Subject: [PATCH 3/4] Initial commit. --- Injector/.gitignore | 49 +++++++++ Injector/.idea/compiler.xml | 16 +++ Injector/.idea/misc.xml | 13 +++ Injector/.idea/modules.xml | 8 ++ Injector/Injector.iml | 18 +++ Injector/pom.xml | 36 ++++++ .../AmbiguousImplementationException.java | 7 ++ .../ImplementationNotFoundException.java | 7 ++ .../Injector/InjectionCycleException.java | 7 ++ .../spbau/mit/kazakov/Injector/Injector.java | 103 ++++++++++++++++++ .../ClassWithCycleDependency1.java | 14 +++ .../ClassWithCycleDependency2.java | 14 +++ .../ClassWithCycleDependency3.java | 14 +++ .../ClassWithOneClassDependency.java | 14 +++ .../ClassWithOneInterfaceDependency.java | 14 +++ .../testClasses/ClassWithoutDependencies.java | 5 + .../Injector/testClasses/Interface.java | 4 + .../Injector/testClasses/InterfaceImpl.java | 4 + .../mit/kazakov/Injector/InjectorTest.java | 67 ++++++++++++ 19 files changed, 414 insertions(+) create mode 100644 Injector/.gitignore create mode 100644 Injector/.idea/compiler.xml create mode 100644 Injector/.idea/misc.xml create mode 100644 Injector/.idea/modules.xml create mode 100644 Injector/Injector.iml create mode 100644 Injector/pom.xml create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/AmbiguousImplementationException.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/ImplementationNotFoundException.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/InjectionCycleException.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/Injector.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency1.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency2.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency3.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneClassDependency.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneInterfaceDependency.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithoutDependencies.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/Interface.java create mode 100644 Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/InterfaceImpl.java create mode 100644 Injector/src/test/java/ru/spbau/mit/kazakov/Injector/InjectorTest.java diff --git a/Injector/.gitignore b/Injector/.gitignore new file mode 100644 index 0000000..345e61a --- /dev/null +++ b/Injector/.gitignore @@ -0,0 +1,49 @@ +# 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/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# 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 diff --git a/Injector/.idea/compiler.xml b/Injector/.idea/compiler.xml new file mode 100644 index 0000000..bec0f06 --- /dev/null +++ b/Injector/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Injector/.idea/misc.xml b/Injector/.idea/misc.xml new file mode 100644 index 0000000..e8942bd --- /dev/null +++ b/Injector/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/Injector/.idea/modules.xml b/Injector/.idea/modules.xml new file mode 100644 index 0000000..f21519f --- /dev/null +++ b/Injector/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Injector/Injector.iml b/Injector/Injector.iml new file mode 100644 index 0000000..dc9a8a2 --- /dev/null +++ b/Injector/Injector.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Injector/pom.xml b/Injector/pom.xml new file mode 100644 index 0000000..6ca3d01 --- /dev/null +++ b/Injector/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + ru.spbau.mit.kazakov.Injector + Injector + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + junit + junit + 4.12 + + + org.jetbrains + annotations + 13.0 + + + + \ No newline at end of file diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/AmbiguousImplementationException.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/AmbiguousImplementationException.java new file mode 100644 index 0000000..eaf04b7 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/AmbiguousImplementationException.java @@ -0,0 +1,7 @@ +package ru.spbau.mit.kazakov.Injector; + +/** + * Thrown when found multiple implementations for a dependency. + */ +public class AmbiguousImplementationException extends Exception { +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/ImplementationNotFoundException.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/ImplementationNotFoundException.java new file mode 100644 index 0000000..5b4afea --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/ImplementationNotFoundException.java @@ -0,0 +1,7 @@ +package ru.spbau.mit.kazakov.Injector; + +/** + * Thrown if found no implementation for a dependency. + */ +public class ImplementationNotFoundException extends Exception { +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/InjectionCycleException.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/InjectionCycleException.java new file mode 100644 index 0000000..e61306c --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/InjectionCycleException.java @@ -0,0 +1,7 @@ +package ru.spbau.mit.kazakov.Injector; + +/** + * Thrown if found a circular dependency. + */ +public class InjectionCycleException extends Exception { +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/Injector.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/Injector.java new file mode 100644 index 0000000..ab57151 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/Injector.java @@ -0,0 +1,103 @@ +package ru.spbau.mit.kazakov.Injector; + +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import java.util.*; + + +/** + * A class for creating an object of specified class using given classes. + */ +public class Injector { + /** + * Creates an object of specified class using classes from specified container. + * + * @param rootClassName specified class + * @param implementations for creating an object + * @return created object + * @throws AmbiguousImplementationException when found multiple implementations for a dependency + * @throws ImplementationNotFoundException if found no implementation for a dependency + * @throws InjectionCycleException if found a circular dependency + * @throws ClassNotFoundException if found not existing class + */ + @NotNull + public static Object initialize(@NotNull String rootClassName, @NotNull List implementations) throws Exception { + return create(rootClassName, implementations, new TreeSet<>(), new HashMap<>()); + } + + /** + * Creates an object of specified class using classes from specified container. + * + * @param className specified class + * @param implementations for creating an object + * @param demanded already required dependencies + * @param created already created objects + * @return created object + * @throws AmbiguousImplementationException when found multiple implementations for a dependency + * @throws ImplementationNotFoundException if found no implementation for a dependency + * @throws InjectionCycleException if found a circular dependency + * @throws ClassNotFoundException if found not existing class + */ + @NotNull + private static Object create(@NotNull String className, @NotNull List implementations, + @NotNull Set demanded, + @NotNull Map created) throws Exception { + if (demanded.contains(className)) { + if (created.containsKey(className)) { + return created.get(className); + } else { + throw new InjectionCycleException(); + } + } + demanded.add(className); + + Class toCreate = Class.forName(className); + if (Modifier.isAbstract(toCreate.getModifiers()) || toCreate.isInterface()) { + String foundImplementation = null; + for (String implementation : implementations) { + Class implementationClass = Class.forName(implementation); + if (toCreate.isAssignableFrom(implementationClass) && !toCreate.equals(implementationClass)) { + if (foundImplementation != null) { + throw new AmbiguousImplementationException(); + } else { + foundImplementation = implementation; + } + } + } + if (foundImplementation == null) { + throw new ImplementationNotFoundException(); + } + Object implementationObject = create(foundImplementation, implementations, demanded, created); + created.put(className, implementationObject); + return implementationObject; + } + + Constructor constructor = toCreate.getConstructors()[0]; + Class[] parameters = constructor.getParameterTypes(); + ArrayList createdParameters = new ArrayList<>(); + for (Class parameter : parameters) { + String parameterName = parameter.getCanonicalName(); + Class paramClass = Class.forName(parameterName); + if (!paramClass.isInterface() && !Modifier.isAbstract(paramClass.getModifiers())) { + boolean found = false; + for (String implementationName : implementations) { + if (parameterName.equals(implementationName)) { + found = true; + break; + } + } + if (!found) { + throw new ImplementationNotFoundException(); + } + } + createdParameters.add(create(parameterName, implementations, + demanded, created)); + } + Object classInstance = constructor.newInstance(createdParameters.toArray()); + created.put(className, classInstance); + return classInstance; + } +} + diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency1.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency1.java new file mode 100644 index 0000000..82561cf --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency1.java @@ -0,0 +1,14 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +import static org.junit.Assert.*; + +public class ClassWithCycleDependency1 { + public final ClassWithCycleDependency2 dependency; + static int numberOfObjects = 0; + + public ClassWithCycleDependency1(ClassWithCycleDependency2 dependency) { + this.dependency = dependency; + numberOfObjects++; + assertTrue(numberOfObjects <= 1); + } +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency2.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency2.java new file mode 100644 index 0000000..544155f --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency2.java @@ -0,0 +1,14 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +import static org.junit.Assert.assertTrue; + +public class ClassWithCycleDependency2 { + public final ClassWithCycleDependency3 dependency; + static int numberOfObjects = 0; + + public ClassWithCycleDependency2(ClassWithCycleDependency3 dependency) { + this.dependency = dependency; + numberOfObjects++; + assertTrue(numberOfObjects <= 1); + } +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency3.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency3.java new file mode 100644 index 0000000..2134a50 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithCycleDependency3.java @@ -0,0 +1,14 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +import static org.junit.Assert.assertTrue; + +public class ClassWithCycleDependency3 { + public final ClassWithCycleDependency1 dependency; + static int numberOfObjects = 0; + + public ClassWithCycleDependency3(ClassWithCycleDependency1 dependency) { + this.dependency = dependency; + numberOfObjects++; + assertTrue(numberOfObjects <= 1); + } +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneClassDependency.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneClassDependency.java new file mode 100644 index 0000000..b6626c1 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneClassDependency.java @@ -0,0 +1,14 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +import static org.junit.Assert.assertTrue; + +public class ClassWithOneClassDependency { + public final ClassWithoutDependencies dependency; + static int numberOfObjects = 0; + + public ClassWithOneClassDependency(ClassWithoutDependencies dependency) { + this.dependency = dependency; + numberOfObjects++; + assertTrue(numberOfObjects <= 1); + } +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneInterfaceDependency.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneInterfaceDependency.java new file mode 100644 index 0000000..f20af20 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithOneInterfaceDependency.java @@ -0,0 +1,14 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +import static org.junit.Assert.assertTrue; + +public class ClassWithOneInterfaceDependency { + public final Interface dependency; + static int numberOfObjects = 0; + + public ClassWithOneInterfaceDependency(Interface dependency) { + this.dependency = dependency; + numberOfObjects++; + assertTrue(numberOfObjects <= 1); + } +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithoutDependencies.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithoutDependencies.java new file mode 100644 index 0000000..0b8b272 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/ClassWithoutDependencies.java @@ -0,0 +1,5 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +public class ClassWithoutDependencies { + +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/Interface.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/Interface.java new file mode 100644 index 0000000..fb63868 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/Interface.java @@ -0,0 +1,4 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +public interface Interface { +} diff --git a/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/InterfaceImpl.java b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/InterfaceImpl.java new file mode 100644 index 0000000..2871613 --- /dev/null +++ b/Injector/src/main/java/ru/spbau/mit/kazakov/Injector/testClasses/InterfaceImpl.java @@ -0,0 +1,4 @@ +package ru.spbau.mit.kazakov.Injector.testClasses; + +public class InterfaceImpl implements Interface { +} diff --git a/Injector/src/test/java/ru/spbau/mit/kazakov/Injector/InjectorTest.java b/Injector/src/test/java/ru/spbau/mit/kazakov/Injector/InjectorTest.java new file mode 100644 index 0000000..8832e2c --- /dev/null +++ b/Injector/src/test/java/ru/spbau/mit/kazakov/Injector/InjectorTest.java @@ -0,0 +1,67 @@ +package ru.spbau.mit.kazakov.Injector; + +import org.junit.Test; +import ru.spbau.mit.kazakov.Injector.testClasses.ClassWithOneClassDependency; +import ru.spbau.mit.kazakov.Injector.testClasses.ClassWithOneInterfaceDependency; +import ru.spbau.mit.kazakov.Injector.testClasses.ClassWithoutDependencies; +import ru.spbau.mit.kazakov.Injector.testClasses.InterfaceImpl; + +import java.util.Arrays; +import java.util.Collections; + +import static org.junit.Assert.*; + +public class InjectorTest { + private static final String TEST_CLASS_PREFIX = "ru.spbau.mit.kazakov.Injector.testClasses."; + + @Test + public void injectorShouldInitializeClassWithoutDependencies() + throws Exception { + Object object = Injector.initialize(TEST_CLASS_PREFIX + "ClassWithoutDependencies", + Collections.emptyList()); + assertTrue(object instanceof ClassWithoutDependencies); + } + + @Test + public void injectorShouldInitializeClassWithOneClassDependency() + throws Exception { + Object object = Injector.initialize( + TEST_CLASS_PREFIX + "ClassWithOneClassDependency", + Collections.singletonList(TEST_CLASS_PREFIX + "ClassWithoutDependencies") + ); + assertTrue(object instanceof ClassWithOneClassDependency); + ClassWithOneClassDependency instance = (ClassWithOneClassDependency) object; + assertTrue(instance.dependency != null); + } + + @Test + public void injectorShouldInitializeClassWithOneInterfaceDependency() + throws Exception { + Object object = Injector.initialize( + TEST_CLASS_PREFIX + "ClassWithOneInterfaceDependency", + Collections.singletonList(TEST_CLASS_PREFIX + "InterfaceImpl") + ); + assertTrue(object instanceof ClassWithOneInterfaceDependency); + ClassWithOneInterfaceDependency instance = (ClassWithOneInterfaceDependency) object; + assertTrue(instance.dependency instanceof InterfaceImpl); + } + + @Test(expected = AmbiguousImplementationException.class) + public void injectorThrowsAmbiguousImplementationsException() throws Exception { + Object object = Injector.initialize(TEST_CLASS_PREFIX + "ClassWithOneInterfaceDependency", + Arrays.asList(TEST_CLASS_PREFIX + "InterfaceImpl", TEST_CLASS_PREFIX + "InterfaceImpl")); + } + + @Test(expected = ImplementationNotFoundException.class) + public void injectorThrowsImplementationNotFoundException() throws Exception { + Object object = Injector.initialize(TEST_CLASS_PREFIX + "ClassWithOneInterfaceDependency", + Collections.singletonList(TEST_CLASS_PREFIX + "ClassWithoutDependencies")); + } + + @Test(expected = InjectionCycleException.class) + public void injectorThrowsInjectionCycleException() throws Exception { + Object object = Injector.initialize(TEST_CLASS_PREFIX + "ClassWithCycleDependency1", + Arrays.asList(TEST_CLASS_PREFIX + "ClassWithCycleDependency1", + TEST_CLASS_PREFIX + "ClassWithCycleDependency2", TEST_CLASS_PREFIX + "ClassWithCycleDependency3")); + } +} \ No newline at end of file From 7cc88b839a29c9fd363c0b6fe07830835ec22cda Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 13 Dec 2017 16:35:22 +0300 Subject: [PATCH 4/4] Deleted extra files. --- Untitled Folder 2/Java/.gitignore | 49 ----------- Untitled Folder 2/Java/.idea/compiler.xml | 16 ---- Untitled Folder 2/Java/.idea/misc.xml | 13 --- Untitled Folder 2/Java/.idea/modules.xml | 8 -- Untitled Folder 2/Java/Maybe.iml | 17 ---- Untitled Folder 2/Java/pom.xml | 36 -------- .../java/ru/spbau/mit/kazakov/Maybe/Main.java | 63 ------------- .../ru/spbau/mit/kazakov/Maybe/Maybe.java | 83 ------------------ .../kazakov/Maybe/getNothingException.java | 7 -- .../ru/spbau/mit/kazakov/Maybe/MainTest.java | 47 ---------- .../ru/spbau/mit/kazakov/Maybe/MaybeTest.java | 60 ------------- .../ru/spbau/mit/kazakov/Maybe/Main.class | Bin 3978 -> 0 bytes .../ru/spbau/mit/kazakov/Maybe/Maybe.class | Bin 2100 -> 0 bytes .../kazakov/Maybe/getNothingException.class | Bin 339 -> 0 bytes .../compile/default-compile/createdFiles.lst | 3 - .../compile/default-compile/inputFiles.lst | 3 - .../default-testCompile/createdFiles.lst | 2 - .../default-testCompile/inputFiles.lst | 2 - ...ST-ru.spbau.mit.kazakov.Maybe.MainTest.xml | 64 -------------- ...T-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml | 70 --------------- .../ru.spbau.mit.kazakov.Maybe.MainTest.txt | 4 - .../ru.spbau.mit.kazakov.Maybe.MaybeTest.txt | 4 - .../ru/spbau/mit/kazakov/Maybe/MainTest.class | Bin 2225 -> 0 bytes .../spbau/mit/kazakov/Maybe/MaybeTest.class | Bin 3912 -> 0 bytes kek2/Java | 1 - 25 files changed, 552 deletions(-) delete mode 100644 Untitled Folder 2/Java/.gitignore delete mode 100644 Untitled Folder 2/Java/.idea/compiler.xml delete mode 100644 Untitled Folder 2/Java/.idea/misc.xml delete mode 100644 Untitled Folder 2/Java/.idea/modules.xml delete mode 100644 Untitled Folder 2/Java/Maybe.iml delete mode 100644 Untitled Folder 2/Java/pom.xml delete mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java delete mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java delete mode 100644 Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java delete mode 100644 Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java delete mode 100644 Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java delete mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class delete mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Maybe.class delete mode 100644 Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/getNothingException.class delete mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 Untitled Folder 2/Java/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MainTest.xml delete mode 100644 Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml delete mode 100644 Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt delete mode 100644 Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt delete mode 100644 Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class delete mode 100644 Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class delete mode 160000 kek2/Java diff --git a/Untitled Folder 2/Java/.gitignore b/Untitled Folder 2/Java/.gitignore deleted file mode 100644 index 345e61a..0000000 --- a/Untitled Folder 2/Java/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -# 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/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# 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 diff --git a/Untitled Folder 2/Java/.idea/compiler.xml b/Untitled Folder 2/Java/.idea/compiler.xml deleted file mode 100644 index 067d5ff..0000000 --- a/Untitled Folder 2/Java/.idea/compiler.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/.idea/misc.xml b/Untitled Folder 2/Java/.idea/misc.xml deleted file mode 100644 index e8942bd..0000000 --- a/Untitled Folder 2/Java/.idea/misc.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/.idea/modules.xml b/Untitled Folder 2/Java/.idea/modules.xml deleted file mode 100644 index 65c89bb..0000000 --- a/Untitled Folder 2/Java/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/Maybe.iml b/Untitled Folder 2/Java/Maybe.iml deleted file mode 100644 index 57f498f..0000000 --- a/Untitled Folder 2/Java/Maybe.iml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/pom.xml b/Untitled Folder 2/Java/pom.xml deleted file mode 100644 index fe36c91..0000000 --- a/Untitled Folder 2/Java/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - ru.spbau.mit.kazakov.Maybe - Maybe - 1.0-SNAPSHOT - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - - - - junit - junit - 4.8 - - - org.jetbrains - annotations - 13.0 - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java deleted file mode 100644 index 8bd1447..0000000 --- a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Main.java +++ /dev/null @@ -1,63 +0,0 @@ -package ru.spbau.mit.kazakov.Maybe; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.io.*; -import java.util.ArrayList; -import java.util.Scanner; - -/** - * Reads numbers from input file and writes squared values to output file. If read data isn't a number writes "null" instead. - */ -public class Main { - /** - * Primary method. - * - * @param args the first argument is input file and the second one is output file - */ - public static void main(@NotNull String[] args) throws IOException, getNothingException { - ArrayList> readData = new ArrayList<>(); - try (Scanner scanner = new Scanner(new File(args[0]))) { - while (scanner.hasNextLine()) { - Integer value = tryParse(scanner.nextLine()); - if (value == null) { - readData.add(Maybe.nothing()); - } else { - readData.add(Maybe.just(value)); - } - } - } - - ArrayList> squaredNumber = new ArrayList<>(); - for (Maybe maybeInt : readData) { - squaredNumber.add(maybeInt.map(value -> value * value)); - } - - try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(args[1]))) { - for (Maybe maybeInt : squaredNumber) { - if (maybeInt.isPresent()) { - bufferedWriter.write(maybeInt.get().toString()); - } else { - bufferedWriter.write("null"); - } - bufferedWriter.newLine(); - } - } - } - - /** - * Parses specified String to Integer. - * - * @return Integer if String was a number, and null otherwise - */ - @Nullable - private static Integer tryParse(@NotNull String parsingString) { - try { - return Integer.parseInt(parsingString); - } catch (NumberFormatException e) { - return null; - } - } - -} diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java deleted file mode 100644 index b0216f4..0000000 --- a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/Maybe.java +++ /dev/null @@ -1,83 +0,0 @@ -package ru.spbau.mit.kazakov.Maybe; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Function; - -/** - * Generic container for storing a value or nothing. - */ -public class Maybe { - @Nullable - private final T value; - - /** - * Assigns specified value to class's storing field. - * - * @param t specified value - */ - private Maybe(T t) { - value = t; - } - - /** - * Creates an object for storing specified value. - * - * @param t specified value - * @return new object - */ - @NotNull - public static Maybe just(T t) { - return new Maybe(t); - } - - /** - * Creates an object for strong nothing. - * - * @return new object - */ - @NotNull - public static Maybe nothing() { - return new Maybe(null); - } - - /** - * Returns stored value or throws exception if there is no value. - * - * @return stored value - * @throws getNothingException if there is no stored value - */ - @NotNull - public T get() throws getNothingException { - if (isPresent()) { - return value; - } else { - throw new getNothingException(); - } - } - - /** - * Checks if there is stored value. - * - * @return true if there is stored value, and false otherwise - */ - public boolean isPresent() { - return value != null; - } - - /** - * Maps stored value of type T to another value of type U. - * - * @param mapper a function acting from T to V - * @param image's type - * @return Maybe object storing mapped value if there is a storing value, and Maybe object storing nothing otherwise - */ - @NotNull - public Maybe map(@NotNull Function mapper) { - if (!isPresent()) { - return nothing(); - } - return just(mapper.apply(value)); - } -} diff --git a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java b/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java deleted file mode 100644 index 7789bf9..0000000 --- a/Untitled Folder 2/Java/src/main/java/ru/spbau/mit/kazakov/Maybe/getNothingException.java +++ /dev/null @@ -1,7 +0,0 @@ -package ru.spbau.mit.kazakov.Maybe; - -/** - * Exception thrown when there is no value to return. - */ -public class getNothingException extends Exception { -} diff --git a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java deleted file mode 100644 index 90c6fe1..0000000 --- a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MainTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package ru.spbau.mit.kazakov.Maybe; - -import org.junit.Test; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Scanner; - -import org.junit.Rule; -import org.junit.rules.TemporaryFolder; - -import static org.junit.Assert.*; - -public class MainTest { - @Rule - public TemporaryFolder testFolder = new TemporaryFolder(); - - @Test - public void testMain() throws IOException, getNothingException { - File input = testFolder.newFile("input.txt"); - File output = testFolder.newFile("output.txt"); - - try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(input))) { - bufferedWriter.write("1\n0\n-3\nj\njava\n1b\n11 22\n"); - } - - Main.main(new String[]{input.getAbsolutePath(), output.getAbsolutePath()}); - - - assertEquals("1\n0\n9\nnull\nnull\nnull\nnull\n", new String(Files.readAllBytes(Paths.get(output.getAbsolutePath())))); - } - - @Test - public void testMainEmpty() throws IOException, getNothingException { - File input = testFolder.newFile("input.txt"); - File output = testFolder.newFile("output.txt"); - - Main.main(new String[]{input.getAbsolutePath(), output.getAbsolutePath()}); - - assertEquals("", new String(Files.readAllBytes(Paths.get(output.getAbsolutePath())))); - } - -} \ No newline at end of file diff --git a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java b/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java deleted file mode 100644 index 54b7846..0000000 --- a/Untitled Folder 2/Java/src/test/java/ru/spbau/mit/kazakov/Maybe/MaybeTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package ru.spbau.mit.kazakov.Maybe; - -import org.junit.Test; - -import static org.junit.Assert.*; - -public class MaybeTest { - @Test - public void testJustInteger() throws getNothingException { - Maybe maybeInteger = Maybe.just(5); - int storedValue = maybeInteger.get(); - assertEquals(5, storedValue); - } - - @Test - public void testNothingBoolean() { - Maybe maybeBoolean = Maybe.nothing(); - assertFalse(maybeBoolean.isPresent()); - } - - @Test - public void testGetDouble() throws getNothingException { - Maybe maybeDouble = Maybe.just(-7.0); - double storedValue = maybeDouble.get(); - assertEquals(-7.0, storedValue, 0.000000001); - } - - @Test(expected = getNothingException.class) - public void testGetCharacterThrowsException() throws getNothingException { - Maybe maybeCharacter = Maybe.nothing(); - char storedValue = maybeCharacter.get(); - } - - @Test - public void testIsPresentFalse() { - Maybe maybeBoolean = Maybe.nothing(); - assertFalse(maybeBoolean.isPresent()); - } - - @Test - public void testIsPresentTrue() { - Maybe maybeString = Maybe.just("abacaba"); - assertTrue(maybeString.isPresent()); - } - - @Test - public void testMapJust() throws getNothingException { - Maybe maybeInteger = Maybe.just(10); - Maybe mappedMaybeInteger = maybeInteger.map(value -> value * value); - int mappedValue = mappedMaybeInteger.get(); - assertEquals(100, mappedValue); - } - - @Test - public void testMapNothing() throws getNothingException { - Maybe maybeInteger = Maybe.nothing(); - Maybe mappedMaybeInteger = maybeInteger.map(value -> value * value); - assertFalse(mappedMaybeInteger.isPresent()); - } -} \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class b/Untitled Folder 2/Java/target/classes/ru/spbau/mit/kazakov/Maybe/Main.class deleted file mode 100644 index 6bafd51dadac3eb34fc19d52644fad85854c4d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3978 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml b/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml deleted file mode 100644 index 8af6efe..0000000 --- a/Untitled Folder 2/Java/target/surefire-reports/TEST-ru.spbau.mit.kazakov.Maybe.MaybeTest.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt deleted file mode 100644 index adbb610..0000000 --- a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MainTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: ru.spbau.mit.kazakov.Maybe.MainTest -------------------------------------------------------------------------------- -Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 sec - in ru.spbau.mit.kazakov.Maybe.MainTest diff --git a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt b/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt deleted file mode 100644 index 15d544e..0000000 --- a/Untitled Folder 2/Java/target/surefire-reports/ru.spbau.mit.kazakov.Maybe.MaybeTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: ru.spbau.mit.kazakov.Maybe.MaybeTest -------------------------------------------------------------------------------- -Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.07 sec - in ru.spbau.mit.kazakov.Maybe.MaybeTest diff --git a/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class b/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MainTest.class deleted file mode 100644 index 3f48d60837c6182b50031c73aeaf1e02f1a8ebe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2225 zcma)7*-{%v6g`b3MvMou8Y4Ri;3aGZ0nTEC?SwUUB9;KbmdQ4f1{fI4$fFr!@{o^6 z-s0C(`6;P#RRUC~#BYAcM}?f85kgSdNr8H~ef#ve=icu5`=3Al0`MM6DlTJGK}tmp zM(c11V{zP;lRI(TRq&C5k5$xRTtyrcaZJj7N;cC9W>hrb69xBF+{dRXK0`W=Srv1b zSFwQ4RWxBy#S)g|_(H*of(HVsXOz4d$I2V7Kv&vv*OQyRZF))9w~SJ9*(ekpS9f

nBUatnMcZWVWS$r*An=lC%0w)?jPe z%Z!0%#bqpVE^t2UudNxbk$>Qto(!!$y{SLZlctlLII+TQG1D&k9`{sSX3UVg<9oqM z{gS8Wwr2HWz$=jMVUUa&3OM~VXA}bg6l4@UIw?b$TKy5V=|a)l;jSgecXNh3NTB{G zhC#_uLnpcfI{qUS8s5U&0(AlTLGP)jVHIBzIV3GD0&QmpO}UR2B!f^RdG1%T`C8!O zusWm;+*CJJ>8B27)#2gJkr7qHH~3bAE(x{-5SDJQCzm%|XIth?Ll!v-aJ;nSxu(6Y z;Gu>*3BEE}R7`*K?Lrk_Dva^GklQ=o+Pxk!P`2`&W_^KsGRf@odSl ze9u_WJ!Yb{r_8XLH0$pTDuj0|S_rOMThHnlLCcr|v2BLA#v)6~(|DO9Bp@(W&9E%g zSui2;2@KxYQ^-<9B5SUp=f^E;VuzRQScH?Cdsio@ThHo*)VJ~Yj*U|}S5}A~45lCZ zxc#-SPGO&6BzbILi}MA(XL2416zQWTKs(z6TB&q5RUV+u3mj+I ze@~r%q$0o2TPoH^?XKYwdeBP*>QmNE#m`*pr-rTg2{$;ZArAOej31ItOu?XnWbi+v zU>JhUxfwS1_&ekmR5|TY@roQ0D^gh|=m>wcG~VQ={iqz?r%f>Uasu%KrH}-t&Pw3f vvL;?H>rnx<5fv0kr2wrAxR;?$GEgZ^XLw#kkW@vGp|T*a=lvn~*WlK_9R~(P diff --git a/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class b/Untitled Folder 2/Java/target/test-classes/ru/spbau/mit/kazakov/Maybe/MaybeTest.class deleted file mode 100644 index fe9ccbf84598e037745c1e9f962681c7c236ddc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3912 zcmb7HX;;){6nIA23#v>5l37`TkD3>D!5<=wMuDg?Gk1p1cqcxGAP#8Zg$^W zyV)PnexV#c^!T}_pZgp7D|-68Z!(#gf+(CbN#5n&`@GM6?oIgf-+O-m*oR* z{e4I7c{PUDG<4$iMi_EDk)XwtbYYcT=MoT@ieV;(yg;}+9iVZtb;XDvTHW85%ioVoO< zF+X7j*D=%c2k6%4{Y=sGM{M7mG+hCGR&I)hTOR6(UYb4Man0PgkuMUM7!l~I1~*?Q z0X*PvcBn#O}WlBFJeQWRRxRInSmjJL#v7x8LNTnm?*{ch~Ui4jN za<#k$R?2m=bUkVmr1}YZ)+iLroI(`Gq*BX> zc>6MQ0`+r2)pRVonyd~XvG(p^EnIYpZq__$$wttsK#%b>yJh9*=)qNA7qozOQF?^ynP(Uh>lP2sgBR^IVZjl=zWy- zRR!+c#55HvuzLl|W#merivM$0*t1e2%crPk1)qw0cIj!QqWzV546|Q;#U1GTfp2Iq>OI?zFJ5$4zP{Ve`%{kQo%V^p88dAfgODrR zR;nTNJY?ka7cDmO814#eUBb_D=MmVn@;+>40=m^lS2Mqw*y?!Q!f~2+!FzrG?-0N7 zp$3oh+Mp(5=;gB>Y`|9ZaU`&f# zNuRaKXM(!{4UK3<2fc1Ui}K$S_z3+sB8e2XGfoGZ(2pHNw3BucMXsui5g#{+M4quHiIzpQl^KaIpnZgssU#AMNS1K~oU9=$Yx%LejwxDS!AVbuMI*NT z3QH%^_TxYWC&Ai5qIwV~ha!Aa+$HlB4>@73Iv3D&w2UX_gLEfHTRg!uMW-E`~r@%Z~lAd9d>LeYDVqWH& z6h>=eO_(4`W9|Pb=w~W-P@p?2qPB(_LAY-VEoDW>HrCS5-XnigWcgQ4RJOB2 z3QEwvJy1;E?SL~y-S^tnNbz$EPmi!qq{r!3EwlnS&rqYa@=F$3MRv+X-xhH D_sVhV diff --git a/kek2/Java b/kek2/Java deleted file mode 160000 index d207fbc..0000000 --- a/kek2/Java +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d207fbc8f6316ee94011c17d43e488e48f2e61eb